SpyBara
Go Premium

Documentation 2026-10-06 23:59 UTC to 2026-10-07 19:00 UTC

54 files changed +422 −366. View all changes and history on the product overview
2026
Wed 7 20:01 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59

agent-sdk/hooks.md +13 −13

Details

140 ```140 ```

141</CodeGroup>141</CodeGroup>

142 142 

143Ketika Anda menjalankan salah satu skrip, Claude mencoba membuat file `.env`, hook menolak pemanggilan tool, dan respons akhir Claude menjelaskan bahwa ia tidak dapat membuat file `.env`.143Ketika Anda menjalankan salah satu skrip, Claude mencoba membuat file `.env` dan hook menolak panggilan tool tersebut.

144 144 

145<h2 id="available-hooks">145<h2 id="available-hooks">

146 Available hooks146 Available hooks


179| `ConfigChange` | Tidak | Ya | File konfigurasi berubah | Reload pengaturan secara dinamis |179| `ConfigChange` | Tidak | Ya | File konfigurasi berubah | Reload pengaturan secara dinamis |

180| `InstructionsLoaded` | Tidak | Ya | File `CLAUDE.md` atau rules dimuat ke dalam konteks | Audit file instruksi mana yang dimuat |180| `InstructionsLoaded` | Tidak | Ya | File `CLAUDE.md` atau rules dimuat ke dalam konteks | Audit file instruksi mana yang dimuat |

181| `WorktreeCreate` | Tidak | Ya | Git worktree dibuat | Track isolated workspaces |181| `WorktreeCreate` | Tidak | Ya | Git worktree dibuat | Track isolated workspaces |

182| `WorktreeRemove` | Tidak | Ya | Git worktree dihapus | Bersihkan workspace resources |182| `WorktreeRemove` | Tidak | Ya | Worktree yang dibuat oleh hook `WorktreeCreate` sedang dihapus | Bersihkan workspace resources |

183| `CwdChanged` | Tidak | Ya | Working directory berubah selama sesi | Reload environment variables per direktori |183| `CwdChanged` | Tidak | Ya | Working directory berubah selama sesi | Reload environment variables per direktori |

184| `FileChanged` | Tidak | Ya | File yang diawasi dimodifikasi, dibuat, atau dihapus | Reload konfigurasi saat file proyek berubah |184| `FileChanged` | Tidak | Ya | File yang diawasi dimodifikasi, dibuat, atau dihapus | Reload konfigurasi saat file proyek berubah |

185| `DirectoryAdded` | Tidak | Ya | Working directory ditambahkan selama sesi | Instal dependencies untuk repository yang ditambahkan di tengah-sesi |185| `DirectoryAdded` | Tidak | Ya | Working directory ditambahkan selama sesi | Instal dependencies untuk repository yang ditambahkan di tengah-sesi |


262* **Top-level fields** diterima pada setiap event: `systemMessage` menampilkan pesan kepada pengguna, dan `continue` (`continue_` di Python) menentukan apakah agent terus berjalan setelah hook ini. Beberapa events membuangnya atau mengirimnya ke tempat lain. Setiap [bagian event](/docs/id/hooks#hook-events) di halaman hooks mengatakan di mana mereka mendarat.262* **Top-level fields** diterima pada setiap event: `systemMessage` menampilkan pesan kepada pengguna, dan `continue` (`continue_` di Python) menentukan apakah agent terus berjalan setelah hook ini. Beberapa events membuangnya atau mengirimnya ke tempat lain. Setiap [bagian event](/docs/id/hooks#hook-events) di halaman hooks mengatakan di mana mereka mendarat.

263* **`hookSpecificOutput`** mengontrol operasi saat ini. Fields yang Anda tetapkan di dalamnya tergantung pada tipe hook event:263* **`hookSpecificOutput`** mengontrol operasi saat ini. Fields yang Anda tetapkan di dalamnya tergantung pada tipe hook event:

264 * Untuk hooks `PreToolUse`, di sinilah Anda menetapkan `permissionDecision` (`"allow"`, `"deny"`, `"ask"`, atau `"defer"`), `permissionDecisionReason`, dan `updatedInput`. Jika Anda mengembalikan `"defer"`, giliran berakhir dengan pesan hasil yang `stop_reason`-nya adalah `"tool_deferred"`, sehingga Anda dapat [melanjutkan panggilan tersebut nanti](/docs/id/hooks#defer-a-tool-call-for-later).264 * Untuk hooks `PreToolUse`, di sinilah Anda menetapkan `permissionDecision` (`"allow"`, `"deny"`, `"ask"`, atau `"defer"`), `permissionDecisionReason`, dan `updatedInput`. Jika Anda mengembalikan `"defer"`, giliran berakhir dengan pesan hasil yang `stop_reason`-nya adalah `"tool_deferred"`, sehingga Anda dapat [melanjutkan panggilan tersebut nanti](/docs/id/hooks#defer-a-tool-call-for-later).

265 * Untuk hooks `PostToolUse`, Anda dapat menetapkan `additionalContext` untuk menambahkan informasi ke hasil tool. Untuk mengganti output tool sebelum Claude melihatnya, tetapkan `updatedToolOutput`, yang bekerja untuk tool apa pun di kedua SDK. Field `updatedMCPToolOutput` yang lebih lama mengganti output MCP tool saja dan sudah usang.265 * Untuk hooks `PostToolUse`, Anda dapat menetapkan `additionalContext` untuk menambahkan informasi ke hasil tool. Untuk mengganti output tool sebelum Claude melihatnya, tetapkan `updatedToolOutput`, yang bekerja untuk tool apa pun di kedua SDK. Field `updatedMCPToolOutput` yang lebih lama hanya mengganti output MCP tool.

266 * Di TypeScript SDK, callback `PostToolUse` juga dapat mengembalikan `classifierContext`, catatan singkat tentang hasil pemanggilan tool untuk [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) permission classifier. Karena callback Anda berjalan dalam proses aplikasi Anda sendiri, classifier dapat menimbang pernyataan pengguna yang Anda sampaikan dalam catatan sebagai intent pengguna. Field memerlukan TypeScript Agent SDK v0.3.236 atau lebih baru. [Annotate a result for the auto mode classifier](/docs/id/hooks#annotate-a-result-for-the-auto-mode-classifier) mencakup batas panjang, aturan synchronous-only, dan apa yang tidak boleh dimasukkan dalam catatan.266 * Di TypeScript SDK, callback `PostToolUse` juga dapat mengembalikan `classifierContext`, catatan singkat tentang hasil pemanggilan tool untuk [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) permission classifier. Karena callback Anda berjalan dalam proses aplikasi Anda sendiri, classifier dapat menimbang pernyataan pengguna yang Anda sampaikan dalam catatan sebagai intent pengguna. Field memerlukan TypeScript Agent SDK v0.3.236 atau lebih baru. [Annotate a result for the auto mode classifier](/docs/id/hooks#annotate-a-result-for-the-auto-mode-classifier) mencakup batas panjang, aturan synchronous-only, dan apa yang tidak boleh dimasukkan dalam catatan.

267 267 

268Kembalikan `{}` untuk mengizinkan operasi tanpa perubahan. SDK callback hooks menggunakan format output JSON yang sama dengan [Claude Code shell command hooks](/docs/id/hooks#json-output), yang mendokumentasikan setiap field dan opsi spesifik event. Untuk definisi tipe SDK, lihat referensi SDK [TypeScript](/docs/id/agent-sdk/typescript#synchookjsonoutput) dan [Python](/docs/id/agent-sdk/python#synchookjsonoutput).268Kembalikan `{}` untuk mengizinkan operasi tanpa perubahan. SDK callback hooks menggunakan format output JSON yang sama dengan [Claude Code shell command hooks](/docs/id/hooks#json-output), yang mendokumentasikan setiap field dan opsi spesifik event. Untuk definisi tipe SDK, lihat referensi SDK [TypeScript](/docs/id/agent-sdk/typescript#synchookjsonoutput) dan [Python](/docs/id/agent-sdk/python#synchookjsonoutput).


832 832 

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

834 834 

835* `PreToolUse`: Claude Code tidak menjalankan tool call, Claude menerima hasil tool yang menyatakan hook tidak merespons sebelum timeout-nya, dan turn berlanjut. Jika hook `PreToolUse` lain mengembalikan explicit deny, Claude menerima denial itu sebagai gantinya dari error timeout. Sebelum v2.1.210, Claude Code melaporkan timeout ke Claude sebagai user rejection, yang membuat unattended sessions berhenti dan menunggu input.835* `PreToolUse`: Claude Code tidak menjalankan panggilan tool, Claude menerima hasil tool yang menyatakan hook tidak merespons sebelum timeout-nya, dan giliran berlanjut. Jika hook `PreToolUse` lain mengembalikan explicit deny, Claude menerima denial itu sebagai gantinya dari error timeout. Sebelum v2.1.210, Claude Code melaporkan timeout ke Claude sebagai user rejection, yang membuat unattended sessions berhenti dan menunggu input.

836* `PostToolUse` dan `PostToolUseFailure`: Claude Code menyimpan hasil tool dan turn berlanjut.836* `PostToolUse` dan `PostToolUseFailure`: Claude Code menyimpan hasil tool dan giliran berlanjut.

837* `UserPromptSubmit` dan [`UserPromptExpansion`](/docs/id/hooks#userpromptexpansion): Claude Code memblokir prompt dengan pesan yang menyebutkan hook dan timeout, dan sesi berlanjut. Karena callback pada events ini dapat bertindak sebagai policy gate, Claude Code tidak pernah membiarkan prompt yang timed-out melewati tanpa screening. Sebelum v2.1.208, Claude Code mengakhiri query dengan `error_during_execution` ketika callback pada events ini timed out.837* `UserPromptSubmit` dan [`UserPromptExpansion`](/docs/id/hooks#userpromptexpansion): Claude Code memblokir prompt dengan pesan yang menyebutkan hook dan timeout, dan sesi berlanjut. Karena callback pada events ini dapat bertindak sebagai policy gate, Claude Code tidak pernah membiarkan prompt yang timed-out melewati tanpa screening. Sebelum v2.1.208, Claude Code mengakhiri query dengan `error_during_execution` ketika callback pada events ini timed out.

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

839* `SessionStart`: callback yang timed-out dihitung sebagai tidak mengembalikan output, dan sesi berlanjut dengan output dari hooks `SessionStart` lain Anda.839* `SessionStart`: callback yang timed-out dihitung sebagai tidak mengembalikan output, dan sesi berlanjut dengan output dari hooks `SessionStart` lain Anda.


842 842 

843Pertama kali callback `Stop` atau `SessionStart` timed out di sesi utama, Claude Code juga menambahkan [`SDKInformationalMessage`](/docs/id/agent-sdk/typescript#sdkinformationalmessage) ke message stream mengatakan app yang menjalankan sesi tidak merespons. Timeouts kemudian tidak mengulangi pesan itu saat app Anda tetap tidak responsif.843Pertama kali callback `Stop` atau `SessionStart` timed out di sesi utama, Claude Code juga menambahkan [`SDKInformationalMessage`](/docs/id/agent-sdk/typescript#sdkinformationalmessage) ke message stream mengatakan app yang menjalankan sesi tidak merespons. Timeouts kemudian tidak mengulangi pesan itu saat app Anda tetap tidak responsif.

844 844 

845Jika Anda mengganggu query saat callback tertunda, Claude Code membatalkan pending tool call. Sebelum v2.1.208, tool call masih bisa melanjutkan jika Anda mengganggu selama pending `PreToolUse` callback.845Jika Anda mengganggu query saat callback tertunda, Claude Code membatalkan panggilan tool yang tertunda. Sebelum v2.1.208, panggilan tool masih bisa dilanjutkan jika Anda mengganggu selama callback `PreToolUse` yang tertunda.

846 846 

847Jika callback Anda membutuhkan lebih banyak waktu, atur `timeout` yang lebih tinggi pada `HookMatcher`-nya. Di TypeScript, gunakan `AbortSignal` dari argumen callback ketiga untuk menangani pembatalan dengan baik ketika timeout terjadi.847Jika callback Anda membutuhkan lebih banyak waktu, atur `timeout` yang lebih tinggi pada `HookMatcher`-nya. Di TypeScript, gunakan `AbortSignal` dari argumen callback ketiga untuk menangani pembatalan dengan baik ketika timeout terjadi.

848 848 


870 };870 };

871 ```871 ```

872 872 

873* Jangan pasangkan `updatedInput` dengan `permissionDecision: 'defer'`, yang menghilangkan input yang dimodifikasi. Menghilangkan `permissionDecision` tidak masalah: input yang dimodifikasi masih berlaku melalui evaluasi permission normal. Anda juga dapat mengembalikan `'allow'` untuk auto-approve input yang dimodifikasi atau `'ask'` untuk menampilkannya kepada pengguna untuk persetujuan873* Jangan pasangkan `updatedInput` dengan `permissionDecision: 'defer'`, yang menghilangkan input yang dimodifikasi. Menghilangkan `permissionDecision` tidak masalah: input yang dimodifikasi masih berlaku melalui evaluasi izin normal. Anda juga dapat mengembalikan `'allow'` untuk auto-approve input yang dimodifikasi atau `'ask'` untuk menampilkannya kepada pengguna untuk persetujuan

874 874 

875* Sertakan `hookEventName` di `hookSpecificOutput` untuk mengidentifikasi tipe hook mana output-nya875* Sertakan `hookEventName` di `hookSpecificOutput` untuk mengidentifikasi tipe hook mana output-nya

876 876 


878 Session hooks not available in Python878 Session hooks not available in Python

879</h3>879</h3>

880 880 

881`SessionStart` dan `SessionEnd` dapat didaftarkan sebagai SDK callback hooks di TypeScript, tetapi tidak tersedia di Python SDK karena tipe `HookEvent`-nya menghilangkannya. Di Python, mereka hanya tersedia sebagai [shell command hooks](/docs/id/hooks#hook-events) yang didefinisikan dalam file pengaturan seperti `.claude/settings.json`. Untuk memuat shell command hooks dari aplikasi SDK Anda, sertakan setting source yang sesuai dengan [`setting_sources`](/docs/id/agent-sdk/python#settingsource) atau [`settingSources`](/docs/id/agent-sdk/typescript#settingsource):881`SessionStart` dan `SessionEnd` dapat didaftarkan sebagai SDK callback hooks di TypeScript, tetapi tidak tersedia di Python SDK karena tipe `HookEvent`-nya menghilangkannya. Di Python, mereka hanya tersedia sebagai [shell command hooks](/docs/id/hooks#hook-events) yang didefinisikan dalam file pengaturan seperti `.claude/settings.json`. File pengaturan mana yang dimuat oleh aplikasi SDK Anda bergantung pada [`setting_sources`](/docs/id/agent-sdk/python#settingsource) atau [`settingSources`](/docs/id/agent-sdk/typescript#settingsource). Jika Anda mengatur opsi tersebut, sertakan sumber yang berisi hook:

882 882 

883<CodeGroup>883<CodeGroup>

884 ```python Python theme={null}884 ```python Python theme={null}


900 Subagent permission prompts multiplying900 Subagent permission prompts multiplying

901</h3>901</h3>

902 902 

903Ketika spawning multiple subagents, masing-masing mungkin meminta permissions secara terpisah untuk tool calls-nya sendiri. Untuk menghindari prompts berulang, gunakan hooks `PreToolUse` untuk auto-approve tools spesifik, atau konfigurasi permission rules, yang subagents [warisi dari parent conversation](/docs/id/sub-agents#permission-modes).903Ketika menjalankan beberapa subagent, masing-masing mungkin meminta izin secara terpisah untuk panggilan tool-nya sendiri. Untuk menghindari permintaan izin berulang, gunakan hooks `PreToolUse` untuk auto-approve tool spesifik, atau konfigurasikan aturan izin, yang [diwarisi subagent dari percakapan induk](/docs/id/sub-agents#permission-modes).

904 904 

905<h3 id="recursive-hook-loops-with-subagents">905<h3 id="recursive-hook-loops-with-subagents">

906 Recursive hook loops with subagents906 Recursive hook loops with subagents

907</h3>907</h3>

908 908 

909Hook `UserPromptSubmit` yang spawns subagents dapat membuat infinite loops jika subagents tersebut memicu hook yang sama. Untuk mencegah ini:909Hook `UserPromptSubmit` yang menjalankan subagent dapat membuat infinite loops jika subagent tersebut memicu hook yang sama. Untuk mencegah ini:

910 910 

911* Gunakan shared variable atau session state untuk track apakah Anda sudah berada di dalam subagent911* Gunakan shared variable atau session state untuk melacak apakah Anda sudah berada di dalam subagent

912* Scope hooks untuk hanya berjalan untuk sesi top-level agent912* Batasi hook agar hanya berjalan untuk sesi agent tingkat atas

913 913 

914<h3 id="systemmessage-not-appearing-in-output">914<h3 id="systemmessage-not-appearing-in-output">

915 systemMessage not appearing in output915 systemMessage not appearing in output


919 919 

920Sebelum v2.1.227, SDK menampilkan hook output di message stream hanya untuk hooks `SessionStart` dan `Setup`. Untuk event lainnya, output muncul hanya di lifecycle events yang [`includeHookEvents`](/docs/id/agent-sdk/typescript#options) (`include_hook_events` di Python) tambahkan. Entry opsi itu mencakup lifecycle events mana yang setiap hook event hasilkan.920Sebelum v2.1.227, SDK menampilkan hook output di message stream hanya untuk hooks `SessionStart` dan `Setup`. Untuk event lainnya, output muncul hanya di lifecycle events yang [`includeHookEvents`](/docs/id/agent-sdk/typescript#options) (`include_hook_events` di Python) tambahkan. Entry opsi itu mencakup lifecycle events mana yang setiap hook event hasilkan.

921 921 

922Jika Anda perlu menampilkan hook decisions ke aplikasi Anda dengan andal, log mereka secara terpisah atau gunakan dedicated output channel.922Jika Anda perlu menampilkan keputusan hook ke aplikasi Anda dengan andal, catat keputusan tersebut secara terpisah atau gunakan channel output khusus.

923 923 

924<h2 id="related-resources">924<h2 id="related-resources">

925 Related resources925 Related resources

Details

194 `ToolAnnotations`194 `ToolAnnotations`

195</h4>195</h4>

196 196 

197Petunjuk perilaku untuk tool, diteruskan sebagai argumen `annotations` dari [`tool()`](#tool). `ToolAnnotations` memperluas `mcp.types.ToolAnnotations` SDK MCP dengan field `maxResultSizeChars`, dan Anda dapat menulis setiap petunjuk dalam camelCase atau snake\_case: `ToolAnnotations(readOnlyHint=True)` dan `ToolAnnotations(read_only_hint=True)` adalah setara. Anda juga dapat melewatkan `mcp.types.ToolAnnotations` biasa di mana pun SDK menerima anotasi.197Petunjuk perilaku untuk tool, diteruskan sebagai argumen `annotations` dari [`tool()`](#tool). `ToolAnnotations` memperluas `mcp.types.ToolAnnotations` SDK MCP dengan field `maxResultSizeChars`, dan Anda dapat menulis setiap petunjuk dalam camelCase atau snake\_case: `ToolAnnotations(readOnlyHint=True)` dan `ToolAnnotations(read_only_hint=True)` adalah setara. Untuk membaca kembali petunjuk dari objek, gunakan ejaan yang dideklarasikan oleh paket `mcp` yang terinstal: `.readOnlyHint` pada `mcp` 1.x dan `.read_only_hint` pada 2.x, sedangkan `.maxResultSizeChars` berfungsi pada keduanya. Anda juga dapat melewatkan `mcp.types.ToolAnnotations` biasa di mana pun SDK menerima anotasi.

198 198 

199Nama snake\_case dan field `maxResultSizeChars` yang diketik memerlukan Python Agent SDK 0.2.140 atau lebih baru. Versi 0.1.31 hingga 0.2.139 mengekspor ulang `mcp.types.ToolAnnotations` tanpa perubahan. Pada versi 0.1.55 hingga 0.2.139 Anda masih dapat melewatkan `maxResultSizeChars` sebagai argumen kata kunci: kelas MCP menerima field tambahan, dan SDK meneruskan nilai ke Claude Code.199Nama snake\_case dan field `maxResultSizeChars` yang diketik memerlukan Python Agent SDK 0.2.140 atau lebih baru. Versi 0.1.31 hingga 0.2.139 mengekspor ulang `mcp.types.ToolAnnotations` tanpa perubahan. Pada versi 0.1.55 hingga 0.2.139 Anda masih dapat melewatkan `maxResultSizeChars` sebagai argumen kata kunci: kelas MCP menerima field tambahan, dan SDK meneruskan nilai ke Claude Code.

200 200 


321| `summary` | `str` | Judul tampilan: judul kustom, prompt terbaru, ringkasan yang dihasilkan otomatis, atau prompt pertama |321| `summary` | `str` | Judul tampilan: judul kustom, prompt terbaru, ringkasan yang dihasilkan otomatis, atau prompt pertama |

322| `last_modified` | `int` | Waktu modifikasi terakhir dalam milidetik sejak epoch |322| `last_modified` | `int` | Waktu modifikasi terakhir dalam milidetik sejak epoch |

323| `file_size` | `int \| None` | Ukuran file sesi dalam byte (`None` untuk backend penyimpanan jarak jauh) |323| `file_size` | `int \| None` | Ukuran file sesi dalam byte (`None` untuk backend penyimpanan jarak jauh) |

324| `custom_title` | `str \| None` | Judul sesi yang ditetapkan pengguna |324| `custom_title` | `str \| None` | Judul sesi: judul yang ditetapkan pengguna, atau judul yang dihasilkan otomatis jika tidak ada yang ditetapkan |

325| `first_prompt` | `str \| None` | Prompt pengguna bermakna pertama dalam sesi |325| `first_prompt` | `str \| None` | Prompt pengguna bermakna pertama dalam sesi |

326| `git_branch` | `str \| None` | Cabang Git di akhir sesi |326| `git_branch` | `str \| None` | Branch Git di akhir sesi |

327| `cwd` | `str \| None` | Direktori kerja untuk sesi |327| `cwd` | `str \| None` | Direktori kerja untuk sesi |

328| `tag` | `str \| None` | Tag sesi yang ditetapkan pengguna (lihat [`tag_session()`](#tag_session)) |328| `tag` | `str \| None` | Tag sesi yang ditetapkan pengguna (lihat [`tag_session()`](#tag_session)) |

329| `created_at` | `int \| None` | Waktu pembuatan sesi dalam milidetik sejak epoch |329| `created_at` | `int \| None` | Waktu pembuatan sesi dalam milidetik sejak epoch |


927| `continue_conversation` | `bool` | `False` | Lanjutkan percakapan terbaru |927| `continue_conversation` | `bool` | `False` | Lanjutkan percakapan terbaru |

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

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

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

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

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

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


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

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

942| `add_dirs` | `list[str \| Path]` | `[]` | Direktori tambahan yang dapat diakses Claude. SDK meneruskan setiap entri ke Claude Code sebagai `--add-dir`, jadi dengan sumber pengaturan `project` Claude Code juga [memuat skills, commands, dan subagents direktori](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) |942| `add_dirs` | `list[str \| Path]` | `[]` | Direktori tambahan yang dapat diakses Claude. SDK meneruskan setiap entri ke Claude Code sebagai `--add-dir`, jadi dengan sumber pengaturan `project` Claude Code juga [memuat skills, commands, dan subagents direktori](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) |

943| `env` | `dict[str, str]` | `{}` | Variabel lingkungan yang digabungkan di atas lingkungan proses yang diwarisi. Lihat [Environment variables](/docs/id/env-vars) untuk variabel yang dibaca CLI yang mendasar, dan [Handle slow or stalled API responses](#handle-slow-or-stalled-api-responses) untuk variabel terkait timeout. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |943| `env` | `dict[str, str]` | `{}` | Environment variable yang digabungkan di atas lingkungan proses yang diwarisi. Lihat [Environment variables](/docs/id/env-vars) untuk variabel yang dibaca CLI yang mendasar, dan [Handle slow or stalled API responses](#handle-slow-or-stalled-api-responses) untuk variabel terkait timeout. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |

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

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

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


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

952| `include_hook_events` | `bool` | `False` | Sertakan event lifecycle hook dalam aliran pesan sebagai objek `HookEventMessage` |952| `include_hook_events` | `bool` | `False` | Sertakan event lifecycle hook dalam aliran pesan sebagai objek `HookEventMessage` |

953| `forward_subagent_text` | `bool` | `False` | Teruskan blok teks dan thinking subagent dalam aliran pesan. Tanpa opsi ini, Claude Code memancarkan blok `tool_use` dan `tool_result` subagent tetapi bukan teks atau thinking. Memerlukan Python Agent SDK 0.2.140 atau lebih baru |953| `forward_subagent_text` | `bool` | `False` | Teruskan blok teks dan thinking subagent dalam aliran pesan. Tanpa opsi ini, Claude Code memancarkan blok `tool_use` dan `tool_result` subagent tetapi bukan teks atau thinking. Memerlukan Python Agent SDK 0.2.140 atau lebih baru |

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

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

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

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

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

959| `plugins` | `list[SdkPluginConfig]` | `[]` | Muat plugin kustom dari jalur lokal. Lihat [Plugins](/docs/id/agent-sdk/plugins) untuk detail |959| `plugins` | `list[SdkPluginConfig]` | `[]` | Muat plugin kustom dari jalur lokal. Lihat [Plugins](/docs/id/agent-sdk/plugins) untuk detail |

960| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | Konfigurasi perilaku sandbox secara programatis. Lihat [Sandbox settings](#sandboxsettings) untuk detail |960| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | Konfigurasi perilaku sandbox secara programatis. Lihat [Sandbox settings](#sandboxsettings) untuk detail |

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

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

963| `max_thinking_tokens` | `int \| None` | `None` | *Deprecated* - Token maksimal untuk blok thinking. Gunakan `thinking` sebagai gantinya |963| `max_thinking_tokens` | `int \| None` | `None` | *Deprecated* - Token maksimal untuk blok thinking. Gunakan `thinking` sebagai gantinya |

964| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Mengontrol perilaku extended thinking. Mengambil prioritas atas `max_thinking_tokens` |964| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Mengontrol perilaku extended thinking. Diutamakan daripada `max_thinking_tokens` |

965| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Tingkat usaha untuk kedalaman thinking. Lihat [adjust the effort level](/docs/id/model-config#adjust-effort-level) |965| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Tingkat effort untuk kedalaman thinking. Lihat [adjust the effort level](/docs/id/model-config#adjust-effort-level) |

966| `session_store` | [`SessionStore`](/docs/id/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Cerminkan transkrip sesi ke backend eksternal sehingga host apa pun dapat melanjutkannya. Lihat [Persist sessions to external storage](/docs/id/agent-sdk/session-storage) |966| `session_store` | [`SessionStore`](/docs/id/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Cerminkan transkrip sesi ke backend eksternal sehingga host lain dapat melanjutkannya. Lihat [Persist sessions to external storage](/docs/id/agent-sdk/session-storage) |

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

968| `load_timeout_ms` | `int` | `60000` | Per-call timeout untuk `session_store.load()` dan `list_subkeys()` selama materialisasi resume, dalam milidetik |968| `load_timeout_ms` | `int` | `60000` | Per-call timeout untuk `session_store.load()` dan `list_subkeys()` selama materialisasi resume, dalam milidetik |

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

970 970 


972 Menangani respons API yang lambat atau terhenti972 Menangani respons API yang lambat atau terhenti

973</h4>973</h4>

974 974 

975Subprocess CLI membaca beberapa variabel lingkungan yang mengontrol timeout API dan deteksi stall. Teruskan melalui `ClaudeAgentOptions.env`:975Subprocess CLI membaca beberapa environment variable yang mengontrol timeout API dan deteksi stall. Teruskan melalui `ClaudeAgentOptions.env`:

976 976 

977```python theme={null}977```python theme={null}

978from claude_agent_sdk import ClaudeAgentOptions978from claude_agent_sdk import ClaudeAgentOptions


987```987```

988 988 

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

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

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

992 992 

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


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

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

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

1037| `exclude_dynamic_sections` | Tidak | Pindahkan konteks per-pengguna, seperti lokasi memori otomatis, dari system prompt ke pesan pengguna pertama. Meningkatkan reuse prompt-cache di seluruh pengguna dan mesin. Lihat [Modify system prompts](/docs/id/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |1037| `exclude_dynamic_sections` | Tidak | Pindahkan konteks per-pengguna, seperti lokasi auto memory, dari system prompt ke pesan pengguna pertama. Meningkatkan reuse prompt-cache di seluruh pengguna dan mesin. Lihat [Modify system prompts](/docs/id/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines) |

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

1039 1039 

1040<h3 id="systempromptcustom">1040<h3 id="systempromptcustom">

1041 `SystemPromptCustom`1041 `SystemPromptCustom`

1042</h3>1042</h3>

1043 1043 

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

1045 1045 

1046```python theme={null}1046```python theme={null}

1047class SystemPromptCustom(TypedDict):1047class SystemPromptCustom(TypedDict):


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

1178 1178 

1179<h4 id="settings-precedence">1179<h4 id="settings-precedence">

1180 Preseden pengaturan1180 Prioritas pengaturan

1181</h4>1181</h4>

1182 1182 

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

1184 1184 

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

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

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

1188 1188 

1189Opsi programatis seperti `agents`, `allowed_tools`, dan `settings` mengganti pengaturan filesystem pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola mengambil prioritas atas opsi programatis.1189Opsi programatis seperti `agents`, `allowed_tools`, dan `settings` menimpa pengaturan filesystem pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola diutamakan daripada opsi programatis.

1190 1190 

1191<h3 id="agentdefinition">1191<h3 id="agentdefinition">

1192 `AgentDefinition`1192 `AgentDefinition`


1218| `prompt` | Ya | System prompt agent |1218| `prompt` | Ya | System prompt agent |

1219| `tools` | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi setiap [tool yang tersedia untuk subagent](/docs/id/sub-agents#available-tools) |1219| `tools` | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi setiap [tool yang tersedia untuk subagent](/docs/id/sub-agents#available-tools) |

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

1221| `model` | Tidak | Penggantian model untuk agent ini. Menerima alias seperti `"sonnet"`, `"opus"`, `"haiku"`, atau `"inherit"`, atau ID model lengkap. Ketika Anda menghilangkannya, Claude Code memilih model dalam [urutan model subagent](/docs/id/sub-agents#choose-a-model) |1221| `model` | Tidak | Override model untuk agent ini. Menerima alias seperti `"sonnet"`, `"opus"`, `"haiku"`, atau `"inherit"`, atau ID model lengkap. Ketika Anda menghilangkannya, Claude Code memilih model dalam [urutan model subagent](/docs/id/sub-agents#choose-a-model) |

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

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

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

1225| `initialPrompt` | Tidak | Auto-submitted sebagai putaran pengguna pertama ketika agent ini berjalan sebagai agent thread utama |1225| `initialPrompt` | Tidak | Auto-submitted sebagai giliran pengguna pertama ketika agent ini berjalan sebagai agent thread utama |

1226| `maxTurns` | Tidak | Jumlah maksimal putaran agentic sebelum agent berhenti |1226| `maxTurns` | Tidak | Jumlah maksimal giliran agentic sebelum agent berhenti |

1227| `background` | Tidak | Jalankan agent ini sebagai tugas latar belakang non-blocking ketika dipanggil |1227| `background` | Tidak | Jalankan agent ini sebagai tugas latar belakang non-blocking ketika dipanggil |

1228| `effort` | Tidak | Tingkat usaha reasoning untuk agent ini. Menerima tingkat bernama atau integer. Lihat [`EffortLevel`](#effortlevel) |1228| `effort` | Tidak | Tingkat effort reasoning untuk agent ini. Menerima tingkat bernama atau integer. Lihat [`EffortLevel`](#effortlevel) |

1229| `permissionMode` | Tidak | Mode izin untuk eksekusi tool dalam agent ini. [Aturan inheritance subagent](/docs/id/agent-sdk/permissions#available-modes) memutuskan kapan itu berlaku. Lihat [`PermissionMode`](#permissionmode) |1229| `permissionMode` | Tidak | Mode izin untuk eksekusi tool dalam agent ini. [Aturan inheritance subagent](/docs/id/agent-sdk/permissions#available-modes) memutuskan kapan itu berlaku. Lihat [`PermissionMode`](#permissionmode) |

1230 1230 

1231<Note>1231<Note>


1253 `EffortLevel`1253 `EffortLevel`

1254</h3>1254</h3>

1255 1255 

1256Tingkat usaha untuk membimbing kedalaman thinking.1256Tingkat effort untuk membimbing kedalaman thinking.

1257 1257 

1258```python theme={null}1258```python theme={null}

1259EffortLevel = Literal[1259EffortLevel = Literal[


1465| `enabled` | `type`, `budget_tokens`, `display` | Aktifkan thinking dengan budget token tertentu |1465| `enabled` | `type`, `budget_tokens`, `display` | Aktifkan thinking dengan budget token tertentu |

1466| `disabled` | `type` | Nonaktifkan thinking |1466| `disabled` | `type` | Nonaktifkan thinking |

1467 1467 

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

1469 1469 

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

1471 1471 


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

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

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

1629| `scope` | `str` (opsional) | Scope konfigurasi |1629| `scope` | `str` (opsional) | Cakupan konfigurasi |

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

1631 1631 

1632<h3 id="contextusageresponse">1632<h3 id="contextusageresponse">


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

1661```1661```

1662 1662 

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

1664 1664 

1665<h3 id="sdkpluginconfig">1665<h3 id="sdkpluginconfig">

1666 `SdkPluginConfig`1666 `SdkPluginConfig`


1734| `uuid` | `str \| None` | Pengenal pesan unik |1734| `uuid` | `str \| None` | Pengenal pesan unik |

1735| `parent_tool_use_id` | `str \| None` | ID penggunaan tool jika pesan ini adalah respons hasil tool |1735| `parent_tool_use_id` | `str \| None` | ID penggunaan tool jika pesan ini adalah respons hasil tool |

1736| `tool_use_result` | `dict[str, Any] \| None` | Data hasil tool jika berlaku |1736| `tool_use_result` | `dict[str, Any] \| None` | Data hasil tool jika berlaku |

1737| `origin` | `MessageOrigin \| None` | Asal pesan ini, diisi pada putaran yang disuntikkan seperti notifikasi tugas dan pesan peer. `None` ketika CLI tidak mengatribusikannya. Memerlukan Python Agent SDK 0.2.137 atau lebih baru |1737| `origin` | `MessageOrigin \| None` | Asal pesan ini, diisi pada giliran yang disuntikkan seperti notifikasi tugas dan pesan peer. `None` ketika CLI tidak mengatribusikannya. Memerlukan Python Agent SDK 0.2.137 atau lebih baru |

1738 1738 

1739SDK melewatkan `tool_use_result` melalui dari CLI tanpa modifikasi. Untuk tool pada server MCP eksternal yang hasilnya berisi blok `resource_link`, dict memiliki kunci `resourceLinks` yang menyimpan daftar dict dengan kunci dari tipe TypeScript [`SDKMcpResourceLink`](/docs/id/agent-sdk/typescript#sdkmcpresourcelink). Claude menerima setiap link sebagai baris teks dalam hasil tool. Untuk merender file yang dikembalikan server, baca `resourceLinks` alih-alih mengurai teks itu. Kunci `resourceLinks` memerlukan Python Agent SDK 0.2.150 atau lebih baru dan Claude Code v2.1.257 atau lebih baru; CLI yang dibundel dengan versi SDK itu memenuhi persyaratan Claude Code.1739SDK melewatkan `tool_use_result` melalui dari CLI tanpa modifikasi. Untuk tool pada server MCP eksternal yang hasilnya berisi blok `resource_link`, dict memiliki kunci `resourceLinks` yang menyimpan daftar dict dengan kunci dari tipe TypeScript [`SDKMcpResourceLink`](/docs/id/agent-sdk/typescript#sdkmcpresourcelink). Claude menerima setiap link sebagai baris teks dalam hasil tool. Untuk merender file yang dikembalikan server, baca `resourceLinks` alih-alih mengurai teks itu. Kunci `resourceLinks` memerlukan Python Agent SDK 0.2.150 atau lebih baru dan Claude Code v2.1.257 atau lebih baru; CLI yang dibundel dengan versi SDK itu memenuhi persyaratan Claude Code.

1740 1740 


1767| `parent_tool_use_id` | `str \| None` | ID penggunaan tool jika ini adalah respons bersarang |1767| `parent_tool_use_id` | `str \| None` | ID penggunaan tool jika ini adalah respons bersarang |

1768| `error` | [`AssistantMessageError`](#assistantmessageerror) ` \| None` | Tipe error jika respons mengalami error |1768| `error` | [`AssistantMessageError`](#assistantmessageerror) ` \| None` | Tipe error jika respons mengalami error |

1769| `usage` | `dict[str, Any] \| None` | Penggunaan token per-pesan (kunci yang sama seperti [`ResultMessage.usage`](#resultmessage)) |1769| `usage` | `dict[str, Any] \| None` | Penggunaan token per-pesan (kunci yang sama seperti [`ResultMessage.usage`](#resultmessage)) |

1770| `message_id` | `str \| None` | ID pesan API. Beberapa pesan dari satu putaran berbagi ID yang sama |1770| `message_id` | `str \| None` | ID pesan API. Beberapa pesan dari satu giliran berbagi ID yang sama |

1771| `stop_reason` | `str \| None` | Alasan berhenti dari API (misalnya `end_turn`, `tool_use`) |1771| `stop_reason` | `str \| None` | Alasan berhenti dari API (misalnya `end_turn`, `tool_use`) |

1772| `session_id` | `str \| None` | ID sesi pesan ini milik |1772| `session_id` | `str \| None` | ID sesi pesan ini milik |

1773| `uuid` | `str \| None` | Pengenal pesan unik dalam transkrip sesi |1773| `uuid` | `str \| None` | Pengenal pesan unik dalam transkrip sesi |


1840 1840 

1841Beberapa field membawa detail diagnostik tentang bagaimana percakapan berakhir:1841Beberapa field membawa detail diagnostik tentang bagaimana percakapan berakhir:

1842 1842 

1843* `is_error`: `True` ketika percakapan berakhir dalam status error. Selalu `True` pada subtype `error_*`. Pada `subtype="success"` ini adalah `True` ketika permintaan model terakhir gagal, berarti loop agen selesai tetapi panggilan API terakhir mengembalikan error.1843* `is_error`: `True` ketika percakapan berakhir dalam status error. Selalu `True` pada subtype `error_*`. Pada `subtype="success"` ini adalah `True` ketika permintaan model terakhir gagal, berarti loop agent selesai tetapi panggilan API terakhir mengembalikan error.

1844* `api_error_status`: kode status HTTP dari error API yang mengakhiri. `None` ketika putaran berakhir tanpa satu. Diisi hanya pada `subtype="success"`.1844* `api_error_status`: kode status HTTP dari error API yang mengakhiri. `None` ketika giliran berakhir tanpa satu. Diisi hanya pada `subtype="success"`.

1845* `result`: teks pesan asisten terakhir pada `subtype="success"`, atau `None` pada subtype `error_*`. Ketika `subtype="success"` dan `is_error=True`, ini menyimpan string error API jika tersedia tetapi dapat kosong, jadi periksa `api_error_status` dan konten `AssistantMessage` sebelumnya untuk detail.1845* `result`: teks pesan asisten terakhir pada `subtype="success"`, atau `None` pada subtype `error_*`. Ketika `subtype="success"` dan `is_error=True`, ini menyimpan string error API jika tersedia tetapi dapat kosong, jadi periksa `api_error_status` dan konten `AssistantMessage` sebelumnya untuk detail.

1846* `errors`: string error tingkat loop seperti pesan max-turns. Diisi hanya pada subtype `error_*`.1846* `errors`: string error tingkat loop seperti pesan max-turns. Diisi hanya pada subtype `error_*`.

1847* `terminal_reason`: mengapa loop query berakhir, seperti `"completed"`, `"max_turns"`, `"api_error"`, `"aborted_streaming"`, atau `"aborted_tools"`. Nilai `"aborted_streaming"` atau `"aborted_tools"` berarti putaran dibatalkan sebelum selesai. Penyebab umum adalah [`interrupt()`](#claudesdkclient) dan callback izin mengembalikan [`PermissionResultDeny`](#permissionresultdeny) dengan `interrupt=True`. `None` pada versi CLI yang mendahului field, pada hasil dari perintah lokal seperti `/voice` atau `/usage`, yang melewati loop query, atau pada hasil error yang disintesis yang dipancarkan ketika sesi gagal secara fatal. Mencerminkan [`SDKResultMessage.terminal_reason`](/docs/id/agent-sdk/typescript#sdkresultmessage) SDK TypeScript, yang mencantumkan set lengkap nilai.1847* `terminal_reason`: mengapa loop query berakhir, seperti `"completed"`, `"max_turns"`, `"api_error"`, `"aborted_streaming"`, atau `"aborted_tools"`. Nilai `"aborted_streaming"` atau `"aborted_tools"` berarti giliran dibatalkan sebelum selesai. Penyebab umum adalah [`interrupt()`](#claudesdkclient) dan callback izin mengembalikan [`PermissionResultDeny`](#permissionresultdeny) dengan `interrupt=True`. `None` pada versi CLI yang mendahului field, pada hasil dari perintah lokal seperti `/voice` atau `/usage`, yang melewati loop query, atau pada hasil error yang disintesis yang dipancarkan ketika sesi gagal secara fatal. Mencerminkan [`SDKResultMessage.terminal_reason`](/docs/id/agent-sdk/typescript#sdkresultmessage) SDK TypeScript, yang mencantumkan set lengkap nilai.

1848* `origin`: asal pesan pengguna yang memicu putaran ini. Dalam [mode input streaming](/docs/id/agent-sdk/streaming-vs-single-mode), periksa ini untuk membedakan hasil prompt Anda sendiri, di mana `origin` adalah `None` atau `{"kind": "human"}`, dari hasil putaran yang disuntikkan seperti notifikasi tugas latar belakang. Memerlukan Python Agent SDK 0.2.137 atau lebih baru.1848* `origin`: asal pesan pengguna yang memicu giliran ini. Dalam [mode input streaming](/docs/id/agent-sdk/streaming-vs-single-mode), periksa ini untuk membedakan hasil prompt Anda sendiri, di mana `origin` adalah `None` atau `{"kind": "human"}`, dari hasil giliran yang disuntikkan seperti notifikasi tugas latar belakang. Memerlukan Python Agent SDK 0.2.137 atau lebih baru.

1849 1849 

1850Dict `usage` mencakup loop agen utama saja dan mengecualikan subagent dan panggilan model bersarang atau tambahan lainnya. Dalam [mode input streaming](/docs/id/agent-sdk/streaming-vs-single-mode), nilainya per-putaran. Lebih suka `model_usage` untuk akuntansi token dan biaya. Dict `usage` berisi kunci berikut ketika ada:1850Dict `usage` mencakup loop agent utama saja dan mengecualikan subagent dan panggilan model bersarang atau tambahan lainnya. Dalam [mode input streaming](/docs/id/agent-sdk/streaming-vs-single-mode), nilainya per-giliran. Lebih suka `model_usage` untuk akuntansi token dan biaya. Dict `usage` berisi kunci berikut ketika ada:

1851 1851 

1852| Kunci | Tipe | Deskripsi |1852| Kunci | Tipe | Deskripsi |

1853| - | - | - |1853| - | - | - |

1854| `input_tokens` | `int` | Token input yang dikonsumsi oleh loop agen tingkat atas. [Token subagent tidak disertakan](/docs/id/agent-sdk/cost-tracking#get-the-total-cost-of-a-query); gunakan `model_usage` untuk akuntansi seluruh pohon. |1854| `input_tokens` | `int` | Token input yang dikonsumsi oleh loop agent tingkat atas. [Token subagent tidak disertakan](/docs/id/agent-sdk/cost-tracking#get-the-total-cost-of-a-query); gunakan `model_usage` untuk akuntansi seluruh pohon. |

1855| `output_tokens` | `int` | Token output yang dihasilkan oleh loop agen tingkat atas. Token subagent tidak disertakan. |1855| `output_tokens` | `int` | Token output yang dihasilkan oleh loop agent tingkat atas. Token subagent tidak disertakan. |

1856| `cache_creation_input_tokens` | `int` | Token yang digunakan untuk membuat entri cache baru. |1856| `cache_creation_input_tokens` | `int` | Token yang digunakan untuk membuat entri cache baru. |

1857| `cache_read_input_tokens` | `int` | Token yang dibaca dari entri cache yang ada. |1857| `cache_read_input_tokens` | `int` | Token yang dibaca dari entri cache yang ada. |

1858 1858 

1859Dict `model_usage` memetakan nama model ke penggunaan per-model. Ini mencakup setiap panggilan model yang dibuat melalui pipeline query: loop utama, subagent, dan panggilan internal seperti compaction dan Workflow agents. Panggilan helper di luar pipeline itu, seperti classifier izin dan permintaan penghitungan token, dikecualikan dari `model_usage`. Perlakukan `model_usage` sebagai perkiraan, bukan pernyataan penagihan.1859Dict `model_usage` memetakan nama model ke penggunaan per-model. Ini mencakup setiap panggilan model yang dibuat melalui pipeline query: loop utama, subagent, dan panggilan internal seperti compaction dan Workflow agents. Panggilan helper di luar pipeline itu, seperti pengklasifikasi izin dan permintaan penghitungan token, dikecualikan dari `model_usage`. Perlakukan `model_usage` sebagai perkiraan, bukan pernyataan penagihan.

1860 1860 

1861Dalam [mode input streaming](/docs/id/agent-sdk/streaming-vs-single-mode), `model_usage` dan `total_cost_usd` adalah kumulatif di seluruh putaran, jadi baca hasil terbaru daripada menjumlahkan di seluruh hasil. Panggilan yang melanjutkan sesi juga menghitung [total yang dipulihkan dari panggilan sebelumnya sesi](/docs/id/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Lihat [Track costs in streaming input mode](/docs/id/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) untuk reset dan [Recover totals after a session crash](/docs/id/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) untuk hasil yang dinolkan.1861Dalam [mode input streaming](/docs/id/agent-sdk/streaming-vs-single-mode), `model_usage` dan `total_cost_usd` adalah kumulatif di seluruh giliran, jadi baca hasil terbaru daripada menjumlahkan di seluruh hasil. Panggilan yang melanjutkan sesi juga menghitung [total yang dipulihkan dari panggilan sebelumnya sesi](/docs/id/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Lihat [Track costs in streaming input mode](/docs/id/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) untuk reset dan [Recover totals after a session crash](/docs/id/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) untuk hasil yang dinolkan.

1862 1862 

1863Setiap nilai dalam `model_usage` adalah TypedDict `ModelUsage`, diimpor melalui `from claude_agent_sdk.types import ModelUsage`. Kuncinya menggunakan camelCase karena SDK melewatkan nilai tanpa modifikasi dari proses CLI yang mendasar, cocok dengan tipe TypeScript [`ModelUsage`](/docs/id/agent-sdk/typescript#modelusage):1863Setiap nilai dalam `model_usage` adalah TypedDict `ModelUsage`, diimpor melalui `from claude_agent_sdk.types import ModelUsage`. Kuncinya menggunakan camelCase karena SDK melewatkan nilai tanpa modifikasi dari proses CLI yang mendasar, cocok dengan tipe TypeScript [`ModelUsage`](/docs/id/agent-sdk/typescript#modelusage):

1864 1864 


1869| `cacheReadInputTokens` | `int` | Token baca cache untuk model ini. |1869| `cacheReadInputTokens` | `int` | Token baca cache untuk model ini. |

1870| `cacheCreationInputTokens` | `int` | Token pembuatan cache untuk model ini. |1870| `cacheCreationInputTokens` | `int` | Token pembuatan cache untuk model ini. |

1871| `webSearchRequests` | `int` | Permintaan pencarian web yang dibuat oleh model ini. |1871| `webSearchRequests` | `int` | Permintaan pencarian web yang dibuat oleh model ini. |

1872| `thinkingTokens` | `int` | Token thinking yang dihasilkan oleh model ini, sudah dihitung dalam `outputTokens`. Tidak ada sampai putaran berjalan pada versi Claude Code yang mencatatnya, dan tidak dideklarasikan pada TypedDict, jadi bacanya dengan `.get()`. Memerlukan Python Agent SDK 0.2.150 atau lebih baru, yang CLI bundel-nya mencatatnya. |1872| `thinkingTokens` | `int` | Token thinking yang dihasilkan oleh model ini, sudah dihitung dalam `outputTokens`. Tidak ada sampai giliran berjalan pada versi Claude Code yang mencatatnya, dan tidak dideklarasikan pada TypedDict, jadi bacanya dengan `.get()`. Memerlukan Python Agent SDK 0.2.150 atau lebih baru, yang CLI bundel-nya mencatatnya. |

1873| `costUSD` | `float` | Biaya yang diperkirakan dalam USD untuk model ini, dihitung sisi klien. Lihat [Track cost and usage](/docs/id/agent-sdk/cost-tracking) untuk peringatan penagihan. |1873| `costUSD` | `float` | Biaya yang diperkirakan dalam USD untuk model ini, dihitung sisi klien. Lihat [Track cost and usage](/docs/id/agent-sdk/cost-tracking) untuk peringatan penagihan. |

1874| `contextWindow` | `int` | Ukuran jendela konteks untuk model ini. |1874| `contextWindow` | `int` | Ukuran context window untuk model ini. |

1875| `maxOutputTokens` | `int` | Batas token output maksimal untuk model ini. |1875| `maxOutputTokens` | `int` | Batas token output maksimal untuk model ini. |

1876| `canonicalModel` | `str` | ID model kanonik yang digunakan untuk pencarian harga. Mungkin berbeda dari string model mentah yang menjadi kunci entri, seperti ID spesifik penyedia atau alias. Tidak selalu ada. |1876| `canonicalModel` | `str` | ID model kanonik yang digunakan untuk pencarian harga. Mungkin berbeda dari string model mentah yang menjadi kunci entri, seperti ID spesifik penyedia atau alias. Tidak selalu ada. |

1877| `provider` | `str` | Penyedia API yang melayani model ini, seperti `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle`, atau `gateway`. Tidak selalu ada. |1877| `provider` | `str` | Penyedia API yang melayani model ini, seperti `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle`, atau `gateway`. Tidak selalu ada. |

1878| `costBasis` | `str` | Tabel harga yang menentukan harga permintaan terbaru model ini: `list` untuk harga daftar, `managed` untuk tabel [`modelPricing`](/docs/id/settings-reference#modelpricing), atau `unknown` ketika tidak ada yang cocok dengan ID model. Tidak selalu ada, dan tidak dideklarasikan pada TypedDict, jadi bacanya dengan `.get()`. Memerlukan Claude Code v2.1.246 atau lebih baru. |

1878 1879 

1879<h3 id="streamevent">1880<h3 id="streamevent">

1880 `StreamEvent`1881 `StreamEvent`


1978 `TaskStartedMessage`1979 `TaskStartedMessage`

1979</h3>1980</h3>

1980 1981 

1981Dipancarkan ketika tugas latar belakang dimulai. Tugas latar belakang adalah apa pun yang dilacak di luar putaran utama: perintah Bash yang di-background, [Monitor](#monitor) watch, subagent yang dihasilkan melalui tool Agent, atau agent jarak jauh. Field `task_type` memberi tahu Anda yang mana. Penamaan ini tidak terkait dengan penggantian nama tool `Task`-ke-`Agent`.1982Dipancarkan ketika tugas latar belakang dimulai. Tugas latar belakang adalah apa pun yang dilacak di luar giliran utama: perintah Bash yang di-background, [Monitor](#monitor) watch, subagent yang dihasilkan melalui tool Agent, atau agent jarak jauh. Field `task_type` memberi tahu Anda yang mana. Penamaan ini tidak terkait dengan penggantian nama tool `Task`-ke-`Agent`.

1982 1983 

1983```python theme={null}1984```python theme={null}

1984@dataclass1985@dataclass


2166 """Base error for Claude SDK."""2167 """Base error for Claude SDK."""

2167```2168```

2168 2169 

2169Ketika `query()` single-shot berakhir dengan hasil error, misalnya error turn-limit, SDK mengangkat [`ResultError`](#resulterror) setelah menghasilkan pesan hasil akhir. Versi Python Agent SDK sebelum 0.2.140 mengangkat `Exception` biasa yang bukan subkelas `ClaudeSDKError`.2170Ketika `query()` single-shot berakhir dengan hasil error, misalnya error turn-limit, SDK mengangkat [`ResultError`](#resulterror).

2170 2171 

2171<h3 id="clinotfounderror">2172<h3 id="clinotfounderror">

2172 `CLINotFoundError`2173 `CLINotFoundError`


2216 `ResultError`2217 `ResultError`

2217</h3>2218</h3>

2218 2219 

2219Diangkat setelah [`ResultMessage`](#resultmessage) akhir ketika proses Claude Code keluar karena run berakhir dengan hasil error, seperti error turn-limit atau error API. `ResultError` adalah subkelas `ProcessError`, jadi handler `except ProcessError` yang sudah ada juga menangkapnya. Atributnya membawa bidang-bidang dari pesan hasil tersebut, sehingga Anda dapat membuat cabang tentang mengapa run gagal tanpa mengurai teks pesan. Memerlukan Python Agent SDK 0.2.140 atau lebih baru.2220Diangkat ketika proses Claude Code keluar karena run berakhir dengan [pesan hasil](#resultmessage) error, seperti error turn-limit atau error API. `ResultError` adalah subkelas `ProcessError`, jadi handler `except ProcessError` yang sudah ada juga menangkapnya. Atributnya membawa bidang-bidang dari pesan hasil tersebut, sehingga Anda dapat membuat cabang tentang mengapa run gagal tanpa mengurai teks pesan. Memerlukan Python Agent SDK 0.2.140 atau lebih baru.

2220 2221 

2221```python theme={null}2222```python theme={null}

2222class ResultError(ProcessError):2223class ResultError(ProcessError):


2649 hookEventName: Literal["PostToolUse"]2650 hookEventName: Literal["PostToolUse"]

2650 additionalContext: NotRequired[str]2651 additionalContext: NotRequired[str]

2651 updatedToolOutput: NotRequired[Any]2652 updatedToolOutput: NotRequired[Any]

2652 updatedMCPToolOutput: NotRequired[Any] # Deprecated: use updatedToolOutput, which works for all tools2653 updatedMCPToolOutput: NotRequired[Any] # MCP tools only. Prefer updatedToolOutput, which works for all tools

2653 2654 

2654 2655 

2655class PostToolUseFailureHookSpecificOutput(TypedDict):2656class PostToolUseFailureHookSpecificOutput(TypedDict):


2708 Contoh Penggunaan Hook2709 Contoh Penggunaan Hook

2709</h3>2710</h3>

2710 2711 

2711Contoh ini mendaftarkan dua hooks: satu yang memblokir perintah bash berbahaya seperti `rm -rf /`, dan satu lagi yang mencatat semua penggunaan tool untuk audit. Hook keamanan hanya berjalan pada perintah Bash (melalui `matcher`), sementara hook logging berjalan pada semua tools.2712Contoh ini mendaftarkan dua hooks: satu yang memblokir perintah Bash berbahaya seperti `rm -rf /`, dan satu lagi yang mencatat semua penggunaan tool untuk audit. Hook keamanan hanya berjalan pada perintah Bash (melalui `matcher`), sementara hook logging berjalan pada semua tools.

2712 2713 

2713```python theme={null}2714```python theme={null}

2714import asyncio2715import asyncio


2782```python theme={null}2783```python theme={null}

2783{2784{

2784 "description": str, # Deskripsi singkat tugas (3-5 kata)2785 "description": str, # Deskripsi singkat tugas (3-5 kata)

2785 "prompt": str, # Tugas untuk dijalankan oleh agen2786 "prompt": str, # Tugas untuk dijalankan oleh agent

2786 "subagent_type": str | None, # Jenis agen khusus yang digunakan2787 "subagent_type": str | None, # Jenis agent khusus yang digunakan

2787 "model": "sonnet" | "opus" | "haiku" | "fable" | None, # Penggantian model untuk agen ini2788 "model": "sonnet" | "opus" | "haiku" | "fable" | None, # Override model untuk agent ini

2788 "run_in_background": bool | None, # Agen berjalan di latar belakang secara default; atur ke False untuk menjalankan secara sinkron2789 "run_in_background": bool | None, # Agent berjalan di latar belakang secara default; atur ke False untuk menjalankan secara sinkron

2789 "name": str | None, # Nama untuk agen yang dihasilkan2790 "name": str | None, # Nama untuk agent yang dihasilkan

2790 "team_name": str | None, # Tidak digunakan lagi; diabaikan2791 "team_name": str | None, # Tidak digunakan lagi; diabaikan

2791 "mode": "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan" | None, # Tidak digunakan lagi; diabaikan. Aturan pewarisan subagen memutuskan mode izin subagen2792 "mode": "acceptEdits" | "auto" | "bypassPermissions" | "default" | "dontAsk" | "plan" | None, # Tidak digunakan lagi; diabaikan. Aturan pewarisan subagent memutuskan mode izin subagent

2792 "isolation": "worktree" | "remote" | None, # Mode isolasi untuk perubahan agen2793 "isolation": "worktree" | "remote" | None, # Mode isolasi untuk perubahan agent

2793}2794}

2794```2795```

2795 2796 

2796Meluncurkan agen baru untuk menangani tugas kompleks multi-langkah secara otonom.2797Meluncurkan agent baru untuk menangani tugas kompleks multi-langkah secara otonom.

2797 2798 

2798**Output (status: `"completed"`):**2799**Output (status: `"completed"`):**

2799 2800 


2850{2851{

2851 "status": "async_launched",2852 "status": "async_launched",

2852 "isAsync": bool | None, # True pada peluncuran latar belakang2853 "isAsync": bool | None, # True pada peluncuran latar belakang

2853 "agentId": str, # ID agen yang diluncurkan2854 "agentId": str, # ID agent yang diluncurkan

2854 "description": str, # Deskripsi tugas2855 "description": str, # Deskripsi tugas

2855 "resolvedModel": str | None, # Model yang digunakan pada transisi backgrounding2856 "resolvedModel": str | None, # Model yang digunakan pada transisi backgrounding

2856 "modelsUsed": list[str] | None, # Model yang digunakan sebelum backgrounding, secara berurutan, dengan pengulangan berturut-turut yang runtuh2857 "modelsUsed": list[str] | None, # Model yang digunakan sebelum backgrounding, secara berurutan, dengan pengulangan berturut-turut yang runtuh

2857 "prompt": str, # Prompt yang dijalankan agen2858 "prompt": str, # Prompt yang dijalankan agent

2858 "outputFile": str, # Jalur file tempat output agen ditulis2859 "outputFile": str, # Jalur file tempat output agent ditulis

2859 "canReadOutputFile": bool | None, # Apakah file output dapat dibaca secara langsung2860 "canReadOutputFile": bool | None, # Apakah file output dapat dibaca secara langsung

2860}2861}

2861```2862```


2868 "taskId": str, # ID tugas yang dikirimkan2869 "taskId": str, # ID tugas yang dikirimkan

2869 "sessionUrl": str, # Tautan ke sesi cloud2870 "sessionUrl": str, # Tautan ke sesi cloud

2870 "description": str, # Deskripsi tugas2871 "description": str, # Deskripsi tugas

2871 "prompt": str, # Prompt yang dijalankan agen2872 "prompt": str, # Prompt yang dijalankan agent

2872 "outputFile": str, # Jalur file tempat output agen ditulis2873 "outputFile": str, # Jalur file tempat output agent ditulis

2873}2874}

2874```2875```

2875 2876 

2876Mengembalikan hasil dari subagen. Output dibedakan pada bidang `status`: `"completed"` untuk tugas yang selesai, `"async_launched"` untuk tugas latar belakang, dan `"remote_launched"` untuk tugas yang Claude Code kirimkan ke sesi cloud, di mana `sessionUrl` menautkan ke sesi itu dan `taskId` mengidentifikasinya. Jika Claude Code [menyimpan worktree subagen yang terisolasi](/docs/id/worktrees#isolate-subagents-with-worktrees), `worktreePath` pada varian `completed` adalah tempat menemukannya, dan `worktreeBranch` adalah cabangnya ketika Claude Code membuat worktree dengan git.2877Mengembalikan hasil dari subagent. Output dibedakan pada bidang `status`: `"completed"` untuk tugas yang selesai, `"async_launched"` untuk tugas latar belakang, dan `"remote_launched"` untuk tugas yang Claude Code kirimkan ke sesi cloud, di mana `sessionUrl` menautkan ke sesi itu dan `taskId` mengidentifikasinya. Jika Claude Code [menyimpan worktree subagent yang terisolasi](/docs/id/worktrees#isolate-subagents-with-worktrees), `worktreePath` pada varian `completed` adalah tempat menemukannya, dan `worktreeBranch` adalah branch-nya ketika Claude Code membuat worktree dengan git.

2877 2878 

2878Pada varian `completed`, `resolvedModel` menamai model yang dimulai subagen, yang dapat berbeda dari input `model` yang diminta ketika [`availableModels`](/docs/id/model-config#restrict-model-selection) atau penggantian lain berlaku. Bidang ini memerlukan Claude Code v2.1.174 atau lebih baru. Pada varian `async_launched`, `resolvedModel` menamai model yang digunakan ketika agen pindah ke latar belakang, jadi swap yang terjadi sebelum backgrounding tercermin di sana. Bidang `modelsUsed` pada kedua varian mencantumkan model yang digunakan secara berurutan, dengan pengulangan berturut-turut yang runtuh; itu diatur hanya ketika model ditukar di tengah-run. `modelsUsed` dan perilaku `resolvedModel` saat backgrounding memerlukan Claude Code v2.1.212 atau lebih baru.2879Pada varian `completed`, `resolvedModel` menamai model yang dimulai subagent, yang dapat berbeda dari input `model` yang diminta ketika [`availableModels`](/docs/id/model-config#restrict-model-selection) atau override lain berlaku. Bidang ini memerlukan Claude Code v2.1.174 atau lebih baru. Pada varian `async_launched`, `resolvedModel` menamai model yang digunakan ketika agent pindah ke latar belakang, jadi swap yang terjadi sebelum backgrounding tercermin di sana. Bidang `modelsUsed` pada kedua varian mencantumkan model yang digunakan secara berurutan, dengan pengulangan berturut-turut yang runtuh; itu diatur hanya ketika model ditukar di tengah-run. `modelsUsed` dan perilaku `resolvedModel` saat backgrounding memerlukan Claude Code v2.1.212 atau lebih baru.

2879 2880 

2880Claude Code mengisi `usage` dan `totalTokens` dari permintaan API final subagent, bukan dari seluruh run. Ketika ada, `thinking_tokens` di bawah `output_tokens_details` dalam `usage` adalah jumlah token output permintaan itu yang merupakan thinking token. Kunci `output_tokens_details` memerlukan Python SDK v0.2.136 atau lebih baru, yang menggabungkan Claude Code v2.1.228. Kunci `fallback_credit` memerlukan Python SDK v0.2.162 atau lebih baru, yang menggabungkan Claude Code v2.1.285.2881Claude Code mengisi `usage` dan `totalTokens` dari permintaan API final subagent, bukan dari seluruh run. Ketika ada, `thinking_tokens` di bawah `output_tokens_details` dalam `usage` adalah jumlah token output permintaan itu yang merupakan thinking token. Kunci `output_tokens_details` memerlukan Python SDK v0.2.136 atau lebih baru, yang menggabungkan Claude Code v2.1.228. Kunci `fallback_credit` memerlukan Python SDK v0.2.162 atau lebih baru, yang menggabungkan Claude Code v2.1.285.

2881 2882 


3150 "file": {3151 "file": {

3151 "filePath": str,3152 "filePath": str,

3152 },3153 },

3153 "source": "seeded" | None, # Hadir ketika salinan sebelumnya berasal dari file CLAUDE.md atau memory yang dimuat saat startup daripada panggilan Read3154 "source": "seeded" | None, # Hadir ketika salinan sebelumnya berasal dari file CLAUDE.md atau memori yang dimuat saat startup daripada panggilan Read

3154}3155}

3155```3156```

3156 3157 


3593```python theme={null}3594```python theme={null}

3594{3595{

3595 "plan": str | None, # Rencana yang disajikan kepada pengguna3596 "plan": str | None, # Rencana yang disajikan kepada pengguna

3596 "isAgent": bool, # True ketika subagen memanggil tool3597 "isAgent": bool, # True ketika subagent memanggil tool

3597 "filePath": str | None, # Hadir ketika rencana disimpan ke file3598 "filePath": str | None, # Hadir ketika rencana disimpan ke file

3598 "hasTaskTool": bool | None, # Opsional; apakah tool Agent tersedia dalam konteks saat ini3599 "hasTaskTool": bool | None, # Opsional; apakah tool Agent tersedia dalam konteks saat ini

3599 "planWasEdited": bool | None, # Hadir dan True ketika pengguna mengedit rencana sebelum menyetujui3600 "planWasEdited": bool | None, # Hadir dan True ketika pengguna mengedit rencana sebelum menyetujui

Details

58 Mulai cepat58 Mulai cepat

59</h2>59</h2>

60 60 

61Untuk menggunakan output terstruktur, tentukan [JSON Schema](https://json-schema.org/understanding-json-schema/about) yang menggambarkan bentuk data yang Anda inginkan, kemudian teruskan ke `query()` melalui opsi `outputFormat` (TypeScript) atau opsi `output_format` (Python). Ketika agen selesai, pesan hasil mencakup bidang `structured_output` dengan data yang divalidasi sesuai dengan skema Anda.61Untuk menggunakan output terstruktur, tentukan [JSON Schema](https://json-schema.org/understanding-json-schema/about) yang menggambarkan bentuk data yang Anda inginkan, kemudian teruskan ke `query()` melalui opsi `outputFormat` (TypeScript) atau opsi `output_format` (Python). Ketika agent selesai, pesan hasil mencakup bidang `structured_output` dengan data yang divalidasi sesuai dengan skema Anda.

62 62 

63Contoh di bawah ini meminta agen untuk meneliti Anthropic dan mengembalikan nama perusahaan, tahun didirikan, dan kantor pusat sebagai output terstruktur.63Sebelum menjalankan contoh di halaman ini, instal Claude Agent SDK dengan mengikuti [mulai cepat](/docs/id/agent-sdk/quickstart#setup). Contoh di bawah ini meminta agent untuk meneliti Anthropic dan mengembalikan nama perusahaan, tahun didirikan, dan kantor pusat sebagai output terstruktur.

64 64 

65<CodeGroup>65<CodeGroup>

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


94 }94 }

95 }95 }

96 } catch (error) {96 } catch (error) {

97 // Satu query() yang ditembakkan melempar setelah menghasilkan hasil kesalahan, seperti97 // query() sekali jalan melempar setelah menghasilkan hasil kesalahan, seperti

98 // error_max_structured_output_retries; lihat bagian Penanganan kesalahan.98 // error_max_structured_output_retries; lihat bagian Penanganan kesalahan.

99 console.error(`Sesi berakhir dengan kesalahan: ${error}`);99 console.error(`Sesi berakhir dengan kesalahan: ${error}`);

100 }100 }


129 print(message.structured_output)129 print(message.structured_output)

130 # {'company_name': 'Anthropic', 'founded_year': 2021, 'headquarters': 'San Francisco, CA'}130 # {'company_name': 'Anthropic', 'founded_year': 2021, 'headquarters': 'San Francisco, CA'}

131 except Exception as error:131 except Exception as error:

132 # Satu query() yang ditembakkan melempar setelah menghasilkan hasil kesalahan, seperti132 # query() sekali jalan memunculkan exception setelah menghasilkan hasil kesalahan, seperti

133 # error_max_structured_output_retries; lihat bagian Penanganan kesalahan.133 # error_max_structured_output_retries; lihat bagian Penanganan kesalahan.

134 print(f"Sesi berakhir dengan kesalahan: {error}")134 print(f"Sesi berakhir dengan kesalahan: {error}")

135 135 


390 Penanganan kesalahan390 Penanganan kesalahan

391</h2>391</h2>

392 392 

393Pembuatan output terstruktur dapat gagal ketika agen tidak dapat menghasilkan JSON yang valid sesuai dengan skema Anda. Ini biasanya terjadi ketika skema terlalu kompleks untuk tugas, tugas itu sendiri ambigu, atau agen mencapai batas percobaan ulangnya mencoba memperbaiki kesalahan validasi. Ini juga dapat terjadi tanpa ada kegagalan validasi: [fallback model](/docs/id/model-config#automatic-model-fallback) dapat menarik kembali output yang sudah selesai di tengah aliran, dan jika tidak ada percobaan ulang yang menggantinya, jalannya berakhir dengan kesalahan yang sama. Periksa daftar `errors` pada pesan hasil untuk membedakan dua penyebab sebelum men-debug skema Anda.393Pembuatan output terstruktur dapat gagal ketika agent tidak dapat menghasilkan JSON yang valid sesuai dengan skema Anda. Ini biasanya terjadi ketika skema terlalu kompleks untuk tugas, tugas itu sendiri ambigu, atau agent mencapai batas retry-nya saat mencoba memperbaiki kesalahan validasi. Ini juga dapat terjadi tanpa ada kegagalan validasi: [fallback model](/docs/id/model-config#automatic-model-fallback) dapat menarik kembali output yang sudah selesai di tengah aliran, dan jika tidak ada retry yang menggantinya, jalannya berakhir dengan kesalahan yang sama. Periksa daftar `errors` pada pesan hasil kesalahan untuk membedakan dua penyebab tersebut sebelum men-debug skema Anda.

394 394 

395Ketika kesalahan terjadi, pesan hasil memiliki `subtype` yang menunjukkan apa yang salah:395Ketika kesalahan terjadi, pesan hasil memiliki `subtype` yang menunjukkan apa yang salah:

396 396 

397| Subtype | Arti |397| Subtype | Arti |

398| - | - |398| - | - |

399| `success` | Output dihasilkan dan divalidasi dengan berhasil |399| `success` | Output dihasilkan dan divalidasi dengan berhasil |

400| `error_max_structured_output_retries` | Tidak ada output yang valid yang bertahan setelah beberapa percobaan (kegagalan validasi, atau penarikan fallback model tanpa percobaan ulang yang berhasil) |400| `error_max_structured_output_retries` | Tidak ada output yang valid yang bertahan setelah beberapa percobaan (kegagalan validasi, atau penarikan fallback model tanpa retry yang berhasil) |

401 401 

402Hasil juga dapat berakhir dengan subtype `success` tetapi tanpa nilai `structured_output`, misalnya ketika jalannya selesai tanpa agen menghasilkan output terstruktur. Perlakukan kasus itu sebagai kegagalan juga. Entri troubleshooting [structured\_output is None but the result says success](/docs/id/agent-sdk/troubleshooting#structured_output-is-none-but-the-result-says-success) mencakup kasus ini. Contoh di bawah ini memperlakukan hasil sebagai berhasil hanya ketika `subtype` adalah `success` dan `structured_output` ada, dan menangani setiap hasil lainnya sebagai kegagalan:402Hasil juga dapat berakhir dengan subtype `success` tetapi tanpa nilai `structured_output`, misalnya ketika jalannya selesai tanpa agent menghasilkan output terstruktur. Perlakukan kasus itu sebagai kegagalan juga. Entri troubleshooting [structured\_output is None but the result says success](/docs/id/agent-sdk/troubleshooting#structured_output-is-none-but-the-result-says-success) mencakup kasus ini. Contoh di bawah ini memperlakukan hasil sebagai berhasil hanya ketika `subtype` adalah `success` dan `structured_output` ada, dan menangani setiap hasil lainnya sebagai kegagalan:

403 403 

404<CodeGroup>404<CodeGroup>

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


488 488 

489* **Jaga skema tetap fokus.** Skema yang bersarang dalam dengan banyak bidang yang diperlukan lebih sulit untuk dipenuhi. Mulai sederhana dan tambahkan kompleksitas sesuai kebutuhan.489* **Jaga skema tetap fokus.** Skema yang bersarang dalam dengan banyak bidang yang diperlukan lebih sulit untuk dipenuhi. Mulai sederhana dan tambahkan kompleksitas sesuai kebutuhan.

490* **Cocokkan skema dengan tugas.** Jika tugas mungkin tidak memiliki semua informasi yang diperlukan skema Anda, buat bidang tersebut opsional.490* **Cocokkan skema dengan tugas.** Jika tugas mungkin tidak memiliki semua informasi yang diperlukan skema Anda, buat bidang tersebut opsional.

491* **Gunakan prompt yang jelas.** Prompt yang ambigu membuat lebih sulit bagi agen untuk mengetahui output apa yang harus dihasilkan.491* **Gunakan prompt yang jelas.** Prompt yang ambigu membuat lebih sulit bagi agent untuk mengetahui output apa yang harus dihasilkan.

492 492 

493<h2 id="related-resources">493<h2 id="related-resources">

494 Sumber daya terkait494 Sumber daya terkait

Details

186 console.error("Claim failed:", error.message);186 console.error("Claim failed:", error.message);

187});187});

188 188 

189for await (const message of claimedQuery) {189try {

190 for await (const message of claimedQuery) {

190 console.log(message);191 console.log(message);

192 }

193} catch (error) {

194 // Setelah klaim ditolak, query yang diklaim melempar error setelah menghasilkan hasil error

195 console.error(`Session ended with an error: ${error}`);

191}196}

192```197```

193 198 


717| `accountInfo()` | Mengembalikan informasi akun |722| `accountInfo()` | Mengembalikan informasi akun |

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

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

720| `setMcpServers(servers)` | Mengganti set server MCP untuk sesi ini secara dinamis. Resolve dengan [`McpSetServersResult`](#mcpsetserversresult) yang menyebutkan server mana yang ditambahkan dan dihapus, serta error apa pun |725| `setMcpServers(servers)` | Mengganti server MCP yang dikelola metode ini: server yang ditambahkan melaluinya dan [server SDK dalam proses](#createsdkmcpserver). Di-resolve dengan [`McpSetServersResult`](#mcpsetserversresult) yang menyebutkan server mana yang ditambahkan dan dihapus, serta error apa pun; bagian tersebut menjelaskan server lain mana yang tetap terhubung |

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

722| `streamInput(stream)` | Men-stream pesan input ke kueri untuk percakapan multi-giliran |727| `streamInput(stream)` | Men-stream pesan input ke kueri untuk percakapan multi-giliran |

723| `stopTask(taskId)` | Menghentikan tugas latar belakang yang sedang berjalan berdasarkan ID |728| `stopTask(taskId)` | Menghentikan tugas latar belakang yang sedang berjalan berdasarkan ID |


844 849 

845`options.cwd` wajib diisi. Klaim juga dapat mengatur `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, overlay pengaturan flag dalam `settings`, `appendSystemPrompt`, `title`, `agents`, dan token per sesi dalam `env`.850`options.cwd` wajib diisi. Klaim juga dapat mengatur `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, overlay pengaturan flag dalam `settings`, `appendSystemPrompt`, `title`, `agents`, dan token per sesi dalam `env`.

846 851 

847Claude Code dapat menolak klaim, misalnya untuk folder yang tidak ada atau folder yang pengaturan proyeknya mengatur `env`, `agent`, atau `model`. Ketika `claimed` di-reject dengan pesan yang diawali `option_not_applied`, sesi berjalan tanpa `model` atau `maxThinkingTokens` yang Anda minta. Setelah penolakan lainnya, prompt Anda belum dijalankan, jadi mulai sesi dengan `query()` sebagai gantinya.852Claude Code dapat menolak klaim, misalnya untuk folder yang tidak ada atau folder yang pengaturan proyeknya mengatur `env`, `agent`, atau `model`. Setelah penolakan, prompt yang sudah dikirim oleh `claim()` mendapatkan hasil error yang teksnya diawali `not_claimed`, dan query yang dikembalikan kemudian melempar error. Bungkus loop query dalam blok try untuk melanjutkan melewati error tersebut. Ketika `claimed` di-reject dengan pesan yang diawali `option_not_applied`, sesi berjalan tanpa `model` atau `maxThinkingTokens` yang Anda minta. Setelah penolakan lainnya, prompt Anda belum dijalankan, jadi mulai sesi dengan `query()` sebagai gantinya.

848 853 

849<h3 id="sdkcontrolinitializeresponse">854<h3 id="sdkcontrolinitializeresponse">

850 `SDKControlInitializeResponse`855 `SDKControlInitializeResponse`


1337| `mcpServer` | `{ name: string; source: string }` | Untuk tool `mcp__*`, server MCP yang menyediakannya dan asal definisi server tersebut, dengan field dari [`McpServerProvenance`](#mcpserverprovenance). Tidak ada untuk tool lain. Memerlukan Agent SDK v0.3.274 atau yang lebih baru |1342| `mcpServer` | `{ name: string; source: string }` | Untuk tool `mcp__*`, server MCP yang menyediakannya dan asal definisi server tersebut, dengan field dari [`McpServerProvenance`](#mcpserverprovenance). Tidak ada untuk tool lain. Memerlukan Agent SDK v0.3.274 atau yang lebih baru |

1338| `decisionReason` | `string` | Menjelaskan mengapa permintaan izin ini dipicu |1343| `decisionReason` | `string` | Menjelaskan mengapa permintaan izin ini dipicu |

1339| `defaultToNo` | `boolean` | Ketika `true`, satu penekanan tombol yang tidak disengaja tidak boleh menyetujui permintaan ini: buka dialog Anda pada opsi tolak, jangan memilih setujui secara default, dan jangan tawarkan pintasan persetujuan satu tombol. Memerlukan Agent SDK v0.3.268 atau yang lebih baru |1344| `defaultToNo` | `boolean` | Ketika `true`, satu penekanan tombol yang tidak disengaja tidak boleh menyetujui permintaan ini: buka dialog Anda pada opsi tolak, jangan memilih setujui secara default, dan jangan tawarkan pintasan persetujuan satu tombol. Memerlukan Agent SDK v0.3.268 atau yang lebih baru |

1340| `suppressAlwaysAllowRule` | `boolean` | Ketika `true`, jangan tawarkan pilihan selalu-izinkan yang persisten untuk permintaan ini, karena aturan yang akan ditulisnya memberikan lebih dari tindakan permintaan itu sendiri. Memerlukan Agent SDK v0.3.268 atau yang lebih baru |1345| `suppressAlwaysAllowRule` | `boolean` | Ketika `true`, jangan tawarkan pilihan selalu-izinkan yang persisten untuk permintaan ini. Memerlukan Agent SDK v0.3.268 atau yang lebih baru |

1341| `toolUseID` | `string` | Pengidentifikasi unik untuk panggilan tool spesifik ini dalam pesan asisten |1346| `toolUseID` | `string` | Pengidentifikasi unik untuk panggilan tool spesifik ini dalam pesan asisten |

1342| `agentID` | `string` | Jika berjalan di dalam sub-agent, ID sub-agent tersebut |1347| `agentID` | `string` | Jika berjalan di dalam sub-agent, ID sub-agent tersebut |

1343| `requestId` | `string` | `request_id` dari envelope `control_request`. `control_response` yang dikirim aplikasi Anda di luar SDK, seperti HTTP POST yang ditandatangani, harus mengembalikan nilai ini agar proses Claude Code dapat mencocokkan balasan dengan permintaannya |1348| `requestId` | `string` | `request_id` dari envelope `control_request`. `control_response` yang dikirim aplikasi Anda di luar SDK, seperti HTTP POST yang ditandatangani, harus mengembalikan nilai ini agar proses Claude Code dapat mencocokkan balasan dengan permintaannya |


3790};3795};

3791```3796```

3792 3797 

3793Melaporkan temuan tinjauan kode sebagai daftar terstruktur sehingga Claude Code dapat merender alih-alih mencetaknya sebagai teks. `level` adalah tingkat upaya yang dijalankan tinjauan. Temuan diurutkan paling parah terlebih dahulu, dengan paling banyak 32 per panggilan, dan array kosong ketika tidak ada yang bertahan. Memerlukan Claude Code v2.1.196 atau lebih baru.3798Melaporkan temuan code review sebagai daftar terstruktur sehingga Claude Code dapat merendernya alih-alih mencetaknya sebagai teks. Temuan diurutkan paling parah terlebih dahulu, dengan paling banyak 32 per panggilan, dan array kosong ketika tidak ada yang bertahan. Memerlukan Claude Code v2.1.196 atau lebih baru.

3799 

3800`level` bersifat opsional dan berisi tingkat effort yang dilaporkan Claude untuk review tersebut. Claude Code tidak membandingkannya dengan tingkat yang digunakan saat review dijalankan, sehingga keduanya dapat berbeda.

3794 3801 

3795Setiap temuan membawa bidang-bidang ini:3802Setiap temuan membawa bidang-bidang ini:

3796 3803 


4840};4847};

4841```4848```

4842 4849 

4843Mengembalikan jumlah temuan yang dilaporkan, tingkat upaya yang dijalankan review, dan temuan yang diulang kembali untuk body hasil. Memerlukan Claude Code v2.1.196 atau lebih baru. Field `short_summary` yang diulang kembali memerlukan Claude Code v2.1.212 atau lebih baru.4850Mengembalikan jumlah temuan yang dilaporkan, nilai `level` yang diteruskan Claude, dan temuan yang diulang kembali untuk body hasil. Memerlukan Claude Code v2.1.196 atau lebih baru. Field `short_summary` yang diulang kembali memerlukan Claude Code v2.1.212 atau lebih baru.

4844 4851 

4845<h3 id="artifact-2">4852<h3 id="artifact-2">

4846 Artifact4853 Artifact


5461 | { type: "disabled" }; // No extended thinking5468 | { type: "disabled" }; // No extended thinking

5462```5469```

5463 5470 

5464Field `display` opsional mengontrol apakah teks thinking dikembalikan `"summarized"` atau `"omitted"`. Pada Claude Opus 4.7 dan yang lebih baru, default API adalah `"omitted"`, jadi atur `"summarized"` untuk menerima konten thinking dalam blok `thinking`. Claude Code tidak mengirimkan `display` ke Amazon Bedrock atau Agent Platform Google Cloud, jadi pada penyedia tersebut Opus 4.7 dan yang lebih baru mengembalikan blok `thinking` kosong bahkan ketika Anda menetapkan `display` ke `"summarized"`.5471Field `display` opsional mengontrol apakah teks thinking dikembalikan `"summarized"` atau `"omitted"`. Pada Claude Opus 4.7 dan yang lebih baru, default API adalah `"omitted"`, jadi atur `"summarized"` untuk menerima konten thinking dalam blok `thinking`. Claude Code tidak menyertakan `display` dalam permintaan ke beberapa penyedia, seperti Amazon Bedrock dan Agent Platform Google Cloud. Pada penyedia tersebut, Opus 4.7 dan yang lebih baru mengembalikan blok `thinking` kosong bahkan ketika Anda menetapkan `display` ke `"summarized"`.

5465 5472 

5466<h3 id="spawnedprocess">5473<h3 id="spawnedprocess">

5467 `SpawnedProcess`5474 `SpawnedProcess`


5532 5539 

5533Ketika Anda memanggil `setMcpServers()`, Claude Code menerapkan aturan berikut:5540Ketika Anda memanggil `setMcpServers()`, Claude Code menerapkan aturan berikut:

5534 5541 

5535* **Server yang tidak disebutkan dalam panggilan**: Claude Code menjaga server yang disediakan plugin tetap berjalan. Memerlukan Agent SDK v0.3.210 atau lebih baru.5542* **Server yang tidak disebutkan dalam panggilan**: di luar [sesi cloud](/docs/id/claude-code-on-the-web), Claude Code memutuskan koneksi server yang ditambahkan oleh panggilan `setMcpServers()` sebelumnya dan server SDK dalam proses, lalu mencantumkannya dalam `removed`. Server lainnya tetap berjalan dan tidak dicantumkan dalam `removed`, di antaranya server stdio, HTTP, dan SSE dari opsi [`mcpServers`](#options), server dari file pengaturan, dan server yang disediakan plugin.

5536* **Server yang disebutkan dalam panggilan**: kecuali untuk server bawaan yang dimulai CLI saat startup, Claude Code mengganti server yang sedang berjalan hanya ketika konfigurasinya berbeda dari yang Anda teruskan.5543* **Server yang disebutkan dalam panggilan**: Claude Code mengganti server stdio, HTTP, atau SSE yang ditambahkan oleh panggilan `setMcpServers()` sebelumnya hanya ketika konfigurasinya berbeda dari yang Anda teruskan. Server SDK dalam proses yang sudah terdaftar dengan nama tersebut tetap seperti apa adanya, jadi untuk menggantinya, keluarkan server itu dari satu panggilan dan tambahkan pada panggilan berikutnya.

5537* **Server bawaan yang dimulai CLI saat startup**: jika panggilan menyebutkan salah satunya, Claude Code menghapus entri itu dan melaporkannya dalam `errors`.5544* **Server bawaan yang dimulai CLI saat startup**: jika panggilan menyebutkan salah satunya, Claude Code menghapus entri itu dan melaporkannya dalam `errors`.

5538 5545 

5539Promise diselesaikan setelah server stdio, HTTP, dan SSE yang baru ditambahkan terhubung atau gagal, jadi tool dari server yang terhubung tersedia pada giliran berikutnya.5546Promise diselesaikan setelah server stdio, HTTP, dan SSE yang baru ditambahkan terhubung atau gagal, jadi tool dari server yang terhubung tersedia pada giliran berikutnya.

agent-view.md +1 −0

Details

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

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

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

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

822| `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 dapat terhubung kembali ke sesi tersebut. `claude agents` atau `claude --bg` berikutnya memulai supervisor baru |823| `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 dapat terhubung kembali ke sesi tersebut. `claude agents` atau `claude --bg` berikutnya memulai supervisor baru |

823 824 

824`claude attach` dan `claude logs` dapat menerima sebagian nama sesi yang sedang berjalan sebagai pengganti ID, seperti dalam `claude logs "auth refactor"`. Meneruskan nama memerlukan Claude Code v2.1.290 atau lebih baru.825`claude attach` dan `claude logs` dapat menerima sebagian nama sesi yang sedang berjalan sebagai pengganti ID, seperti dalam `claude logs "auth refactor"`. Meneruskan nama memerlukan Claude Code v2.1.290 atau lebih baru.

agents.md +1 −1

Details

20 20 

21Tiga alat lagi mendukung pekerjaan ini tanpa menjadi cara untuk menjalankan agen sendiri:21Tiga alat lagi mendukung pekerjaan ini tanpa menjadi cara untuk menjalankan agen sendiri:

22 22 

23* [Worktrees](/docs/id/worktrees) memberikan setiap sesi checkout git terpisah, sehingga sesi paralel tidak pernah mengedit file yang sama. Gunakan untuk sesi yang Anda jalankan sendiri. Sesi yang Anda kirim dari agent view [berpindah ke worktree-nya sendiri sebelum mengedit file](/docs/id/agent-view#how-file-edits-are-isolated), dan subagents yang Anda hasilkan dapat masing-masing mendapatkan satu juga.23* [Worktrees](/docs/id/worktrees) memberikan setiap sesi checkout git terpisah, sehingga setiap sesi paralel mengedit salinan file miliknya sendiri. Gunakan untuk sesi yang Anda jalankan sendiri. Sesi yang Anda kirim dari agent view [berpindah ke worktree-nya sendiri sebelum mengedit file](/docs/id/agent-view#how-file-edits-are-isolated), dan subagent yang Anda hasilkan dapat masing-masing mendapatkan satu juga.

24* [Cross-session messaging](/docs/id/cross-session-messaging) memungkinkan Claude untuk membuat daftar dan mengirim pesan ke sesi Claude Code lain Anda di mesin ini, di mesin lain, atau [di cloud](/docs/id/claude-code-on-the-web), sehingga sesi yang Anda jalankan sendiri dapat melewatkan temuan dan status di antara mereka.24* [Cross-session messaging](/docs/id/cross-session-messaging) memungkinkan Claude untuk membuat daftar dan mengirim pesan ke sesi Claude Code lain Anda di mesin ini, di mesin lain, atau [di cloud](/docs/id/claude-code-on-the-web), sehingga sesi yang Anda jalankan sendiri dapat melewatkan temuan dan status di antara mereka.

25* [`/batch`](/docs/id/commands) adalah [skill](/docs/id/skills) yang membuat Claude membagi satu perubahan besar menjadi 5 hingga 30 subagents terisolasi worktree. Ini adalah penggunaan subagents dan worktrees yang dikemas, bukan gaya koordinasi terpisah.25* [`/batch`](/docs/id/commands) adalah [skill](/docs/id/skills) yang membuat Claude membagi satu perubahan besar menjadi 5 hingga 30 subagents terisolasi worktree. Ini adalah penggunaan subagents dan worktrees yang dikemas, bukan gaya koordinasi terpisah.

26 26 

Details

681 681 

682Amazon Bedrock melakukan streaming respons `InvokeModelWithResponseStream` dalam format event-stream biner dengan header `Content-Type: application/vnd.amazon.eventstream`. Gateway atau proxy antara Claude Code dan Amazon Bedrock harus meneruskan badan respons dan headernya, termasuk `Content-Type`, seperti yang dikirim Amazon Bedrock.682Amazon Bedrock melakukan streaming respons `InvokeModelWithResponseStream` dalam format event-stream biner dengan header `Content-Type: application/vnd.amazon.eventstream`. Gateway atau proxy antara Claude Code dan Amazon Bedrock harus meneruskan badan respons dan headernya, termasuk `Content-Type`, seperti yang dikirim Amazon Bedrock.

683 683 

684Jika gateway menulis ulang `Content-Type` ke nilai lain, Claude Code menolak respons dengan kesalahan yang dimulai dengan `Bedrock streaming response has content-type`, menyebutkan nilai yang diterima. Penulisan ulang umum adalah `text/event-stream`, dari integrasi yang memancarkan kembali aliran sebagai server-sent events.684Jika gateway menulis ulang `Content-Type` ke nilai lain, Claude Code menolak respons dengan kesalahan yang dimulai dengan `Bedrock streaming response has content-type`, menyebutkan nilai yang diterima. Penulisan ulang umum adalah `text/event-stream`, dari integrasi yang memancarkan kembali aliran sebagai server-sent events. Untuk variabel `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` yang disebutkan dalam pesan kesalahan, lihat [Bedrock streaming response has an unexpected content-type](/docs/id/errors#bedrock-streaming-response-has-an-unexpected-content-type).

685 685 

686Jika gateway menghapus atau mengosongkan header sebagai gantinya, Claude Code mengasumsikan badan adalah event stream Amazon Bedrock dan mendekodenya, jadi badan yang gateway teruskan tanpa diubah terus melakukan streaming.686Jika gateway menghapus atau mengosongkan header sebagai gantinya, Claude Code mengasumsikan badan adalah event stream Amazon Bedrock dan mendekodenya, jadi badan yang gateway teruskan tanpa diubah terus melakukan streaming.

687 687 

Details

12 Masuk ke Claude Code12 Masuk ke Claude Code

13</h2>13</h2>

14 14 

15Setelah [memasang Claude Code](/docs/id/setup#install-claude-code), jalankan `claude` di terminal Anda. Pada peluncuran pertama, Claude Code membuka jendela browser untuk Anda masuk. Jika Anda telah menetapkan variabel lingkungan `ANTHROPIC_API_KEY`, Claude Code melewati prompt login dan meminta Anda menyetujui kunci sebagai gantinya.15Setelah [memasang Claude Code](/docs/id/setup#install-claude-code), jalankan `claude` di terminal Anda. Pada peluncuran pertama, Claude Code membuka jendela browser untuk Anda masuk. Jika Anda telah menetapkan environment variable `ANTHROPIC_API_KEY` dan Anda menyetujui kunci tersebut ketika Claude Code menanyakan apakah akan menggunakannya, Claude Code melewati prompt login.

16 16 

17Jika browser tidak terbuka secara otomatis, tekan `c` untuk menyalin URL login ke clipboard Anda, kemudian tempel ke browser Anda.17Jika browser tidak terbuka secara otomatis, tekan `c` untuk menyalin URL login ke clipboard Anda, kemudian tempel ke browser Anda.

18 18 

Details

351}351}

352```352```

353 353 

354Dapatkan umpan balik AI tentang aturan `allow`, `soft_deny`, dan `hard_deny` kustom Anda:354Dapatkan umpan balik AI tentang entri `allow`, `soft_deny`, `hard_deny`, dan `environment` kustom Anda:

355 355 

356```bash theme={null}356```bash theme={null}

357claude auto-mode critique357claude auto-mode critique

chrome.md +1 −1

Details

343 343 

344| Kesalahan | Penyebab | Perbaikan |344| Kesalahan | Penyebab | Perbaikan |

345| - | - | - |345| - | - | - |

346| "Browser extension is not connected" | Host messaging asli tidak dapat menjangkau ekstensi, atau allowlist IP organisasi Anda menolak koneksi ke `bridge.claudeusercontent.com` | Restart Chrome dan Claude Code, kemudian jalankan `/chrome` untuk menghubungkan kembali. Jika organisasi Anda menggunakan allowlist IP dan kesalahan berlanjut, lihat [Organization IP allowlists and proxy egress](/docs/id/network-config#organization-ip-allowlists-and-proxy-egress) |346| "Browser extension is not connected" | Host messaging asli tidak dapat menjangkau ekstensi, atau allowlist IP organisasi Anda menolak koneksi ke `bridge.claudeusercontent.com` | Periksa bahwa ekstensi masuk ke akun claude.ai yang sama dengan Claude Code, restart Chrome dan Claude Code, kemudian jalankan `/chrome` untuk menghubungkan kembali. Jika organisasi Anda menggunakan allowlist IP dan kesalahan berlanjut, lihat [Organization IP allowlists and proxy egress](/docs/id/network-config#organization-ip-allowlists-and-proxy-egress) |

347| Extension shows "Not detected" in `/chrome` | Ekstensi Chrome tidak diinstal atau dinonaktifkan | Instal atau aktifkan ekstensi di `chrome://extensions` |347| Extension shows "Not detected" in `/chrome` | Ekstensi Chrome tidak diinstal atau dinonaktifkan | Instal atau aktifkan ekstensi di `chrome://extensions` |

348| "No tab available" | Claude mencoba bertindak sebelum tab siap | Minta Claude membuat tab baru dan coba lagi |348| "No tab available" | Claude mencoba bertindak sebelum tab siap | Minta Claude membuat tab baru dan coba lagi |

349| "Receiving end does not exist" | Service worker ekstensi menjadi idle | Jalankan `/chrome` dan pilih "Reconnect extension" |349| "Receiving end does not exist" | Service worker ekstensi menjadi idle | Jalankan `/chrome` dan pilih "Reconnect extension" |

Details

73| - | - |73| - | - |

74| Claude Code v2.1.195 atau lebih baru | Subperintah `claude gateway` dan alur sign-in gateway dikirim di v2.1.195. Build publik sebelumnya tidak menyertakannya. Baik mesin yang menjalankan server gateway maupun mesin setiap pengembang harus pada v2.1.195 atau lebih baru; jalankan `claude update` untuk mendapatkan rilis terbaru. Upstream [Claude Platform on AWS](/docs/id/claude-apps-gateway-config#claude-platform-on-aws) memerlukan Claude Code v2.1.198 atau lebih baru di server gateway. |74| Claude Code v2.1.195 atau lebih baru | Subperintah `claude gateway` dan alur sign-in gateway dikirim di v2.1.195. Build publik sebelumnya tidak menyertakannya. Baik mesin yang menjalankan server gateway maupun mesin setiap pengembang harus pada v2.1.195 atau lebih baru; jalankan `claude update` untuk mendapatkan rilis terbaru. Upstream [Claude Platform on AWS](/docs/id/claude-apps-gateway-config#claude-platform-on-aws) memerlukan Claude Code v2.1.198 atau lebih baru di server gateway. |

75| Penyedia identitas OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak, atau Dex, atau IdP yang sesuai dengan OIDC lainnya seperti PingFederate. Gateway menjalankan penemuan OIDC standar dan alur kode otorisasi terhadapnya. SAML dan LDAP tidak didukung. |75| Penyedia identitas OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak, atau Dex, atau IdP yang sesuai dengan OIDC lainnya seperti PingFederate. Gateway menjalankan penemuan OIDC standar dan alur kode otorisasi terhadapnya. SAML dan LDAP tidak didukung. |

76| PostgreSQL 14 atau lebih baru | Mendukung alur sign-in perangkat, di mana callback browser menulis dan CLI polling membaca, ditambah penghitung batas laju. Postgres yang dikelola apa pun berfungsi, termasuk tingkat terkecil. Tanpa batas pengeluaran yang dikonfigurasi, gateway menyimpan beberapa KB status auth berumur pendek; dengan [batas pengeluaran](/docs/id/claude-apps-gateway-spend-limits), ia juga menyimpan tabel pengeluaran, audit, dan identitas yang tahan lama yang harus dicadangkan. TLS melalui `?sslmode=require` direkomendasikan. |76| PostgreSQL 11 atau lebih baru | Mendukung alur sign-in perangkat dan penghitung rate limit. Layanan PostgreSQL terkelola berfungsi, termasuk tingkat terkecil; lihat [database mana yang didukung](/docs/id/claude-apps-gateway-deploy#postgres). Dengan [batas pengeluaran](/docs/id/claude-apps-gateway-spend-limits), ia juga menyimpan tabel pengeluaran, audit, dan identitas yang tahan lama yang harus dicadangkan. TLS melalui `?sslmode=require` direkomendasikan. PostgreSQL 11, 12, dan 13 memerlukan Claude Code v2.1.290 atau lebih baru di server gateway. Proyek PostgreSQL tidak lagi memelihara versi tersebut, jadi gunakan versi yang lebih baru jika memungkinkan. |

77| Model upstream | Kredensial Amazon Bedrock, kredensial Claude Platform on AWS, kredensial Google Cloud, sumber daya Microsoft Foundry, atau kunci API Anthropic. Beberapa upstream didukung dengan failover. |77| Model upstream | Kredensial Amazon Bedrock, kredensial Claude Platform on AWS, kredensial Google Cloud, sumber daya Microsoft Foundry, atau kunci API Anthropic. Beberapa upstream didukung dengan failover. |

78| HTTPS | Gateway harus dapat dijangkau melalui `https://` dari laptop pengembang dan dari browser apa pun yang digunakan untuk sign-in; gateway melayani halaman verifikasi perangkat pada pendengar yang sama. Berikan sertifikat TLS melalui `listen.tls` atau jalankan di balik ingress yang menghentikan TLS, dan atur `listen.public_url` ke asal eksternal dalam kedua kasus. Asal `http://` biasa hanya diterima ketika host gateway adalah loopback: `localhost`, `127.0.0.1`, atau `::1`. |78| HTTPS | Gateway harus dapat dijangkau melalui `https://` dari laptop pengembang dan dari browser apa pun yang digunakan untuk sign-in; gateway melayani halaman verifikasi perangkat pada pendengar yang sama. Berikan sertifikat TLS melalui `listen.tls` atau jalankan di balik ingress yang menghentikan TLS, dan atur `listen.public_url` ke asal eksternal dalam kedua kasus. Asal `http://` biasa hanya diterima ketika host gateway adalah loopback: `localhost`, `127.0.0.1`, atau `::1`. |

79| Alamat jaringan pribadi | Di `/login`, Claude Code memerlukan nama host atau alamat IP gateway untuk diselesaikan hanya ke alamat pribadi: RFC 1918, link-local, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7`, atau loopback. Untuk gateway yang Anda hosting, alamat publik apa pun di luar blok yang Anda deklarasikan ditolak; lihat [model ancaman](/docs/id/claude-apps-gateway-deploy#threat-model-summary) dalam panduan penyebaran. Jika mesin pengembang merutekan HTTPS melalui proxy perusahaan, sign-in juga memerlukan host proxy untuk diselesaikan ke alamat pribadi; jika tidak, tambahkan host gateway ke `NO_PROXY` sehingga CLI terhubung langsung. Jika jaringan internal Anda bernomor dari ruang IPv4 publik yang dimiliki organisasi Anda, [deklarasikan blok-blok tersebut](#allow-a-gateway-on-public-address-space-you-own) sehingga `/login` menerima gateway di sana. |79| Alamat jaringan pribadi | Di `/login`, Claude Code memerlukan nama host atau alamat IP gateway untuk diselesaikan hanya ke alamat pribadi: RFC 1918, link-local, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7`, atau loopback. Untuk gateway yang Anda hosting, alamat publik apa pun di luar blok yang Anda deklarasikan ditolak; lihat [model ancaman](/docs/id/claude-apps-gateway-deploy#threat-model-summary) dalam panduan penyebaran. Jika mesin pengembang merutekan HTTPS melalui proxy perusahaan, sign-in juga memerlukan host proxy untuk diselesaikan ke alamat pribadi; jika tidak, tambahkan host gateway ke `NO_PROXY` sehingga CLI terhubung langsung. Jika jaringan internal Anda bernomor dari ruang IPv4 publik yang dimiliki organisasi Anda, [deklarasikan blok-blok tersebut](#allow-a-gateway-on-public-address-space-you-own) sehingga `/login` menerima gateway di sana. |


89 </Step>89 </Step>

90 90 

91 <Step title="Sediakan database PostgreSQL">91 <Step title="Sediakan database PostgreSQL">

92 Postgres 14 atau lebih baru apa pun berfungsi, termasuk tingkat terkelola terkecil. Gateway menjalankan migrasi skema sendiri saat boot, jadi peran database memerlukan hak untuk membuat dan mengubah tabel; lihat [`store`](/docs/id/claude-apps-gateway-config#store).92 Gunakan PostgreSQL 11 atau lebih baru. Tingkat terkelola terkecil sudah cukup. Gateway menjalankan migrasi skema sendiri saat boot, jadi peran database memerlukan hak untuk membuat dan mengubah tabel; lihat [`store`](/docs/id/claude-apps-gateway-config#store).

93 </Step>93 </Step>

94 94 

95 <Step title="Tulis gateway.yaml">95 <Step title="Tulis gateway.yaml">

Details

158Gateway membaca key dan sertifikat sekali saat boot, jadi file yang berubah baru berlaku setelah restart. Lakukan rotasi dengan urutan ini agar tidak ada permintaan token yang menyajikan sertifikat yang tidak dimiliki IdP:158Gateway membaca key dan sertifikat sekali saat boot, jadi file yang berubah baru berlaku setelah restart. Lakukan rotasi dengan urutan ini agar tidak ada permintaan token yang menyajikan sertifikat yang tidak dimiliki IdP:

159 159 

1601. Unggah sertifikat baru ke IdP di samping sertifikat lama.1601. Unggah sertifikat baru ke IdP di samping sertifikat lama.

1612. Ganti file key dan sertifikat yang dimuat oleh `gateway.yaml`, lalu restart gateway.1612. Ganti file key dan sertifikat yang dimuat oleh `gateway.yaml`, lalu restart gateway. Jika Anda menjalankan beberapa replica, [rolling restart](/docs/id/claude-apps-gateway-deploy#upgrades) dapat digunakan, karena IdP memiliki kedua sertifikat sampai Anda menghapus sertifikat lama.

1623. Hapus sertifikat lama dari IdP.1623. Setelah setiap replica di-restart, hapus sertifikat lama dari IdP.

163 163 

164<h4 id="idp-requests-through-a-forward-proxy">164<h4 id="idp-requests-through-a-forward-proxy">

165 IdP requests through a forward proxy165 IdP requests through a forward proxy


227 227 

228| Field | Diperlukan | Deskripsi |228| Field | Diperlukan | Deskripsi |

229| - | - | - |229| - | - | - |

230| `postgres_url` | Ya | `postgres://` atau `postgresql://` URL. Diperlukan: device-grant rendezvous, di mana browser callback menulis dan polling CLI membaca, memerlukan cross-replica state. Gateway menjalankan schema migrations-nya sendiri saat boot dan pada upgrade, jadi role memerlukan rights untuk membuat dan mengubah tables pada target schema. Lihat [Upgrades](/docs/id/claude-apps-gateway-deploy#upgrades) dan [Postgres](/docs/id/claude-apps-gateway-deploy#postgres). |230| `postgres_url` | Ya | URL `postgres://` atau `postgresql://` dengan satu host, bukan daftar yang dipisahkan koma. Gateway menjalankan schema migrations-nya sendiri saat boot dan pada upgrade, jadi role memerlukan rights untuk membuat dan mengubah tables pada target schema. Lihat [Upgrades](/docs/id/claude-apps-gateway-deploy#upgrades) dan [Postgres](/docs/id/claude-apps-gateway-deploy#postgres). |

231| `username` | Tidak | Overrides user di `postgres_url` |231| `username` | Tidak | Overrides user di `postgres_url` |

232| `password` | Tidak | Database credential. Atur di sini daripada di `postgres_url` jadi credential tetap keluar dari URL. Menerima karakter apa pun dan mengambil precedence atas URL credentials. |232| `password` | Tidak | Database credential. Atur di sini daripada di `postgres_url` jadi credential tetap keluar dari URL. Menerima karakter apa pun dan mengambil precedence atas URL credentials. |

233| `max_connections` | Tidak | Postgres connection-pool size per replica. Default `5`, yang konservatif dan ramah ke shared databases. Dengan [spend limits](#admin) diaktifkan, hot path melakukan beberapa operasi per inference request, jadi naikkan untuk dedicated database di bawah load, dan simpan replicas × ini di bawah database's `max_connections`. |233| `max_connections` | Tidak | Postgres connection-pool size per replica. Default `5`, yang konservatif dan ramah ke shared databases. Dengan [spend limits](#admin) diaktifkan, hot path melakukan beberapa operasi per inference request, jadi naikkan untuk dedicated database di bawah load, dan simpan replicas × ini di bawah database's `max_connections`. |

Details

249 Postgres249 Postgres

250</h3>250</h3>

251 251 

252Gateway menyimpan statusnya dalam database PostgreSQL:

253 

254* **Database**: PostgreSQL itu sendiri, di-host sendiri atau terkelola, pada [versi minimum](/docs/id/claude-apps-gateway#prerequisites) atau lebih baru. Database yang hanya mengimplementasikan protokol Postgres, seperti database SQL terdistribusi, tidak didukung.

255* **Alamat**: `store.postgres_url` menerima satu host. Jika database memiliki beberapa node, gunakan alamat yang berada di depannya, seperti endpoint layanan terkelola Anda, load balancer, atau IP virtual. Atur [periode grace kesiapan](#readiness-grace-period) yang lebih lama dari waktu yang diperlukan failover.

256 

252Gateway menyimpan lima tabel data ditambah tabel `_migrations`, semuanya dibuat oleh migrasi waktu boot-nya:257Gateway menyimpan lima tabel data ditambah tabel `_migrations`, semuanya dibuat oleh migrasi waktu boot-nya:

253 258 

254| Tabel | Isi | Retensi |259| Tabel | Isi | Retensi |


396| CLI `/login`: `Could not resolve the configured HTTP proxy` | Nama host dalam `HTTPS_PROXY` atau `HTTP_PROXY` tidak diselesaikan dari mesin pengembang, biasanya karena tidak terhubung ke jaringan korporat | Minta pengembang terhubung ke jaringan atau VPN Anda dan coba ulang, atau perbaiki URL proxy |401| CLI `/login`: `Could not resolve the configured HTTP proxy` | Nama host dalam `HTTPS_PROXY` atau `HTTP_PROXY` tidak diselesaikan dari mesin pengembang, biasanya karena tidak terhubung ke jaringan korporat | Minta pengembang terhubung ke jaringan atau VPN Anda dan coba ulang, atau perbaiki URL proxy |

397| CLI `/login`: `Could not resolve gateway host <host>` | Mesin tidak dapat menyelesaikan nama DNS internal gateway, biasanya karena tidak berada di jaringan korporat | Minta pengembang terhubung ke jaringan atau VPN Anda, lalu coba ulang `/login` |402| CLI `/login`: `Could not resolve gateway host <host>` | Mesin tidak dapat menyelesaikan nama DNS internal gateway, biasanya karena tidak berada di jaringan korporat | Minta pengembang terhubung ke jaringan atau VPN Anda, lalu coba ulang `/login` |

398| Boot keluar dengan kesalahan validasi konfigurasi yang menamai `store.postgres_url` | Tidak ada Postgres yang dikonfigurasi; gateway memerlukan Postgres | Atur `store.postgres_url`. Untuk pengembangan lokal, gunakan kontainer sekali pakai: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |403| Boot keluar dengan kesalahan validasi konfigurasi yang menamai `store.postgres_url` | Tidak ada Postgres yang dikonfigurasi; gateway memerlukan Postgres | Atur `store.postgres_url`. Untuk pengembangan lokal, gunakan kontainer sekali pakai: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |

404| Boot keluar: `store.postgres_url in <path> is not a URL the gateway can read`, atau sebelum v2.1.290 hanya `Invalid URL` atau `URI error` | URL tidak dapat diurai, misalnya karena mencantumkan lebih dari satu host atau kata sandinya memiliki `/`, `?`, `#`, atau `%` yang tidak dienkode | Sebutkan [satu host](#postgres), dan pindahkan kata sandi ke [`store.password`](/docs/id/claude-apps-gateway-config#store) |

399| Boot keluar: `requires the native binary` | Berjalan di bawah Node bukan biner asli | Instal Claude Code dengan salah satu [metode instalasi mandiri](/docs/id/setup) |405| Boot keluar: `requires the native binary` | Berjalan di bawah Node bukan biner asli | Instal Claude Code dengan salah satu [metode instalasi mandiri](/docs/id/setup) |

400| Boot keluar dengan kesalahan penemuan OIDC setelah `config.load` | `oidc.issuer` tidak dapat dijangkau, atau rantai TLS tidak dipercaya | Periksa issuer dapat dijangkau dari pod dan melayani `/.well-known/openid-configuration`. Atur `ca_cert_pem` untuk PKI pribadi. Jika pod menjangkau IdP hanya melalui proxy forward, atur [`oidc.use_proxy: true`](/docs/id/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); pada versi sebelum v2.1.227, berikan pod rute langsung ke setiap endpoint IdP sebagai gantinya. Jika pod juga tidak dapat menyelesaikan nama host IdP, atau proxy menolak `CONNECT` ke alamat IP, lihat [Proxy-only egress](/docs/id/claude-apps-gateway-config#proxy-only-egress), yang memerlukan v2.1.277 atau lebih baru. |406| Boot keluar dengan kesalahan penemuan OIDC setelah `config.load` | `oidc.issuer` tidak dapat dijangkau, atau rantai TLS tidak dipercaya | Periksa issuer dapat dijangkau dari pod dan melayani `/.well-known/openid-configuration`. Atur `ca_cert_pem` untuk PKI pribadi. Jika pod menjangkau IdP hanya melalui proxy forward, atur [`oidc.use_proxy: true`](/docs/id/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); pada versi sebelum v2.1.227, berikan pod rute langsung ke setiap endpoint IdP sebagai gantinya. Jika pod juga tidak dapat menyelesaikan nama host IdP, atau proxy menolak `CONNECT` ke alamat IP, lihat [Proxy-only egress](/docs/id/claude-apps-gateway-config#proxy-only-egress), yang memerlukan v2.1.277 atau lebih baru. |

401| Boot keluar dengan kesalahan izin Postgres | Peran database kekurangan hak DDL pada skemanya | Berikan peran `CREATE` pada skema gateway sehingga dapat membuat dan mengubah tabelnya saat boot |407| Boot keluar dengan kesalahan izin Postgres | Peran database kekurangan hak DDL pada skemanya | Berikan peran `CREATE` pada skema gateway sehingga dapat membuat dan mengubah tabelnya saat boot |

402| Log: `could not connect to Postgres at boot, attempt 1 of 3` | Database tidak dapat dijangkau ketika gateway dimulai, misalnya pada instance dingin yang jaringannya masih sedang dimulai | Jika gateway kemudian selesai boot, tidak ada tindakan yang diperlukan. Ketika database tidak dapat dijangkau, gateway mencoba koneksi tiga kali, dua detik terpisah, sebelum keluar. Jika keluar dengan `could not connect to Postgres`, periksa `store.postgres_url` dan jalur jaringan ke database. Jika upaya habis waktu daripada ditolak, naikkan [`store.connect_timeout_seconds`](/docs/id/claude-apps-gateway-config#store) untuk memberikan masing-masing lebih lama. |408| Log: `could not connect to Postgres at boot, attempt 1 of 3` | Database tidak dapat dijangkau ketika gateway dimulai, misalnya pada instance dingin yang jaringannya masih sedang dimulai | Jika gateway kemudian selesai boot, tidak ada tindakan yang diperlukan. Ketika database tidak dapat dijangkau, gateway mencoba koneksi tiga kali, dua detik terpisah, sebelum keluar. Jika keluar dengan `could not connect to Postgres`, periksa `store.postgres_url`, termasuk bahwa URL tersebut menyebutkan satu host, dan jalur jaringan ke database. Jika upaya habis waktu daripada ditolak, naikkan [`store.connect_timeout_seconds`](/docs/id/claude-apps-gateway-config#store) untuk memberikan masing-masing lebih lama. |

403| `/oauth/callback` menampilkan "Sign-in could not be completed" | Domain email ditolak, validasi id\_token gagal, atau `email_verified` secara eksplisit `false`, yang gateway selalu tolak tanpa override | Periksa `allowed_email_domains` dan bahwa IdP mengembalikan klaim `email` yang diverifikasi. Untuk `email_verified: false`, perbaiki verifikasi sisi IdP. Jika IdP Anda memancarkan email di bawah nama klaim berbeda, atur `oidc.email_claim`. |409| `/oauth/callback` menampilkan "Sign-in could not be completed" | Domain email ditolak, validasi id\_token gagal, atau `email_verified` secara eksplisit `false`, yang gateway selalu tolak tanpa override | Periksa `allowed_email_domains` dan bahwa IdP mengembalikan klaim `email` yang diverifikasi. Untuk `email_verified: false`, perbaiki verifikasi sisi IdP. Jika IdP Anda memancarkan email di bawah nama klaim berbeda, atur `oidc.email_claim`. |

404| Log: `token exchange failed request_id=<id>: id_token missing email claim` | IdP tidak menyertakan `email` dalam id\_token secara default. Penolakan ini hanya terjadi ketika `allowed_email_domains` diatur; tanpanya, email yang hilang mencetak sesi tanpa email | Konfigurasikan IdP untuk memancarkan `email` dalam id\_token. Okta: tambahkan `email` ke klaim ID-token server otorisasi khusus. Entra: tambahkan `email` sebagai klaim opsional pada pendaftaran aplikasi. PingFederate: aktifkan Kebijakan OpenID Connect yang memancarkan `email`. Jika IdP melayani `email` dari endpoint userinfo tetapi tidak akan menyertakannya dalam id\_token, seperti server otorisasi org Okta, atur `oidc.userinfo_fallback: true`. |410| Log: `token exchange failed request_id=<id>: id_token missing email claim` | IdP tidak menyertakan `email` dalam id\_token secara default. Penolakan ini hanya terjadi ketika `allowed_email_domains` diatur; tanpanya, email yang hilang mencetak sesi tanpa email | Konfigurasikan IdP untuk memancarkan `email` dalam id\_token. Okta: tambahkan `email` ke klaim ID-token server otorisasi khusus. Entra: tambahkan `email` sebagai klaim opsional pada pendaftaran aplikasi. PingFederate: aktifkan Kebijakan OpenID Connect yang memancarkan `email`. Jika IdP melayani `email` dari endpoint userinfo tetapi tidak akan menyertakannya dalam id\_token, seperti server otorisasi org Okta, atur `oidc.userinfo_fallback: true`. |

405| Log: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, dan pengembang melihat `Cloud gateway session expired` setiap `session.ttl_hours` | IdP menerima token refresh tetapi tidak mengembalikan id\_token dengannya, jadi gateway menanyakan endpoint userinfo IdP untuk klaim pengguna. IdP menolak token akses yang diperbarui di sana. Gateway menjawab `temporarily_unavailable`, jadi Claude Code menyimpan token refresh tetapi tidak dapat memperbarui sesi. Versi gateway sebelum v2.1.260 mencatat baris yang sama tanpa detail `(at …)`. | Atur [`oidc.scope_on_refresh: true`](/docs/id/claude-apps-gateway-config#oidc), tersedia di gateway v2.1.260 atau lebih baru, sehingga permintaan refresh meminta `openid` lagi. Beberapa IdP, seperti Okta, mengembalikan id\_token pada refresh hanya ketika diminta. Di PingFederate, aktifkan **Return ID Token On Refresh Grant** di bawah **Applications > OAuth > OpenID Connect Policy Management** sebagai gantinya. Kunci tidak mengubah perilaku PingFederate. Untuk IdP lain yang masih menghilangkannya, periksa apakah endpoint userinfo menerima token akses yang dikeluarkan oleh refresh. Sebagai solusi sementara, naikkan [`session.ttl_hours`](/docs/id/claude-apps-gateway-config#session). Lihat [Penyiapan penyedia identitas](#identity-provider-setup) untuk tradeoff deprovisioning. |411| Log: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, dan pengembang melihat `Cloud gateway session expired` setiap `session.ttl_hours` | IdP menerima token refresh tetapi tidak mengembalikan id\_token dengannya, jadi gateway menanyakan endpoint userinfo IdP untuk klaim pengguna. IdP menolak token akses yang diperbarui di sana. Gateway menjawab `temporarily_unavailable`, jadi Claude Code menyimpan token refresh tetapi tidak dapat memperbarui sesi. Versi gateway sebelum v2.1.260 mencatat baris yang sama tanpa detail `(at …)`. | Atur [`oidc.scope_on_refresh: true`](/docs/id/claude-apps-gateway-config#oidc), tersedia di gateway v2.1.260 atau lebih baru, sehingga permintaan refresh meminta `openid` lagi. Beberapa IdP, seperti Okta, mengembalikan id\_token pada refresh hanya ketika diminta. Di PingFederate, aktifkan **Return ID Token On Refresh Grant** di bawah **Applications > OAuth > OpenID Connect Policy Management** sebagai gantinya. Kunci tidak mengubah perilaku PingFederate. Untuk IdP lain yang masih menghilangkannya, periksa apakah endpoint userinfo menerima token akses yang dikeluarkan oleh refresh. Sebagai solusi sementara, naikkan [`session.ttl_hours`](/docs/id/claude-apps-gateway-config#session). Lihat [Penyiapan penyedia identitas](#identity-provider-setup) untuk tradeoff deprovisioning. |

Details

169 </Step>169 </Step>

170 170 

171 <Step title="Sediakan Amazon RDS untuk PostgreSQL">171 <Step title="Sediakan Amazon RDS untuk PostgreSQL">

172 Instans berjalan di subnet pribadi tanpa alamat publik dan enkripsi penyimpanan aktif. Versi mesin disematkan ke Postgres 16, yang memenuhi lantai yang didukung gateway dari PostgreSQL 14 dan menjamin keluarga grup parameter di bawah cocok dengan instans.172 Instans menjalankan Postgres 16 di subnet pribadi, tanpa alamat publik dan dengan enkripsi penyimpanan aktif.

173 173 

174 Pertama, buat grup subnet yang menempatkan database di subnet pribadi, dan grup parameter dengan `rds.force_ssl=1` sehingga server menolak koneksi plaintext. Versi mesin disematkan sekali karena keluarga grup parameter harus cocok dengan versi utama mesin yang dijalankan instans:174 Pertama, buat grup subnet yang menempatkan database di subnet pribadi, dan grup parameter dengan `rds.force_ssl=1` sehingga server menolak koneksi plaintext. Versi mesin disematkan sekali karena keluarga grup parameter harus cocok dengan versi utama mesin yang dijalankan instans:

175 175 

Details

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

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

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

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

420* **Analisis aman**: kode dianalisis dan dimodifikasi dalam lingkungan terisolasi sesi sebelum membuat PR420* **Analisis aman**: kode dianalisis dan dimodifikasi dalam lingkungan terisolasi sesi sebelum membuat PR

421 421 

422<h2 id="troubleshooting">422<h2 id="troubleshooting">


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

443 443 

444* `Unable to get organization UUID`444* `Unable to get organization UUID`

445* Pesan bahwa autentikasi kunci API tidak cukup445* ``Cloud sessions need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``

446* `Error loading Claude Code sessions` di pemilih sesi, saat Anda menjalankan `claude --teleport` tanpa ID sesi446* `Error loading Claude Code sessions` di pemilih sesi, saat Anda menjalankan `claude --teleport` tanpa ID sesi

447 447 

448Jalankan `/login` untuk masuk dengan akun claude.ai Anda, kemudian coba lagi perintah. Jika kesalahan justru menyebutkan penyedia Anda, lihat [tabel kesalahan](#errors-when-sending-to-a-cloud-session): sesi cloud tidak tersedia melalui penyedia pihak ketiga.448Jalankan [`claude auth login`](/docs/id/cli-reference#cli-commands) di shell Anda untuk masuk dengan akun claude.ai Anda, kemudian coba lagi perintah tersebut. Di dalam sesi yang sedang berjalan, `/login` melakukan hal yang sama. Jika kesalahan justru menyebutkan penyedia Anda, lihat [tabel kesalahan](#errors-when-sending-to-a-cloud-session): sesi cloud tidak tersedia melalui penyedia pihak ketiga.

449 

450Dari v2.1.274 hingga v2.1.289, pesan sign-in berbunyi `Claude Code cloud sessions require authentication with a Claude.ai account. API key authentication is not sufficient. Please run /login to authenticate, or check your authentication status with /status.`

449 451 

450<h3 id="remote-control-session-expired-or-access-denied">452<h3 id="remote-control-session-expired-or-access-denied">

451 Remote Control session expired or access denied453 Remote Control session expired or access denied

Details

34 oneLiner: 'Project instructions Claude reads every session',34 oneLiner: 'Project instructions Claude reads every session',

35 when: 'Loaded into context at the start of every session',35 when: 'Loaded into context at the start of every session',

36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',

37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> on its own or alongside CLAUDE.md</>],37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> in place of a <C>CLAUDE.md</C></>],

38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',

39 example: `# Project conventions39 example: `# Project conventions

40 40 


164 icon: 'folder',164 icon: 'folder',

165 color: '#9B7BC4',165 color: '#9B7BC4',

166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',166 oneLiner: 'Topic-scoped instructions, optionally gated by file paths',

167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,167 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when Claude reads, writes, or edits a matching file</>,

168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads, writes, or edits a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/docs/en/hooks">hooks</A> or <A href="/docs/en/permissions">permissions</A>.</>],168 description: [<>Project instructions split into topic files that can load conditionally based on file paths. A rule without <C>paths:</C> frontmatter loads at session start like CLAUDE.md; a rule with <C>paths:</C> loads only when Claude reads, writes, or edits a matching file.</>, <>Like CLAUDE.md, rules are guidance Claude reads, not configuration Claude Code enforces. For guaranteed behavior use <A href="/docs/en/hooks">hooks</A> or <A href="/docs/en/permissions">permissions</A>.</>],

169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],169 tips: [<>Use <C>paths:</C> frontmatter with globs to scope rules to directories or file types</>, <>Subdirectories work: <C>.claude/rules/frontend/react.md</C> is discovered automatically</>, 'When CLAUDE.md approaches 200 lines, start splitting into rules'],

170 docsLink: '/en/memory#organize-rules-with-claude/rules/',170 docsLink: '/en/memory#organize-rules-with-claude/rules/',


176 color: '#9B7BC4',176 color: '#9B7BC4',

177 badge: 'committed',177 badge: 'committed',

178 oneLiner: 'Test conventions scoped to test files',178 oneLiner: 'Test conventions scoped to test files',

179 when: <>Loaded when Claude reads a file matching the <C>paths:</C> globs below</>,179 when: <>Loaded when Claude reads, writes, or edits a file matching the <C>paths:</C> globs below</>,

180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,180 description: <>An example rule that only loads when Claude is working on test files. The <C>paths:</C> globs in the frontmatter define which files trigger it; here, anything ending in .test.ts or .test.tsx. For other files, this rule is not loaded into context.</>,

181 example: `---181 example: `---

182paths:182paths:


197 color: '#9B7BC4',197 color: '#9B7BC4',

198 badge: 'committed',198 badge: 'committed',

199 oneLiner: 'API conventions scoped to backend code',199 oneLiner: 'API conventions scoped to backend code',

200 when: <>Loaded when Claude reads a file matching the <C>paths:</C> glob below</>,200 when: <>Loaded when Claude reads, writes, or edits a file matching the <C>paths:</C> glob below</>,

201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is editing API routes.</>,201 description: <>A second example showing a rule scoped to backend code. The <C>paths:</C> glob matches files under src/api/, so these conventions load only when Claude is working on API routes.</>,

202 example: `---202 example: `---

203paths:203paths:

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


605 icon: 'folder',605 icon: 'folder',

606 color: '#9B7BC4',606 color: '#9B7BC4',

607 oneLiner: 'User-level rules that apply to every project',607 oneLiner: 'User-level rules that apply to every project',

608 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when a matching file enters context</>,608 when: <>Rules without <C>paths:</C> load at session start. Rules with <C>paths:</C> load when Claude reads, writes, or edits a matching file</>,

609 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',609 description: 'Same as project .claude/rules/ but applies everywhere. Use this for conventions you want across all your work, like personal code style or commit message format.',

610 docsLink: '/en/memory#organize-rules-with-claude/rules/',610 docsLink: '/en/memory#organize-rules-with-claude/rules/',

611 children: []611 children: []


1434 1434 

1435Di Windows, `~/.claude` diselesaikan menjadi `%USERPROFILE%\.claude`. Jika Anda menetapkan [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars), setiap jalur `~/.claude` di halaman ini berada di bawah direktori itu sebagai gantinya.1435Di Windows, `~/.claude` diselesaikan menjadi `%USERPROFILE%\.claude`. Jika Anda menetapkan [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars), setiap jalur `~/.claude` di halaman ini berada di bawah direktori itu sebagai gantinya.

1436 1436 

1437Sebagian besar pengguna hanya mengedit `CLAUDE.md` dan `settings.json`. Jika repositori Anda sudah memiliki `AGENTS.md` untuk agen coding lainnya, Claude Code [dapat membacanya](/docs/id/memory#agents-md) sendiri atau bersama `CLAUDE.md`. Sisa direktori bersifat opsional: tambahkan skills, rules, atau subagents sesuai kebutuhan Anda.1437Sebagian besar pengguna hanya mengedit `CLAUDE.md` dan `settings.json`. Jika repositori Anda sudah memiliki `AGENTS.md` untuk agent coding lainnya, Claude Code [dapat membacanya](/docs/id/memory#agents-md) sebagai pengganti `CLAUDE.md`. Sisa direktori bersifat opsional: tambahkan skills, rules, atau subagents sesuai kebutuhan Anda.

1438 1438 

1439<h2 id="explore-the-directory">1439<h2 id="explore-the-directory">

1440 Jelajahi direktori1440 Jelajahi direktori


1454| - | - | - |1454| - | - | - |

1455| `managed-settings.json` | Tingkat sistem, bervariasi menurut OS | Pengaturan yang diberlakukan perusahaan yang tidak dapat Anda ganti, kecuali [pengecualian sempit](/docs/id/settings#security-keys-where-the-stricter-value-applies). Lihat [tempat menyimpan file](/docs/id/managed-settings#deploy-a-managed-settings-file) dan [sumber managed mana yang digunakan Claude Code](/docs/id/managed-settings#precedence-within-the-managed-tier). |1455| `managed-settings.json` | Tingkat sistem, bervariasi menurut OS | Pengaturan yang diberlakukan perusahaan yang tidak dapat Anda ganti, kecuali [pengecualian sempit](/docs/id/settings#security-keys-where-the-stricter-value-applies). Lihat [tempat menyimpan file](/docs/id/managed-settings#deploy-a-managed-settings-file) dan [sumber managed mana yang digunakan Claude Code](/docs/id/managed-settings#precedence-within-the-managed-tier). |

1456| `CLAUDE.local.md` | Akar proyek | Preferensi pribadi Anda untuk proyek ini, dimuat bersama CLAUDE.md. Buatnya secara manual dan tambahkan ke `.gitignore`. |1456| `CLAUDE.local.md` | Akar proyek | Preferensi pribadi Anda untuk proyek ini, dimuat bersama CLAUDE.md. Buatnya secara manual dan tambahkan ke `.gitignore`. |

1457| `AGENTS.md` | Akar proyek, `.claude/`, atau direktori apa pun | Instruksi proyek yang Anda tulis untuk agen coding AI. Claude Code dapat [memuatnya](/docs/id/memory#agents-md) sendiri atau bersama `CLAUDE.md`. |1457| `AGENTS.md` | Akar proyek, `.claude/`, atau direktori apa pun | Instruksi proyek yang Anda tulis untuk agent coding AI. Claude Code dapat [memuatnya](/docs/id/memory#agents-md) sebagai pengganti `CLAUDE.md`. |

1458| Plugin yang diinstal | `~/.claude/plugins` | Marketplace yang dikloning, versi plugin yang diinstal, catatan instalasi `installed_plugins.json`, dan data per-plugin, dikelola oleh perintah `claude plugin`. Plugin yang [disinkronkan dari akun claude.ai Anda](/docs/id/plugins/loading#synced-plugins) diunduh ke `~/.claude/plugins/synced/`. Untuk plugin yang diinstal dari marketplace dengan [`command` source](/docs/id/plugins/marketplace-reference#command-plugin-source) dalam link mode, Claude Code menyimpan link di sini alih-alih salinan, dan file plugin tetap berada di direktori yang dicetak perintah. Sumber `command` memerlukan Claude Code v2.1.229 atau lebih baru. Plugin yang tercantum menurut jalur relatif dalam marketplace yang Anda tambahkan dari jalur lokal juga [dimuat di tempat](/docs/id/plugins/loading#find-plugins-on-disk) dari direktori sumbernya daripada dari salinan cache. Lihat [plugin caching](/docs/id/plugins/loading#find-plugins-on-disk) untuk cara versi yatim piatu dibersihkan. |1458| Plugin yang diinstal | `~/.claude/plugins` | Marketplace yang dikloning, versi plugin yang diinstal, catatan instalasi `installed_plugins.json`, dan data per-plugin, dikelola oleh perintah `claude plugin`. Plugin yang [disinkronkan dari akun claude.ai Anda](/docs/id/plugins/loading#synced-plugins) diunduh ke `~/.claude/plugins/synced/`. Untuk plugin yang diinstal dari marketplace dengan [`command` source](/docs/id/plugins/marketplace-reference#command-plugin-source) dalam link mode, Claude Code menyimpan link di sini alih-alih salinan, dan file plugin tetap berada di direktori yang dicetak perintah. Sumber `command` memerlukan Claude Code v2.1.229 atau lebih baru. Plugin yang tercantum menurut jalur relatif dalam marketplace yang Anda tambahkan dari jalur lokal juga [dimuat di tempat](/docs/id/plugins/loading#find-plugins-on-disk) dari direktori sumbernya daripada dari salinan cache. Lihat [plugin caching](/docs/id/plugins/loading#find-plugins-on-disk) untuk cara versi yatim piatu dibersihkan. |

1459 1459 

1460`~/.claude` juga menyimpan data yang ditulis Claude Code saat Anda bekerja: transkrip, riwayat prompt, snapshot file, cache, dan log. Lihat [application data](#application-data) di bawah.1460`~/.claude` juga menyimpan data yang ditulis Claude Code saat Anda bekerja: transkrip, riwayat prompt, snapshot file, cache, dan log. Lihat [application data](#application-data) di bawah.

claude-projects.md +29 −29

Details

56 56 

57* **Percakapan project**: satu sesi jangka panjang di mana Claude bertindak sebagai koordinator. Ini mengambil apa yang Anda kirim, memutuskan apa yang menjadi thread, dan melacak setiap thread yang dimulainya. Ini melihat apa yang dilaporkan thread kembali, bukan setiap langkah yang mereka ambil.57* **Percakapan project**: satu sesi jangka panjang di mana Claude bertindak sebagai koordinator. Ini mengambil apa yang Anda kirim, memutuskan apa yang menjadi thread, dan melacak setiap thread yang dimulainya. Ini melihat apa yang dilaporkan thread kembali, bukan setiap langkah yang mereka ambil.

58* **Threads**: para pekerja. Masing-masing adalah sesi terpisah dengan jendela konteks sendiri yang melakukan satu bagian pekerjaan dan melaporkan kembali ke percakapan ketika selesai. Thread cloud bekerja di cabang sendiri dan membuka pull request ketika pekerjaan memanggilnya.58* **Threads**: para pekerja. Masing-masing adalah sesi terpisah dengan jendela konteks sendiri yang melakukan satu bagian pekerjaan dan melaporkan kembali ke percakapan ketika selesai. Thread cloud bekerja di cabang sendiri dan membuka pull request ketika pekerjaan memanggilnya.

59* **Apa yang dimulai setiap cloud thread dengan**:59* **Apa yang dimiliki setiap cloud thread sejak awal**:

60 * Repositori dan file project, ditambah [instruksi dan memori](#give-a-project-standing-context)60 * Repositori dan file project, ditambah [instruksi dan memori](#give-a-project-standing-context) project

61 * `CLAUDE.md` dan skills di [setiap repositori project](#what-threads-pick-up-from-your-repositories), dan di project dengan satu repositori, aturan izin dan hooks repositori itu juga61 * `CLAUDE.md` dan skills di [setiap repositori project](#what-threads-pick-up-from-your-repositories), dan di project dengan satu repositori, aturan izin dan hook repositori itu juga

62 * [Connectors](#get-skills-plugins-connectors-and-tools-into-threads) di akun claude.ai Anda62 * [Konektor](#get-skills-plugins-connectors-and-tools-into-threads) di akun claude.ai Anda

63 * [Cloud environment](#choose-an-environment-for-threads) yang menetapkan akses jaringan, variabel lingkungan, kredensial API, dan alat yang terinstal63 * [Cloud environment](#choose-an-environment-for-threads) yang menetapkan akses jaringan, environment variable, rahasia jaringan, dan alat yang terinstal

64* **Pane Overview**: di mana Anda [melihat semua thread sekaligus](#see-what-needs-you-in-overview) dan mana yang membutuhkan Anda. Tab lainnya adalah **Library** untuk file yang Anda tambahkan dan file yang dihasilkan thread, **Pull requests** untuk yang dibuka thread, dan **Routines** untuk pekerjaan terjadwal di project.64* **Pane Overview**: di mana Anda [melihat semua thread sekaligus](#see-what-needs-you-in-overview) dan mana yang membutuhkan Anda. Tab lainnya adalah **Library** untuk file yang Anda tambahkan dan file yang dihasilkan thread, **Pull requests** untuk yang dibuka thread, dan **Routines** untuk pekerjaan terjadwal di project.

65 65 

66Cloud threads tidak mengambil apa pun dari setup Claude Code di mesin Anda sendiri. [Dapatkan skills, plugins, connectors, dan tools ke dalam threads](#get-skills-plugins-connectors-and-tools-into-threads) mencakup cara memberikan mereka apa yang mereka butuhkan.66Cloud threads tidak mengambil apa pun dari setup Claude Code di mesin Anda sendiri. [Dapatkan skills, plugins, connectors, dan tools ke dalam threads](#get-skills-plugins-connectors-and-tools-into-threads) mencakup cara memberikan mereka apa yang mereka butuhkan.


92 92 

93* **Paket**: Anda berada di Pro atau Max dan **Projects** ditampilkan di sidebar Anda.93* **Paket**: Anda berada di Pro atau Max dan **Projects** ditampilkan di sidebar Anda.

94* **GitHub, jika project akan bekerja pada kode**: kode Anda ada di github.com daripada GitHub Enterprise Server, GitLab, atau Bitbucket, akun GitHub yang terhubung memiliki akses push ke kode, dan Claude GitHub App terinstal di atasnya. Jika Anda menghubungkan GitHub dengan [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal), token itu memungkinkan sesi cloud lain Anda menjangkau repositori tetapi tidak cukup untuk thread project, yang membutuhkan Claude GitHub App. [Atur akses GitHub](#set-up-github-access) memiliki langkah-langkahnya.94* **GitHub, jika project akan bekerja pada kode**: kode Anda ada di github.com daripada GitHub Enterprise Server, GitLab, atau Bitbucket, akun GitHub yang terhubung memiliki akses push ke kode, dan Claude GitHub App terinstal di atasnya. Jika Anda menghubungkan GitHub dengan [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal), token itu memungkinkan sesi cloud lain Anda menjangkau repositori tetapi tidak cukup untuk thread project, yang membutuhkan Claude GitHub App. [Atur akses GitHub](#set-up-github-access) memiliki langkah-langkahnya.

95* **Jaringan, kredensial, dan alat**: untuk thread cloud, ini berasal dari [cloud environment](#choose-an-environment-for-threads) project. Environment default sudah menjangkau [registri paket umum](/docs/id/cloud-environments#default-allowed-domains), jadi periksa ini hanya jika pekerjaan membutuhkan domain lain, rahasia, atau alat yang tidak terinstal sebelumnya. Jika pekerjaan membutuhkan server MCP, periksa bahwa itu ditampilkan sebagai terhubung di [connectors claude.ai](https://claude.ai/customize/connectors) Anda.95* **Jaringan, rahasia, dan alat**: untuk thread cloud, ini berasal dari [cloud environment](#choose-an-environment-for-threads) project. Environment default sudah menjangkau [registri paket umum](/docs/id/cloud-environments#default-allowed-domains), jadi periksa ini hanya jika pekerjaan membutuhkan domain lain, rahasia, atau alat yang tidak terinstal sebelumnya. Jika pekerjaan membutuhkan server MCP, periksa bahwa itu ditampilkan sebagai terhubung di [konektor claude.ai](https://claude.ai/customize/connectors) Anda.

96 96 

97<h3 id="start-a-new-project-from-scratch">97<h3 id="start-a-new-project-from-scratch">

98 Mulai project baru dari awal98 Mulai project baru dari awal


333Project instructions adalah brief yang dimulai setiap thread baru. Klik ikon gear di header project untuk membuka **Project settings**, lalu buka **Memory > Project instructions**. Brief yang berguna mencakup:333Project instructions adalah brief yang dimulai setiap thread baru. Klik ikon gear di header project untuk membuka **Project settings**, lalu buka **Memory > Project instructions**. Brief yang berguna mencakup:

334 334 

335* Apa project itu untuk335* Apa project itu untuk

336* Di mana pekerjaan terjadi: repositori mana, cabang mana yang dimulai, cara memberi nama pull request336* Di mana pekerjaan terjadi: repositori mana, branch mana yang dimulai, cara memberi nama pull request

337* Bagaimana thread memeriksa pekerjaannya sendiri sebelum menyebutnya selesai337* Bagaimana thread memeriksa pekerjaannya sendiri sebelum menyebutnya selesai

338* Apa yang harus dilakukan ketika sesuatu yang dibutuhkan hilang338* Apa yang harus dilakukan ketika sesuatu yang dibutuhkan hilang

339* Apa yang membutuhkan persetujuan Anda terlebih dahulu339* Apa yang membutuhkan persetujuan Anda terlebih dahulu


345 345 

346- Branch dari main dan buka satu draft pull request per thread.346- Branch dari main dan buka satu draft pull request per thread.

347- Sebelum Anda menyebut pekerjaan selesai, jalankan `make test` dan `make lint` dan tempel baris ringkasan dalam pesan terakhir Anda.347- Sebelum Anda menyebut pekerjaan selesai, jalankan `make test` dan `make lint` dan tempel baris ringkasan dalam pesan terakhir Anda.

348- Jika Anda tidak dapat menjangkau sesuatu yang Anda butuhkan, seperti repositori, rahasia, API, atau connector, katakan dengan tepat apa yang hilang dalam pesan pertama Anda dan berhenti. Jangan ganti, mock, atau tebak.348- Jika Anda tidak dapat menjangkau sesuatu yang Anda butuhkan, seperti repositori, rahasia, API, atau konektor, katakan dengan tepat apa yang hilang dalam pesan pertama Anda dan berhenti. Jangan ganti, mock, atau tebak.

349- Jangan merge, force-push, atau ubah konfigurasi CI tanpa bertanya kepada saya di thread.349- Jangan merge, force-push, atau ubah konfigurasi CI tanpa bertanya kepada saya di thread.

350```350```

351 351 

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

353 353 

354<h3 id="decide-which-repositories-to-add">354<h3 id="decide-which-repositories-to-add">

355 Tentukan repositori mana yang akan ditambahkan355 Tentukan repositori mana yang akan ditambahkan


357 357 

358Repositori yang Anda tambahkan ke project datang dengan semua yang ada di dalamnya, kode, `CLAUDE.md`, dan skills, di setiap thread cloud. Repositori yang tidak Anda tambahkan masih dalam jangkauan: thread cloud dapat menambahkan satu ke dirinya sendiri ketika tugasnya membutuhkannya. Sebagian besar project menggunakan keduanya:358Repositori yang Anda tambahkan ke project datang dengan semua yang ada di dalamnya, kode, `CLAUDE.md`, dan skills, di setiap thread cloud. Repositori yang tidak Anda tambahkan masih dalam jangkauan: thread cloud dapat menambahkan satu ke dirinya sendiri ketika tugasnya membutuhkannya. Sebagian besar project menggunakan keduanya:

359 359 

360* **Tambahkan ke project**, di dialog **New project**, di **Project settings > Environment**, atau dengan meminta Claude dalam percakapan untuk menambahkannya ke project. Setiap thread dari saat itu mengklonnya dan dimulai dengan `CLAUDE.md` dan skills-nya dimuat, terlepas dari apakah tugas menyentuhnya. Pergi dari satu repositori ke beberapa juga mengubah apa yang diambil thread dari `.claude/settings.json` setiap repositori; lihat [Apa yang diambil thread dari repositori Anda](#what-threads-pick-up-from-your-repositories).360* **Tambahkan ke project**, di dialog **New project**, di **Project settings > Environment**, atau dengan meminta Claude dalam percakapan untuk menambahkannya ke project. Setiap thread cloud dari saat itu mengklonnya dan dimulai dengan `CLAUDE.md` dan skills-nya dimuat, terlepas dari apakah tugas menyentuhnya. Beralih dari satu repositori ke beberapa juga mengubah apa yang diambil thread dari `.claude/settings.json` setiap repositori; lihat [Apa yang diambil thread dari repositori Anda](#what-threads-pick-up-from-your-repositories).

361* **Biarkan off dan biarkan thread menambahkannya ketika diperlukan.** Thread cloud yang tugasnya membutuhkan repositori yang tidak dimiliki project dapat menambahkannya ke dirinya sendiri, dan catatan dalam thread mengatakan itu ditambahkan ke thread ini saja. Klon terjadi setengah jalan melalui tugas, jadi `CLAUDE.md` dan skills repositori itu tidak ada ketika thread dimulai. Thread berikutnya dimulai tanpanya lagi. Repositori yang ditambahkan dengan cara ini membutuhkan [prasyarat](#check-the-prerequisites) yang sama dengan repositori project: Claude GitHub App diinstal di atasnya dan akses push dari akun GitHub Anda.361* **Jangan tambahkan dan biarkan thread menambahkannya ketika diperlukan.** Thread cloud yang tugasnya membutuhkan repositori yang tidak dimiliki project dapat menambahkannya ke dirinya sendiri, dan catatan dalam thread mengatakan itu ditambahkan ke thread ini saja. Klon terjadi di tengah tugas, jadi `CLAUDE.md` dan skills repositori itu tidak ada ketika thread dimulai. Thread berikutnya dimulai tanpanya. Repositori yang ditambahkan dengan cara ini membutuhkan [prasyarat](#check-the-prerequisites) yang sama dengan repositori project: Claude GitHub App diinstal di atasnya dan akses push dari akun GitHub Anda.

362 362 

363Project tidak membutuhkan repositori sama sekali. Thread-nya masih dapat meneliti, menulis dokumen, dan menulis dan menjalankan kode di sandbox mereka sendiri, dan mereka memberikan file ke tab **Library**. Thread di sana juga dapat menambahkan repositori ke dirinya sendiri ketika tugas memanggilnya.363Project tidak membutuhkan repositori sama sekali. Thread cloud-nya masih dapat meneliti, menulis dokumen, dan menulis dan menjalankan kode di sandbox mereka sendiri, dan mereka memberikan file ke tab **Library**. Thread cloud mana pun di project itu tetap dapat menambahkan repositori ke dirinya sendiri ketika tugas membutuhkannya.

364 364 

365Setelah project memiliki repositori, Claude hanya dapat menambahkan repositori dari pemilik GitHub yang sudah digunakan project, apakah menambahkan satu ke project atau thread menambahkan satu ke dirinya sendiri. Untuk membawa repositori dari pemilik berbeda, tambahkan sendiri di **Project settings > Environment**.365Setelah project memiliki repositori, Claude hanya dapat menambahkan repositori dari pemilik GitHub yang sudah digunakan project, apakah menambahkan satu ke project atau thread menambahkan satu ke dirinya sendiri. Untuk membawa repositori dari pemilik berbeda, tambahkan sendiri ke project di **Project settings > Environment**.

366 366 

367Untuk project yang mencakup banyak repositori, seperti satu fitur dengan kode server, web, mobile, dan desktop, tambahkan satu atau dua repositori yang hampir setiap tugas sentuh dan beri nama yang lain di [project instructions](#write-project-instructions) sehingga Claude tahu di mana sisa kode berada. Thread kemudian dimulai kecil dan menarik repositori lain hanya untuk tugas yang membutuhkannya.367Untuk project yang mencakup banyak repositori, seperti satu fitur dengan kode server, web, mobile, dan desktop, tambahkan satu atau dua repositori yang hampir setiap tugas sentuh dan sebutkan yang lain di [project instructions](#write-project-instructions) sehingga Claude tahu di mana sisa kode berada. Thread cloud kemudian dimulai kecil dan menarik repositori lain hanya untuk tugas yang membutuhkannya.

368 368 

369<h3 id="add-files-and-folders">369<h3 id="add-files-and-folders">

370 Tambahkan file dan folder370 Tambahkan file dan folder


381 Apa yang diambil thread dari repositori Anda381 Apa yang diambil thread dari repositori Anda

382</h3>382</h3>

383 383 

384Setiap thread cloud mengkloning setiap repositori dalam project dan memuat `CLAUDE.md` dan skills dari semuanya. Permission rules, hooks, dan `env` hanya datang dari `.claude/settings.json` di direktori tempat thread dimulai: di dalam repositori ketika project memiliki satu, dan di atas klon ketika memiliki beberapa, di mana file repositori tidak dibaca untuk mereka.384Setiap thread cloud mengkloning setiap repositori dalam project dan memuat `CLAUDE.md` dan skills dari semuanya. Aturan izin, hook, dan `env` hanya datang dari `.claude/settings.json` di direktori tempat thread dimulai: di dalam repositori ketika project memiliki satu, dan di atas klon ketika memiliki beberapa, di mana file repositori mana pun tidak dibaca untuk hal tersebut.

385 385 

386| Di setiap repositori | Satu repositori | Beberapa repositori |386| Di setiap repositori | Satu repositori | Beberapa repositori |

387| :- | :- | :- |387| :- | :- | :- |

388| `CLAUDE.md` | Dimuat ketika thread dimulai | Dimuat dari setiap repositori ketika thread dimulai |388| `CLAUDE.md` | Dimuat ketika thread dimulai | Dimuat dari setiap repositori ketika thread dimulai |

389| Skills, agents, dan commands di bawah `.claude/` | Dimuat | Dimuat dari setiap repositori |389| Skills, agent, dan perintah di bawah `.claude/` | Dimuat | Dimuat dari setiap repositori |

390| Plugins yang diaktifkan di `.claude/settings.json` | Tidak dimuat. Tambahkan plugin di **Project settings > Plugins** sebagai gantinya | Tidak dimuat. Tambahkan plugin di **Project settings > Plugins** sebagai gantinya |390| Plugin yang diaktifkan di `.claude/settings.json` | Tidak dimuat. Tambahkan plugin di **Project settings > Plugins** sebagai gantinya | Tidak dimuat. Tambahkan plugin di **Project settings > Plugins** sebagai gantinya |

391| Permission rules, hooks, dan `env` yang didefinisikan di `.claude/settings.json` | Berlaku untuk thread, kecuali kunci `env` yang [tidak dihormati sesi cloud apa pun](/docs/id/cloud-environments#what-carries-over-from-your-setup) | Tidak berlaku |391| Aturan izin, hook, dan `env` yang didefinisikan di `.claude/settings.json` | Berlaku untuk thread, kecuali kunci `env` yang [tidak dihormati sesi cloud apa pun](/docs/id/cloud-environments#what-carries-over-from-your-setup) | Tidak berlaku |

392 392 

393Dalam project dengan beberapa repositori, setiap klon dilampirkan ke thread sebagai [direktori tambahan](/docs/id/memory#load-from-additional-directories) dengan pemuatan `CLAUDE.md` diaktifkan, itulah mengapa `CLAUDE.md` dan skills setiap repositori dimuat saat mulai meskipun thread dimulai di atasnya. Dalam project dengan beberapa repositori, masukkan aturan berdiri di project instructions dan berikan thread variabel lingkungan melalui [cloud environment](#choose-an-environment-for-threads).393Dalam project dengan beberapa repositori, setiap klon dilampirkan ke thread sebagai [direktori tambahan](/docs/id/memory#load-from-additional-directories) dengan pemuatan `CLAUDE.md` diaktifkan, itulah mengapa `CLAUDE.md` dan skills setiap repositori dimuat saat mulai meskipun thread dimulai di atasnya. Dalam project seperti itu, masukkan aturan berdiri di project instructions dan berikan thread environment variable melalui [cloud environment](#choose-an-environment-for-threads).

394 394 

395<h3 id="choose-an-environment-for-threads">395<h3 id="choose-an-environment-for-threads">

396 Pilih environment untuk thread396 Pilih environment untuk thread

397</h3>397</h3>

398 398 

399Setiap thread cloud baru dimulai dalam [cloud environment](/docs/id/cloud-environments) project. Environment menetapkan domain mana yang dapat dijangkau thread, variabel lingkungan mana yang mereka miliki, kredensial API mana yang ditambahkan ke permintaan mereka, dan apa yang diinstal skrip setup sebelum Claude dimulai. Thread cloud menggunakan environment default yang dihosting Anthropic sampai Anda memilih satu di **Project settings > Environment**.399Setiap thread cloud baru dimulai dalam [cloud environment](/docs/id/cloud-environments) project. Environment menetapkan domain mana yang dapat dijangkau thread, environment variable mana yang mereka miliki, network secret mana yang ditambahkan ke permintaan mereka, dan apa yang diinstal skrip setup sebelum Claude dimulai. Thread cloud menggunakan environment default yang dihosting Anthropic sampai Anda memilih satu di **Project settings > Environment**.

400 400 

401Jika thread cloud perlu menjangkau API internal atau registri paket pribadi, atau membutuhkan token yang biasanya disimpan mesin Anda, ubah environment daripada project: lihat [Network access](/docs/id/cloud-environments#network-access), [Add API credentials](/docs/id/cloud-environments#add-api-credentials), dan [Setup scripts](/docs/id/cloud-environments#setup-scripts).401Jika thread cloud perlu menjangkau API internal atau registri paket pribadi, atau membutuhkan token yang biasanya disimpan mesin Anda, ubah environment daripada project: lihat [Network access](/docs/id/cloud-environments#network-access), [Add network secrets](/docs/id/cloud-environments#add-api-credentials), dan [Setup scripts](/docs/id/cloud-environments#setup-scripts).

402 402 

403<h3 id="get-skills-plugins-connectors-and-tools-into-threads">403<h3 id="get-skills-plugins-connectors-and-tools-into-threads">

404 Dapatkan skills, plugins, connectors, dan tools ke dalam threads404 Dapatkan skills, plugin, konektor, dan tool ke dalam thread

405</h3>405</h3>

406 406 

407Thread cloud tidak memiliki skills, server MCP, plugins, dan tools yang diinstal hanya di mesin Anda. Thread yang Claude jalankan di mesin Anda melalui [Remote Control](/docs/id/remote-control) menggunakan apa yang diinstal di sana. Untuk membuat masing-masing tersedia untuk thread cloud:407Thread cloud tidak memiliki skills, server MCP, plugin, dan tool yang diinstal hanya di mesin Anda. Thread yang Claude jalankan di mesin Anda melalui [Remote Control](/docs/id/remote-control) menggunakan apa yang diinstal di sana. Untuk membuat masing-masing tersedia untuk thread cloud:

408 408 

409* Skills, subagents, dan commands: commit ke repositori yang Anda tambahkan ke project, misalnya skill di `.claude/skills/<skill-name>/SKILL.md`. Setiap thread cloud mengkloning setiap repositori dalam project dan memuat `.claude/skills/`, `.claude/agents/`, dan `.claude/commands/` dari masing-masing, jadi skill yang dicommit ke satu repositori tersedia di setiap thread cloud. Thread cloud juga memuat skills yang Anda aktifkan untuk akun claude.ai Anda.409* Skills, subagent, dan perintah: commit ke repositori yang Anda tambahkan ke project, misalnya skill di `.claude/skills/<skill-name>/SKILL.md`. Setiap thread cloud mengkloning setiap repositori dalam project dan memuat `.claude/skills/`, `.claude/agents/`, dan `.claude/commands/` dari masing-masing, jadi skill yang di-commit ke satu repositori tersedia di setiap thread cloud. Thread cloud juga memuat skills yang Anda aktifkan untuk akun claude.ai Anda.

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

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

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

413 413 

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

415 415 

416<h2 id="project-settings-reference">416<h2 id="project-settings-reference">

417 Referensi pengaturan project417 Referensi pengaturan project


590</h2>590</h2>

591 591 

592* [Gunakan Claude Code di cloud](/docs/id/claude-code-on-the-web): bagaimana sesi cloud di balik setiap thread bekerja, termasuk opsi akses GitHub dan auto-fix pada pull request592* [Gunakan Claude Code di cloud](/docs/id/claude-code-on-the-web): bagaimana sesi cloud di balik setiap thread bekerja, termasuk opsi akses GitHub dan auto-fix pada pull request

593* [Konfigurasi cloud environments](/docs/id/cloud-environments): ubah apa yang dapat dijangkau thread di jaringan, berikan mereka variabel lingkungan dan kredensial API, dan instal alat dengan skrip setup593* [Konfigurasi cloud environments](/docs/id/cloud-environments): ubah apa yang dapat dijangkau thread cloud di jaringan, berikan mereka environment variable dan rahasia jaringan, dan instal alat dengan skrip setup

594* [Otomatisasi pekerjaan dengan routines](/docs/id/routines): jadwal, pemicu, dan manajemen untuk routine, termasuk yang dibuat Claude dari project594* [Otomatisasi pekerjaan dengan routines](/docs/id/routines): jadwal, pemicu, dan manajemen untuk routine, termasuk yang dibuat Claude dari project

595* [Kelola beberapa agen dengan agent view](/docs/id/agent-view): jalankan dan lacak beberapa sesi di mesin Anda sendiri ketika pekerjaan membutuhkan alat atau layanan yang hanya dapat dijangkau mesin Anda595* [Kelola beberapa agen dengan agent view](/docs/id/agent-view): jalankan dan lacak beberapa sesi di mesin Anda sendiri ketika pekerjaan membutuhkan alat atau layanan yang hanya dapat dijangkau mesin Anda

596* [Projects redesigned: from folder to conversation](https://claude.com/blog/projects-redesigned): pengumuman peluncuran, dengan pemikiran di balik membuat project menjadi percakapan dengan Claude596* [Projects redesigned: from folder to conversation](https://claude.com/blog/projects-redesigned): pengumuman peluncuran, dengan pemikiran di balik membuat project menjadi percakapan dengan Claude

Details

31| `claude attach <id\|name>` | Lampirkan ke [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell) di terminal ini. Meneruskan sebagian nama sesi yang sedang berjalan sebagai pengganti ID memerlukan Claude Code v2.1.290 atau lebih baru | `claude attach 7c5dcf5d` |31| `claude attach <id\|name>` | Lampirkan ke [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell) di terminal ini. Meneruskan sebagian nama sesi yang sedang berjalan sebagai pengganti ID memerlukan Claude Code v2.1.290 atau lebih baru | `claude attach 7c5dcf5d` |

32| `claude auto-mode defaults` | Cetak aturan pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) bawaan sebagai JSON. Gunakan `claude auto-mode config` untuk melihat konfigurasi efektif Anda dengan pengaturan yang diterapkan. `--label <prefix>` mencetak hanya aturan yang labelnya dimulai dengan awalan tersebut, cocok tanpa memperhatikan huruf besar-kecil. Memerlukan Claude Code v2.1.208 atau lebih baru | `claude auto-mode defaults --label 'Git Destructive'` |32| `claude auto-mode defaults` | Cetak aturan pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) bawaan sebagai JSON. Gunakan `claude auto-mode config` untuk melihat konfigurasi efektif Anda dengan pengaturan yang diterapkan. `--label <prefix>` mencetak hanya aturan yang labelnya dimulai dengan awalan tersebut, cocok tanpa memperhatikan huruf besar-kecil. Memerlukan Claude Code v2.1.208 atau lebih baru | `claude auto-mode defaults --label 'Git Destructive'` |

33| `claude auto-mode reset` | Pulihkan konfigurasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) default dengan menghapus bagian `autoMode` dari file pengaturan pengguna Anda. Meminta konfirmasi sebelum menulis; lewatkan `-y`/`--yes` untuk melewati prompt. Aturan dari [pengaturan terkelola](/docs/id/server-managed-settings) atau flag `--settings` masih berlaku. Memerlukan Claude Code v2.1.212 atau lebih baru. Lihat [Periksa default dan konfigurasi efektif Anda](/docs/id/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |33| `claude auto-mode reset` | Pulihkan konfigurasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) default dengan menghapus bagian `autoMode` dari file pengaturan pengguna Anda. Meminta konfirmasi sebelum menulis; lewatkan `-y`/`--yes` untuk melewati prompt. Aturan dari [pengaturan terkelola](/docs/id/server-managed-settings) atau flag `--settings` masih berlaku. Memerlukan Claude Code v2.1.212 atau lebih baru. Lihat [Periksa default dan konfigurasi efektif Anda](/docs/id/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |

34| `claude daemon logs` | Ikuti file log [supervisor](/docs/id/agent-view#the-supervisor-process) sesi latar belakang, `~/.claude/daemon.log`, dengan mencetak baris baru saat muncul hingga Anda menekan `Ctrl+C` | `claude daemon logs` |

35| `claude daemon run` | Jalankan [supervisor](/docs/id/agent-view#the-supervisor-process) sesi latar belakang di latar depan terminal ini, dengan mencetak log-nya | `claude daemon run` |

34| `claude daemon status` | Cetak status [supervisor](/docs/id/agent-view#the-supervisor-process) sesi latar belakang, versi, direktori soket, dan jumlah pekerja untuk diagnostik. Keluar dengan 1 jika supervisor tidak berjalan | `claude daemon status` |36| `claude daemon status` | Cetak status [supervisor](/docs/id/agent-view#the-supervisor-process) sesi latar belakang, versi, direktori soket, dan jumlah pekerja untuk diagnostik. Keluar dengan 1 jika supervisor tidak berjalan | `claude daemon status` |

35| `claude daemon stop --any` | Hentikan [supervisor](/docs/id/agent-view#the-supervisor-process) sesi latar belakang dan sesi yang dihosting. Lewatkan `--keep-workers` untuk membiarkan sesi latar belakang tetap berjalan sehingga supervisor berikutnya dapat terhubung kembali ke sesi tersebut. `--any` mengonfirmasi penghentian supervisor sesuai permintaan, yang merupakan default. Gunakan ini untuk pulih dari [supervisor yang tidak responsif](/docs/id/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |37| `claude daemon stop --any` | Hentikan [supervisor](/docs/id/agent-view#the-supervisor-process) sesi latar belakang dan sesi yang dihosting. Lewatkan `--keep-workers` untuk membiarkan sesi latar belakang tetap berjalan sehingga supervisor berikutnya dapat terhubung kembali ke sesi tersebut. `--any` mengonfirmasi penghentian supervisor sesuai permintaan, yang merupakan default. Gunakan ini untuk pulih dari [supervisor yang tidak responsif](/docs/id/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |

36| `claude doctor` | Cetak diagnostik instalasi dan pengaturan read-only dari terminal tanpa memulai sesi, termasuk kesehatan instalasi, kesalahan validasi file pengaturan, dan kelayakan Remote Control. Untuk pemeriksaan pengaturan dalam sesi yang juga dapat menerapkan perbaikan, jalankan [`/doctor`](/docs/id/commands#all-commands) | `claude doctor` |38| `claude doctor` | Cetak diagnostik instalasi dan pengaturan read-only dari terminal tanpa memulai sesi, termasuk kesehatan instalasi, kesalahan validasi file pengaturan, dan kelayakan Remote Control. Untuk pemeriksaan pengaturan dalam sesi yang juga dapat menerapkan perbaikan, jalankan [`/doctor`](/docs/id/commands#all-commands) | `claude doctor` |

Details

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

11</Note>11</Note>

12 12 

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

14 14 

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

16 16 


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

59 Pilih **Cloud** untuk membuat daftar lingkungan Anda. Kemudian pilih **Add cloud environment**, atau arahkan ke lingkungan yang ada dan pilih ikon pengaturan yang muncul di sebelah kanan.59 Pilih **Cloud** untuk membuat daftar lingkungan Anda. Kemudian pilih **Add cloud environment**, atau arahkan ke lingkungan yang ada dan pilih ikon pengaturan yang muncul di sebelah kanan.

60 60 

61 Dialog mencakup nama, tingkat akses jaringan, variabel lingkungan, dan skrip setup. Ketika Anda mengedit lingkungan cloud yang ada pada paket Pro atau Max, dialog juga mencakup [kredensial API](#add-api-credentials).61 Dialog mencakup nama, tingkat akses jaringan, environment variable, dan skrip setup. Ketika Anda mengedit lingkungan cloud yang ada pada paket Pro atau Max, dialog juga mencakup [rahasia jaringan](#add-api-credentials).

62 62 

63 <Frame>63 <Frame>

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


91 91 

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

93 93 

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

95 95 

96<h3 id="add-api-credentials">96<h3 id="add-api-credentials">

97 Tambahkan kredensial API97 Tambahkan rahasia jaringan

98</h3>98</h3>

99 99 

100Kredensial API adalah kunci API atau token yang Anda simpan di lingkungan cloud sehingga Claude dapat memanggil API itu dari sesi apa pun di lingkungan tanpa melihat kunci. Proxy agen Anthropic menambahkan kunci ke permintaan untuk host yang Anda cantumkan, setelah setiap permintaan meninggalkan VM sesi. Kunci tidak pernah mencapai Claude, perintah yang dijalankannya, atau variabel lingkungan sesi.100Rahasia jaringan adalah kunci API atau token yang Anda simpan di lingkungan cloud sehingga Claude dapat memanggil API itu dari sesi apa pun di lingkungan tanpa melihat kunci. Proxy agent Anthropic menambahkan kunci ke permintaan untuk host yang Anda cantumkan, setelah setiap permintaan meninggalkan VM sesi. Kunci tidak pernah mencapai Claude, perintah yang dijalankannya, atau environment variable sesi.

101 101 

102Kredensial API tersedia pada paket Pro dan Max. Mereka tidak tersedia pada paket Team atau Enterprise namun, jadi bagian **API credentials** tidak muncul di dialog lingkungan pada paket tersebut.102Rahasia jaringan tersedia pada paket Pro dan Max. Fitur ini belum tersedia pada paket Team atau Enterprise, jadi bagian **Network secrets** tidak muncul di dialog lingkungan pada paket tersebut.

103 103 

104<h4 id="requirements">104<h4 id="requirements">

105 Persyaratan105 Persyaratan

106</h4>106</h4>

107 107 

108Dua dari ini memutuskan apakah Anda dapat menambahkan kredensial, dan dua memutuskan apakah proxy agen dapat menggunakannya setelah ditambahkan:108Dua dari ini menentukan apakah Anda dapat menambahkan rahasia, dan dua menentukan apakah proxy agent dapat menggunakannya setelah ditambahkan:

109 109 

110* **Peran**: peran admin organisasi di organisasi claude.ai Anda110* **Peran**: peran admin organisasi di organisasi claude.ai Anda

111 * Pada Team dan Enterprise, Owner memegangnya dan Admin tidak111 * Pada Team dan Enterprise, Owner memegangnya dan Admin tidak

112 * Pada Pro dan Max, Anda memegangnya di organisasi Anda sendiri112 * Pada Pro dan Max, Anda memegangnya di organisasi Anda sendiri

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

114* **Jangkauan API**: API menerima koneksi dari internet, karena permintaan meninggalkan dari jaringan Anthropic114* **Jangkauan API**: API menerima koneksi dari internet, karena permintaan meninggalkan dari jaringan Anthropic

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

116 116 

117<h4 id="add-a-credential">117<h4 id="add-a-credential">

118 Tambahkan kredensial118 Tambahkan rahasia

119</h4>119</h4>

120 120 

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

122 122 

123<Steps>123<Steps>

124 <Step title="Buka kredensial API lingkungan">124 <Step title="Buka rahasia jaringan lingkungan">

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

126 </Step>126 </Step>

127 127 

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

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

130 130 

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

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

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

134 134 

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

136 </Step>136 </Step>

137 137 

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

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

140 </Step>140 </Step>

141</Steps>141</Steps>

142 142 

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

144 144 

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

146 Permintaan mana yang mendapatkan kredensial146 Permintaan mana yang mendapatkan rahasia

147</h4>147</h4>

148 148 

149Proxy agen melampirkan kredensial ke permintaan ketika host permintaan cocok dengan salah satu yang Anda cantumkan pada kredensial itu. Sesi dapat menjangkau host tersebut bahkan ketika [tingkat akses jaringan](#access-levels) lingkungan tidak akan mengizinkannya, kecuali [host yang tidak pernah mendapatkan kredensial](#requests-that-never-get-the-credential). Kredensial berlaku di setiap sesi yang berjalan di lingkungan, siapa pun yang memulainya, sampai Anda menghapusnya.149Proxy agent melampirkan rahasia ke permintaan ketika host permintaan cocok dengan salah satu yang Anda cantumkan pada rahasia itu. Sesi dapat menjangkau host tersebut bahkan ketika [tingkat akses jaringan](#access-levels) lingkungan tidak akan mengizinkannya, kecuali [host yang tidak pernah mendapatkan rahasia](#requests-that-never-get-the-credential). Rahasia berlaku di setiap sesi yang berjalan di lingkungan, siapa pun yang memulainya, sampai Anda menghapusnya.

150 150 

151<h4 id="requests-that-never-get-the-credential">151<h4 id="requests-that-never-get-the-credential">

152 Permintaan yang tidak pernah mendapatkan kredensial152 Permintaan yang tidak pernah mendapatkan rahasia

153</h4>153</h4>

154 154 

155Proxy agen tidak pernah melampirkan kredensial yang Anda tambahkan ke permintaan ini:155Proxy agent tidak pernah melampirkan rahasia yang Anda tambahkan ke permintaan ini:

156 156 

157* **GitHub**: [proxy GitHub](#github-proxy) mengautentikasi permintaan ke GitHub sebagai gantinya, jadi Anda tidak memerlukan kredensial API untuk itu157* **GitHub**: [proxy GitHub](#github-proxy) mengautentikasi permintaan ke GitHub sebagai gantinya, jadi Anda tidak memerlukan rahasia jaringan untuk itu

158* **API Anthropic dan registri paket publik**: `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io`, dan `proxy.golang.org`158* **API Anthropic dan registri paket publik**: `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io`, dan `proxy.golang.org`

159* **Permintaan skrip setup**: Claude Code terhubung ke proxy agen ketika diluncurkan, setelah [skrip setup](#setup-scripts) telah berjalan159* **Permintaan skrip setup**: Claude Code terhubung ke proxy agen ketika diluncurkan, setelah [skrip setup](#setup-scripts) telah berjalan

160* **Ekspor telemetri Claude Code**: Claude Code mengirim [ekspor telemetri](/docs/id/monitoring-usage#telemetry-from-cloud-sessions-and-claude-tag) miliknya sendiri daripada melalui perintah yang dijalankannya, dan permintaan itu tidak melewati proxy agen160* **Ekspor telemetri Claude Code**: Claude Code mengirim [ekspor telemetri](/docs/id/monitoring-usage#telemetry-from-cloud-sessions-and-claude-tag) miliknya sendiri daripada melalui perintah yang dijalankannya, dan permintaan itu tidak melewati proxy agen


179 179 

180* Sesi yang sudah berjalan di lingkungan terus bekerja.180* Sesi yang sudah berjalan di lingkungan terus bekerja.

181* Lingkungan menghilang dari pemilih dan dari `/remote-env`, jadi Anda tidak dapat memilihnya untuk sesi baru.181* Lingkungan menghilang dari pemilih dan dari `/remote-env`, jadi Anda tidak dapat memilihnya untuk sesi baru.

182* Kredensial API di lingkungan tetap terlampir di sesinya yang berjalan. Hapus yang tidak lagi Anda inginkan sebelum mengarsipkan.182* Rahasia jaringan di lingkungan tetap terlampir di sesinya yang berjalan. Hapus yang tidak lagi Anda inginkan sebelum mengarsipkan.

183* Tidak ada sesi baru yang dapat dimulai di lingkungan yang diarsipkan, di permukaan apa pun. Jika lingkungan adalah [default CLI](#select-an-environment-from-the-cli) yang disimpan, Claude Code memulai sesi cloud CLI di lingkungan yang di-host Anthropic ketika daftar Anda memiliki satu, dan sebaliknya di lingkungan pertama dalam daftar Anda yang bukan [lingkungan bridge Remote Control](#the-default-environment). Apa pun yang dikonfigurasi dengan lingkungan secara eksplisit, seperti [routine](/docs/id/routines#environments-and-network-access), tidak dapat memulai sesi baru di dalamnya. Arahkan ke lingkungan lain.183* Tidak ada sesi baru yang dapat dimulai di lingkungan yang diarsipkan, di permukaan apa pun. Jika lingkungan adalah [default CLI](#select-an-environment-from-the-cli) yang disimpan, Claude Code memulai sesi cloud CLI di lingkungan yang di-host Anthropic ketika daftar Anda memiliki satu, dan sebaliknya di lingkungan pertama dalam daftar Anda yang bukan [lingkungan bridge Remote Control](#the-default-environment). Apa pun yang dikonfigurasi dengan lingkungan secara eksplisit, seperti [routine](/docs/id/routines#environments-and-network-access), tidak dapat memulai sesi baru di dalamnya. Arahkan ke lingkungan lain.

184 184 

185<h3 id="organization-shared-environments">185<h3 id="organization-shared-environments">


197 197 

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

199 199 

200Sesi setiap anggota di lingkungan bersama membaca variabelnya, jadi jangan sertakan rahasia di dalamnya. [Kredensial API](#add-api-credentials), yang memberikan sesi kunci yang tidak dapat dibacanya, tidak tersedia pada paket Team atau Enterprise namun.200Sesi setiap anggota di lingkungan bersama membaca variabelnya, jadi jangan sertakan rahasia di dalamnya. [Rahasia jaringan](#add-api-credentials), yang memberikan sesi kunci yang tidak dapat dibacanya, belum tersedia pada paket Team atau Enterprise.

201 201 

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

203 Tetapkan lingkungan yang digunakan saluran Claude Tag203 Tetapkan lingkungan yang digunakan saluran Claude Tag


239 239 

240* GitHub, melalui [proxy terpisahnya](#github-proxy)240* GitHub, melalui [proxy terpisahnya](#github-proxy)

241* [Konektor MCP](#network-access) yang Anda aktifkan, yang lalu lintasnya berjalan melalui server Anthropic241* [Konektor MCP](#network-access) yang Anda aktifkan, yang lalu lintasnya berjalan melalui server Anthropic

242* Host yang Anda cantumkan di [kredensial API](#add-api-credentials) lingkungan, kecuali [host yang tidak pernah mendapatkan kredensial](#requests-that-never-get-the-credential)242* Host yang Anda cantumkan di [secret jaringan](#add-api-credentials) lingkungan, kecuali [host yang tidak pernah mendapatkan secret](#requests-that-never-get-the-credential)

243* API Anthropic, untuk permintaan Claude Code sendiri, bahkan di **None**, seperti yang dicatat di bawah [Security and isolation](/docs/id/claude-code-on-the-web#security-and-isolation)243* API Anthropic, untuk permintaan Claude Code sendiri, bahkan di **None**, seperti yang dicatat di bawah [Security and isolation](/docs/id/claude-code-on-the-web#security-and-isolation)

244 244 

245<h3 id="allow-specific-domains">245<h3 id="allow-specific-domains">


254registry.example.com254registry.example.com

255```255```

256 256 

257Sesi di lingkungan ini sekarang dapat menjangkau `api.example.com`, subdomain apa pun dari `internal.example.com`, dan `registry.example.com`, dan tidak ada domain lain melalui jaringan sesi. [Lalu lintas GitHub](#github-proxy), [lalu lintas konektor MCP](#network-access), dan permintaan ke host [kredensial API](#add-api-credentials) lingkungan, selain [host yang tidak pernah mendapatkan kredensial](#requests-that-never-get-the-credential), tidak melewati allowlist ini. `*.` di depan cocok dengan setiap subdomain. Untuk menyimpan [domain Trusted](#default-allowed-domains) juga, centang **Also include default list of common package managers**; biarkan tidak dicentang untuk hanya mengizinkan apa yang Anda cantumkan.257Sesi di lingkungan ini sekarang dapat menjangkau `api.example.com`, subdomain apa pun dari `internal.example.com`, dan `registry.example.com`, dan tidak ada domain lain melalui jaringan sesi. [Lalu lintas GitHub](#github-proxy), [lalu lintas konektor MCP](#network-access), dan permintaan ke host [secret jaringan](#add-api-credentials) lingkungan, selain [host yang tidak pernah mendapatkan secret](#requests-that-never-get-the-credential), tidak melewati allowlist ini. `*.` di depan cocok dengan setiap subdomain. Untuk menyimpan [domain Trusted](#default-allowed-domains) juga, centang **Also include default list of common package managers**; biarkan tidak dicentang untuk hanya mengizinkan apa yang Anda cantumkan.

258 258 

259Jika organisasi Anda menggunakan [artifacts](/docs/id/artifacts#availability), Anda tidak memerlukan `*.frame.claudeusercontent.com` dalam daftar untuk sesi membacanya. Ketika daftar meninggalkan host itu, Claude Code membaca konten artifact melalui koneksi sesi ke Anthropic sebagai gantinya. Pertahankan host dalam allowlist dalam dua situasi:259Jika organisasi Anda menggunakan [artifacts](/docs/id/artifacts#availability), Anda tidak memerlukan `*.frame.claudeusercontent.com` dalam daftar untuk sesi membacanya. Ketika daftar meninggalkan host itu, Claude Code membaca konten artifact melalui koneksi sesi ke Anthropic sebagai gantinya. Pertahankan host dalam allowlist dalam dua situasi:

260 260 


292 Apa yang tersedia di sesi cloud292 Apa yang tersedia di sesi cloud

293</h2>293</h2>

294 294 

295Di lingkungan yang di-host Anthropic, setiap sesi mendapat mesin virtual (VM) segar yang menjalankan Ubuntu 24.04 pada x86\_64, terlepas dari sistem operasi dan arsitektur CPU Anda sendiri, dengan repositori Anda yang dikloning dan toolchain umum yang sudah diinstal sebelumnya. Ketika dependensi menyediakan binari yang sudah dikompilasi, seperti gem Ruby dengan ekstensi asli atau wheel Python yang sudah dibangun, gunakan build Linux x86\_64 untuk mencocokkan VM. Bagian ini mencakup default yang di-host Anthropic, alat GitHub bawaan, cara [menjalankan tes dan layanan](#run-tests-start-services-and-add-packages), [batas sumber daya](#resource-limits) yang diterima setiap VM, dan [batas waktu](#time-limits) pada pekerjaan yang berjalan lama.295Di lingkungan yang di-host Anthropic, setiap sesi mendapat mesin virtual (VM) segar yang menjalankan Ubuntu 24.04 pada x86\_64, terlepas dari sistem operasi dan arsitektur CPU Anda sendiri, dengan repositori Anda yang dikloning dan toolchain umum yang sudah diinstal sebelumnya. Ketika dependensi menyediakan binari yang sudah dikompilasi, seperti gem Ruby dengan ekstensi asli atau wheel Python yang sudah dibangun, gunakan build Linux x86\_64 untuk mencocokkan VM. Bagian ini mencakup default yang di-host Anthropic, tool GitHub bawaan, cara [menjalankan tes dan layanan](#run-tests-start-services-and-add-packages), [batas sumber daya](#resource-limits) yang diterima setiap VM, dan [batas waktu](#time-limits) pada pekerjaan yang berjalan lama.

296 296 

297<Note>297<Note>

298 Sesi yang organisasi Anda arahkan ke [lingkungan yang di-host sendiri](/docs/id/self-hosted-environments) berjalan di runner Anda sendiri sebagai gantinya, dengan alat yang disediakan gambar runner Anda.298 Sesi yang organisasi Anda arahkan ke [lingkungan yang di-host sendiri](/docs/id/self-hosted-environments) berjalan di runner Anda sendiri sebagai gantinya, dengan alat yang disediakan gambar runner Anda.


302 Apa yang terbawa dari setup Anda302 Apa yang terbawa dari setup Anda

303</h3>303</h3>

304 304 

305Cloud sessions start from a fresh clone of your repository. Apa pun yang Anda komitkan ke repo tersedia. Apa pun yang Anda instal atau konfigurasi hanya di mesin Anda sendiri tidak tersedia di sesi. Kebijakan organisasi Anda tiba secara terpisah melalui [pengaturan yang dikelola server](/docs/id/server-managed-settings).305Sesi cloud dimulai dari klon segar repositori Anda. Apa pun yang Anda commit ke repo tersedia. Apa pun yang Anda instal atau konfigurasi hanya di mesin Anda sendiri tidak tersedia di sesi. Kebijakan organisasi Anda tiba secara terpisah melalui [pengaturan terkelola server](/docs/id/server-managed-settings).

306 306 

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

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


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

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

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

315| [Pengaturan yang dikelola server](/docs/id/server-managed-settings) organisasi Anda | Ya, kecuali dalam sesi [Claude Tag](https://claude.com/docs/claude-tag/overview) | Diambil dari server Anthropic ketika sesi dimulai. Lihat [Surface coverage](/docs/id/model-config#surface-coverage) untuk cara `availableModels` diterapkan di sesi cloud. Pengaturan yang digunakan di perangkat Anda melalui MDM atau file pengaturan yang dikelola tidak berlaku, karena sesi berjalan di VM yang dikelola Anthropic; di [lingkungan yang di-host sendiri](/docs/id/self-hosted-environments), sesi juga membaca file pengaturan yang dikelola dalam gambar runner, per [cara Claude Code menggabungkan sumber yang dikelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources) |315| [Pengaturan terkelola server](/docs/id/server-managed-settings) organisasi Anda | Ya, kecuali dalam sesi [Claude Tag](https://claude.com/docs/claude-tag/overview) | Diambil dari server Anthropic ketika sesi dimulai. Lihat [Surface coverage](/docs/id/model-config#surface-coverage) untuk cara `availableModels` diterapkan di sesi cloud. Pengaturan yang digunakan di perangkat Anda melalui MDM atau file pengaturan terkelola tidak berlaku, karena sesi berjalan di VM yang dikelola Anthropic; di [lingkungan yang di-host sendiri](/docs/id/self-hosted-environments), sesi juga membaca file pengaturan terkelola dalam gambar runner, per [cara Claude Code menggabungkan sumber terkelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources) |

316| `~/.claude/CLAUDE.md` pengguna Anda | Tidak | Hidup di mesin Anda, bukan di repo |316| `~/.claude/CLAUDE.md` pengguna Anda | Tidak | Hidup di mesin Anda, bukan di repo. Lihat [Tambahkan preferensi pribadi tanpa melakukan commit ke repo](#add-personal-preferences-without-committing-to-the-repo) |

317| `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` pengguna Anda | Tidak | Hidup di mesin Anda, bukan di repo. Komitkan mereka ke direktori `.claude/` repo sebagai gantinya. Sesi cloud secara otomatis memuat skill yang Anda aktifkan di claude.ai |317| `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` pengguna Anda | Tidak | Hidup di mesin Anda, bukan di repo. Commit mereka ke direktori `.claude/` repo sebagai gantinya. Sesi cloud secara otomatis memuat skill yang Anda aktifkan di claude.ai |

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

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

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

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

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

323 323 

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

325 325 

326Siapa pun yang menggunakan lingkungan dapat membaca variabel lingkungan dan skrip setupnya. Catatan dialog di bawah **Environment variables** mengatakan demikian dan memperingatkan terhadap penambahan rahasia di sana. Pada paket Pro dan Max, simpan kunci yang dapat dilampirkan proxy agen sebagai [kredensial API](#add-api-credentials) sebagai gantinya.326Siapa pun yang menggunakan lingkungan dapat membaca environment variable dan skrip setupnya. Catatan dialog di bawah **Environment variables** menyatakan hal ini dan memperingatkan agar tidak menaruh rahasia di sana. Pada paket Pro dan Max, simpan kunci yang dapat dilampirkan proxy agent sebagai [rahasia jaringan](#add-api-credentials) sebagai gantinya.

327 

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

329 Tambahkan preferensi pribadi tanpa melakukan commit ke repo

330</h4>

331 

332Di lingkungan yang di-host Anthropic, tambahkan [skrip setup](#setup-scripts) yang menulis `~/.claude/CLAUDE.md` untuk preferensi yang tidak ingin Anda taruh di repositori bersama. Claude Code memuat file tersebut sebagai [instruksi pengguna](/docs/id/memory#choose-where-to-put-claude-md-files) dalam sesi. Contoh ini menetapkan preferensi pesan commit:

333 

334```bash theme={null}

335#!/bin/bash

336mkdir -p ~/.claude

337cat > ~/.claude/CLAUDE.md <<'EOF'

338Use conventional commit messages.

339EOF

340```

341 

342Tempatkan skrip di salah satu lingkungan Anda sendiri, bukan di [lingkungan bersama](#organization-shared-environments).

343 

344Jalankan `/context` di sesi cloud Anda berikutnya dan pastikan `/root/.claude/CLAUDE.md` muncul di bawah **Memory files**.

327 345 

328<h3 id="installed-tools">346<h3 id="installed-tools">

329 Alat yang diinstal347 Alat yang diinstal


354Toolchain di luar daftar ini, seperti .NET SDK, tidak diinstal sebelumnya bahkan ketika registri paket mereka ada di [allowlist default](#default-allowed-domains). Instal mereka dengan [skrip setup](#setup-scripts).372Toolchain di luar daftar ini, seperti .NET SDK, tidak diinstal sebelumnya bahkan ketika registri paket mereka ada di [allowlist default](#default-allowed-domains). Instal mereka dengan [skrip setup](#setup-scripts).

355 373 

356<h3 id="work-with-github-issues-and-pull-requests">374<h3 id="work-with-github-issues-and-pull-requests">

357 Bekerja dengan masalah GitHub dan permintaan tarik375 Bekerja dengan issue GitHub dan pull request

358</h3>376</h3>

359 377 

360Sesi cloud mencakup alat GitHub bawaan yang memungkinkan Claude membaca masalah, mencantumkan permintaan tarik, mengambil diff, dan memposting komentar tanpa setup apa pun. Alat ini mengautentikasi melalui [proxy GitHub](#github-proxy) menggunakan metode apa pun yang Anda konfigurasi di bawah [opsi autentikasi GitHub](/docs/id/claude-code-on-the-web#github-authentication-options), jadi token Anda tidak pernah memasuki kontainer.378Sesi cloud mencakup tool GitHub bawaan yang memungkinkan Claude membaca issue, mencantumkan pull request, mengambil diff, dan memposting komentar tanpa setup apa pun. Tool ini mengautentikasi melalui [proxy GitHub](#github-proxy) menggunakan metode apa pun yang Anda konfigurasi di bawah [opsi autentikasi GitHub](/docs/id/claude-code-on-the-web#github-authentication-options), jadi token Anda tidak pernah memasuki kontainer.

361 379 

362Anda dapat menetapkan `GH_TOKEN` atau `GITHUB_TOKEN` sendiri di [pengaturan lingkungan](#set-environment-variables), atau biarkan keduanya tidak ditetapkan dan biarkan [proxy GitHub](#github-proxy) mengautentikasi untuk Anda:380Anda dapat menetapkan `GH_TOKEN` atau `GITHUB_TOKEN` sendiri di [pengaturan lingkungan](#set-environment-variables), atau biarkan keduanya tidak ditetapkan dan biarkan [proxy GitHub](#github-proxy) mengautentikasi untuk Anda:

363 381 

364* Jika Anda menetapkan token, itu melewati ke kontainer tanpa perubahan, jadi skrip Anda dan [`gh` CLI](https://cli.github.com) GitHub menggunakannya secara langsung.382* Jika Anda menetapkan token, itu melewati ke kontainer tanpa perubahan, jadi skrip Anda dan [`gh` CLI](https://cli.github.com) GitHub menggunakannya secara langsung.

365* Jika Anda tidak menetapkan keduanya dan [proxy GitHub](#github-proxy) menangani autentikasi untuk sesi Anda, kedua variabel membaca sebagai string placeholder `proxy-injected` dalam perintah yang dijalankan Claude, dan proxy mengganti kredensial nyata Anda pada permintaan GitHub keluar. `gh` bekerja tanpa token Anda sendiri, tetapi skrip yang membaca `GITHUB_TOKEN` secara langsung mendapat placeholder, bukan token yang dapat digunakan.383* Jika Anda tidak menetapkan keduanya dan [proxy GitHub](#github-proxy) menangani autentikasi untuk sesi Anda, kedua variabel membaca sebagai string placeholder `proxy-injected` dalam perintah yang dijalankan Claude, dan proxy mengganti kredensial nyata Anda pada permintaan GitHub keluar. `gh` bekerja tanpa token Anda sendiri, tetapi skrip yang membaca `GITHUB_TOKEN` secara langsung mendapat placeholder, bukan token yang dapat digunakan.

366 384 

367Token yang Anda tetapkan adalah variabel lingkungan biasa, jadi siapa pun yang menggunakan lingkungan dapat membacanya; jalur proxy menjaga kredensial di luar konfigurasi lingkungan dan VM sesi.385Token yang Anda tetapkan adalah environment variable biasa, jadi siapa pun yang menggunakan lingkungan dapat membacanya; jalur proxy menjaga kredensial di luar konfigurasi lingkungan dan VM sesi.

368 386 

369Untuk memeriksa kasus mana yang berlaku untuk sesi Anda, minta Claude menjalankan `echo $GH_TOKEN`.387Untuk memeriksa kasus mana yang berlaku untuk sesi Anda, minta Claude menjalankan `echo $GH_TOKEN`.

370 388 

371[`gh` CLI](https://cli.github.com) GitHub sudah diinstal sebelumnya. Jika Anda memerlukan perintah `gh` yang tidak dicakup alat bawaan, seperti `gh release` atau `gh workflow run`, minta Claude menjalankannya. `gh` membaca `GH_TOKEN` secara otomatis, jadi Anda tidak perlu menjalankan `gh auth login`.389[`gh` CLI](https://cli.github.com) GitHub sudah diinstal sebelumnya. Jika Anda memerlukan perintah `gh` yang tidak dicakup tool bawaan, seperti `gh release` atau `gh workflow run`, minta Claude menjalankannya. `gh` membaca `GH_TOKEN` secara otomatis, jadi Anda tidak perlu menjalankan `gh auth login`.

372 390 

373<h3 id="link-output-back-to-the-session">391<h3 id="link-output-back-to-the-session">

374 Hubungkan output kembali ke sesi392 Hubungkan output kembali ke sesi

375</h3>393</h3>

376 394 

377Setiap sesi cloud memiliki URL transkrip di claude.ai, dan sesi dapat membaca ID-nya sendiri dari variabel lingkungan `CLAUDE_CODE_REMOTE_SESSION_ID`. Gunakan ini untuk menempatkan tautan yang dapat dilacak di badan PR, pesan komitmen, posting Slack, atau laporan yang dihasilkan sehingga reviewer dapat membuka jalankan yang menghasilkannya.395Setiap sesi cloud memiliki URL transkrip di claude.ai, dan sesi dapat membaca ID-nya sendiri dari environment variable `CLAUDE_CODE_REMOTE_SESSION_ID`. Gunakan ini untuk menempatkan tautan yang dapat dilacak di badan PR, pesan commit, posting Slack, atau laporan yang dihasilkan sehingga reviewer dapat membuka run yang menghasilkannya.

378 396 

379Komitmen yang dibuat Claude di sesi cloud mencakup trailer git `Claude-Session: <url>`, dan badan PR mencakup URL sesi di barisnya sendiri. Untuk menghilangkan trailer dan tautan badan PR, atur [`attribution.sessionUrl`](/docs/id/settings-reference#attribution-sessionurl) ke `false`.397Commit yang dibuat Claude di sesi cloud mencakup trailer git `Claude-Session: <url>`, dan badan PR mencakup URL sesi di barisnya sendiri. Untuk menghilangkan trailer dan tautan badan PR, atur [`attribution.sessionUrl`](/docs/id/settings-reference#attribution-sessionurl) ke `false`.

380 398 

381Untuk menyertakan tautan sesi dalam sesuatu selain komitmen atau PR, seperti pesan Slack yang diposting Claude atau file laporan yang ditulisnya, minta Claude menjalankan perintah berikut dan gunakan outputnya. Perintah mengonversi awalan `cse_` dalam nilai variabel lingkungan ke awalan `session_` yang diharapkan URL transkrip:399Untuk menyertakan tautan sesi dalam sesuatu selain commit atau PR, seperti pesan Slack yang diposting Claude atau file laporan yang ditulisnya, minta Claude menjalankan perintah berikut dan gunakan outputnya. Perintah mengonversi awalan `cse_` dalam nilai environment variable ke awalan `session_` yang diharapkan URL transkrip:

382 400 

383```bash theme={null}401```bash theme={null}

384echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID/#cse_/session_}"402echo "https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID/#cse_/session_}"


438 456 

439Di lingkungan yang di-host Anthropic, batas waktu ini berlaku untuk pekerjaan yang berjalan lama di sesi cloud, seperti build, install, atau test run. Setiap entri menautkan ke bagian yang mendefinisikan batas.457Di lingkungan yang di-host Anthropic, batas waktu ini berlaku untuk pekerjaan yang berjalan lama di sesi cloud, seperti build, install, atau test run. Setiap entri menautkan ke bagian yang mendefinisikan batas.

440 458 

441* **Perintah yang dijalankan Claude**: lingkungan cloud tidak menetapkan timeout perintahnya sendiri, jadi default alat Bash berlaku. Claude menunggu 2 menit untuk perintah secara default dan dapat meminta hingga 10 menit.459* **Perintah yang dijalankan Claude**: lingkungan cloud tidak menetapkan timeout perintahnya sendiri, jadi default tool Bash berlaku. Claude menunggu 2 menit untuk perintah latar depan secara default dan dapat meminta hingga 10 menit.

442 460 

443 Ketika perintah mencapai [timeout](/docs/id/tools-reference#timeout-and-output-limits)-nya, Claude Code [memindahkannya ke latar belakang](/docs/id/tools-reference#foreground-commands-that-move-to-the-background) alih-alih menghentikannya, kecuali perintah dimulai dengan `sleep`. Perintah yang dipindahkan dengan cara ini dapat terus berjalan selama 30 menit lagi sebelum Claude Code menghentikannya di [batas waktu latar belakangnya](/docs/id/tools-reference#time-limit-for-background-commands). Menetapkan `BASH_DEFAULT_TIMEOUT_MS` di atas `1800000` milidetik memanjangkan batas itu serta default latar depan.461 Ketika perintah mencapai [timeout](/docs/id/tools-reference#timeout-and-output-limits)-nya, Claude Code [memindahkannya ke latar belakang](/docs/id/tools-reference#foreground-commands-that-move-to-the-background) alih-alih menghentikannya, kecuali perintah dimulai dengan `sleep`. Perintah yang dipindahkan dengan cara ini dapat terus berjalan selama 30 menit lagi sebelum Claude Code menghentikannya di [batas waktu latar belakangnya](/docs/id/tools-reference#time-limit-for-background-commands). Menetapkan `BASH_DEFAULT_TIMEOUT_MS` di atas `1800000` milidetik memanjangkan batas itu serta default latar depan.

444* **Hook SessionStart**: Claude Code membatalkan hook `command` setelah 600 detik kecuali Anda menetapkan [`timeout`](/docs/id/hooks#common-fields), dalam detik, pada entri hook. Claude Code tidak memberlakukan timeout pada hook yang Anda jalankan dengan [`async: true`](/docs/id/hooks#run-hooks-in-the-background).462* **Hook SessionStart**: Claude Code membatalkan hook `command` setelah 600 detik kecuali Anda menetapkan [`timeout`](/docs/id/hooks#common-fields), dalam detik, pada entri hook. Claude Code tidak memberlakukan timeout pada hook yang Anda jalankan dengan [`async: true`](/docs/id/hooks#run-hooks-in-the-background).

445* **Skrip setup**: skrip yang memakan waktu lebih lama dari kira-kira lima menit tidak di-cache. [Script requirements](#script-requirements) mencakup cara tetap di bawah itu.463* **Skrip setup**: skrip yang memakan waktu lebih lama dari kira-kira lima menit tidak di-cache. [Script requirements](#script-requirements) mencakup cara tetap di bawah itu.

446* **Sesi idle**: setelah beberapa menit tanpa aktivitas, VM sesi sesi dijeda dengan file-filenya disimpan, dan VM yang dijeda dapat kemudian diambil kembali. [Set environment variables](#set-environment-variables) menjelaskan apa yang diambil sesi dalam setiap kasus, dan [Environment expired](/docs/id/claude-code-on-the-web#environment-expired) mencakup cara membuka kembali sesi yang VM-nya diambil kembali.464* **Sesi idle**: setelah beberapa menit tanpa aktivitas, VM sesi dijeda dengan file-filenya disimpan, dan VM yang dijeda dapat kemudian diambil kembali. [Set environment variables](#set-environment-variables) menjelaskan apa yang diambil sesi dalam setiap kasus, dan [Environment expired](/docs/id/claude-code-on-the-web#environment-expired) mencakup cara membuka kembali sesi yang VM-nya diambil kembali.

447 465 

448Untuk menaikkan timeout perintah untuk sesi lingkungan, tambahkan [`BASH_DEFAULT_TIMEOUT_MS` dan `BASH_MAX_TIMEOUT_MS`](/docs/id/env-vars#variables) ke [variabel lingkungannya](#set-environment-variables). Keduanya mengambil milidetik. Misalnya, `BASH_DEFAULT_TIMEOUT_MS=600000` membuat 10 menit menjadi default.466Untuk menaikkan timeout perintah untuk sesi lingkungan, tambahkan [`BASH_DEFAULT_TIMEOUT_MS` dan `BASH_MAX_TIMEOUT_MS`](/docs/id/env-vars#variables) ke [environment variable-nya](#set-environment-variables). Keduanya mengambil milidetik. Misalnya, `BASH_DEFAULT_TIMEOUT_MS=600000` membuat 10 menit menjadi default.

449 467 

450<h2 id="setup-scripts">468<h2 id="setup-scripts">

451 Skrip setup469 Skrip setup

Details

1586 1586 

1587Sesi ini menjelaskan alur kerja yang realistis dengan jumlah token yang representatif:1587Sesi ini menjelaskan alur kerja yang realistis dengan jumlah token yang representatif:

1588 1588 

1589* **Sebelum Anda mengetik apa pun**: CLAUDE.md, memori otomatis, nama alat MCP, dan deskripsi skill semuanya dimuat ke dalam konteks. [File AGENTS.md](/docs/id/memory#agents-md) juga dapat dimuat, secara mandiri atau bersama CLAUDE.md. Pengaturan Anda sendiri mungkin menambahkan lebih banyak di sini, seperti [gaya output](/docs/id/output-styles) atau teks dari [`--append-system-prompt`](/docs/id/cli-reference).1589* **Sebelum Anda mengetik apa pun**: CLAUDE.md, auto memory, nama tool MCP, dan deskripsi skill semuanya dimuat ke dalam konteks. [File AGENTS.md](/docs/id/memory#agents-md) dapat dimuat sebagai pengganti CLAUDE.md. Pengaturan Anda sendiri mungkin menambahkan lebih banyak di sini, seperti [gaya output](/docs/id/output-styles) atau teks dari [`--append-system-prompt`](/docs/id/cli-reference).

1590* **Saat Claude bekerja**: setiap pembacaan file menambah konteks, [aturan dengan cakupan jalur](/docs/id/memory#path-specific-rules) dimuat secara otomatis bersama file yang cocok, dan [hook PostToolUse](/docs/id/hooks-guide) dijalankan setelah setiap pengeditan.1590* **Saat Claude bekerja**: setiap pembacaan file menambah konteks, [aturan dengan cakupan jalur](/docs/id/memory#path-specific-rules) dimuat secara otomatis bersama file yang cocok, dan [hook PostToolUse](/docs/id/hooks-guide) dijalankan setelah setiap pengeditan.

1591* **Prompt lanjutan**: [subagent](/docs/id/sub-agents) menangani penelitian dalam jendela konteks terpisahnya sendiri, sehingga pembacaan file besar tetap berada di luar milik Anda. Hanya ringkasan dan trailer metadata kecil yang kembali.1591* **Prompt lanjutan**: [subagent](/docs/id/sub-agents) menangani penelitian dalam jendela konteks terpisahnya sendiri, sehingga pembacaan file besar tetap berada di luar milik Anda. Hanya ringkasan dan trailer metadata kecil yang kembali.

1592* **Di akhir dari panduan**: Anda menjalankan `/compact`, yang menggantikan percakapan dengan ringkasan terstruktur. Sebagian besar konten startup dimuat ulang secara otomatis; tabel di bawah menunjukkan apa yang terjadi pada setiap mekanisme.1592* **Di akhir dari panduan**: Anda menjalankan `/compact`, yang menggantikan percakapan dengan ringkasan terstruktur. Sebagian besar konten startup dimuat ulang secara otomatis; tabel di bawah menunjukkan apa yang terjadi pada setiap mekanisme.

costs.md +1 −1

Details

394* **Gunakan plan mode untuk tugas yang kompleks**: Tekan Shift+Tab untuk memasuki [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) sebelum implementasi. Claude menjelajahi basis kode dan mengusulkan pendekatan untuk persetujuan Anda, mencegah pekerjaan ulang yang mahal ketika arah awal salah.394* **Gunakan plan mode untuk tugas yang kompleks**: Tekan Shift+Tab untuk memasuki [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) sebelum implementasi. Claude menjelajahi basis kode dan mengusulkan pendekatan untuk persetujuan Anda, mencegah pekerjaan ulang yang mahal ketika arah awal salah.

395* **Koreksi kursus lebih awal**: Jika Claude mulai menuju arah yang salah, tekan Escape untuk berhenti segera. Gunakan `/rewind` atau tekan dua kali Escape untuk mengembalikan percakapan dan kode ke checkpoint sebelumnya.395* **Koreksi kursus lebih awal**: Jika Claude mulai menuju arah yang salah, tekan Escape untuk berhenti segera. Gunakan `/rewind` atau tekan dua kali Escape untuk mengembalikan percakapan dan kode ke checkpoint sebelumnya.

396* **Berikan target verifikasi**: Sertakan kasus uji, tempel tangkapan layar, atau tentukan output yang diharapkan dalam prompt Anda. Ketika Claude dapat memverifikasi pekerjaan sendiri, ia menangkap masalah sebelum Anda perlu meminta perbaikan.396* **Berikan target verifikasi**: Sertakan kasus uji, tempel tangkapan layar, atau tentukan output yang diharapkan dalam prompt Anda. Ketika Claude dapat memverifikasi pekerjaan sendiri, ia menangkap masalah sebelum Anda perlu meminta perbaikan.

397* **Uji secara bertahap**: Tulis satu file, uji, kemudian lanjutkan. Ini menangkap masalah lebih awal ketika murah untuk diperbaiki.397* **Uji secara bertahap**: Tulis satu file, uji, kemudian lanjutkan. Ini menangkap masalah lebih awal.

398 398 

399<h2 id="background-token-usage">399<h2 id="background-token-usage">

400 Penggunaan token latar belakang400 Penggunaan token latar belakang

desktop.md +1 −1

Details

1092Untuk melihat versi aplikasi desktop yang Anda jalankan:1092Untuk melihat versi aplikasi desktop yang Anda jalankan:

1093 1093 

1094* **macOS**: klik **Claude** di menu bar, kemudian **About Claude**1094* **macOS**: klik **Claude** di menu bar, kemudian **About Claude**

1095* **Windows**: klik **Help**, kemudian **About**1095* **Windows**: klik **Help**, kemudian **About Claude**

1096 1096 

1097Klik nomor versi untuk menyalinnya ke clipboard Anda.1097Klik nomor versi untuk menyalinnya ke clipboard Anda.

1098 1098 

Details

92* Simpan tangkapan layar dengan **Cmd+S** atau perekaman layar dengan **Cmd+R**, menggunakan tombol tangkap pane atau pintasan keyboard; file disimpan ke Desktop Anda92* Simpan tangkapan layar dengan **Cmd+S** atau perekaman layar dengan **Cmd+R**, menggunakan tombol tangkap pane atau pintasan keyboard; file disimpan ke Desktop Anda

93* Hentikan streaming perangkat tanpa mematikannya dengan mengklik **Detach simulator**, yang mengembalikan pane ke status **Attach simulator**93* Hentikan streaming perangkat tanpa mematikannya dengan mengklik **Detach simulator**, yang mengembalikan pane ke status **Attach simulator**

94 94 

95Untuk menyesuaikan stream video dari simulator, buka menu **Display** pada pane. Kurangi **Frame rate** atau **Resolution** jika pane membebani Mac Anda. Kedua pengaturan ini mengubah cara pane menampilkan perangkat, bukan cara aplikasi berjalan.95Jika pane menampilkan menu **Display**, gunakan menu tersebut untuk menyesuaikan stream video dari simulator. Kurangi **Frame rate** atau **Resolution** jika pane membebani Mac Anda. Kedua pengaturan ini mengubah cara pane menampilkan perangkat, bukan cara aplikasi berjalan.

96 96 

97Anda dan Claude mengendalikan perangkat yang sama, jadi ketukan Anda mengubah status aplikasi yang Claude lihat. Untuk membuat Claude memeriksa layar tertentu, navigasikan ke sana dengan mengetuk, lalu minta. Sementara Claude mengendalikan perangkat, pane menampilkan lencana **Claude is using this device** di atas layar; tahan mengetuk sampai lencana hilang, sehingga hasilnya mencerminkan aplikasi daripada input Anda.97Anda dan Claude mengendalikan perangkat yang sama, jadi ketukan Anda mengubah status aplikasi yang Claude lihat. Untuk membuat Claude memeriksa layar tertentu, navigasikan ke sana dengan mengetuk, lalu minta. Sementara Claude mengendalikan perangkat, pane menampilkan lencana **Claude is using this device** di atas layar; tahan mengetuk sampai lencana hilang, sehingga hasilnya mencerminkan aplikasi daripada input Anda.

98 98 

env-vars.md +1 −0

Details

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

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

356| `CLAUDE_CODE_PLUGIN_DIRS` | Direktori plugin yang akan dimuat untuk sesi, masing-masing dimuat dengan cara yang sama seperti flag [`--plugin-dir`](/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 lebih baru. Lihat [Memuat plugin untuk satu sesi](/docs/id/plugins/create#load-a-directory-or-archive-for-one-session) |356| `CLAUDE_CODE_PLUGIN_DIRS` | Direktori plugin yang akan dimuat untuk sesi, masing-masing dimuat dengan cara yang sama seperti flag [`--plugin-dir`](/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 lebih baru. Lihat [Memuat plugin untuk satu sesi](/docs/id/plugins/create#load-a-directory-or-archive-for-one-session) |

357| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Mengontrol apakah Claude Code memuat ulang [mod](/docs/id/plugins/mods/overview) ketika file mod berubah. Pemuatan ulang berlaku untuk mod yang Anda muat dari direktori dengan `--plugin-dir`, dan aktif secara default di sesi interaktif. Atur ke `1` untuk mengaktifkannya juga di sesi non-interaktif, atau `0` untuk mematikannya di setiap sesi. Memerlukan Claude Code v2.1.287 atau lebih baru. Lihat [pengaturan dan environment variable mod](/docs/id/plugins/mods/reference#settings-and-environment-variables) |

357| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout dalam milidetik untuk meng-clone atau menyegarkan marketplace plugin (default: 120000). Naikkan nilai ini untuk repositori besar atau koneksi jaringan lambat. Lihat [Git clone timed out](/docs/id/plugins/troubleshooting#git-clone-timed-out-after-120s) |358| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout dalam milidetik untuk meng-clone atau menyegarkan marketplace plugin (default: 120000). Naikkan nilai ini untuk repositori besar atau koneksi jaringan lambat. Lihat [Git clone timed out](/docs/id/plugins/troubleshooting#git-clone-timed-out-after-120s) |

358| `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 lingkungan offline atau airgapped di mana clone ulang akan gagal dengan cara yang sama. Lihat [Pembaruan marketplace gagal di lingkungan offline](/docs/id/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |359| `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 lingkungan offline atau airgapped di mana clone ulang akan gagal dengan cara yang sama. Lihat [Pembaruan marketplace gagal di lingkungan offline](/docs/id/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |

359| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Atur ke `1` untuk meng-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 lingkungan apa pun tanpa kunci SSH yang dikonfigurasi untuk `github.com` |360| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Atur ke `1` untuk meng-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 lingkungan apa pun tanpa kunci SSH yang dikonfigurasi untuk `github.com` |

errors.md +3 −4

Details

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

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

199| `Couldn't verify your organization's policy for cloud sessions` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |199| `Couldn't verify your organization's policy for cloud sessions` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |

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

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

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

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


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

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

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

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

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

391 * Ketika Anda masuk dengan langganan claude.ai, ini mencakup 429 throttles yang tidak membawa header kuota paket Anda. Sebelum v2.1.199, Claude Code hanya mencoba ulang throttles tersebut untuk kunci API dan Enterprise sign-ins.393 * Ketika Anda masuk dengan langganan claude.ai, ini mencakup 429 throttles yang tidak membawa header kuota paket Anda. Sebelum v2.1.199, Claude Code hanya mencoba ulang throttles tersebut untuk kunci API dan Enterprise sign-ins.

392* Permintaan ditolak karena input plus `max_tokens` melebihi context limit. Mengirimnya kembali tanpa perubahan akan gagal dengan cara yang sama, jadi Claude Code mencoba ulang dengan `max_tokens` yang dikurangi, dan berhenti mencoba ulang dan melakukan compact sebagai gantinya dalam dua kasus:394* Permintaan ditolak karena input plus `max_tokens` melebihi context limit. Mengirimnya kembali tanpa perubahan akan gagal dengan cara yang sama, jadi Claude Code mencoba ulang dengan `max_tokens` yang dikurangi, dan berhenti mencoba ulang dan melakukan compact sebagai gantinya dalam dua kasus:


405* [Amazon Bedrock streaming response dengan unexpected content-type](#bedrock-streaming-response-has-an-unexpected-content-type), karena gateway atau proxy yang menulis ulang respons akan menulis ulang retry dengan cara yang sama. Memerlukan Claude Code v2.1.208 atau lebih baru.407* [Amazon Bedrock streaming response dengan unexpected content-type](#bedrock-streaming-response-has-an-unexpected-content-type), karena gateway atau proxy yang menulis ulang respons akan menulis ulang retry dengan cara yang sama. Memerlukan Claude Code v2.1.208 atau lebih baru.

406* Non-streaming retry dari failed streaming request yang mendapat success status tetapi [no Claude API message in the body](#api-returned-an-empty-or-malformed-response). Claude Code mengakhiri giliran dengan kesalahan itu.408* Non-streaming retry dari failed streaming request yang mendapat success status tetapi [no Claude API message in the body](#api-returned-an-empty-or-malformed-response). Claude Code mengakhiri giliran dengan kesalahan itu.

407* Permintaan yang policy check organisasi Anda tolak, yang muncul sebagai baris `API Error:` yang membawa pesan penolakan. Administrator organisasi Anda menyiapkan check dengan [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), fitur Claude Enterprise, dan pesan berakhir dengan instruksi yang mereka konfigurasi, atau secara default memberi tahu Anda untuk menghubungi mereka. Claude Code tidak mengirim kembali permintaan yang ditolak ke model yang sama atau ke [fallback model](/docs/id/model-config#fallback-model-chains), karena penolakan adalah tentang konten permintaan daripada model. Sebelum v2.1.239, Claude Code dapat mengirim kembali permintaan yang ditolak, tanpa streaming atau pada fallback model yang dikonfigurasi, sebelum menampilkan penolakan kepada Anda.409* Permintaan yang policy check organisasi Anda tolak, yang muncul sebagai baris `API Error:` yang membawa pesan penolakan. Administrator organisasi Anda menyiapkan check dengan [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), fitur Claude Enterprise, dan pesan berakhir dengan instruksi yang mereka konfigurasi, atau secara default memberi tahu Anda untuk menghubungi mereka. Claude Code tidak mengirim kembali permintaan yang ditolak ke model yang sama atau ke [fallback model](/docs/id/model-config#fallback-model-chains), karena penolakan adalah tentang konten permintaan daripada model. Sebelum v2.1.239, Claude Code dapat mengirim kembali permintaan yang ditolak, tanpa streaming atau pada fallback model yang dikonfigurasi, sebelum menampilkan penolakan kepada Anda.

408* Respons yang diblokir oleh filter konten output API. Claude Code langsung menampilkan [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) dan tidak mencoba ulang atau mengirim kembali permintaan tersebut.

409 410 

410<h3 id="what-you-see-while-claude-code-retries-or-waits">411<h3 id="what-you-see-while-claude-code-retries-or-waits">

411 Apa yang Anda lihat saat Claude Code mencoba ulang atau menunggu412 Apa yang Anda lihat saat Claude Code mencoba ulang atau menunggu


2299 2300 

2300**Yang harus dilakukan:**2301**Yang harus dilakukan:**

2301 2302 

2302* Ubah ukuran gambar sebelum menempel. API menerima gambar hingga 8000 piksel di tepi terpanjang untuk satu gambar, atau 2000 piksel ketika banyak gambar berada dalam konteks.2303* Ubah ukuran gambar sebelum menempel. API menerima gambar hingga 8000 piksel di tepi terpanjang untuk satu gambar, atau 3000 piksel ketika lebih dari 20 gambar berada dalam konteks.

2303* Ambil tangkapan layar lebih ketat dari wilayah yang relevan bukan layar penuh2304* Ambil tangkapan layar lebih ketat dari wilayah yang relevan bukan layar penuh

2304 2305 

2305<h3 id="unable-to-resize-image">2306<h3 id="unable-to-resize-image">


2905API Error: Output blocked by content filtering policy2906API Error: Output blocked by content filtering policy

2906```2907```

2907 2908 

2908Claude Code menampilkan kesalahan segera setelah pemblokiran tiba dan mengakhiri permintaan di sana. Claude Code tidak mencoba ulang permintaan, mengirimnya ulang tanpa streaming, atau beralih ke [model fallback](/docs/id/model-config#fallback-model-chains). Sebelum v2.1.285, Claude Code dapat mengirim ulang dan mencoba ulang permintaan yang diblokir, terkadang selama beberapa menit, sebelum menampilkan kesalahan kepada Anda.

2909 

2910**Yang harus dilakukan:**2909**Yang harus dilakukan:**

2911 2910 

2912* Ubah susunan kata pesan terakhir Anda atau ambil pendekatan berbeda2911* Ubah susunan kata pesan terakhir Anda atau ambil pendekatan berbeda

fast-mode.md +1 −1

Details

88 88 

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

90 90 

91Pertama kali Anda mengaktifkan mode cepat dalam percakapan, Anda membayar harga token input tanpa cache mode cepat penuh untuk seluruh konteks percakapan. Semakin dalam Anda berada dalam percakapan, semakin mahal biayanya, jadi mengaktifkan mode cepat dari awal lebih murah. Biaya diterapkan sekali per percakapan, jadi mematikan dan menyalakan kembali mode cepat nanti tidak mengulanginya. Untuk mekanismenya, lihat [bagaimana mode cepat berinteraksi dengan prompt cache](/docs/id/prompt-caching#turning-on-fast-mode).91Pertama kali Anda mengaktifkan fast mode dalam percakapan, Anda membayar harga token input tanpa cache fast mode penuh untuk seluruh konteks percakapan. Semakin dalam Anda berada dalam percakapan, semakin mahal biayanya, jadi mengaktifkan fast mode dari awal lebih murah. Biaya diterapkan sekali per percakapan, jadi mematikan dan menyalakan kembali fast mode nanti tidak mengulanginya. Untuk mekanismenya, lihat [bagaimana fast mode berinteraksi dengan prompt cache](/docs/id/prompt-caching#turning-on-fast-mode).

92 92 

93<h3 id="see-where-fast-mode-spend-appears">93<h3 id="see-where-fast-mode-spend-appears">

94 Lihat di mana pengeluaran mode cepat muncul94 Lihat di mana pengeluaran mode cepat muncul

glossary.md +1 −1

Details

130 130 

131File markdown dari instruksi persisten yang Anda tulis untuk Claude, dimuat di awal setiap sesi sebagai pesan pengguna setelah system prompt. Letakkan konvensi proyek, catatan arsitektur, dan aturan "selalu lakukan X" di sini. Project-root CLAUDE.md bertahan [compaction](#compaction) dan dibaca ulang segar dari disk sesudahnya.131File markdown dari instruksi persisten yang Anda tulis untuk Claude, dimuat di awal setiap sesi sebagai pesan pengguna setelah system prompt. Letakkan konvensi proyek, catatan arsitektur, dan aturan "selalu lakukan X" di sini. Project-root CLAUDE.md bertahan [compaction](#compaction) dan dibaca ulang segar dari disk sesudahnya.

132 132 

133Anda dapat menempatkan CLAUDE.md di scope proyek di `./CLAUDE.md` atau `./.claude/CLAUDE.md`, di scope pengguna di `~/.claude/CLAUDE.md`, atau sebagai [managed policy](#managed-settings) untuk organisasi Anda. Semua file yang ditemukan digabungkan ke dalam konteks daripada menimpa satu sama lain, diurutkan dari scope terluas ke paling spesifik. Claude Code juga dapat memuat file [AGENTS.md](#agents-md) proyek, sendiri atau bersama CLAUDE.md.133Anda dapat menempatkan CLAUDE.md di cakupan proyek di `./CLAUDE.md` atau `./.claude/CLAUDE.md`, di cakupan pengguna di `~/.claude/CLAUDE.md`, atau sebagai [managed policy](#managed-settings) untuk organisasi Anda. Semua file yang ditemukan digabungkan ke dalam konteks daripada menimpa satu sama lain, diurutkan dari cakupan terluas ke paling spesifik. Claude Code juga dapat memuat file [AGENTS.md](#agents-md) proyek sebagai pengganti CLAUDE.md.

134 134 

135Pelajari lebih lanjut: [CLAUDE.md files](/docs/id/memory#claude-md-files)135Pelajari lebih lanjut: [CLAUDE.md files](/docs/id/memory#claude-md-files)

136 136 

Details

210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1

211```211```

212 212 

213Sebagian besar versi model memiliki variabel `VERTEX_REGION_CLAUDE_*` yang sesuai. Lihat [referensi variabel lingkungan](/docs/id/env-vars) untuk daftar lengkap. Periksa [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) untuk menentukan model mana yang mendukung titik akhir global versus regional saja.213Sebagian besar versi model memiliki variabel `VERTEX_REGION_CLAUDE_*` yang sesuai. Lihat [referensi environment variable](/docs/id/env-vars#variables) untuk daftar lengkap. Periksa [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) untuk menentukan model mana yang mendukung endpoint global versus regional saja.

214 214 

215Jika nilai wilayah tidak berbentuk seperti nama wilayah atau lokasi, Claude Code memperlakukannya sebagai tidak diatur. Misalnya, Claude Code memperlakukan nilai yang berisi garis miring, titik, atau spasi sebagai tidak diatur. Claude Code kembali ke sumber yang berbeda untuk setiap variabel:215Jika nilai wilayah tidak berbentuk seperti nama wilayah atau lokasi, Claude Code memperlakukannya sebagai tidak diatur. Misalnya, Claude Code memperlakukan nilai yang berisi garis miring, titik, atau spasi sebagai tidak diatur. Claude Code kembali ke sumber yang berbeda untuk setiap variabel:

216 216 


364 364 

365* Konfirmasi model diaktifkan di [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)365* Konfirmasi model diaktifkan di [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

366* Verifikasi model tersedia di lokasi yang Anda tentukan. Beberapa model hanya ditawarkan di lokasi `global` atau multi-region seperti `eu` dan `us`, bukan di wilayah spesifik366* Verifikasi model tersedia di lokasi yang Anda tentukan. Beberapa model hanya ditawarkan di lokasi `global` atau multi-region seperti `eu` dan `us`, bukan di wilayah spesifik

367* Jika menggunakan `CLOUD_ML_REGION=global`, periksa bahwa model Anda mendukung titik akhir global di [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) di bawah "Supported features". Untuk model yang tidak mendukung titik akhir global, baik:367* Jika menggunakan `CLOUD_ML_REGION=global`, periksa bahwa model Anda mendukung endpoint global di [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) di bawah "Supported features". Untuk model yang tidak mendukung endpoint global, baik:

368 * Tentukan model yang didukung melalui `ANTHROPIC_MODEL` atau `ANTHROPIC_DEFAULT_HAIKU_MODEL`, atau368 * Tentukan model yang didukung melalui `ANTHROPIC_MODEL` atau `ANTHROPIC_DEFAULT_HAIKU_MODEL`, atau

369 * Atur wilayah atau lokasi multi-region menggunakan variabel lingkungan `VERTEX_REGION_<MODEL_NAME>`369 * Atur wilayah atau lokasi multi-region menggunakan variabel `VERTEX_REGION_CLAUDE_*` milik model tersebut, yang tercantum dalam [referensi environment variable](/docs/id/env-vars#variables)

370 370 

371Jika Anda mengalami kesalahan 429:371Jika Anda mengalami kesalahan 429:

372 372 

hooks.md +4 −5

Details

63| `DirectoryAdded` | Ketika direktori kerja ditambahkan di tengah sesi melalui `/add-dir` atau permintaan kontrol SDK `register_repo_root` |63| `DirectoryAdded` | Ketika direktori kerja ditambahkan di tengah sesi melalui `/add-dir` atau permintaan kontrol SDK `register_repo_root` |

64| `FileChanged` | Ketika file yang dipantau berubah di disk. Bidang `matcher` menentukan nama file mana yang dipantau |64| `FileChanged` | Ketika file yang dipantau berubah di disk. Bidang `matcher` menentukan nama file mana yang dipantau |

65| `WorktreeCreate` | Ketika worktree sedang dibuat melalui `--worktree`, `isolation: "worktree"`, atau untuk sesi latar belakang. Menggantikan perilaku git default |65| `WorktreeCreate` | Ketika worktree sedang dibuat melalui `--worktree`, `isolation: "worktree"`, atau untuk sesi latar belakang. Menggantikan perilaku git default |

66| `WorktreeRemove` | Ketika worktree sedang dihapus saat keluar sesi, ketika subagent selesai, atau ketika Anda menghapus sesi latar belakang |66| `WorktreeRemove` | Ketika worktree yang dibuat oleh hook `WorktreeCreate` sedang dihapus |

67| `PreCompact` | Sebelum pemadatan konteks |67| `PreCompact` | Sebelum pemadatan konteks |

68| `PostCompact` | Setelah pemadatan konteks selesai |68| `PostCompact` | Setelah pemadatan konteks selesai |

69| `PreModelSwitch` | Sebelum Claude Code menerapkan pergantian model yang Anda atau klien minta. Dapat memblokir pergantian |69| `PreModelSwitch` | Sebelum Claude Code menerapkan pergantian model yang Anda atau klien minta. Dapat memblokir pergantian |


3274 WorktreeRemove3274 WorktreeRemove

3275</h3>3275</h3>

3276 3276 

3277Berjalan saat worktree sedang dihapus. Ini adalah pasangan pembersihan untuk [WorktreeCreate](#worktreecreate). Event ini dipicu ketika:3277Berjalan ketika Claude Code membersihkan worktree yang dibuat oleh hook [`WorktreeCreate`](#worktreecreate) Anda. Event ini dipicu ketika:

3278 3278 

3279* Anda keluar dari sesi `--worktree` dan memilih untuk menghapusnya3279* Anda keluar dari sesi `--worktree` dan memilih untuk menghapus worktree

3280* subagent dengan `isolation: "worktree"` selesai3280* Anda menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) yang berjalan di worktree tersebut

3281* Anda menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) yang worktree-nya dibuat oleh hook

3282 3281 

3283Untuk worktree berbasis git, Claude Code menangani pembersihan secara otomatis dengan `git worktree remove`. Jika Anda mengonfigurasi hook WorktreeCreate, pasangkan dengan hook WorktreeRemove untuk mengontrol pembersihan worktree yang dibuatnya:3282Untuk worktree berbasis git, Claude Code menangani pembersihan secara otomatis dengan `git worktree remove`. Jika Anda mengonfigurasi hook WorktreeCreate, pasangkan dengan hook WorktreeRemove untuk mengontrol pembersihan worktree yang dibuatnya:

3284 3283 

hooks-guide.md +1 −1

Details

526| `DirectoryAdded` | Ketika direktori kerja ditambahkan di tengah sesi melalui `/add-dir` atau permintaan kontrol SDK `register_repo_root` |526| `DirectoryAdded` | Ketika direktori kerja ditambahkan di tengah sesi melalui `/add-dir` atau permintaan kontrol SDK `register_repo_root` |

527| `FileChanged` | Ketika file yang dipantau berubah di disk. Bidang `matcher` menentukan nama file mana yang dipantau |527| `FileChanged` | Ketika file yang dipantau berubah di disk. Bidang `matcher` menentukan nama file mana yang dipantau |

528| `WorktreeCreate` | Ketika worktree sedang dibuat melalui `--worktree`, `isolation: "worktree"`, atau untuk sesi latar belakang. Menggantikan perilaku git default |528| `WorktreeCreate` | Ketika worktree sedang dibuat melalui `--worktree`, `isolation: "worktree"`, atau untuk sesi latar belakang. Menggantikan perilaku git default |

529| `WorktreeRemove` | Ketika worktree sedang dihapus saat keluar sesi, ketika subagent selesai, atau ketika Anda menghapus sesi latar belakang |529| `WorktreeRemove` | Ketika worktree yang dibuat oleh hook `WorktreeCreate` sedang dihapus |

530| `PreCompact` | Sebelum pemadatan konteks |530| `PreCompact` | Sebelum pemadatan konteks |

531| `PostCompact` | Setelah pemadatan konteks selesai |531| `PostCompact` | Setelah pemadatan konteks selesai |

532| `PreModelSwitch` | Sebelum Claude Code menerapkan pergantian model yang Anda atau klien minta. Dapat memblokir pergantian |532| `PreModelSwitch` | Sebelum Claude Code menerapkan pergantian model yang Anda atau klien minta. Dapat memblokir pergantian |

Details

76* **Proyek Anda.** File di direktori dan subdirektori Anda, ditambah file di tempat lain dengan izin Anda.76* **Proyek Anda.** File di direktori dan subdirektori Anda, ditambah file di tempat lain dengan izin Anda.

77* **Terminal Anda.** Perintah apa pun yang dapat Anda jalankan: build tools, git, package managers, system utilities, scripts. Jika Anda dapat melakukannya dari command line, Claude juga dapat.77* **Terminal Anda.** Perintah apa pun yang dapat Anda jalankan: build tools, git, package managers, system utilities, scripts. Jika Anda dapat melakukannya dari command line, Claude juga dapat.

78* **Status git Anda.** Branch saat ini, perubahan yang belum di-commit, dan riwayat commit terbaru.78* **Status git Anda.** Branch saat ini, perubahan yang belum di-commit, dan riwayat commit terbaru.

79* **[CLAUDE.md](/docs/id/memory) Anda.** File markdown tempat Anda menyimpan instruksi khusus proyek, konvensi, dan konteks yang harus diketahui Claude setiap sesi. Jika repositori Anda memiliki AGENTS.md untuk agen coding lainnya, Claude [dapat membacanya](/docs/id/memory#agents-md) sendiri atau bersama CLAUDE.md.79* **[CLAUDE.md](/docs/id/memory) Anda.** File markdown tempat Anda menyimpan instruksi khusus proyek, konvensi, dan konteks yang harus diketahui Claude setiap sesi. Jika repositori Anda memiliki AGENTS.md untuk agent coding lainnya, Claude [dapat membacanya](/docs/id/memory#agents-md) sebagai pengganti CLAUDE.md.

80* **[Auto memory](/docs/id/memory#auto-memory).** Pembelajaran yang disimpan Claude secara otomatis saat Anda bekerja, seperti preferensi Anda. 200 baris pertama atau 25KB MEMORY.md, mana pun yang lebih dulu, dimuat di awal setiap sesi.80* **[Auto memory](/docs/id/memory#auto-memory).** Pembelajaran yang disimpan Claude secara otomatis saat Anda bekerja, seperti preferensi Anda. 200 baris pertama atau 25KB MEMORY.md, mana pun yang lebih dulu, dimuat di awal setiap sesi.

81* **Ekstensi yang Anda konfigurasi.** [MCP servers](/docs/id/mcp) untuk layanan eksternal, [skills](/docs/id/skills) untuk workflow, [subagents](/docs/id/sub-agents) untuk pekerjaan yang didelegasikan, dan [Claude in Chrome](/docs/id/chrome) untuk interaksi browser.81* **Ekstensi yang Anda konfigurasi.** [MCP servers](/docs/id/mcp) untuk layanan eksternal, [skills](/docs/id/skills) untuk workflow, [subagents](/docs/id/sub-agents) untuk pekerjaan yang didelegasikan, dan [Claude in Chrome](/docs/id/chrome) untuk interaksi browser.

82 82 

keybindings.md +3 −2

Details

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

300| `footer:next` | Right | Item footer berikutnya |300| `footer:next` | Right | Item footer berikutnya |

301| `footer:previous` | Left | Item footer sebelumnya |301| `footer:previous` | Left | Item footer sebelumnya |

302| `footer:up` | Up | Navigasi ke atas di footer (batalkan pilihan di atas) |302| `footer:up` | Up, Ctrl+P | Navigasi ke atas di footer (batalkan pilihan di atas) |

303| `footer:down` | Down | Navigasi ke bawah di footer |303| `footer:down` | Down, Ctrl+N | Navigasi ke bawah di footer |

304| `footer:openSelected` | Enter | Buka item footer yang dipilih |304| `footer:openSelected` | Enter | Buka item footer yang dipilih |

305| `footer:clearSelection` | Escape | Bersihkan pilihan footer |305| `footer:clearSelection` | Escape | Bersihkan pilihan footer |

306| `footer:close` | x | Hentikan [agent](/docs/id/sub-agents#observe-and-steer-running-forks) atau [workflow](/docs/id/workflows#manage-runs) yang dipilih, atau tutup barisnya jika sudah tidak berjalan lagi |

306| `footer:dismiss` | (unbound) | Mengikat kunci ke tindakan ini tidak berpengaruh, dan `keybindings.json` yang menyebutkannya tetap valid. Sebelum v2.1.281, Backspace dan Delete terikat ke tindakan ini dan menghapus tautan artefak yang dipilih dari footer. |307| `footer:dismiss` | (unbound) | Mengikat kunci ke tindakan ini tidak berpengaruh, dan `keybindings.json` yang menyebutkannya tetap valid. Sebelum v2.1.281, Backspace dan Delete terikat ke tindakan ini dan menghapus tautan artefak yang dipilih dari footer. |

307 308 

308Saat item footer dipilih, seperti baris di panel agen di bawah prompt, `Enter` membukanya bahkan ketika Anda mengikat ulang `Enter` dalam konteks `Chat` ke `chat:queueSubmit` atau `chat:newline`.309Saat item footer dipilih, seperti baris di panel agen di bawah prompt, `Enter` membukanya bahkan ketika Anda mengikat ulang `Enter` dalam konteks `Chat` ke `chat:queueSubmit` atau `chat:newline`.

Details

216* **Didistribusikan oleh administrator**: jika organisasi Anda telah [menerapkan konfigurasi](/docs/id/llm-gateway-rollout#distribute-through-managed-settings), aplikasi desktop merutekan melalui gateway tanpa pengaturan di pihak Anda216* **Didistribusikan oleh administrator**: jika organisasi Anda telah [menerapkan konfigurasi](/docs/id/llm-gateway-rollout#distribute-through-managed-settings), aplikasi desktop merutekan melalui gateway tanpa pengaturan di pihak Anda

217* **Dikonfigurasi secara lokal**: untuk perangkat tanpa konfigurasi yang didistribusikan administrator, buka Help → Troubleshooting → Enable Developer Mode, yang memulai ulang aplikasi dengan menu Developer. Kemudian buka Developer → Configure Third-Party Inference dan masukkan URL dasar gateway Anda. Konfigurasi yang didistribusikan administrator memiliki prioritas dan membuat formulir ini hanya-baca217* **Dikonfigurasi secara lokal**: untuk perangkat tanpa konfigurasi yang didistribusikan administrator, buka Help → Troubleshooting → Enable Developer Mode, yang memulai ulang aplikasi dengan menu Developer. Kemudian buka Developer → Configure Third-Party Inference dan masukkan URL dasar gateway Anda. Konfigurasi yang didistribusikan administrator memiliki prioritas dan membuat formulir ini hanya-baca

218 218 

219Dengan konfigurasi gateway aktif, aplikasi desktop menjalankan sesi hanya di mesin lokal Anda: pemilih lingkungan tidak menawarkan sesi SSH atau lingkungan cloud yang dihosting Anthropic, dan [Remote Control](/docs/id/remote-control) tidak tersedia. Untuk menggunakan Claude Code pada host jarak jauh melalui gateway, jalankan CLI pada host itu dengan [`ANTHROPIC_BASE_URL` dan kredensial gateway](#set-the-base-url-and-credential) diatur di sana.219Dengan konfigurasi gateway aktif, pemilih lingkungan tidak menawarkan lingkungan cloud yang dihosting Anthropic, dan [Remote Control](/docs/id/remote-control) tidak tersedia.

220 

221Sesi SSH masih dalam tahap beta dengan konfigurasi gateway dan memerlukan Claude Desktop v1.40609.0 atau yang lebih baru. Sebelum Anda terhubung, periksa allowlist dan alamat gateway:

222 

223* **Host yang diizinkan**: sesi SSH dinonaktifkan secara default. Untuk mengaktifkannya, Anda atau administrator Anda mencantumkan host yang diizinkan di kunci [`sshHostAllowlist`](https://claude.com/docs/third-party/claude-desktop/configuration#sshhostallowlist) pada konfigurasi inferensi pihak ketiga

224* **Alamat gateway**: mesin jarak jauh terhubung ke gateway itu sendiri, sehingga gateway di `localhost` pada komputer Anda tidak berfungsi untuk sesi SSH

225 

226Lihat [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions). Anda juga dapat menjalankan CLI pada host jarak jauh dengan [`ANTHROPIC_BASE_URL` dan kredensial gateway](#set-the-base-url-and-credential) diatur di sana.

220 227 

221Jika aplikasi desktop menampilkan `Gateway was unreachable`, aplikasi tidak dapat menjangkau URL dasar yang dikonfigurasi saat startup; periksa URL dan jalur jaringan dengan [tes curl di atas](#verify-the-connection).228Jika aplikasi desktop menampilkan `Gateway was unreachable`, aplikasi tidak dapat menjangkau URL dasar yang dikonfigurasi saat startup; periksa URL dan jalur jaringan dengan [tes curl di atas](#verify-the-connection).

222 229 

managed-mcp.md +17 −5

Details

347 Bagaimana entri `serverUrl` dicocokkan347 Bagaimana entri `serverUrl` dicocokkan

348</h4>348</h4>

349 349 

350URL mendukung wildcard `*` di mana pun dalam pola, termasuk skema. Pencocokan nama host tidak peka huruf besar-kecil dan mengabaikan titik FQDN yang tertinggal, jadi `https://Mcp.Example.com/*` cocok dengan `https://mcp.example.com/api`. Jalur tetap peka huruf besar-kecil.350URL mendukung wildcard `*`, termasuk `*` sebagai seluruh skema. Pencocokan nama host tidak peka huruf besar-kecil dan mengabaikan titik FQDN yang tertinggal, jadi `https://Mcp.Example.com/*` cocok dengan `https://mcp.example.com/api`. Jalur tetap peka huruf besar-kecil. Jika Anda tidak memberikan port, cara Anda menulis nama host menentukan apakah pola hanya cocok dengan port default skema atau dengan setiap port:

351 

352* **Nama host ditulis lengkap**: hanya port default, 443 untuk `https` dan 80 untuk `http`

353* **Nama host yang mengandung `*`**: setiap port

351 354 

352Tabel berikut menunjukkan apa yang diizinkan oleh pola umum:355Tabel berikut menunjukkan apa yang diizinkan oleh pola umum:

353 356 

354| Pola | Mengizinkan |357| Pola | Mengizinkan |

355| :- | :- |358| :- | :- |

356| `https://mcp.example.com/*` | Semua jalur pada domain tertentu |359| `https://mcp.example.com/*` | Semua jalur pada domain tertentu, hanya pada port 443 |

357| `https://mcp.example.com` | Juga semua jalur di domain itu. Pola tanpa jalur cocok dengan jalur apa pun |360| `https://mcp.example.com` | Juga semua jalur di domain itu, hanya pada port 443. Pola tanpa jalur cocok dengan jalur apa pun |

358| `https://*.example.com/*` | Subdomain apa pun dari `example.com` |361| `https://mcp.example.com:8443/*` | Semua jalur di domain itu, hanya pada port 8443 |

362| `https://mcp.example.com:*/*` | Semua jalur di domain itu, pada port apa pun, termasuk 443 |

363| `https://*.example.com/*` | Subdomain apa pun dari `example.com`, pada port apa pun |

359| `http://localhost:*/*` | Port apa pun di localhost |364| `http://localhost:*/*` | Port apa pun di localhost |

360| `*://mcp.example.com/*` | Skema apa pun ke domain tertentu |365| `*://mcp.example.com/*` | Skema apa pun ke domain tertentu, masing-masing skema hanya pada port default-nya |

366 

367Entri di `deniedMcpServers` mencocokkan port dengan cara yang sama, jadi pilih entri untuk `staging.example.com` berdasarkan port dan skema yang perlu Anda blokir:

368 

369* `https://staging.example.com/*`: memblokir server `https` di host tersebut hanya pada port 443, sehingga tidak memblokir server di `https://staging.example.com:8443/api`

370* `https://staging.example.com:*/*`: memblokir server `https` di host tersebut pada setiap port

371* `*://staging.example.com:*/*`: memblokir host tersebut melalui skema apa pun dan pada port apa pun

361 372 

362<h4 id="how-policy-entries-expand">373<h4 id="how-policy-entries-expand">

363 Environment variable dalam entri `serverCommand` dan `serverUrl`374 Environment variable dalam entri `serverCommand` dan `serverUrl`


529 | :- | :- |540 | :- | :- |

530 | Server HTTP di `https://mcp.example.com/api` | Diizinkan: cocok dengan pola URL allowlist, tidak ada kecocokan denylist |541 | Server HTTP di `https://mcp.example.com/api` | Diizinkan: cocok dengan pola URL allowlist, tidak ada kecocokan denylist |

531 | Server HTTP di `https://staging.example.com/api` | Diblokir: cocok dengan keduanya, tetapi denylist memiliki prioritas |542 | Server HTTP di `https://staging.example.com/api` | Diblokir: cocok dengan keduanya, tetapi denylist memiliki prioritas |

543 | Server HTTP di `https://staging.example.com:8443/api` | Diizinkan: cocok dengan pola URL allowlist, [tidak ada kecocokan denylist pada port ini](#how-serverurl-entries-match) |

532 | Server HTTP di `https://other.com/mcp` | Diblokir: tidak cocok dengan allowlist |544 | Server HTTP di `https://other.com/mcp` | Diblokir: tidak cocok dengan allowlist |

533</Accordion>545</Accordion>

534 546 

memory.md +2 −2

Details

8 8 

9Setiap sesi Claude Code dimulai dengan context window yang segar. Dua mekanisme membawa pengetahuan lintas sesi:9Setiap sesi Claude Code dimulai dengan context window yang segar. Dua mekanisme membawa pengetahuan lintas sesi:

10 10 

11* **File CLAUDE.md**: instruksi yang Anda tulis untuk memberikan Claude konteks persisten. Claude juga dapat membaca file [`AGENTS.md`](#agents-md) repositori, sendiri atau bersama CLAUDE.md11* **File CLAUDE.md**: instruksi yang Anda tulis untuk memberikan Claude konteks persisten. Claude juga dapat membaca [file `AGENTS.md`](#agents-md) repositori sebagai pengganti CLAUDE.md

12* **Auto memory**: catatan yang Claude tulis sendiri berdasarkan koreksi dan preferensi Anda12* **Auto memory**: catatan yang Claude tulis sendiri berdasarkan koreksi dan preferensi Anda

13 13 

14Halaman ini mencakup cara untuk:14Halaman ini mencakup cara untuk:

15 15 

16* [Menulis dan mengorganisir file CLAUDE.md](#claude-md-files)16* [Menulis dan mengorganisir file CLAUDE.md](#claude-md-files)

17* [Menggunakan AGENTS.md yang sudah ada](#agents-md) sebagai instruksi proyek Anda, sendiri atau bersama CLAUDE.md17* [Menggunakan AGENTS.md yang sudah ada](#agents-md) sebagai instruksi proyek Anda

18* [Membatasi aturan ke tipe file tertentu](#organize-rules-with-claude/rules/) dengan `.claude/rules/`18* [Membatasi aturan ke tipe file tertentu](#organize-rules-with-claude/rules/) dengan `.claude/rules/`

19* [Mengonfigurasi auto memory](#auto-memory) agar Claude membuat catatan secara otomatis19* [Mengonfigurasi auto memory](#auto-memory) agar Claude membuat catatan secara otomatis

20* [Troubleshoot](#troubleshoot-memory-issues) ketika instruksi tidak diikuti20* [Troubleshoot](#troubleshoot-memory-issues) ketika instruksi tidak diikuti

Details

551* **Pengaturan yang dikelola server**: tambahkan ke blok `env` dari [pengaturan yang dikelola server](/docs/id/server-managed-settings) organisasi Anda. Claude Code mengambil pengaturan tersebut saat startup di mana pun [pengaturan yang dikelola server berlaku](/docs/id/model-config#surface-coverage), yang mencakup mesin pengguna Anda dan sesi cloud selain sesi saluran Claude Tag. Sesi Claude Tag tidak menerima pengaturan yang dikelola server Anda, jadi rute ini tidak mengonfigurasinya.551* **Pengaturan yang dikelola server**: tambahkan ke blok `env` dari [pengaturan yang dikelola server](/docs/id/server-managed-settings) organisasi Anda. Claude Code mengambil pengaturan tersebut saat startup di mana pun [pengaturan yang dikelola server berlaku](/docs/id/model-config#surface-coverage), yang mencakup mesin pengguna Anda dan sesi cloud selain sesi saluran Claude Tag. Sesi Claude Tag tidak menerima pengaturan yang dikelola server Anda, jadi rute ini tidak mengonfigurasinya.

552* **Variabel lingkungan**: tambahkan ke [variabel lingkungan](/docs/id/cloud-environments#set-environment-variables) lingkungan cloud untuk mengonfigurasi hanya sesi yang berjalan di lingkungan tersebut. Ini adalah rute yang menjangkau sesi Claude Tag.552* **Variabel lingkungan**: tambahkan ke [variabel lingkungan](/docs/id/cloud-environments#set-environment-variables) lingkungan cloud untuk mengonfigurasi hanya sesi yang berjalan di lingkungan tersebut. Ini adalah rute yang menjangkau sesi Claude Tag.

553 553 

554Siapa pun yang menggunakan lingkungan dapat membaca variabelnya, jadi jangan letakkan kredensial di sana, seperti token kolektor di `OTEL_EXPORTER_OTLP_HEADERS`. [Kredensial API](/docs/id/cloud-environments#add-api-credentials) di lingkungan juga tidak membantu, karena ekspor telemetri Claude Code sendiri adalah salah satu dari [permintaan yang tidak pernah mendapatkan kredensial](/docs/id/cloud-environments#requests-that-never-get-the-credential). Jika kolektor Anda memerlukan kredensial, konfigurasikan seluruh ekspor melalui pengaturan yang dikelola server sebagai gantinya, karena ketika Anda menetapkan kredensial di sana, [Claude Code menghapus variabel titik akhir yang ditetapkan di luar pengaturan terkelola](#how-managed-settings-lock-the-otlp-destination).554Siapa pun yang menggunakan lingkungan dapat membaca variabelnya, jadi jangan letakkan kredensial di sana, seperti token kolektor di `OTEL_EXPORTER_OTLP_HEADERS`. [Rahasia jaringan](/docs/id/cloud-environments#add-api-credentials) di lingkungan juga tidak membantu, karena ekspor telemetri Claude Code sendiri adalah salah satu dari [permintaan yang tidak pernah mendapatkan rahasia tersebut](/docs/id/cloud-environments#requests-that-never-get-the-credential). Jika kolektor Anda memerlukan kredensial, konfigurasikan seluruh ekspor melalui pengaturan terkelola server sebagai gantinya, karena ketika Anda menetapkan kredensial di sana, [Claude Code menghapus variabel endpoint yang ditetapkan di luar pengaturan terkelola](#how-managed-settings-lock-the-otlp-destination).

555 555 

556Pertahankan batasan ini dalam pikiran ketika Anda mengonfigurasi telemetri untuk sesi cloud:556Pertahankan batasan ini dalam pikiran ketika Anda mengonfigurasi telemetri untuk sesi cloud:

557 557 

overview.md +8 −6

Details

28 curl -fsSL https://claude.ai/install.sh | bash28 curl -fsSL https://claude.ai/install.sh | bash

29 ```29 ```

30 30 

31 Di Windows, prompt Anda menunjukkan `PS C:\` ketika Anda berada di PowerShell dan `C:\` tanpa `PS` ketika Anda berada di CMD.

32 

31 **Windows PowerShell:**33 **Windows PowerShell:**

32 34 

33 ```powershell theme={null}35 ```powershell theme={null}


42 44 

43 Ketika penginstal selesai, buka jendela terminal baru dan jalankan `claude --version`. Instalasi yang berfungsi dengan baik mencetak nomor versi. Jika shell Anda mengatakan `claude` tidak ditemukan atau tidak dikenali, direktori instalasi belum ada di PATH Anda: lihat [Perbaiki PATH Anda](/docs/id/troubleshoot-install#command-not-found-claude-after-installation).45 Ketika penginstal selesai, buka jendela terminal baru dan jalankan `claude --version`. Instalasi yang berfungsi dengan baik mencetak nomor versi. Jika shell Anda mengatakan `claude` tidak ditemukan atau tidak dikenali, direktori instalasi belum ada di PATH Anda: lihat [Perbaiki PATH Anda](/docs/id/troubleshoot-install#command-not-found-claude-after-installation).

44 46 

45 Jika Anda melihat `The token '&&' is not a valid statement separator`, Anda berada di PowerShell, bukan CMD. Jika Anda melihat `'irm' is not recognized as an internal or external command`, Anda berada di CMD, bukan PowerShell. Prompt Anda menunjukkan `PS C:\` ketika Anda berada di PowerShell dan `C:\` tanpa `PS` ketika Anda berada di CMD.47 Jika Anda melihat `The token '&&' is not a valid statement separator`, Anda berada di PowerShell, bukan CMD. Jika Anda melihat `'irm' is not recognized as an internal or external command`, Anda berada di CMD, bukan PowerShell.

46 48 

47 Jika perintah instalasi gagal dengan `syntax error near unexpected token '<'`, `403`, atau kesalahan curl lainnya, lihat [Troubleshoot installation](/docs/id/troubleshoot-install#find-your-error) untuk mencocokkan kesalahan dengan perbaikan dan untuk metode instalasi alternatif.49 Jika perintah instalasi gagal dengan `syntax error near unexpected token '<'`, `403`, atau kesalahan lainnya, lihat [Troubleshoot installation](/docs/id/troubleshoot-install#find-your-error) untuk mencocokkan kesalahan dengan perbaikan dan untuk metode instalasi alternatif.

48 50 

49 [Git for Windows](https://git-scm.com/downloads/win) direkomendasikan pada Windows native sehingga Claude Code dapat menggunakan alat Bash. Jika Git for Windows tidak diinstal, Claude Code menggunakan PowerShell sebagai alat shell sebagai gantinya. Pengaturan WSL tidak memerlukan Git for Windows.51 [Git for Windows](https://git-scm.com/downloads/win) direkomendasikan pada Windows native sehingga Claude Code dapat menggunakan alat Bash. Jika Git for Windows tidak diinstal, Claude Code menggunakan PowerShell sebagai alat shell sebagai gantinya. Pengaturan WSL tidak memerlukan Git for Windows.

50 52 


85 claude87 claude

86 ```88 ```

87 89 

88 Anda akan diminta untuk masuk pada penggunaan pertama. Jika Anda telah menetapkan variabel lingkungan `ANTHROPIC_API_KEY`, Claude Code melewati prompt login dan meminta Anda untuk menyetujui kunci sebagai gantinya. Itu saja! [Lanjutkan dengan Quickstart →](/docs/id/quickstart)90 Claude Code meminta Anda untuk masuk pada penggunaan pertama. Jika Anda telah menetapkan environment variable `ANTHROPIC_API_KEY` dan Anda menyetujui kunci tersebut saat Claude Code menanyakan apakah akan menggunakannya, Claude Code akan melewati permintaan masuk. [Lanjutkan dengan Mulai Cepat →](/docs/id/quickstart)

89 91 

90 <Tip>92 <Tip>

91 Lihat [pengaturan lanjutan](/docs/id/setup) untuk opsi instalasi, pembaruan manual, atau instruksi penghapusan. Kunjungi [pemecahan masalah instalasi](/docs/id/troubleshoot-install) jika Anda mengalami masalah.93 Lihat [pengaturan lanjutan](/docs/id/setup) untuk opsi instalasi, pembaruan manual, atau instruksi penghapusan. Kunjungi [pemecahan masalah instalasi](/docs/id/troubleshoot-install) jika Anda mengalami masalah.


163 claude "commit my changes with a descriptive message"165 claude "commit my changes with a descriptive message"

164 ```166 ```

165 167 

166 Di CI, Anda dapat mengotomatisasi tinjauan kode dan triase masalah dengan [GitHub Actions](/docs/id/github-actions) atau [GitLab CI/CD](/docs/id/gitlab-ci-cd).168 Di CI, Anda dapat mengotomatisasi code review dan triase masalah dengan [GitHub Actions](/docs/id/github-actions) atau [GitLab CI/CD](/docs/id/gitlab-ci-cd).

167 </Accordion>169 </Accordion>

168 170 

169 <Accordion title="Hubungkan alat Anda dengan MCP" icon="plug">171 <Accordion title="Hubungkan alat Anda dengan MCP" icon="plug">

170 [Model Context Protocol (MCP)](/docs/id/mcp) adalah standar terbuka untuk menghubungkan alat AI ke sumber data eksternal. Dengan MCP, Claude Code dapat membaca dokumen desain Anda di Google Drive, memperbarui tiket di Jira, menarik data dari Slack, atau menggunakan alat khusus Anda sendiri. [Panduan cepat MCP](/docs/id/mcp-quickstart) menghubungkan server pertama Anda dari awal hingga akhir.172 [Model Context Protocol (MCP)](/docs/id/mcp) adalah standar terbuka untuk menghubungkan alat AI ke sumber data eksternal. Dengan MCP, Claude Code dapat membaca dokumen desain Anda di Google Drive, memperbarui tiket di Jira, menarik data dari Slack, atau menggunakan alat khusus Anda sendiri. [Mulai cepat MCP](/docs/id/mcp-quickstart) menghubungkan server pertama Anda dari awal hingga akhir.

171 </Accordion>173 </Accordion>

172 174 

173 <Accordion title="Sesuaikan dengan instruksi, skills, dan hooks" icon="sliders">175 <Accordion title="Sesuaikan dengan instruksi, skills, dan hooks" icon="sliders">

174 [`CLAUDE.md`](/docs/id/memory) adalah file markdown yang Anda tambahkan ke root proyek Anda yang dibaca Claude Code di awal setiap sesi. Gunakan untuk menetapkan standar pengkodean, keputusan arsitektur, perpustakaan pilihan, dan daftar periksa tinjauan. Jika repositori Anda sudah memiliki `AGENTS.md` untuk agen pengkodean lainnya, Claude Code [dapat membacanya](/docs/id/memory#agents-md) sendiri atau bersama `CLAUDE.md`. Claude juga membangun [memori otomatis](/docs/id/memory#auto-memory) saat bekerja, menyimpan pembelajaran di seluruh sesi tanpa Anda menulis apa pun.176 [`CLAUDE.md`](/docs/id/memory) adalah file markdown yang Anda tambahkan ke root proyek Anda yang dibaca Claude Code di awal setiap sesi. Gunakan untuk menetapkan standar pengkodean, keputusan arsitektur, perpustakaan pilihan, dan daftar periksa tinjauan. Jika repositori Anda sudah memiliki `AGENTS.md` untuk agent pengkodean lainnya, Claude Code [dapat membacanya](/docs/id/memory#agents-md) sebagai pengganti `CLAUDE.md`. Claude juga membangun [auto memory](/docs/id/memory#auto-memory) saat bekerja, menyimpan pembelajaran di seluruh sesi tanpa Anda menulis apa pun.

175 177 

176 Buat [skills](/docs/id/skills) untuk mengemas alur kerja yang dapat diulang yang dapat dibagikan tim Anda, seperti `/review-pr` atau `/deploy-staging`.178 Buat [skills](/docs/id/skills) untuk mengemas alur kerja yang dapat diulang yang dapat dibagikan tim Anda, seperti `/review-pr` atau `/deploy-staging`.

177 179 

plugin-evals.md +7 −3

Details

79 claude plugin eval init79 claude plugin eval init

80 ```80 ```

81 81 

82 Jika Claude Code belum mempercayai direktori ini, pertama-tama menanyakan `Trust this plugin directory?`; jawab `y`. Sesi Claude Code interaktif kemudian terbuka. Claude membaca plugin Anda dan menanyakan apa hasil yang baik, mengusulkan prompt yang seharusnya dan tidak seharusnya memicu plugin, merancang grader untuk masing-masing, menjalankan pilot mereka sekali untuk memeriksa perilakunya, dan menulis satu direktori kasus per prompt di bawah `evals/`, masing-masing dinamai setelah promptnya. Ketika Claude memberi tahu Anda suite siap, keluar dari sesi itu dengan `/exit` atau Ctrl+D untuk kembali ke shell Anda.82 Jika Claude Code belum mempercayai direktori ini, pertama-tama menanyakan `Trust this plugin directory?`; jawab `y`.

83 83 

84 Jika Anda sudah memiliki sesi Claude Code terbuka di root plugin, Anda dapat meminta Claude di sana untuk menjalankan `claude plugin eval init`. Claude menjalankan perintah dan kemudian menanyakan Anda pertanyaan yang sama dalam percakapan itu.84 Sesi Claude Code interaktif kemudian terbuka. Claude membaca plugin Anda dan menanyakan apa hasil yang baik, mengusulkan prompt yang seharusnya dan tidak seharusnya memicu plugin, merancang grader untuk masing-masing, menjalankannya sekali sebagai uji coba untuk memeriksa perilakunya, dan menulis satu direktori kasus per prompt di bawah `evals/`, masing-masing dinamai sesuai promptnya.

85 

86 Ketika Claude memberi tahu Anda suite siap, keluar dari sesi itu dengan `/exit` atau Ctrl+D untuk kembali ke shell Anda.

87 

88 Jika Anda sudah memiliki sesi Claude Code terbuka di root plugin, Anda dapat sebagai gantinya meminta Claude di sana untuk menjalankan `claude plugin eval init`. Claude menjalankan perintah dan kemudian menanyakan Anda pertanyaan yang sama dalam percakapan itu.

85 89 

86 Jika Anda lebih suka menulis kasus sendiri untuk melihat dengan tepat apa yang berisi file, ikuti [Tulis kasus dengan tangan](#write-a-case-manually) dan kembali ke sini untuk menjalankannya.90 Jika Anda lebih suka menulis kasus sendiri untuk melihat dengan tepat apa yang berisi file, ikuti [Tulis kasus dengan tangan](#write-a-case-manually) dan kembali ke sini untuk menjalankannya.

87 </Step>91 </Step>


118 122 

119 Temuan pertama yang paling umum adalah `Δ` mendekati nol dengan grader `tool_used: Skill` kasus gagal, yang berarti Claude tidak memilih skill Anda pada frasa alami. Sesuaikan [`description`](/docs/id/skills#frontmatter-reference) skill, jalankan `claude plugin eval .` lagi, dan bandingkan.123 Temuan pertama yang paling umum adalah `Δ` mendekati nol dengan grader `tool_used: Skill` kasus gagal, yang berarti Claude tidak memilih skill Anda pada frasa alami. Sesuaikan [`description`](/docs/id/skills#frontmatter-reference) skill, jalankan `claude plugin eval .` lagi, dan bandingkan.

120 124 

121 Untuk mengulangi satu kasus dengan murah, jalankan satu arm sekali. Satu run bising, jadi konfirmasi perubahan apa pun pada tiga run default sebelum Anda mempercayainya. Dengan satu arm tabel menunjukkan kolom `SCORE` dan `PASS%` alih-alih `WITH`, `W/OUT`, dan `Δ`:125 Untuk mengulangi satu kasus dengan lebih sedikit run, jalankan satu arm sekali. Satu run bising, jadi konfirmasi perubahan apa pun pada tiga run default sebelum Anda mempercayainya. Dengan satu arm tabel menunjukkan kolom `SCORE` dan `PASS%` alih-alih `WITH`, `W/OUT`, dan `Δ`:

122 126 

123 ```bash theme={null}127 ```bash theme={null}

124 claude plugin eval . --case <case-name> --runs 1 --ablation none128 claude plugin eval . --case <case-name> --runs 1 --ablation none

Details

733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

734```734```

735 735 

736Agent ini dinamai `my-plugin:security-reviewer`, dan pengguna dapat [memanggilnya secara eksplisit](/docs/id/sub-agents#invoke-subagents-explicitly) dengan `@agent-my-plugin:security-reviewer`. Bentuk nama adalah `<plugin>:<name>`, di mana `<name>` berasal dari frontmatter, atau dari nama file ketika tidak ada.736Agent ini dinamai `my-plugin:security-reviewer`, dan pengguna dapat [memanggilnya secara eksplisit](/docs/id/sub-agents#invoke-subagents-explicitly) dengan `@agent-my-plugin:security-reviewer`. Bentuk nama adalah `<plugin>:<name>`, di mana `<name>` berasal dari field `name` di frontmatter, atau dari nama file ketika field itu tidak ada.

737 737 

738Kunci manifest `agents` menggantikan pemindaian `agents/`.738Kunci manifest `agents` menggantikan pemindaian `agents/`.

739 739 

Details

428 428 

429| Elemen | Apa yang digambarnya | Di mana |429| Elemen | Apa yang digambarnya | Di mana |

430| :- | :- | :- |430| :- | :- | :- |

431| `Box` | Kontainer flex. Mengambil prop tata letak seperti `flexDirection`, `columnGap`, `padding`, `borderStyle`, dan `width`. | Di mana-mana |431| `Box` | Kontainer flex. Mengambil prop tata letak seperti `flexDirection`, `columnGap`, `padding`, [`borderStyle`](/docs/id/plugins/mods/reference#box-border-styles), dan `width`. | Di mana-mana |

432| `Text` | Teks bergaya. Mengambil `color`, `bold`, `dimColor`, `italic`, dan `wrap`. `color` adalah kunci tema atau warna seperti `'red'`. `wrap` adalah `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'`, atau `'truncate-end'`. | Di mana-mana |432| `Text` | Teks bergaya. Mengambil `color`, `bold`, `dimColor`, `italic`, dan `wrap`. `color` adalah kunci tema atau warna seperti `'red'`. `wrap` adalah `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'`, atau `'truncate-end'`. | Di mana-mana |

433| `Button` | Kontrol yang memanggil `onPress` | Di mana-mana |433| `Button` | Kontrol yang memanggil `onPress` | Di mana-mana |

434| `Link`, `Code`, `Markdown` | Tautan dengan `href` dan `label` opsional, blok kode, dan teks yang diformat seperti balasan Claude. `Markdown` mengambil kontennya dalam prop `text`, bukan dalam `children`, dan membutuhkan `key` saat Anda meneruskan `onLinkPress`. | Di mana-mana |434| `Link`, `Code`, `Markdown` | Tautan dengan `href` dan `label` opsional, blok kode, dan teks yang diformat seperti balasan Claude. `Markdown` mengambil kontennya dalam prop `text`, bukan dalam `children`, dan membutuhkan `key` saat Anda meneruskan `onLinkPress`. | Di mana-mana |


563Banyak panel adalah bidang teks dengan daftar di bawahnya. Contoh di bagian ini adalah panel catatan: Anda mengetik catatan dan menekan Enter untuk menambahkannya, dan setiap catatan memiliki tombol `x` yang menghapusnya. Dengan dua catatan ditambahkan, terminal menggambar panel dengan cara ini:563Banyak panel adalah bidang teks dengan daftar di bawahnya. Contoh di bagian ini adalah panel catatan: Anda mengetik catatan dan menekan Enter untuk menambahkannya, dan setiap catatan memiliki tombol `x` yang menghapusnya. Dengan dua catatan ditambahkan, terminal menggambar panel dengan cara ini:

564 564 

565```text theme={null}565```text theme={null}

566╭──────────────────────────────────────────────────────────╮566╭────────────────────────────────────────────────────────✕─╮

567│ Note: Type a note and press Enter ⏎ add ✕ │567│ Note: Type a note and press Enter ⏎ add │

568│ x buy milk │568│ x buy milk │

569│ x call bob │569│ x call bob │

570╰──────────────────────────────────────────────────────────╯570╰──────────────────────────────────────────────────────────╯

571```571```

572 572 

573`✕` di batas atas adalah tanda milik Claude Code sendiri untuk menutup panel.

574 

573Contoh menggunakan teknik berikut:575Contoh menggunakan teknik berikut:

574 576 

575* **Ambil input yang diketik**: `Input` memanggil `onSubmit(value)` dengan teks bidang saat pengguna menekan Enter, dan `onInput(value)` pada setiap perubahan577* **Ambil input yang diketik**: `Input` memanggil `onSubmit(value)` dengan teks bidang saat pengguna menekan Enter, dan `onInput(value)` pada setiap perubahan

Details

242Untuk menyesuaikan sebuah tree dengan titiknya, baca prop berikut di dalam hook:242Untuk menyesuaikan sebuah tree dengan titiknya, baca prop berikut di dalam hook:

243 243 

244* **Lebar sebuah `Pane` atau band**: gambar sesuai `e.props.bodyColumns`244* **Lebar sebuah `Pane` atau band**: gambar sesuai `e.props.bodyColumns`

245* **Tinggi sebuah `Pane` di samping transkrip**: jika `e.props.placement` adalah `'dock'`, `e.props.scroll.bodyRows` adalah jumlah baris yang dimiliki panel245* **Tinggi sebuah `Pane` di samping transkrip**: jika `e.props.placement` adalah `'dock'`, `e.props.scroll.bodyRows` adalah jumlah baris yang dimiliki panel untuk tree Anda

246* **Tinggi sebuah `Pane` di atas prompt**: jika `e.props.placement` adalah `'inline'`, panel bertambah sesuai tree Anda hingga suatu batas, dan `bodyRows` adalah batas tersebut. [Field `rows` dari `$.ui.open`](/docs/id/plugins/mods/interface#open-a-pane-at-the-right-time) meminta batas yang berbeda.246* **Tinggi sebuah `Pane` di atas prompt**: jika `e.props.placement` adalah `'inline'`, panel bertambah sesuai tree Anda hingga suatu batas, dan `bodyRows` adalah batas tersebut. [Field `rows` dari `$.ui.open`](/docs/id/plugins/mods/interface#open-a-pane-at-the-right-time) meminta batas yang berbeda.

247 247 

248Tree yang lebih tinggi daripada panel akan bergulir secara keseluruhan.248Tree yang lebih tinggi daripada panel akan bergulir secara keseluruhan.


255 255 

256| Elemen | Prop utama | Terminal | Desktop |256| Elemen | Prop utama | Terminal | Desktop |

257| :- | :- | :-: | :-: |257| :- | :- | :-: | :-: |

258| [`Box`](/docs/id/plugins/mods/interface#build-a-tree-from-elements) | `key`, tata letak flex, `gap`, `padding`, `margin`, `width`, `height`, `borderStyle`, `backgroundColor`, `position`, `hover` | ✓ | ✓ |258| [`Box`](/docs/id/plugins/mods/interface#build-a-tree-from-elements) | `key`, tata letak flex, `gap`, `padding`, `margin`, `width`, `height`, [`borderStyle`](#box-border-styles), `backgroundColor`, `position`, `hover` | ✓ | ✓ |

259| [`Text`](/docs/id/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |259| [`Text`](/docs/id/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |

260| [`Button`](/docs/id/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |260| [`Button`](/docs/id/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |

261| `Link` | `href`, `label` | ✓ | ✓ |261| `Link` | `href`, `label` | ✓ | ✓ |


270 270 

271Aturan `Button` lainnya: `action` menyebutkan salah satu [aksi pintasan keyboard](/docs/id/keybindings) milik Claude Code sendiri, dan pintasan keyboard pengguna untuk aksi tersebut akan menekan tombol jika pintasan itu berupa chord atau tombol dengan modifier. `hotkey` berupa digit pada tombol di band juga terpicu saat pengguna mengetik digit tersebut saja ke dalam prompt kosong lalu berhenti sejenak. Jika dua tombol dalam satu gambar menyebutkan `hotkey` yang sama, tombol yang lebih belakang yang mendapatkannya. `autoFocus` hanya menerima `true` pada kontrol apa pun, jadi hilangkan prop tersebut untuk menonaktifkannya.271Aturan `Button` lainnya: `action` menyebutkan salah satu [aksi pintasan keyboard](/docs/id/keybindings) milik Claude Code sendiri, dan pintasan keyboard pengguna untuk aksi tersebut akan menekan tombol jika pintasan itu berupa chord atau tombol dengan modifier. `hotkey` berupa digit pada tombol di band juga terpicu saat pengguna mengetik digit tersebut saja ke dalam prompt kosong lalu berhenti sejenak. Jika dua tombol dalam satu gambar menyebutkan `hotkey` yang sama, tombol yang lebih belakang yang mendapatkannya. `autoFocus` hanya menerima `true` pada kontrol apa pun, jadi hilangkan prop tersebut untuk menonaktifkannya.

272 272 

273<h3 id="box-border-styles">

274 Gaya border `Box`

275</h3>

276 

277Untuk menggambar border di sekeliling `Box`, atur `borderStyle`-nya ke salah satu nama berikut, seperti pada `borderStyle: 'round'`. Setiap baris menjelaskan apa yang digambar terminal untuk nama tersebut dan menunjukkan tepi atas border.

278 

279| `borderStyle` | Yang digambar terminal | Tepi atas |

280| :- | :- | :- |

281| `'single'` | Garis tipis dengan sudut persegi | `┌──┐` |

282| `'double'` | Garis ganda | `╔══╗` |

283| `'round'` | Garis tipis dengan sudut membulat | `╭──╮` |

284| `'bold'` | Garis tebal | `┏━━┓` |

285| `'singleDouble'` | Garis tipis di atas dan bawah, garis ganda di sisi | `╓──╖` |

286| `'doubleSingle'` | Garis ganda di atas dan bawah, garis tipis di sisi | `╒══╕` |

287| `'classic'` | Karakter ASCII `+`, `-`, dan `\|` | `+--+` |

288| `'arrow'` | Panah yang menunjuk ke dalam `Box` | `↘↓↓↙` |

289| `'dashed'` | Garis putus-putus dengan sudut kosong | `╌╌` |

290| `'quote'` | Sebuah bar, `▎`, di sepanjang sisi kiri dan sel kosong di tiga sisi lainnya | Kosong |

291 

292`Box` yang `borderStyle`-nya menyebutkan nama lain, seperti `'rounded'`, digambar tanpa border.

293 

273<h2 id="limits">294<h2 id="limits">

274 Batas295 Batas

275</h2>296</h2>

Details

15<Note>15<Note>

16 Kasus-kasus ini tercakup di halaman lain:16 Kasus-kasus ini tercakup di halaman lain:

17 17 

18 * **Mengapa scopes, cache, dan precedence berperilaku seperti yang mereka lakukan**: baca [Plugin loading reference](/docs/id/plugins/loading)18 * **Mengapa cakupan, cache, dan prioritas berperilaku seperti yang mereka lakukan**: baca [Plugin loading reference](/docs/id/plugins/loading)

19 * **Mencari flag, field, atau command**: gunakan [plugin commands reference](/docs/id/plugins/cli-reference), [manifest reference](/docs/id/plugins/manifest-reference), atau [marketplace reference](/docs/id/plugins/marketplace-reference)19 * **Mencari flag, field, atau perintah**: gunakan [plugin commands reference](/docs/id/plugins/cli-reference), [manifest reference](/docs/id/plugins/manifest-reference), atau [marketplace reference](/docs/id/plugins/marketplace-reference)

20 * **Pesan `hooks module not loaded` atau `hooks module did not load`**: plugin tersebut adalah [mod](/docs/id/plugins/mods/overview), jadi baca [The mod doesn't load](/docs/id/plugins/mods/troubleshoot#the-mod-doesn’t-load)

20</Note>21</Note>

21 22 

22Cari pesan yang tepat yang Anda lihat. Setiap pesan tercantum di bawah tahap yang menghasilkannya, yang tidak selalu merupakan perintah yang Anda jalankan. Misalnya, instalasi dapat gagal karena marketplace hilang, jadi pesan itu berada di bawah [Add a marketplace](#add-a-marketplace).23Cari pesan yang tepat yang Anda lihat. Setiap pesan tercantum di bawah tahap yang menghasilkannya, yang tidak selalu merupakan perintah yang Anda jalankan. Misalnya, instalasi dapat gagal karena marketplace hilang, jadi pesan itu berada di bawah [Add a marketplace](#add-a-marketplace).

Details

328| Main conversation | One hour | Five minutes |328| Main conversation | One hour | Five minutes |

329| Everything else | Five minutes, except the server-controlled helper requests, which get one hour | Five minutes |329| Everything else | Five minutes, except the server-controlled helper requests, which get one hour | Five minutes |

330 330 

331Setelah Anda melampaui batas penggunaan paket Anda dan Claude Code menggunakan [usage credits](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), Anda ditagih untuk penggunaan itu, jadi Claude Code menurunkan percakapan utama ke TTL lima menit yang lebih murah. Untuk menjaga TTL satu jam di sana, [pilih TTL sendiri](#choose-the-ttl-yourself).331Setelah Anda melampaui batas penggunaan paket Anda dan Claude Code menggunakan [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), Anda ditagih untuk penggunaan itu, jadi Claude Code menurunkan percakapan utama ke TTL lima menit, yang menagih penulisan cache dengan tarif lebih rendah. Untuk menjaga TTL satu jam di sana, [pilih TTL sendiri](#choose-the-ttl-yourself).

332 332 

333<h3 id="choose-the-ttl-yourself">333<h3 id="choose-the-ttl-yourself">

334 Pilih TTL sendiri334 Pilih TTL sendiri

Details

1342 },1342 },

1343 "review-your-changes-before": {1343 "review-your-changes-before": {

1344 title: "Tinjau perubahan Anda sebelum Anda melakukan commit",1344 title: "Tinjau perubahan Anda sebelum Anda melakukan commit",

1345 teaches: "Tangkap masalah saat masih murah untuk diperbaiki. Claude membaca file yang diubah sepenuhnya, bukan hanya baris diff, sehingga menemukan masalah yang ditinggalkan tinjauan diri cepat.",1345 teaches: "Tangkap masalah selagi masih lebih mudah untuk diperbaiki. Claude membaca file yang diubah sepenuhnya, bukan hanya baris diff, sehingga menemukan masalah yang ditinggalkan tinjauan diri cepat.",

1346 next: "Jalankan `/code-review` untuk pemeriksaan yang sama dalam satu perintah",1346 next: "Jalankan `/code-review` untuk pemeriksaan yang sama dalam satu perintah",

1347 prompt: "tinjau perubahan saya yang belum di-commit dan tandai apa pun yang terlihat berisiko sebelum saya melakukan commit"1347 prompt: "tinjau perubahan saya yang belum di-commit dan tandai apa pun yang terlihat berisiko sebelum saya melakukan commit"

1348 },1348 },

quickstart.md +76 −110

Details

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

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

4 4 

5# Panduan Cepat5# Mulai Cepat

6 6 

7> Selamat datang di Claude Code!7> Instal Claude Code di terminal Anda, masuk, dan gunakan CLI untuk menjelajahi codebase Anda serta membuat perubahan kode pertama Anda.

8 8 

9Panduan cepat ini akan membuat Anda menggunakan bantuan pengkodean bertenaga AI dalam beberapa menit. Di akhir panduan, Anda akan memahami cara menggunakan Claude Code untuk tugas-tugas pengembangan umum.9Mulai cepat ini membahas Claude Code di terminal Anda: menginstal CLI, masuk dari sesi pertama Anda, dan menggunakannya untuk tugas-tugas pengembangan umum di proyek Anda sendiri.

10 10 

11<h2 id="before-you-begin">11<h2 id="before-you-begin">

12 Sebelum Anda memulai12 Sebelum Anda memulai


15Pastikan Anda memiliki:15Pastikan Anda memiliki:

16 16 

17* Terminal atau command prompt yang terbuka17* Terminal atau command prompt yang terbuka

18 * Jika Anda belum pernah menggunakan terminal sebelumnya, lihat [panduan terminal](/docs/id/terminal-guide)

19* Proyek kode untuk dikerjakan18* Proyek kode untuk dikerjakan

20* [Langganan Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Team, atau Enterprise), akun [Claude Console](https://platform.claude.com/), atau akses melalui [penyedia cloud yang didukung](/docs/id/third-party-integrations)19* [Langganan Claude](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_prereq) (Pro, Max, Team, atau Enterprise), akun [Claude Console](https://platform.claude.com/), atau akses melalui [penyedia cloud yang didukung](/docs/id/third-party-integrations)

21 20 

22<Note>21<Note>

23 Panduan ini mencakup CLI terminal. Claude Code juga tersedia di [web](https://claude.ai/code), sebagai [aplikasi desktop](/docs/id/desktop), di [VS Code](/docs/id/vs-code) dan [IDE JetBrains](/docs/id/jetbrains), di [Slack](/docs/id/slack), dan di CI/CD dengan [GitHub Actions](/docs/id/github-actions) dan [GitLab](/docs/id/gitlab-ci-cd). Lihat [semua antarmuka](/docs/id/overview#use-claude-code-everywhere).22 Kasus-kasus berikut dibahas di halaman lain:

23 

24 * **Belum pernah menggunakan terminal sebelumnya**: mulailah dengan [panduan terminal](/docs/id/terminal-guide)

25 * **Ingin menggunakan Claude Code di tempat selain terminal**: Claude Code juga tersedia di [web](https://claude.ai/code), sebagai [aplikasi desktop](/docs/id/desktop), di [VS Code](/docs/id/vs-code) dan [IDE JetBrains](/docs/id/jetbrains), di [Slack](/docs/id/slack), dan di CI/CD dengan [GitHub Actions](/docs/id/github-actions) dan [GitLab](/docs/id/gitlab-ci-cd). Lihat [semua antarmuka](/docs/id/overview#use-claude-code-everywhere).

24</Note>26</Note>

25 27 

26<h2 id="step-1-install-claude-code">28<h2 id="step-1-install-claude-code">


33 <Tab title="Native Install (Direkomendasikan)">35 <Tab title="Native Install (Direkomendasikan)">

34 **macOS, Linux, WSL:**36 **macOS, Linux, WSL:**

35 37 

36 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}38 ```bash theme={null}

37 curl -fsSL https://claude.ai/install.sh | bash39 curl -fsSL https://claude.ai/install.sh | bash

38 ```40 ```

39 41 

42 Di Windows, prompt Anda menunjukkan `PS C:\` ketika Anda berada di PowerShell dan `C:\` tanpa `PS` ketika Anda berada di CMD.

43 

40 **Windows PowerShell:**44 **Windows PowerShell:**

41 45 

42 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}46 ```powershell theme={null}

43 irm https://claude.ai/install.ps1 | iex47 irm https://claude.ai/install.ps1 | iex

44 ```48 ```

45 49 

46 **Windows CMD:**50 **Windows CMD:**

47 51 

48 ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}52 ```batch theme={null}

49 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd53 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

50 ```54 ```

51 55 

52 Ketika penginstal selesai, buka jendela terminal baru dan jalankan `claude --version`. Instalasi yang berfungsi dengan baik mencetak nomor versi. Jika shell Anda mengatakan `claude` tidak ditemukan atau tidak dikenali, direktori instalasi belum ada di PATH Anda: lihat [Perbaiki PATH Anda](/docs/id/troubleshoot-install#command-not-found-claude-after-installation).56 Ketika penginstal selesai, buka jendela terminal baru dan jalankan `claude --version`. Instalasi yang berfungsi dengan baik mencetak nomor versi. Jika shell Anda mengatakan `claude` tidak ditemukan atau tidak dikenali, direktori instalasi belum ada di PATH Anda: lihat [Perbaiki PATH Anda](/docs/id/troubleshoot-install#command-not-found-claude-after-installation).

53 57 

54 Jika Anda melihat `The token '&&' is not a valid statement separator`, Anda berada di PowerShell, bukan CMD. Jika Anda melihat `'irm' is not recognized as an internal or external command`, Anda berada di CMD, bukan PowerShell. Prompt Anda menunjukkan `PS C:\` ketika Anda berada di PowerShell dan `C:\` tanpa `PS` ketika Anda berada di CMD.58 Jika Anda melihat `The token '&&' is not a valid statement separator`, Anda berada di PowerShell, bukan CMD. Jika Anda melihat `'irm' is not recognized as an internal or external command`, Anda berada di CMD, bukan PowerShell.

55 59 

56 Jika perintah instalasi gagal dengan `syntax error near unexpected token '<'`, `403`, atau kesalahan curl lainnya, lihat [Troubleshoot installation](/docs/id/troubleshoot-install#find-your-error) untuk mencocokkan kesalahan dengan perbaikan dan untuk metode instalasi alternatif.60 Jika perintah instalasi gagal dengan `syntax error near unexpected token '<'`, `403`, atau kesalahan lainnya, lihat [Troubleshoot installation](/docs/id/troubleshoot-install#find-your-error) untuk mencocokkan kesalahan dengan perbaikan dan untuk metode instalasi alternatif.

57 61 

58 [Git for Windows](https://git-scm.com/downloads/win) direkomendasikan pada Windows native sehingga Claude Code dapat menggunakan alat Bash. Jika Git for Windows tidak diinstal, Claude Code menggunakan PowerShell sebagai alat shell sebagai gantinya. Pengaturan WSL tidak memerlukan Git for Windows.62 [Git for Windows](https://git-scm.com/downloads/win) direkomendasikan pada Windows native sehingga Claude Code dapat menggunakan alat Bash. Jika Git for Windows tidak diinstal, Claude Code menggunakan PowerShell sebagai alat shell sebagai gantinya. Pengaturan WSL tidak memerlukan Git for Windows.

59 63 


63 </Tab>67 </Tab>

64 68 

65 <Tab title="Homebrew">69 <Tab title="Homebrew">

66 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}70 ```bash theme={null}

67 brew install --cask claude-code71 brew install --cask claude-code

68 ```72 ```

69 73 


75 </Tab>79 </Tab>

76 80 

77 <Tab title="WinGet">81 <Tab title="WinGet">

78 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}82 ```powershell theme={null}

79 winget install Anthropic.ClaudeCode83 winget install Anthropic.ClaudeCode

80 ```84 ```

81 85 


95 99 

96Perintah ini mencetak nomor versi diikuti oleh `(Claude Code)`.100Perintah ini mencetak nomor versi diikuti oleh `(Claude Code)`.

97 101 

98<h2 id="step-2-log-in-to-your-account">102<h2 id="step-2-start-your-first-session">

99 Langkah 2: Masuk ke akun Anda103 Langkah 2: Mulai sesi pertama Anda

100</h2>104</h2>

101 105 

102Claude Code memerlukan akun untuk digunakan. Mulai sesi interaktif dengan perintah `claude` dan Anda akan diminta untuk masuk pada penggunaan pertama:106Buka terminal Anda di direktori proyek mana pun dan mulai Claude Code:

103 107 

104```bash theme={null}108```bash theme={null}

109cd /path/to/your/project

105claude110claude

106```111```

107 112 

108Untuk akun langganan Claude atau Console, ikuti petunjuk untuk menyelesaikan autentikasi di browser Anda. Jika Anda telah menetapkan variabel lingkungan `ANTHROPIC_API_KEY`, Claude Code melewati prompt login dan meminta Anda untuk menyetujui kunci sebagai gantinya. Untuk beralih akun nanti atau melakukan autentikasi ulang, ketik `/login` di dalam sesi yang sedang berjalan:113Ganti `/path/to/your/project` dengan path ke proyek yang ingin Anda kerjakan.

109 114 

110```text wrap theme={null}115Claude Code meminta Anda untuk masuk pada penggunaan pertama. Untuk akun langganan Claude atau akun Console, ikuti petunjuk untuk menyelesaikan autentikasi di browser Anda. Jika Anda telah mengatur environment variable `ANTHROPIC_API_KEY` dan Anda menyetujui kunci tersebut saat Claude Code menanyakan apakah akan menggunakannya, Claude Code akan melewati permintaan masuk.

111/login

112```

113 116 

114Anda dapat masuk menggunakan salah satu jenis akun ini:117Anda dapat masuk menggunakan salah satu jenis akun berikut:

115 118 

116* [Claude Pro, Max, Team, atau Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (direkomendasikan)119* [Claude Pro, Max, Team, atau Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (direkomendasikan)

117* [Claude Console](https://platform.claude.com/) (akses API dengan kredit prabayar). Pada login pertama, ruang kerja "Claude Code" secara otomatis dibuat di Console untuk pelacakan biaya terpusat.120* [Claude Console](https://platform.claude.com/) (akses API dengan kredit prabayar). Saat pertama kali masuk, workspace "Claude Code" akan dibuat secara otomatis di Console untuk pelacakan biaya terpusat.

118* [Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry](/docs/id/third-party-integrations) (penyedia cloud enterprise)121* [Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry](/docs/id/third-party-integrations) (penyedia cloud enterprise)

119* Gateway [Claude apps](/docs/id/claude-apps-gateway) yang di-host sendiri, jika organisasi Anda menjalankannya: admin Anda telah mengkonfigurasi URL gateway sebelumnya, dan `/login` membuka langsung layar **Cloud gateway** untuk Anda masuk dengan SSO perusahaan122* [Claude apps gateway](/docs/id/claude-apps-gateway) yang di-host sendiri, jika organisasi Anda menjalankannya: admin Anda telah mengonfigurasi URL gateway sebelumnya, dan `/login` langsung terbuka di layar **Cloud gateway** agar Anda dapat masuk dengan SSO perusahaan

120 

121Setelah masuk, kredensial Anda disimpan dan Anda tidak perlu masuk lagi. Pelajari lebih lanjut di [Manajemen Kredensial](/docs/id/authentication#credential-management).

122 

123<h2 id="step-3-start-your-first-session">

124 Langkah 3: Mulai sesi pertama Anda

125</h2>

126 

127Buka terminal Anda di direktori proyek mana pun dan mulai Claude Code:

128 

129```bash theme={null}

130cd /path/to/your/project

131claude

132```

133 123 

134Ganti `/path/to/your/project` dengan jalur ke proyek yang ingin Anda kerjakan.124Setelah masuk, kredensial Anda akan disimpan dan Anda tidak perlu masuk lagi. Pelajari lebih lanjut di [Manajemen Kredensial](/docs/id/authentication#credential-management).

135 125 

136Anda akan melihat prompt Claude Code dengan versi, model saat ini, dan direktori kerja yang ditampilkan di atasnya. Ketik `/help` untuk perintah yang tersedia atau `/resume` untuk melanjutkan percakapan sebelumnya.126Prompt Claude Code akan muncul dengan versi, model saat ini, dan direktori kerja yang ditampilkan di atasnya. Ketik `/help` untuk melihat perintah yang tersedia atau `/resume` untuk melanjutkan percakapan sebelumnya. Untuk beralih akun nanti atau melakukan autentikasi ulang, ketik `/login` di dalam sesi yang sedang berjalan.

137 127 

138<h2 id="step-4-ask-your-first-question">128<h2 id="step-3-ask-your-first-question">

139 Langkah 4: Ajukan pertanyaan pertama Anda129 Langkah 3: Ajukan pertanyaan pertama Anda

140</h2>130</h2>

141 131 

142Mari kita mulai dengan memahami basis kode Anda. Coba salah satu perintah ini:132Coba salah satu perintah berikut:

143 133 

144```text wrap theme={null}134```text wrap theme={null}

145apa yang dilakukan proyek ini?135what does this project do?

146```136```

147 137 

148Claude akan menganalisis file Anda dan memberikan ringkasan. Anda juga dapat mengajukan pertanyaan yang lebih spesifik:138Claude akan menganalisis file Anda dan memberikan ringkasan. Anda juga dapat mengajukan pertanyaan yang lebih spesifik:

149 139 

150```text wrap theme={null}140```text wrap theme={null}

151teknologi apa yang digunakan proyek ini?141what technologies does this project use?

152```142```

153 143 

154```text wrap theme={null}144```text wrap theme={null}

155di mana titik masuk utama?145where is the main entry point?

156```146```

157 147 

158```text wrap theme={null}148```text wrap theme={null}

159jelaskan struktur folder149explain the folder structure

160```150```

161 151 

162Anda juga dapat menanyakan Claude tentang kemampuannya sendiri:152Anda juga dapat bertanya kepada Claude tentang kemampuannya sendiri:

163 153 

164```text wrap theme={null}154```text wrap theme={null}

165apa yang dapat dilakukan Claude Code?155what can Claude Code do?

166```156```

167 157 

168```text wrap theme={null}158```text wrap theme={null}

169bagaimana cara membuat skills kustom di Claude Code?159how do I create custom skills in Claude Code?

170```160```

171 161 

172```text wrap theme={null}162```text wrap theme={null}

173bisakah Claude Code bekerja dengan Docker?163can Claude Code work with Docker?

174```164```

175 165 

176<Note>166<Note>

177 Claude Code membaca file proyek Anda sesuai kebutuhan. Anda tidak perlu menambahkan konteks secara manual.167 Claude Code membaca file proyek Anda sesuai kebutuhan. Anda tidak perlu menambahkan konteks secara manual.

178</Note>168</Note>

179 169 

180<h2 id="step-5-make-your-first-code-change">170<h2 id="step-4-make-your-first-code-change">

181 Langkah 5: Buat perubahan kode pertama Anda171 Langkah 4: Buat perubahan kode pertama Anda

182</h2>172</h2>

183 173 

184Sekarang mari buat Claude Code melakukan beberapa pengkodean aktual. Coba tugas sederhana:174Cobalah tugas kecil:

185 175 

186```text wrap theme={null}176```text wrap theme={null}

187tambahkan fungsi hello world ke file utama177add a hello world function to the main file

188```178```

189 179 

190Claude Code menemukan file yang sesuai dan menampilkan perubahan kepada Anda. Jika diminta sebelum membuat perubahan, pilih **Ya** untuk menyetujui.180Claude Code menemukan file yang sesuai dan menampilkan perubahannya kepada Anda. Jika Claude Code meminta konfirmasi sebelum membuat perubahan, pilih **Yes** untuk menyetujuinya.

191 

192Dengan Claude Code v2.1.283 atau lebih baru, mode auto adalah [mode izin awal bawaan](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) untuk sesi terminal interaktif: pengklasifikasi meninjau tindakan alih-alih Anda, dan Claude mengedit sebagian besar file dan menjalankan sebagian besar perintah tanpa bertanya. Pada versi sebelumnya, mode auto adalah mode izin awal bawaan hanya pada paket Pro, Max, dan Team. Untuk sesi yang Anda mulai tepat setelah instalasi, lihat [Sesi pertama setelah instalasi atau upgrade](/docs/id/env-vars#first-session-after-an-install-or-upgrade).

193 181 

194<Note>182[Mode izin](/docs/id/permission-modes) sesi menentukan tindakan apa saja yang dapat dilakukan Claude tanpa meminta persetujuan Anda terlebih dahulu. Tekan `Shift+Tab` kapan saja untuk mengganti mode izin sesi yang sedang Anda gunakan.

195 Pengaturan Anda atau organisasi Anda dapat menetapkan mode izin awal yang berbeda. [Mode izin mana yang dimulai sesi](/docs/id/permission-modes#which-mode-a-session-starts-in) mencantumkan apa yang dilakukan. Tekan `Shift+Tab` kapan saja untuk beralih mode izin sesi yang Anda gunakan.

196</Note>

197 183 

198<h2 id="step-6-use-git-with-claude-code">184<h2 id="step-5-use-git-with-claude-code">

199 Langkah 6: Gunakan Git dengan Claude Code185 Langkah 5: Gunakan Git dengan Claude Code

200</h2>186</h2>

201 187 

202Claude Code membuat operasi Git menjadi percakapan:188Claude Code membuat operasi Git menjadi seperti percakapan:

203 189 

204```text wrap theme={null}190```text wrap theme={null}

205file apa yang telah saya ubah?191what files have I changed?

206```192```

207 193 

208```text wrap theme={null}194```text wrap theme={null}

209komit perubahan saya dengan pesan deskriptif195commit my changes with a descriptive message

210```196```

211 197 

212Anda juga dapat meminta operasi Git yang lebih kompleks:198Anda juga dapat memberikan prompt untuk operasi Git yang lebih kompleks:

213 199 

214```text wrap theme={null}200```text wrap theme={null}

215buat cabang baru bernama feature/quickstart201create a new branch called feature/quickstart

216```202```

217 203 

218```text wrap theme={null}204```text wrap theme={null}

219tunjukkan 5 komit terakhir saya205show me the last 5 commits

220```206```

221 207 

222```text wrap theme={null}208```text wrap theme={null}

223bantu saya menyelesaikan konflik penggabungan209help me resolve merge conflicts

224```210```

225 211 

226<h2 id="step-7-fix-a-bug-or-add-a-feature">212<h2 id="step-6-fix-a-bug-or-add-a-feature">

227 Langkah 7: Perbaiki bug atau tambahkan fitur213 Langkah 6: Perbaiki bug atau tambahkan fitur

228</h2>214</h2>

229 215 

230Claude mahir dalam debugging dan implementasi fitur.

231 

232Jelaskan apa yang Anda inginkan dalam bahasa alami:216Jelaskan apa yang Anda inginkan dalam bahasa alami:

233 217 

234```text wrap theme={null}218```text wrap theme={null}

235tambahkan validasi input ke formulir pendaftaran pengguna219add input validation to the user registration form

236```220```

237 221 

238Atau perbaiki masalah yang ada:222Atau perbaiki masalah yang sudah ada:

239 223 

240```text wrap theme={null}224```text wrap theme={null}

241ada bug di mana pengguna dapat mengirimkan formulir kosong - perbaiki225there's a bug where users can submit empty forms - fix it

242```226```

243 227 

244Claude Code akan:228<h2 id="step-7-test-out-other-common-workflows">

245 229 Langkah 7: Coba alur kerja umum lainnya

246* Menemukan kode yang relevan

247* Memahami konteksnya

248* Menerapkan solusi

249* Menjalankan tes jika tersedia

250 

251<h2 id="step-8-test-out-other-common-workflows">

252 Langkah 8: Coba alur kerja umum lainnya

253</h2>230</h2>

254 231 

255Ada beberapa cara untuk bekerja dengan Claude:232Ada sejumlah cara untuk bekerja dengan Claude:

256 233 

257**Refaktor kode**234**Refaktor kode**

258 235 

259```text wrap theme={null}236```text wrap theme={null}

260refaktor modul autentikasi untuk menggunakan async/await alih-alih callback237refactor the authentication module to use async/await instead of callbacks

261```238```

262 239 

263**Tulis tes**240**Tulis pengujian**

264 241 

265```text wrap theme={null}242```text wrap theme={null}

266tulis unit test untuk fungsi kalkulator243write unit tests for the calculator functions

267```244```

268 245 

269**Perbarui dokumentasi**246**Perbarui dokumentasi**

270 247 

271```text wrap theme={null}248```text wrap theme={null}

272perbarui README dengan instruksi instalasi249update the README with installation instructions

273```250```

274 251 

275**Tinjauan kode**252**Code review**

276 253 

277```text wrap theme={null}254```text wrap theme={null}

278tinjau perubahan saya dan sarankan perbaikan255review my changes and suggest improvements

279```256```

280 257 

281<Tip>258<Tip>

282 Berbicara dengan Claude seperti Anda berbicara dengan rekan kerja yang membantu. Jelaskan apa yang ingin Anda capai, dan Claude akan membantu Anda mencapainya.259 Berbicaralah dengan Claude seperti Anda berbicara dengan rekan kerja yang suka membantu. Jelaskan apa yang ingin Anda capai, dan Claude akan membantu Anda mencapainya.

283</Tip>260</Tip>

284 261 

285<h2 id="essential-commands">262<h2 id="essential-commands">


355 Apa selanjutnya?332 Apa selanjutnya?

356</h2>333</h2>

357 334 

358Sekarang yang Anda telah mempelajari dasar-dasarnya, jelajahi fitur-fitur yang lebih canggih:335Sekarang setelah Anda mempelajari dasar-dasarnya, jelajahi fitur-fitur yang lebih canggih:

359 

360<CardGroup cols={2}>

361 <Card title="Cara kerja Claude Code" icon="microchip" href="/docs/id/how-claude-code-works">

362 Pahami loop agentic, alat bawaan, dan cara Claude Code berinteraksi dengan proyek Anda

363 </Card>

364 

365 <Card title="Praktik terbaik" icon="star" href="/docs/id/best-practices">

366 Dapatkan hasil yang lebih baik dengan prompting yang efektif dan pengaturan proyek

367 </Card>

368 336 

369 <Card title="Alur kerja umum" icon="graduation-cap" href="/docs/id/common-workflows">337* [Cara kerja Claude Code](/docs/id/how-claude-code-works): pahami agentic loop, tool bawaan, dan cara Claude Code berinteraksi dengan proyek Anda

370 Panduan langkah demi langkah untuk tugas-tugas umum338* [Praktik terbaik](/docs/id/best-practices): dapatkan hasil yang lebih baik dengan prompting yang efektif dan pengaturan proyek

371 </Card>339* [Alur kerja umum](/docs/id/common-workflows): panduan langkah demi langkah untuk tugas-tugas umum

340* [Perluas Claude Code](/docs/id/features-overview): sesuaikan dengan CLAUDE.md, skills, hooks, MCP, dan lainnya

372 341 

373 <Card title="Perluas Claude Code" icon="puzzle-piece" href="/docs/id/features-overview">342Lihat [pengaturan lanjutan](/docs/id/setup) untuk opsi instalasi, pembaruan manual, atau petunjuk pencopotan instalasi.

374 Sesuaikan dengan CLAUDE.md, skills, hooks, MCP, dan lainnya

375 </Card>

376</CardGroup>

377 343 

378<h2 id="getting-help">344<h2 id="getting-help">

379 Mendapatkan bantuan345 Mendapatkan bantuan

380</h2>346</h2>

381 347 

382* **Di Claude Code**: Ketik `/help` atau tanya "bagaimana cara saya..."348* **Di Claude Code**: Ketik `/help` atau ajukan pertanyaan "bagaimana cara saya..."

383* **Dokumentasi**: Anda di sini! Jelajahi panduan lainnya349* **Dokumentasi**: Jelajahi panduan lainnya di situs ini

384* **Kursus**: Ikuti [Claude Code 101](https://academy.claude.com/courses/claude-code-101) dan kursus gratis lainnya yang dapat Anda ikuti sendiri di [Claude Academy](https://academy.claude.com/)350* **Kursus**: Ikuti [Claude Code 101](https://academy.claude.com/courses/claude-code-101) dan kursus gratis lainnya yang dapat Anda ikuti sendiri di [Claude Academy](https://academy.claude.com/)

385* **Komunitas**: Bergabunglah dengan [server Discord](https://www.anthropic.com/discord) untuk tips dan dukungan351* **Komunitas**: Bergabunglah dengan [server Discord](https://www.anthropic.com/discord) untuk tips dan dukungan

Details

365</h2>365</h2>

366 366 

367* **Satu sesi jarak jauh per proses interaktif**: di luar server mode, setiap instans Claude Code mendukung satu sesi jarak jauh pada satu waktu. Gunakan [server mode](#start-a-remote-control-session) untuk menjalankan beberapa sesi bersamaan dari satu proses.367* **Satu sesi jarak jauh per proses interaktif**: di luar server mode, setiap instans Claude Code mendukung satu sesi jarak jauh pada satu waktu. Gunakan [server mode](#start-a-remote-control-session) untuk menjalankan beberapa sesi bersamaan dari satu proses.

368* **Proses lokal harus tetap berjalan**: Remote Control berjalan sebagai proses lokal. Jika Anda menutup terminal, keluar dari Desktop app atau VS Code, atau menghentikan proses `claude` dengan cara lain, sesi akan offline sampai Anda [membawanya kembali](#resume-sessions-after-stopping-the-server). Untuk menjaga sesi tetap berjalan di mesin jarak jauh setelah Anda memutuskan SSH, mulai di dalam `tmux` atau `screen`.368* **Proses lokal harus tetap berjalan**: Remote Control berjalan sebagai proses lokal. Jika Anda menutup terminal, keluar dari Desktop app atau VS Code, atau menghentikan proses `claude` dengan cara lain, sesi akan offline sampai Anda [membawanya kembali](#resume-sessions-after-stopping-the-server). Jika Anda menjalankan `claude` dari terminal di mesin jarak jauh, mulai di dalam `tmux` atau `screen` agar sesi tetap berjalan setelah Anda memutuskan sambungan SSH.

369* **Sesi yang mogok dalam server mode**: jika sesi yang dilayani oleh `claude remote-control` mogok, kirimkan pesan kepadanya dari perangkat yang terhubung. Claude Code melayaninya lagi. Anda tidak perlu memulai ulang server. Memerlukan Claude Code v2.1.238 atau lebih baru.369* **Sesi yang mogok dalam server mode**: jika sesi yang dilayani oleh `claude remote-control` mogok, kirimkan pesan kepadanya dari perangkat yang terhubung. Claude Code melayaninya lagi. Anda tidak perlu memulai ulang server. Memerlukan Claude Code v2.1.238 atau lebih baru.

370* **Penolakan HTTP 403 pada sesi yang terhubung**: setelah sesi interaktif terhubung, Claude Code terus mencoba ulang hingga tiga menit ketika sesuatu antara mesin Anda dan server Anthropic menjawab dengan HTTP 403, yang dapat terjadi setelah perubahan VPN atau jaringan. Jika penolakan berlangsung lebih lama, Claude Code memutuskan sambungan, dan alasannya menunjukkan apa yang menolak: tepi jaringan, atau proxy, VPN, atau firewall di jaringan Anda sendiri.370* **Penolakan HTTP 403 pada sesi yang terhubung**: setelah sesi interaktif terhubung, Claude Code terus mencoba ulang hingga tiga menit ketika sesuatu antara mesin Anda dan server Anthropic menjawab dengan HTTP 403, yang dapat terjadi setelah perubahan VPN atau jaringan. Jika penolakan berlangsung lebih lama, Claude Code memutuskan sambungan, dan alasannya menunjukkan apa yang menolak: tepi jaringan, atau proxy, VPN, atau firewall di jaringan Anda sendiri.

371* **Pemadaman jaringan yang berkepanjangan**: jika mesin Anda aktif tetapi tidak dapat menjangkau jaringan, apa yang Anda lakukan selanjutnya tergantung pada mode:371* **Pemadaman jaringan yang berkepanjangan**: jika mesin Anda aktif tetapi tidak dapat menjangkau jaringan, apa yang Anda lakukan selanjutnya tergantung pada mode:

routines.md +1 −1

Details

93 Pilih [lingkungan cloud](/docs/id/cloud-environments) untuk rutinitas. Lingkungan mengontrol apa yang dapat diakses sesi cloud:93 Pilih [lingkungan cloud](/docs/id/cloud-environments) untuk rutinitas. Lingkungan mengontrol apa yang dapat diakses sesi cloud:

94 94 

95 * **Network access**: atur tingkat akses internet yang tersedia selama setiap jalankan95 * **Network access**: atur tingkat akses internet yang tersedia selama setiap jalankan

96 * **Environment variables**: sediakan nilai yang dapat digunakan Claude selama setiap jalankan. Mereka [terlihat oleh siapa pun yang menggunakan lingkungan](/docs/id/cloud-environments#what-carries-over-from-your-setup), jadi pada paket Pro dan Max, simpan kunci untuk API yang Claude panggil selama jalankan sebagai [API credentials](/docs/id/cloud-environments#add-api-credentials) sebagai gantinya. Bagian itu juga mencantumkan permintaan yang tidak pernah mendapatkan kredensial96 * **Environment variables**: sediakan nilai yang dapat digunakan Claude selama setiap run. Nilai tersebut [terlihat oleh siapa pun yang menggunakan lingkungan](/docs/id/cloud-environments#what-carries-over-from-your-setup), jadi pada paket Pro dan Max, simpan kunci untuk API yang dipanggil Claude selama run sebagai [network secrets](/docs/id/cloud-environments#add-api-credentials) sebagai gantinya. Bagian itu juga mencantumkan permintaan yang tidak pernah mendapatkan secret

97 * **Setup script**: instal dependensi dan alat yang dibutuhkan rutinitas. Hasilnya [di-cache](/docs/id/cloud-environments#environment-caching), jadi skrip tidak berjalan ulang pada setiap sesi97 * **Setup script**: instal dependensi dan alat yang dibutuhkan rutinitas. Hasilnya [di-cache](/docs/id/cloud-environments#environment-caching), jadi skrip tidak berjalan ulang pada setiap sesi

98 98 

99 Lingkungan **Default** disediakan dengan akses jaringan **Trusted**, yang memungkinkan hanya [daftar allowlist default](/docs/id/cloud-environments#default-allowed-domains) registri paket, API penyedia cloud, registri kontainer, dan domain pengembangan umum melalui jaringan sesi. Konektor yang Anda tambahkan ke rutinitas menjangkau layanan mereka melalui server Anthropic, jadi mereka tidak memerlukan perubahan allowlist. Jika rutinitas Anda perlu menjangkau layanan Anda sendiri secara langsung, atau domain di luar daftar itu, edit [akses jaringan](/docs/id/cloud-environments#network-access) lingkungan sebelum menjalankan. Untuk menggunakan lingkungan terpisah, [buat satu](/docs/id/cloud-environments#configure-your-environment) terlebih dahulu.99 Lingkungan **Default** disediakan dengan akses jaringan **Trusted**, yang memungkinkan hanya [daftar allowlist default](/docs/id/cloud-environments#default-allowed-domains) registri paket, API penyedia cloud, registri kontainer, dan domain pengembangan umum melalui jaringan sesi. Konektor yang Anda tambahkan ke rutinitas menjangkau layanan mereka melalui server Anthropic, jadi mereka tidak memerlukan perubahan allowlist. Jika rutinitas Anda perlu menjangkau layanan Anda sendiri secara langsung, atau domain di luar daftar itu, edit [akses jaringan](/docs/id/cloud-environments#network-access) lingkungan sebelum menjalankan. Untuk menggunakan lingkungan terpisah, [buat satu](/docs/id/cloud-environments#configure-your-environment) terlebih dahulu.

Details

103 Skrip contoh103 Skrip contoh

104</h2>104</h2>

105 105 

106Skrip di bawah menjalankan loop lengkap terhadap `$CLAUDE_TEST_ENVIRONMENT_ID`, ID `ccpool_...` lingkungan uji Anda, ditampilkan dalam dialog detail lingkungan pada halaman admin atau dikembalikan oleh [panggilan create-environment](#create-a-dedicated-test-environment), dan menegaskan pada frasa sentinel di setiap balasan. Jalankan dari checkout git repositori yang ingin dikerjakan sesi, setelah memulai runner pada host ini dengan hook capture terinstal dan `E2E_REPLY_DIR` diekspor.106Skrip di bawah menjalankan loop lengkap terhadap `$CLAUDE_TEST_ENVIRONMENT_ID`, ID `ccpool_...` lingkungan uji Anda, ditampilkan dalam dialog detail lingkungan pada halaman admin atau dikembalikan oleh [panggilan create-environment](#create-a-dedicated-test-environment), dan menegaskan pada frasa sentinel di setiap balasan. Jalankan dari checkout git repositori yang ingin dikerjakan sesi, setelah memulai runner pada host ini dengan hook capture terinstal dan `E2E_REPLY_DIR` diekspor. Pertama, masuk dengan akun claude.ai pada mesin yang menjalankan skrip, seperti yang dijelaskan dalam [Autentikasi dari CI](#authenticate-from-ci). Tanpa proses masuk tersebut, dispatch pertama gagal dengan error seperti `Unable to get organization UUID for cloud session creation`.

107 107 

108```bash theme={null}108```bash theme={null}

109#!/usr/bin/env bash109#!/usr/bin/env bash

Details

43 <Step title="Buka konsol admin">43 <Step title="Buka konsol admin">

44 Di konsol claude.ai, buka [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code).44 Di konsol claude.ai, buka [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code).

45 45 

46 Jika tautan mengarahkan ulang Anda ke halaman Organization settings yang berbeda alih-alih halaman Claude Code, akun Anda tidak memiliki peran yang diperlukan. Peran Admin dan peran non-Owner lainnya tidak dapat melihat atau mengedit pengaturan terkelola, jadi minta Owner atau Primary Owner di organisasi Anda untuk membuat perubahan. Lihat [Kontrol akses](#access-control).46 Dalam organisasi Team atau Enterprise, jika halaman menyatakan bahwa Anda tidak memiliki akses, minta [Owner atau Primary Owner](#access-control) untuk membuat perubahan.

47 </Step>47 </Step>

48 48 

49 <Step title="Tentukan pengaturan Anda">49 <Step title="Tentukan pengaturan Anda">

sessions.md +3 −3

Details

83* Terminal: `claude --continue`, `claude --resume <session-id>`, atau `claude --resume <name>` ketika nama cocok dengan satu sesi, tanpa `-p`. Claude Code memulihkan mode izin yang ada di sesi, kecuali dalam kasus di tabel. Teruskan `--permission-mode` atau `--dangerously-skip-permissions` untuk mengganti mode yang dipulihkan.83* Terminal: `claude --continue`, `claude --resume <session-id>`, atau `claude --resume <name>` ketika nama cocok dengan satu sesi, tanpa `-p`. Claude Code memulihkan mode izin yang ada di sesi, kecuali dalam kasus di tabel. Teruskan `--permission-mode` atau `--dangerously-skip-permissions` untuk mengganti mode yang dipulihkan.

84* Non-interaktif: `claude -p --resume` atau `claude -p --continue`. Claude Code memulai jalankan dalam mode izin yang akan dimulai oleh jalankan `claude -p` baru, kecuali sesi yang berakhir dalam mode rencana dilanjutkan dalam mode rencana di bawah [kondisi di bawah](#resume-in-plan-mode-with-p).84* Non-interaktif: `claude -p --resume` atau `claude -p --continue`. Claude Code memulai jalankan dalam mode izin yang akan dimulai oleh jalankan `claude -p` baru, kecuali sesi yang berakhir dalam mode rencana dilanjutkan dalam mode rencana di bawah [kondisi di bawah](#resume-in-plan-mode-with-p).

85* VS Code: panel percakapan ekstensi. Tabel hanya mencakup percakapan yang berakhir dalam mode rencana; untuk sisanya, lihat [lanjutkan percakapan masa lalu](/docs/id/vs-code#resume-past-conversations).85* VS Code: panel percakapan ekstensi. Tabel hanya mencakup percakapan yang berakhir dalam mode rencana; untuk sisanya, lihat [lanjutkan percakapan masa lalu](/docs/id/vs-code#resume-past-conversations).

86* Pemilih sesi saat peluncuran: sesi yang Anda pilih dari [pemilih sesi](#use-the-session-picker), apakah Anda membukanya dengan `claude --resume` saja, `claude --from-pr`, atau nama yang cocok dengan lebih dari satu sesi. Claude Code tidak memulihkan mode izin yang disimpan. Ini memulai sesi dalam mode izin yang akan dimulai oleh sesi baru dari baris perintah yang sama.86* Pemilih sesi saat peluncuran: sesi yang Anda pilih dari [pemilih sesi](#use-the-session-picker), apakah Anda membukanya dengan `claude --resume` saja, `claude --from-pr`, atau nama yang cocok dengan lebih dari satu sesi. Claude Code memulai sesi dalam mode izin yang akan dimulai oleh sesi baru dari baris perintah yang sama, kecuali sesi yang berakhir dalam plan mode dilanjutkan dalam plan mode kecuali Anda meneruskan `--permission-mode`, `--dangerously-skip-permissions`, atau `--fork-session`. Tidak ada mode izin tersimpan lain yang dipulihkan.

87* `/resume` di dalam sesi, dengan atau tanpa argumen: Claude Code tidak memulihkan mode izin yang disimpan. Percakapan yang Anda alihkan berlanjut dalam mode izin yang ada di sesi saat ini.87* `/resume` di dalam sesi, dengan atau tanpa argumen: percakapan yang Anda alihkan berlanjut dalam mode izin yang ada di sesi saat ini, kecuali percakapan yang berakhir dalam plan mode dilanjutkan dalam plan mode, bahkan jika Anda meluncurkan Claude Code dengan `--permission-mode` atau `--dangerously-skip-permissions`. Jika percakapan tersebut sudah dibuka sebelumnya dalam jalankan Claude Code ini, seperti percakapan tempat Anda memulai atau percakapan yang Anda tinggalkan dengan `/clear` atau `/resume`, percakapan tersebut berlanjut dalam mode izin Anda saat ini sebagai gantinya.

88 88 

89Memulihkan mode rencana pada jalur non-interaktif dan VS Code memerlukan Claude Code v2.1.246 atau lebih baru. Setiap baris menyebutkan mode izin yang diakhiri sesi, jalur terminal, non-interaktif, dan VS Code mana yang Anda lanjutkan, dan mode izin yang dimulai Claude Code dalam sesi yang dilanjutkan.89Memulihkan mode rencana pada jalur non-interaktif dan VS Code memerlukan Claude Code v2.1.246 atau lebih baru. Setiap baris menyebutkan mode izin yang diakhiri sesi, jalur terminal, non-interaktif, dan VS Code mana yang Anda lanjutkan, dan mode izin yang dimulai Claude Code dalam sesi yang dilanjutkan.

90 90 

91| Sesi berakhir dalam | Cara Anda melanjutkan | Mode izin setelah Anda melanjutkan |91| Sesi berakhir dalam | Cara Anda melanjutkan | Mode izin setelah Anda melanjutkan |

92| :- | :- | :- |92| :- | :- | :- |

93| `bypassPermissions` | Terminal | Mode izin yang akan dimulai oleh sesi baru. Untuk [melewati izin](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) lagi, aktifkan saat peluncuran dengan salah satu bendera peluncurannya atau `permissions.defaultMode: "bypassPermissions"` dalam [pengaturan pengguna, `--settings`, atau terkelola](/docs/id/settings-reference#permissions-defaultmode) |93| `bypassPermissions` | Terminal | Mode izin yang akan dimulai oleh sesi baru. Untuk [melewati izin](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) lagi, aktifkan saat peluncuran dengan salah satu bendera peluncurannya atau `permissions.defaultMode: "bypassPermissions"` dalam [pengaturan pengguna, `--settings`, atau terkelola](/docs/id/settings-reference#permissions-defaultmode) |

94| `plan` | Terminal | Mode izin yang akan dimulai oleh sesi baru |94| `plan` | Terminal | Plan mode. Dengan `--fork-session`, mode izin yang akan dimulai oleh sesi baru |

95| `auto` | Terminal | `auto`, hanya ketika akun Anda masih memenuhi [persyaratan mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) |95| `auto` | Terminal | `auto`, hanya ketika akun Anda masih memenuhi [persyaratan mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) |

96| Manual | Terminal | Manual ketika sesi baru akan dimulai dalam mode otomatis dari [default bawaan](/docs/id/permission-modes#which-mode-a-session-starts-in). Ketika `defaultMode` dari file pengaturan [berlaku](/docs/id/permission-modes#which-mode-a-session-starts-in), Claude Code memulai sesi yang dilanjutkan dalam mode tersebut |96| Manual | Terminal | Manual ketika sesi baru akan dimulai dalam mode otomatis dari [default bawaan](/docs/id/permission-modes#which-mode-a-session-starts-in). Ketika `defaultMode` dari file pengaturan [berlaku](/docs/id/permission-modes#which-mode-a-session-starts-in), Claude Code memulai sesi yang dilanjutkan dalam mode tersebut |

97| `plan` | Non-interaktif, di bawah [kondisi di bawah](#resume-in-plan-mode-with-p) | Mode rencana |97| `plan` | Non-interaktif, di bawah [kondisi di bawah](#resume-in-plan-mode-with-p) | Mode rencana |

setup.md +5 −3

Details

49 curl -fsSL https://claude.ai/install.sh | bash49 curl -fsSL https://claude.ai/install.sh | bash

50 ```50 ```

51 51 

52 Di Windows, prompt Anda menunjukkan `PS C:\` ketika Anda berada di PowerShell dan `C:\` tanpa `PS` ketika Anda berada di CMD.

53 

52 **Windows PowerShell:**54 **Windows PowerShell:**

53 55 

54 ```powershell theme={null}56 ```powershell theme={null}


63 65 

64 Ketika penginstal selesai, buka jendela terminal baru dan jalankan `claude --version`. Instalasi yang berfungsi dengan baik mencetak nomor versi. Jika shell Anda mengatakan `claude` tidak ditemukan atau tidak dikenali, direktori instalasi belum ada di PATH Anda: lihat [Perbaiki PATH Anda](/docs/id/troubleshoot-install#command-not-found-claude-after-installation).66 Ketika penginstal selesai, buka jendela terminal baru dan jalankan `claude --version`. Instalasi yang berfungsi dengan baik mencetak nomor versi. Jika shell Anda mengatakan `claude` tidak ditemukan atau tidak dikenali, direktori instalasi belum ada di PATH Anda: lihat [Perbaiki PATH Anda](/docs/id/troubleshoot-install#command-not-found-claude-after-installation).

65 67 

66 Jika Anda melihat `The token '&&' is not a valid statement separator`, Anda berada di PowerShell, bukan CMD. Jika Anda melihat `'irm' is not recognized as an internal or external command`, Anda berada di CMD, bukan PowerShell. Prompt Anda menunjukkan `PS C:\` ketika Anda berada di PowerShell dan `C:\` tanpa `PS` ketika Anda berada di CMD.68 Jika Anda melihat `The token '&&' is not a valid statement separator`, Anda berada di PowerShell, bukan CMD. Jika Anda melihat `'irm' is not recognized as an internal or external command`, Anda berada di CMD, bukan PowerShell.

67 69 

68 Jika perintah instalasi gagal dengan `syntax error near unexpected token '<'`, `403`, atau kesalahan curl lainnya, lihat [Troubleshoot installation](/docs/id/troubleshoot-install#find-your-error) untuk mencocokkan kesalahan dengan perbaikan dan untuk metode instalasi alternatif.70 Jika perintah instalasi gagal dengan `syntax error near unexpected token '<'`, `403`, atau kesalahan lainnya, lihat [Troubleshoot installation](/docs/id/troubleshoot-install#find-your-error) untuk mencocokkan kesalahan dengan perbaikan dan untuk metode instalasi alternatif.

69 71 

70 [Git for Windows](https://git-scm.com/downloads/win) direkomendasikan pada Windows native sehingga Claude Code dapat menggunakan alat Bash. Jika Git for Windows tidak diinstal, Claude Code menggunakan PowerShell sebagai alat shell sebagai gantinya. Pengaturan WSL tidak memerlukan Git for Windows.72 [Git for Windows](https://git-scm.com/downloads/win) direkomendasikan pada Windows native sehingga Claude Code dapat menggunakan alat Bash. Jika Git for Windows tidak diinstal, Claude Code menggunakan PowerShell sebagai alat shell sebagai gantinya. Pengaturan WSL tidak memerlukan Git for Windows.

71 73 


204 206 

205Claude Code memerlukan akun Pro, Max, Team, Enterprise, atau Console. Paket Claude.ai gratis tidak termasuk akses Claude Code. Anda juga dapat menggunakan Claude Code dengan penyedia API pihak ketiga seperti [Amazon Bedrock](/docs/id/amazon-bedrock), [Google Cloud's Agent Platform](/docs/id/google-vertex-ai), atau [Microsoft Foundry](/docs/id/microsoft-foundry).207Claude Code memerlukan akun Pro, Max, Team, Enterprise, atau Console. Paket Claude.ai gratis tidak termasuk akses Claude Code. Anda juga dapat menggunakan Claude Code dengan penyedia API pihak ketiga seperti [Amazon Bedrock](/docs/id/amazon-bedrock), [Google Cloud's Agent Platform](/docs/id/google-vertex-ai), atau [Microsoft Foundry](/docs/id/microsoft-foundry).

206 208 

207Setelah menginstal, masuk dengan menjalankan `claude` dan mengikuti petunjuk browser. Jika variabel lingkungan `ANTHROPIC_API_KEY` diatur, Claude Code meminta Anda sekali untuk menyetujui kunci alih-alih membuka browser. Lihat [Autentikasi](/docs/id/authentication) untuk semua jenis akun dan opsi pengaturan tim.209Setelah menginstal, masuk dengan menjalankan `claude` dan mengikuti petunjuk browser. Jika Anda telah mengatur environment variable `ANTHROPIC_API_KEY` dan Anda menyetujui kunci tersebut saat Claude Code menanyakan apakah akan menggunakannya, Claude Code akan melewati permintaan login. Lihat [Autentikasi](/docs/id/authentication) untuk semua jenis akun dan opsi pengaturan tim.

208 210 

209<h2 id="update-claude-code">211<h2 id="update-claude-code">

210 Perbarui Claude Code212 Perbarui Claude Code

sub-agents.md +3 −3

Details

310 310 

311| Field | Diperlukan | Deskripsi |311| Field | Diperlukan | Deskripsi |

312| :- | :- | :- |312| :- | :- | :- |

313| `name` | Ya | Pengenal unik, seperti `code-reviewer` atau `reviewer-v2`. [Hooks](/docs/id/hooks#subagentstart) menerima nilai ini sebagai `agent_type`. Nama file tidak harus cocok. Nama tidak dapat berisi `:`, yang dicadangkan untuk [plugin-scoped identifiers](/docs/id/plugins/overview) seperti `my-plugin:reviewer`. Claude Code tidak memuat file yang nama-nya berisi satu dan mencatat kesalahan ke debug log. Sebelum v2.1.218, nama seperti itu diterima |313| `name` | Ya | Pengenal unik dengan paling banyak 256 karakter, seperti `code-reviewer` atau `reviewer-v2`. [Hooks](/docs/id/hooks#subagentstart) menerima nilai ini sebagai `agent_type`. Nama file tidak harus cocok. Nama tidak dapat berisi `:`, yang dicadangkan untuk [plugin-scoped identifiers](/docs/id/plugins/overview) seperti `my-plugin:reviewer` |

314| `description` | Ya | Kapan Claude harus mendelegasikan ke subagent ini |314| `description` | Ya | Kapan Claude harus mendelegasikan ke subagent ini |

315| `tools` | Tidak | [Tools](#available-tools) yang dapat digunakan subagent, sebagai string yang dipisahkan koma seperti `Read, Grep, Bash` atau daftar YAML. Mewarisi setiap tool yang tersedia untuk subagent jika dihilangkan. Jika tidak ada entri dalam daftar yang diselesaikan ke tool, subagent biasanya [gagal diluncurkan](/docs/id/errors#agent-would-be-spawned-with-zero-tools) dengan kesalahan yang menamai entri. Untuk memuat Skills ke dalam konteks, gunakan field `skills` daripada mencantumkan `Skill` di sini |315| `tools` | Tidak | [Tools](#available-tools) yang dapat digunakan subagent, sebagai string yang dipisahkan koma seperti `Read, Grep, Bash` atau daftar YAML. Mewarisi setiap tool yang tersedia untuk subagent jika dihilangkan. Jika tidak ada entri dalam daftar yang diselesaikan ke tool, subagent biasanya [gagal diluncurkan](/docs/id/errors#agent-would-be-spawned-with-zero-tools) dengan kesalahan yang menamai entri. Untuk memuat Skills ke dalam konteks, gunakan field `skills` daripada mencantumkan `Skill` di sini |

316| `disallowedTools` | Tidak | Tools untuk ditolak, dihapus dari daftar yang diwarisi atau ditentukan. Format yang sama seperti `tools`. Entri dengan specifier, seperti `Bash(git push *)`, masih [menghapus seluruh tool](#available-tools) |316| `disallowedTools` | Tidak | Tools untuk ditolak, dihapus dari daftar yang diwarisi atau ditentukan. Format yang sama seperti `tools`. Entri dengan specifier, seperti `Bash(git push *)`, masih [menghapus seluruh tool](#available-tools) |


348 348 

349* **Tidak ada `name`**: Claude Code memperlakukan file sebagai dokumentasi yang disimpan di samping agent Anda.349* **Tidak ada `name`**: Claude Code memperlakukan file sebagai dokumentasi yang disimpan di samping agent Anda.

350* **`---` pembuka yang bukan baris pertama file**: Claude Code membaca file sebagai tidak memiliki frontmatter dan memperlakukannya sebagai dokumentasi.350* **`---` pembuka yang bukan baris pertama file**: Claude Code membaca file sebagai tidak memiliki frontmatter dan memperlakukannya sebagai dokumentasi.

351* **`name` yang dimulai dengan `-` atau berisi `:`**: Claude Code melewati file dan menulis kesalahan ke debug log. Lihat baris `name` dalam tabel di atas.351* **`name` yang dimulai dengan `-`, berisi `:`, atau lebih panjang dari 256 karakter**: Claude Code melewati file dan menulis kesalahan ke debug log.

352* **`name` tetapi tidak ada `description`**: Claude Code melewati file dan menulis alasannya ke debug log.352* **`name` tetapi tidak ada `description`**: Claude Code melewati file dan menulis alasannya ke debug log.

353* **YAML yang tidak diuraikan**: Claude Code tidak membaca field dari file, melewatinya, dan menulis kesalahan penguraian ke debug log.353* **YAML yang tidak diuraikan**: Claude Code tidak membaca field dari file, melewatinya, dan menulis kesalahan penguraian ke debug log.

354 354 


1279| Izin | Prompt muncul di terminal Anda | [Prompt muncul di sesi utama Anda](#run-subagents-in-foreground-or-background) saat berjalan di latar belakang |1279| Izin | Prompt muncul di terminal Anda | [Prompt muncul di sesi utama Anda](#run-subagents-in-foreground-or-background) saat berjalan di latar belakang |

1280| Prompt cache | Dibagikan dengan sesi utama | Cache terpisah |1280| Prompt cache | Dibagikan dengan sesi utama | Cache terpisah |

1281 1281 

1282Karena prompt sistem fork dan definisi alat identik dengan induk, permintaan pertamanya menggunakan kembali [prompt cache](/docs/id/prompt-caching#subagents-and-the-cache) induk. Ini membuat forking lebih murah daripada menelurkan subagent segar untuk tugas yang memerlukan konteks yang sama.1282Karena system prompt fork dan definisi tool identik dengan induk, permintaan pertamanya menggunakan kembali [prompt cache](/docs/id/prompt-caching#subagents-and-the-cache) induk. Karena penggunaan kembali tersebut, fork lebih murah daripada subagent segar untuk tugas yang memerlukan konteks yang sama.

1283 1283 

1284Ketika Claude menelurkan fork melalui alat Agent, Claude dapat melewatkan `isolation: "worktree"` sehingga edit file fork ditulis ke git worktree terpisah daripada checkout Anda. Fork tidak dapat menelurkan fork lebih lanjut.1284Ketika Claude menelurkan fork melalui alat Agent, Claude dapat melewatkan `isolation: "worktree"` sehingga edit file fork ditulis ke git worktree terpisah daripada checkout Anda. Fork tidak dapat menelurkan fork lebih lanjut.

1285 1285 

vs-code.md +1 −1

Details

606| `environmentVariables` | `[]` | Atur environment variable untuk proses Claude. Gunakan pengaturan Claude Code sebagai gantinya untuk konfigurasi bersama. Entri [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars) hanya berlaku ketika nilainya adalah jalur absolut; ekstensi tidak memperluas `~` dan mengabaikan nilai relatif. |606| `environmentVariables` | `[]` | Atur environment variable untuk proses Claude. Gunakan pengaturan Claude Code sebagai gantinya untuk konfigurasi bersama. Entri [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars) hanya berlaku ketika nilainya adalah jalur absolut; ekstensi tidak memperluas `~` dan mengabaikan nilai relatif. |

607| `disableLoginPrompt` | `false` | Lewati prompt autentikasi (untuk pengaturan penyedia pihak ketiga) |607| `disableLoginPrompt` | `false` | Lewati prompt autentikasi (untuk pengaturan penyedia pihak ketiga) |

608| `allowDangerouslySkipPermissions` | `false` | Menambahkan Bypass permissions ke pemilih mode. Gunakan hanya di sandbox tanpa akses internet. |608| `allowDangerouslySkipPermissions` | `false` | Menambahkan Bypass permissions ke pemilih mode. Gunakan hanya di sandbox tanpa akses internet. |

609| `claudeProcessWrapper` | - | Executable yang digunakan untuk meluncurkan proses Claude. Jalur biner bundel diteruskan sebagai argumen saat ada. Atur ini ke biner `claude` yang dipasang secara terpisah jika build ekstensi tidak menyertakan satu untuk platform Anda. Dalam pengaturan terbungkus, percakapan dimulai dalam mode Manual kecuali Anda menetapkan `initialPermissionMode` atau memilih Manual, Edit automatically, atau Auto dalam percakapan sebelumnya, karena ekstensi melewati pengaturan dan langkah default bawaan di sana; lihat [Switch permission modes](/docs/id/permission-modes#switch-permission-modes). Kesalahan "Unsupported platform" saat aktivasi berarti tidak ada biner yang bundel untuk platform Anda; lihat [which platforms have prebuilt binaries](/docs/id/troubleshoot-install#native-binary-not-found-after-npm-install). |609| `claudeProcessWrapper` | - | Executable yang digunakan untuk meluncurkan proses Claude. Jalur biner bundel diteruskan sebagai argumen saat ada. Atur ini ke biner `claude` yang dipasang secara terpisah jika build ekstensi tidak menyertakan satu untuk platform Anda. |

610 610 

611<h2 id="use-a-screen-reader">611<h2 id="use-a-screen-reader">

612 Gunakan pembaca layar612 Gunakan pembaca layar

worktrees.md +3 −1

Details

6 6 

7> Isolasi sesi Claude Code paralel dalam git worktrees terpisah sehingga perubahan tidak bertabrakan. Mencakup flag `--worktree`, isolasi subagent, `.worktreeinclude`, pembersihan, dan hook VCS non-git.7> Isolasi sesi Claude Code paralel dalam git worktrees terpisah sehingga perubahan tidak bertabrakan. Mencakup flag `--worktree`, isolasi subagent, `.worktreeinclude`, pembersihan, dan hook VCS non-git.

8 8 

9[git worktree](https://git-scm.com/docs/git-worktree) adalah direktori kerja terpisah dengan file dan cabang sendiri, berbagi riwayat repositori dan remote yang sama dengan checkout utama Anda. Menjalankan setiap sesi Claude Code dalam worktree-nya sendiri berarti edit dalam satu sesi tidak akan pernah menyentuh file di sesi lain, sehingga satu sesi dapat membangun fitur sementara sesi kedua memperbaiki bug.9[git worktree](https://git-scm.com/docs/git-worktree) adalah direktori kerja terpisah dengan file dan branch sendiri, berbagi riwayat repositori dan remote yang sama dengan checkout utama Anda. Menjalankan setiap sesi Claude Code dalam worktree-nya sendiri memberikan salinan file terpisah untuk diedit, sehingga satu sesi dapat membangun fitur sementara sesi kedua memperbaiki bug.

10 10 

11<Note>11<Note>

12 Worktrees memerlukan repositori git; untuk sistem kontrol versi lainnya, [konfigurasikan hook untuk menggantikan logika git](#non-git-version-control). Di [aplikasi desktop](/docs/id/desktop#work-in-parallel-with-sessions), pilih opsi **worktree** saat Anda memulai sesi untuk memberikannya worktree-nya sendiri.12 Worktrees memerlukan repositori git; untuk sistem kontrol versi lainnya, [konfigurasikan hook untuk menggantikan logika git](#non-git-version-control). Di [aplikasi desktop](/docs/id/desktop#work-in-parallel-with-sessions), pilih opsi **worktree** saat Anda memulai sesi untuk memberikannya worktree-nya sendiri.


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

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

106 106 

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

108 

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

108 110 

109Claude melihat setiap penolakan sebagai kesalahan tool yang menamai worktree dan mengatakan cara melanjutkan. Untuk perintah yang ditolak, lihat [apa arti pesan penolakan dan cara menghapusnya](/docs/id/errors#command-blocked-by-the-worktree-isolation-checks).111Claude melihat setiap penolakan sebagai kesalahan tool yang menamai worktree dan mengatakan cara melanjutkan. Untuk perintah yang ditolak, lihat [apa arti pesan penolakan dan cara menghapusnya](/docs/id/errors#command-blocked-by-the-worktree-isolation-checks).