SpyBara
Go Premium

Documentation 2026-06-29 23:02 UTC to 2026-06-30 23:02 UTC

78 files changed +3,062 −605. View all changes and history on the product overview
2026
Tue 30 23:02 Mon 29 23:02 Sat 27 01:01 Fri 26 23:00 Thu 25 23:58 Wed 24 22:02 Tue 23 22:00 Mon 22 23:59 Fri 19 22:58 Thu 18 22:00 Wed 17 17:02 Tue 16 21:57 Mon 15 23:02 Sat 13 21:59 Fri 12 22:00 Thu 11 23:01 Wed 10 23:57 Tue 9 06:34 Mon 8 06:52 Sat 6 06:24 Fri 5 06:45 Thu 4 06:52 Wed 3 06:53 Tue 2 06:51

admin-setup.md +15 −13

Details

36| Google Vertex AI | Anda ingin mewarisi kontrol kepatuhan dan penagihan GCP yang ada |36| Google Vertex AI | Anda ingin mewarisi kontrol kepatuhan dan penagihan GCP yang ada |

37| Microsoft Foundry | Anda ingin mewarisi kontrol kepatuhan dan penagihan Azure yang ada |37| Microsoft Foundry | Anda ingin mewarisi kontrol kepatuhan dan penagihan Azure yang ada |

38 38 

39Beberapa fitur Claude Code memerlukan akun Claude.ai. [Claude Code di web](/id/claude-code-on-the-web), [Routines](/id/routines), [Code Review](/id/code-review), [Remote Control](/id/remote-control), dan [ekstensi Chrome](/id/chrome) tidak tersedia melalui kunci API Console atau kredensial penyedia cloud saja. Jika Anda menerapkan melalui Bedrock, Vertex, atau Foundry, rencanakan apakah pengembang juga memerlukan kursi Claude for Teams atau Enterprise. Setiap halaman fitur mencantumkan persyaratan rencananya.39Beberapa fitur Claude Code memerlukan akun claude.ai. [Claude Code di web](/id/claude-code-on-the-web), [Routines](/id/routines), [Code Review](/id/code-review), [Remote Control](/id/remote-control), dan [ekstensi Chrome](/id/chrome) tidak tersedia melalui kunci API Console atau kredensial penyedia cloud saja. Jika Anda menerapkan melalui Bedrock, Vertex, atau Foundry, rencanakan apakah pengembang juga memerlukan kursi Claude for Teams atau Enterprise. Setiap halaman fitur mencantumkan persyaratan rencananya.

40 40 

41Untuk perbandingan penyedia lengkap yang mencakup autentikasi, wilayah, dan kesetaraan fitur, lihat [ikhtisar penerapan enterprise](/id/third-party-integrations). Pengaturan auth setiap penyedia ada di [Authentication](/id/authentication).41Untuk perbandingan penyedia lengkap yang mencakup autentikasi, wilayah, dan kesetaraan fitur, lihat [ikhtisar penerapan enterprise](/id/third-party-integrations). Pengaturan auth setiap penyedia ada di [Authentication](/id/authentication).

42 42 


46 Tentukan cara pengaturan mencapai perangkat46 Tentukan cara pengaturan mencapai perangkat

47</h2>47</h2>

48 48 

49Pengaturan terkelola mendefinisikan kebijakan yang mengambil alih konfigurasi pengembang lokal. Claude Code memeriksa empat sumber di bawah ini dalam urutan prioritas dan menerapkan yang pertama yang mengembalikan konfigurasi non-kosong.49Pengaturan terkelola mendefinisikan kebijakan yang mengambil alih konfigurasi pengembang lokal. Claude Code memeriksa empat sumber di bawah ini dalam urutan prioritas dan menerapkan yang pertama yang mengembalikan konfigurasi non-kosong, dengan satu pengecualian: serangkaian kecil [kunci kunci lintas-sumber](/id/settings#settings-precedence), seperti kunci daftar izin sandbox, dihormati ketika sumber yang dikendalikan admin menetapkannya.

50 50 

51| Mekanisme | Pengiriman | Prioritas | Platform |51| Mekanisme | Pengiriman | Prioritas | Platform |

52| :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- | :------------- |52| :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------- | :------------- |

53| Server-managed | Konsol admin Claude.ai | Tertinggi | Semua |53| Server-managed | Konsol admin claude.ai, atau [Claude apps gateway](/id/claude-apps-gateway) yang di-host sendiri untuk sign-in gateway | Tertinggi | Semua |

54| plist / registry policy | macOS: `com.anthropic.claudecode` plist<br />Windows: `HKLM\SOFTWARE\Policies\ClaudeCode` | Tinggi | macOS, Windows |54| plist / registry policy | macOS: `com.anthropic.claudecode` plist<br />Windows: `HKLM\SOFTWARE\Policies\ClaudeCode` | Tinggi | macOS, Windows |

55| File-based managed | macOS: `/Library/Application Support/ClaudeCode/managed-settings.json`<br />Linux dan WSL: `/etc/claude-code/managed-settings.json`<br />Windows: `C:\Program Files\ClaudeCode\managed-settings.json` | Sedang | Semua |55| File-based managed | macOS: `/Library/Application Support/ClaudeCode/managed-settings.json`<br />Linux dan WSL: `/etc/claude-code/managed-settings.json`<br />Windows: `C:\Program Files\ClaudeCode\managed-settings.json` | Sedang | Semua |

56| Windows user registry | `HKCU\SOFTWARE\Policies\ClaudeCode` | Terendah | Windows saja |56| Windows user registry | `HKCU\SOFTWARE\Policies\ClaudeCode` | Terendah | Windows saja |

57 57 

58Pengaturan terkelola server mencapai perangkat pada waktu autentikasi dan menyegarkan setiap jam selama sesi aktif, tanpa infrastruktur titik akhir. Mereka memerlukan rencana Claude for Teams atau Enterprise, jadi penerapan pada penyedia lain memerlukan salah satu mekanisme berbasis file atau tingkat OS sebagai gantinya.58Sebuah [`policyHelper`](/id/settings#compute-managed-settings-with-a-policy-helper) yang dikonfigurasi mendahului keempat sumber: outputnya menjadi satu-satunya konfigurasi terkelola untuk jalankan. Lihat [Settings precedence](/id/settings#settings-precedence).

59 59 

60Jika organisasi Anda mencampur penyedia, konfigurasikan [server-managed settings](/id/server-managed-settings) untuk pengguna Claude.ai ditambah [fallback berbasis file atau plist/registry](/id/settings#settings-files) sehingga pengguna lain masih menerima kebijakan terkelola.60Pengaturan terkelola server mencapai perangkat pada waktu autentikasi dan menyegarkan setiap jam selama sesi aktif, tanpa infrastruktur titik akhir. Pengiriman melalui konsol admin claude.ai memerlukan rencana Claude for Teams atau Enterprise. Penerapan pada Bedrock, Vertex AI, atau Foundry dapat mendapatkan pengiriman jarak jauh yang sama dengan menjalankan [Claude apps gateway](/id/claude-apps-gateway), atau menggunakan salah satu mekanisme berbasis file atau tingkat OS sebagai gantinya.

61 

62Jika organisasi Anda mencampur penyedia, konfigurasikan [server-managed settings](/id/server-managed-settings) untuk pengguna claude.ai ditambah [fallback berbasis file atau plist/registry](/id/settings#settings-files) sehingga pengguna lain masih menerima kebijakan terkelola.

61 63 

62Lokasi plist dan HKLM registry bekerja dengan penyedia apa pun dan tahan terhadap gangguan karena memerlukan hak istimewa admin untuk menulis. Registry pengguna Windows di HKCU dapat ditulis tanpa elevasi, jadi perlakukan sebagai default kenyamanan daripada saluran penegakan.64Lokasi plist dan HKLM registry bekerja dengan penyedia apa pun dan tahan terhadap gangguan karena memerlukan hak istimewa admin untuk menulis. Registry pengguna Windows di HKCU dapat ditulis tanpa elevasi, jadi perlakukan sebagai default kenyamanan daripada saluran penegakan.

63 65 

64Secara default WSL hanya membaca jalur file Linux di `/etc/claude-code`. Untuk memperluas kebijakan registry Windows dan `C:\Program Files\ClaudeCode` Anda ke WSL pada mesin yang sama, atur [`wslInheritsWindowsSettings: true`](/id/settings#available-settings) di salah satu sumber Windows yang hanya admin.66Secara default, WSL hanya membaca jalur file Linux di `/etc/claude-code`. Untuk memperluas kebijakan registry Windows dan `C:\Program Files\ClaudeCode` Anda ke WSL pada mesin yang sama, atur [`wslInheritsWindowsSettings: true`](/id/settings#available-settings) di salah satu sumber Windows yang hanya admin.

65 67 

66Mekanisme apa pun yang Anda pilih, nilai terkelola mengambil alih pengaturan pengguna dan proyek. Pengaturan array seperti `permissions.allow` dan `permissions.deny` menggabungkan entri dari semua sumber, jadi pengembang dapat memperluas daftar terkelola tetapi tidak menghapusnya, dengan [dua pengecualian](/id/settings#settings-precedence) di mana nilai terkelola menggantikan lapisan yang lebih rendah daripada menggabungkan: `fallbackModel` dan `availableModels`.68Mekanisme apa pun yang Anda pilih, nilai terkelola mengambil alih pengaturan pengguna dan proyek. Pengaturan array seperti `permissions.allow` dan `permissions.deny` menggabungkan entri dari semua sumber, jadi pengembang dapat memperluas daftar terkelola tetapi tidak menghapusnya. Untuk [dua pengecualian](/id/settings#settings-precedence), `fallbackModel` dan `availableModels`, nilai terkelola menggantikan lapisan yang lebih rendah daripada menggabungkan.

67 69 

68Lihat [Server-managed settings](/id/server-managed-settings) dan [Settings files and precedence](/id/settings#settings-files).70Lihat [Server-managed settings](/id/server-managed-settings) dan [Settings files and precedence](/id/settings#settings-files).

69 71 


80| [Sandboxing](/id/sandboxing) | Isolasi filesystem dan jaringan tingkat OS dengan daftar allowlist domain | `sandbox.enabled`, `sandbox.network.allowedDomains` |82| [Sandboxing](/id/sandboxing) | Isolasi filesystem dan jaringan tingkat OS dengan daftar allowlist domain | `sandbox.enabled`, `sandbox.network.allowedDomains` |

81| [Managed policy CLAUDE.md](/id/memory#deploy-organization-wide-claude-md) | Instruksi di seluruh organisasi dimuat di setiap sesi, tidak dapat dikecualikan | File di jalur kebijakan terkelola |83| [Managed policy CLAUDE.md](/id/memory#deploy-organization-wide-claude-md) | Instruksi di seluruh organisasi dimuat di setiap sesi, tidak dapat dikecualikan | File di jalur kebijakan terkelola |

82| [MCP server control](/id/managed-mcp) | Batasi server MCP mana yang dapat ditambahkan atau dihubungkan pengguna, atau terapkan set tetap | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, atau file `managed-mcp.json` yang diterapkan |84| [MCP server control](/id/managed-mcp) | Batasi server MCP mana yang dapat ditambahkan atau dihubungkan pengguna, atau terapkan set tetap | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, atau file `managed-mcp.json` yang diterapkan |

83| [Plugin marketplace control](/id/plugin-marketplaces#managed-marketplace-restrictions) | Batasi sumber marketplace mana yang dapat ditambahkan dan diinstal pengguna | `strictKnownMarketplaces`, `blockedMarketplaces` |85| [Plugin marketplace control](/id/plugin-marketplaces#managed-marketplace-restrictions) | Batasi sumber marketplace mana yang dapat ditambahkan dan diinstal pengguna, dan tolak flag CLI yang memuat plugin, agent, dan server MCP untuk satu kali berjalan | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags` |

84| [Customization lockdown](/id/settings#strictpluginonlycustomization) | Blokir skills, agents, hooks, dan server MCP dari sumber pengguna dan proyek, sehingga mereka hanya dapat berasal dari plugin atau pengaturan terkelola | `strictPluginOnlyCustomization` |86| [Customization lockdown](/id/settings#strictpluginonlycustomization) | Blokir skills, agents, hooks, dan server MCP dari sumber pengguna dan proyek, sehingga mereka hanya dapat berasal dari plugin atau pengaturan terkelola | `strictPluginOnlyCustomization` |

85| [Hook restrictions](/id/settings#hook-configuration) | Hanya hook terkelola yang dimuat; batasi URL hook HTTP | `allowManagedHooksOnly`, `allowedHttpHookUrls` |87| [Hook restrictions](/id/settings#hook-configuration) | Hanya hook terkelola yang dimuat; batasi URL hook HTTP | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

86| [Disable agent view](/id/agent-view#how-background-sessions-are-hosted) | Matikan `claude agents`, `--bg`, `/background`, dan supervisor on-demand | `disableAgentView` |88| [Disable agent view](/id/agent-view#how-background-sessions-are-hosted) | Matikan `claude agents`, `--bg`, `/background`, dan supervisor on-demand | `disableAgentView` |


99Pilih pemantauan berdasarkan apa yang perlu Anda laporkan.101Pilih pemantauan berdasarkan apa yang perlu Anda laporkan.

100 102 

101| Kemampuan | Yang Anda dapatkan | Ketersediaan | Mulai dari mana |103| Kemampuan | Yang Anda dapatkan | Ketersediaan | Mulai dari mana |

102| :------------------ | :--------------------------------------------------------- | :-------------- | :--------------------------------------- |104| :------------------ | :--------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------- |

103| Usage monitoring | Ekspor OpenTelemetry sesi, alat, dan token | Semua penyedia | [Monitoring usage](/id/monitoring-usage) |105| Usage monitoring | Ekspor OpenTelemetry sesi, alat, dan token | Semua penyedia | [Monitoring usage](/id/monitoring-usage) |

104| Analytics dashboard | Metrik per-pengguna, pelacakan kontribusi, papan peringkat | Hanya Anthropic | [Analytics](/id/analytics) |106| Analytics dashboard | Metrik per-pengguna, pelacakan kontribusi, papan peringkat | Hanya Anthropic | [Analytics](/id/analytics) |

105| Cost tracking | Batas pengeluaran, batas laju, dan atribusi penggunaan | Hanya Anthropic | [Costs](/id/costs) |107| Cost tracking | Batas pengeluaran, batas laju, dan atribusi penggunaan | Anthropic saja; di cloud pihak ketiga, [gateway aplikasi Claude](/id/claude-apps-gateway) menyediakan atribusi per-pengguna dan [batas pengeluaran](/id/claude-apps-gateway-spend-limits) | [Costs](/id/costs) |

106 108 

107Penyedia cloud mengekspos pengeluaran melalui AWS Cost Explorer, GCP Billing, atau Azure Cost Management. Rencana Claude for Teams dan Enterprise mencakup dasbor penggunaan di [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code).109Penyedia cloud mengekspos pengeluaran melalui AWS Cost Explorer, GCP Billing, atau Azure Cost Management. Rencana Claude for Teams dan Enterprise mencakup dasbor penggunaan di [claude.ai/analytics/claude-code](https://claude.ai/analytics/claude-code).

108 110 


113Pada rencana Team, Enterprise, Claude API, dan penyedia cloud, Anthropic tidak melatih model pada kode atau prompt Anda. Penyedia API Anda menentukan retensi dan postur kepatuhan.115Pada rencana Team, Enterprise, Claude API, dan penyedia cloud, Anthropic tidak melatih model pada kode atau prompt Anda. Penyedia API Anda menentukan retensi dan postur kepatuhan.

114 116 

115| Topik | Yang perlu diketahui | Mulai dari mana |117| Topik | Yang perlu diketahui | Mulai dari mana |

116| :------------------------ | :---------------------------------------------------------------------------------------------------- | :--------------------------------------------- |118| :------------------------ | :-------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------- |

117| Data usage policy | Apa yang dikumpulkan Anthropic, berapa lama disimpan, apa yang tidak pernah digunakan untuk pelatihan | [Data usage](/id/data-usage) |119| Data usage policy | Apa yang dikumpulkan Anthropic, berapa lama disimpan, apa yang tidak pernah digunakan untuk pelatihan | [Data usage](/id/data-usage) |

118| Zero Data Retention (ZDR) | Tidak ada yang disimpan setelah permintaan selesai. Tersedia di Claude for Enterprise | [Zero data retention](/id/zero-data-retention) |120| Zero Data Retention (ZDR) | Tidak ada yang disimpan setelah permintaan selesai. Tersedia untuk akun yang memenuhi syarat di Claude for Enterprise | [Zero data retention](/id/zero-data-retention) |

119| Security architecture | Model jaringan, enkripsi, autentikasi, jejak audit | [Security](/id/security) |121| Security architecture | Model jaringan, enkripsi, autentikasi, jejak audit | [Security](/id/security) |

120 122 

121Jika Anda memerlukan pencatatan audit tingkat permintaan atau untuk merutekan lalu lintas berdasarkan sensitivitas data, tempatkan [LLM gateway](/id/llm-gateway) antara pengembang dan penyedia Anda. Untuk persyaratan peraturan dan sertifikasi, lihat [Legal and compliance](/id/legal-and-compliance).123Jika Anda memerlukan pencatatan audit tingkat permintaan atau untuk merutekan lalu lintas berdasarkan sensitivitas data, tempatkan gateway antara pengembang dan penyedia Anda: [Claude apps gateway](/id/claude-apps-gateway) yang di-host sendiri mencatat log audit per-permintaan dengan identitas IdP, atau gunakan [LLM gateway](/id/llm-gateway) lainnya. Untuk persyaratan peraturan dan sertifikasi, lihat [Legal and compliance](/id/legal-and-compliance).

122 124 

123<h2 id="verify-and-onboard">125<h2 id="verify-and-onboard">

124 Verifikasi dan onboard126 Verifikasi dan onboard

advisor.md +2 −1

Details

88| ----------------------------------------------- | ----------------------------------------------- | -------------------------------------------------------------------------- |88| ----------------------------------------------- | ----------------------------------------------- | -------------------------------------------------------------------------- |

89| Haiku 4.5 | Fable, Opus, Sonnet | Haiku dapat memanggil advisor tetapi tidak dapat bertindak sebagai advisor |89| Haiku 4.5 | Fable, Opus, Sonnet | Haiku dapat memanggil advisor tetapi tidak dapat bertindak sebagai advisor |

90| Sonnet 4.6 | Fable, Opus, Sonnet | |90| Sonnet 4.6 | Fable, Opus, Sonnet | |

91| Sonnet 5 | Fable, Opus, Sonnet 5 | Advisor Sonnet 4.6 ditolak |

91| Opus 4.6 atau lebih baru | Fable, Opus pada atau di atas versi model utama | Opus 4.7 utama dengan advisor Opus 4.6 ditolak |92| Opus 4.6 atau lebih baru | Fable, Opus pada atau di atas versi model utama | Opus 4.7 utama dengan advisor Opus 4.6 ditolak |

92| Fable 5 ({/* min-version: 2.1.170 */}v2.1.170+) | Fable | Advisor Opus atau Sonnet ditolak |93| Fable 5 ({/* min-version: 2.1.170 */}v2.1.170+) | Fable | Advisor Opus atau Sonnet ditolak |

93 94 


161 162 

162* **Claude Code v2.1.98 atau lebih baru**: jalankan `claude update` untuk upgrade.163* **Claude Code v2.1.98 atau lebih baru**: jalankan `claude update` untuk upgrade.

163* **Hanya API Anthropic**: advisor adalah alat yang dieksekusi server. Alat ini tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry. Melalui [LLM gateway](/id/llm-gateway) yang dikonfigurasi dengan `ANTHROPIC_BASE_URL`, ketersediaan tergantung pada apakah gateway meneruskan permintaan utuh ke API Anthropic.164* **Hanya API Anthropic**: advisor adalah alat yang dieksekusi server. Alat ini tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry. Melalui [LLM gateway](/id/llm-gateway) yang dikonfigurasi dengan `ANTHROPIC_BASE_URL`, ketersediaan tergantung pada apakah gateway meneruskan permintaan utuh ke API Anthropic.

164* **Model utama yang didukung**: Opus 4.6 atau lebih baru, Sonnet 4.6, atau Haiku 4.5. {/* min-version: 2.1.170 */}Fable 5 juga memenuhi syarat di Claude Code v2.1.170 atau lebih baru.165* **Model utama yang didukung**: Opus 4.6 atau lebih baru, Sonnet 4.6 atau lebih baru, atau Haiku 4.5. {/* min-version: 2.1.170 */}Fable 5 juga memenuhi syarat di Claude Code v2.1.170 atau lebih baru.

165 166 

166<h2 id="turn-the-advisor-off">167<h2 id="turn-the-advisor-off">

167 Matikan advisor168 Matikan advisor

Details

226 Model226 Model

227</h3>227</h3>

228 228 

229Jika Anda tidak set `model`, SDK menggunakan Claude Code's default, yang tergantung pada authentication method dan subscription Anda. Set secara eksplisit (misalnya, `model="claude-sonnet-4-6"`) untuk pin model spesifik atau untuk menggunakan smaller model untuk faster, cheaper agents. Lihat [models](https://platform.claude.com/docs/en/about-claude/models) untuk available IDs.229Jika Anda tidak set `model`, SDK menggunakan Claude Code's default, yang tergantung pada authentication method dan subscription Anda. Set secara eksplisit (misalnya, `model="claude-sonnet-5"`) untuk pin model spesifik atau untuk menggunakan smaller model untuk faster, cheaper agents. Lihat [models](https://platform.claude.com/docs/en/about-claude/models) untuk available IDs.

230 230 

231<h2 id="the-context-window">231<h2 id="the-context-window">

232 Jendela konteks232 Jendela konteks

agent-sdk/hooks.md +21 −13

Details

203 ```203 ```

204</CodeGroup>204</CodeGroup>

205 205 

206Opsi `hooks` adalah dictionary (Python) atau object (TypeScript) di mana:206Opsi `hooks` adalah dictionary di Python atau object di TypeScript, di mana:

207 207 

208* **Keys** adalah [nama hook event](#available-hooks) (misalnya, `'PreToolUse'`, `'PostToolUse'`, `'Stop'`)208* **Keys**: [nama hook event](#available-hooks) seperti `'PreToolUse'`, `'PostToolUse'`, dan `'Stop'`

209* **Values** adalah array dari [matchers](#matchers), masing-masing berisi pola filter opsional dan [fungsi callback](#callback-functions) Anda209* **Values**: array dari [matchers](#matchers), masing-masing berisi pola filter opsional dan [fungsi callback](#callback-functions) Anda

210 210 

211<h3 id="matchers">211<h3 id="matchers">

212 Matchers212 Matchers


214 214 

215Gunakan matchers untuk memfilter kapan callbacks Anda terjadi. Field `matcher` cocok dengan nilai berbeda tergantung pada tipe hook event. Misalnya, tool-based hooks cocok dengan nama tool, sementara hooks `Notification` cocok dengan tipe notifikasi. Lihat [referensi hooks Claude Code](/id/hooks#matcher-patterns) untuk daftar lengkap nilai matcher untuk setiap tipe event.215Gunakan matchers untuk memfilter kapan callbacks Anda terjadi. Field `matcher` cocok dengan nilai berbeda tergantung pada tipe hook event. Misalnya, tool-based hooks cocok dengan nama tool, sementara hooks `Notification` cocok dengan tipe notifikasi. Lihat [referensi hooks Claude Code](/id/hooks#matcher-patterns) untuk daftar lengkap nilai matcher untuk setiap tipe event.

216 216 

217SDK matchers mengikuti aturan yang sama dengan [matchers dalam file settings](/id/hooks#matcher-patterns): matcher yang hanya berisi huruf, digit, `_`, spasi, `,`, dan `|` dibandingkan sebagai string yang tepat, dengan alternatif dipisahkan oleh `|` atau `,` dan spasi putih opsional di sekitarnya, jadi `Write|Edit` dan `Write, Edit` masing-masing cocok dengan tepat kedua tools tersebut. Matcher `*`, string kosong, atau menghilangkan matcher sepenuhnya cocok dengan setiap kemunculan event; matcher yang berisi karakter lain apa pun dievaluasi sebagai regular expression, jadi `^mcp__` cocok dengan setiap MCP tool. Matcher seperti `mcp__memory` hanya berisi huruf dan underscore, jadi dibandingkan sebagai string yang tepat dan tidak cocok dengan tool apa pun; gunakan `mcp__memory__.*` untuk cocok dengan setiap tool dari server tersebut.217SDK matchers mengikuti aturan yang sama dengan [matchers dalam file settings](/id/hooks#matcher-patterns). Matcher yang hanya berisi huruf, digit, `_`, `-`, spasi, `,`, dan `|` dibandingkan sebagai string yang tepat, dengan alternatif dipisahkan oleh `|` atau `,` dan spasi putih opsional di sekitarnya, jadi `Write|Edit` dan `Write, Edit` masing-masing cocok dengan tepat kedua tools tersebut dan `code-reviewer` cocok hanya dengan tipe agent tersebut. Matcher `*`, string kosong, atau menghilangkan matcher sepenuhnya cocok dengan setiap kemunculan event.

218 

219Matcher yang berisi karakter lain apa pun dievaluasi sebagai regular expression yang tidak berlabuh, jadi `^mcp__` cocok dengan setiap MCP tool dan `Edit.*` cocok dengan baik `Edit` maupun `NotebookEdit`. Bungkus regular expression dalam `^` dan `$` ketika Anda memerlukan pencocokan seluruh string.

220 

221Matcher seperti `mcp__memory` atau `mcp__brave-search` hanya berisi karakter pencocokan yang tepat, jadi dibandingkan sebagai string yang tepat dan tidak cocok dengan tool apa pun; gunakan `mcp__memory__.*` untuk cocok dengan setiap tool dari server tersebut.

222 

223Tanda hubung dalam set pencocokan yang tepat memerlukan runtime Claude Code v2.1.195 atau lebih baru. Pada versi sebelumnya, nama dengan tanda hubung seperti `code-reviewer` dievaluasi sebagai regular expression yang tidak berlabuh dan harus berlabuh sebagai `^code-reviewer$` untuk cocok dengan tepat.

218 224 

219| Option | Type | Default | Description |225| Option | Type | Default | Description |

220| --------- | ---------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |226| --------- | ---------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


222| `hooks` | `HookCallback[]` | - | Diperlukan. Array dari fungsi callback untuk dieksekusi ketika pola cocok |228| `hooks` | `HookCallback[]` | - | Diperlukan. Array dari fungsi callback untuk dieksekusi ketika pola cocok |

223| `timeout` | `number` | `60` | Timeout dalam detik |229| `timeout` | `number` | `60` | Timeout dalam detik |

224 230 

225Gunakan pola `matcher` untuk menargetkan tools spesifik kapan pun memungkinkan. Matcher dengan `'Bash'` hanya berjalan untuk perintah Bash, sementara menghilangkan pola menjalankan callbacks Anda untuk setiap kemunculan event. Perhatikan bahwa untuk tool-based hooks, matchers hanya memfilter berdasarkan **nama tool**, bukan jalur file atau argumen lainnya. Untuk memfilter berdasarkan jalur file, periksa `tool_input.file_path` di dalam callback Anda.231Gunakan pola `matcher` untuk menargetkan tools spesifik kapan pun memungkinkan. Matcher dengan `'Bash'` hanya berjalan untuk perintah Bash, sementara menghilangkan pola menjalankan callbacks Anda untuk setiap kemunculan event.

232 

233Untuk tool-based hooks, matchers hanya memfilter berdasarkan nama tool, bukan jalur file atau argumen lainnya. Untuk memfilter berdasarkan jalur file, periksa `tool_input.file_path` di dalam callback Anda.

226 234 

227<Tip>235<Tip>

228 **Menemukan nama tool:** Lihat [Tool Input Types](/id/agent-sdk/typescript#tool-input-types) untuk daftar lengkap nama tool built-in, atau tambahkan hook tanpa matcher untuk log semua pemanggilan tool yang dibuat sesi Anda.236 **Menemukan nama tool:** Lihat [Tool Input Types](/id/agent-sdk/typescript#tool-input-types) untuk daftar lengkap nama tool built-in, atau tambahkan hook tanpa matcher untuk log semua pemanggilan tool yang dibuat sesi Anda.

229 237 

230 **Penamaan MCP tool:** MCP tools selalu dimulai dengan `mcp__` diikuti oleh nama server dan action: `mcp__<server>__<action>`. Misalnya, jika Anda mengonfigurasi server bernama `playwright`, tools-nya akan dinamai `mcp__playwright__browser_screenshot`, `mcp__playwright__browser_click`, dll. Nama server berasal dari key yang Anda gunakan dalam konfigurasi `mcpServers`.238 **Penamaan MCP tool:** MCP tools selalu dimulai dengan `mcp__` diikuti oleh nama server dan action: `mcp__<server>__<action>`. Misalnya, jika Anda mengonfigurasi server bernama `playwright`, tools-nya akan dinamai `mcp__playwright__browser_screenshot`, `mcp__playwright__browser_click`, dan seterusnya. Nama server berasal dari key yang Anda gunakan dalam konfigurasi `mcpServers`.

231</Tip>239</Tip>

232 240 

233<h3 id="callback-functions">241<h3 id="callback-functions">


240 248 

241Setiap hook callback menerima tiga argumen:249Setiap hook callback menerima tiga argumen:

242 250 

243* **Input data:** object yang diketik berisi detail event. Setiap tipe hook memiliki bentuk input sendiri (misalnya, `PreToolUseHookInput` mencakup `tool_name` dan `tool_input`, sementara `NotificationHookInput` mencakup `message`). Lihat definisi tipe lengkap di referensi SDK [TypeScript](/id/agent-sdk/typescript#hookinput) dan [Python](/id/agent-sdk/python#hookinput).251* **Input data:** object yang diketik berisi detail event. Setiap tipe hook memiliki bentuk input sendiri. Misalnya, `PreToolUseHookInput` mencakup `tool_name` dan `tool_input`, sementara `NotificationHookInput` mencakup `message`. Lihat definisi tipe lengkap di referensi SDK [TypeScript](/id/agent-sdk/typescript#hookinput) dan [Python](/id/agent-sdk/python#hookinput).

244 * Semua hook inputs berbagi `session_id`, `cwd`, dan `hook_event_name`.252 * Semua hook inputs berbagi `session_id`, `cwd`, dan `hook_event_name`.

245 * `agent_id` dan `agent_type` diisi ketika hook terjadi di dalam subagent. Di TypeScript, ini berada di base hook input dan tersedia untuk semua tipe hook. Di Python, ini hanya ada di `PreToolUse`, `PostToolUse`, dan `PostToolUseFailure`.253 * `agent_id` dan `agent_type` diisi ketika hook terjadi di dalam subagent. Di TypeScript, ini berada di base hook input dan tersedia untuk semua tipe hook. Di Python, ini hanya ada di `PreToolUse`, `PostToolUse`, dan `PostToolUseFailure`.

246* **Tool use ID** (`str | None` / `string | undefined`): mengkorelasikan events `PreToolUse` dan `PostToolUse` untuk pemanggilan tool yang sama.254* **Tool use ID** (`str | None` / `string | undefined`): mengkorelasikan events `PreToolUse` dan `PostToolUse` untuk pemanggilan tool yang sama.


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

259 267 

260<Note>268<Note>

261 Ketika multiple hooks atau permission rules berlaku, **deny** mengambil prioritas atas **defer**, yang mengambil prioritas atas **ask**, yang mengambil prioritas atas **allow**. Jika hook apa pun mengembalikan `deny`, operasi diblokir terlepas dari hooks lainnya.269 Ketika multiple hooks atau permission rules berlaku, `deny` mengambil prioritas atas `defer`, yang mengambil prioritas atas `ask`, yang mengambil prioritas atas `allow`. Jika hook apa pun mengembalikan `deny`, operasi diblokir terlepas dari hooks lainnya.

262</Note>270</Note>

263 271 

264<h4 id="asynchronous-output">272<h4 id="asynchronous-output">

265 Asynchronous output273 Asynchronous output

266</h4>274</h4>

267 275 

268Secara default, agent menunggu hook Anda kembali sebelum melanjutkan. Jika hook Anda melakukan side effect (logging, mengirim webhook) dan tidak perlu mempengaruhi perilaku agent, Anda dapat mengembalikan async output sebagai gantinya. Ini memberi tahu agent untuk melanjutkan segera tanpa menunggu hook selesai:276Secara default, agent menunggu hook Anda kembali sebelum melanjutkan. Jika hook Anda melakukan side effect, seperti logging atau mengirim webhook, dan tidak perlu mempengaruhi perilaku agent, Anda dapat mengembalikan async output sebagai gantinya. Ini memberi tahu agent untuk melanjutkan segera tanpa menunggu hook selesai:

269 277 

270<CodeGroup>278<CodeGroup>

271 ```python Python theme={null}279 ```python Python theme={null}


782* Verifikasi nama hook event benar dan case-sensitive (`PreToolUse`, bukan `preToolUse`)790* Verifikasi nama hook event benar dan case-sensitive (`PreToolUse`, bukan `preToolUse`)

783* Periksa bahwa pola matcher Anda cocok dengan nama tool dengan tepat791* Periksa bahwa pola matcher Anda cocok dengan nama tool dengan tepat

784* Pastikan hook berada di bawah tipe event yang benar di `options.hooks`792* Pastikan hook berada di bawah tipe event yang benar di `options.hooks`

785* Untuk non-tool hooks seperti `Stop` dan `SubagentStop`, matchers cocok dengan fields berbeda (lihat [matcher patterns](/id/hooks#matcher-patterns))793* Untuk non-tool hooks yang mendukung matchers, seperti `Notification` dan `SubagentStop`, matchers cocok dengan fields berbeda, dan `Stop` mengabaikan matchers sepenuhnya (lihat [matcher patterns](/id/hooks#matcher-patterns))

786* Hooks mungkin tidak terjadi ketika agent mencapai batas [`max_turns`](/id/agent-sdk/python#claudeagentoptions) karena sesi berakhir sebelum hooks dapat dieksekusi794* Hooks mungkin tidak terjadi ketika agent mencapai batas [`max_turns`](/id/agent-sdk/python#claudeagentoptions) karena sesi berakhir sebelum hooks dapat dieksekusi

787 795 

788<h3 id="matcher-not-filtering-as-expected">796<h3 id="matcher-not-filtering-as-expected">

789 Matcher not filtering as expected797 Matcher not filtering as expected

790</h3>798</h3>

791 799 

792Matchers hanya cocok dengan **nama tool**, bukan jalur file atau argumen lainnya. Untuk memfilter berdasarkan jalur file, periksa `tool_input.file_path` di dalam hook Anda:800Matchers hanya cocok dengan nama tool, bukan jalur file atau argumen lainnya. Untuk memfilter berdasarkan jalur file, periksa `tool_input.file_path` di dalam hook Anda:

793 801 

794```typescript theme={null}802```typescript theme={null}

795const myHook: HookCallback = async (input, toolUseID, { signal }) => {803const myHook: HookCallback = async (input, toolUseID, { signal }) => {


815 823 

816* Periksa semua hooks `PreToolUse` untuk returns `permissionDecision: 'deny'`824* Periksa semua hooks `PreToolUse` untuk returns `permissionDecision: 'deny'`

817* Tambahkan logging ke hooks Anda untuk melihat apa `permissionDecisionReason` yang mereka kembalikan825* Tambahkan logging ke hooks Anda untuk melihat apa `permissionDecisionReason` yang mereka kembalikan

818* Verifikasi pola matcher tidak terlalu luas (matcher kosong cocok dengan semua tools)826* Verifikasi pola matcher tidak terlalu luas: matcher kosong cocok dengan semua tools

819 827 

820<h3 id="modified-input-not-applied">828<h3 id="modified-input-not-applied">

821 Modified input not applied829 Modified input not applied


841 Session hooks not available in Python849 Session hooks not available in Python

842</h3>850</h3>

843 851 

844`SessionStart` dan `SessionEnd` dapat didaftarkan sebagai SDK callback hooks di TypeScript, tetapi tidak tersedia di Python SDK (`HookEvent` menghilangkannya). Di Python, mereka hanya tersedia sebagai [shell command hooks](/id/hooks#hook-events) yang didefinisikan dalam file pengaturan (misalnya, `.claude/settings.json`). Untuk memuat shell command hooks dari aplikasi SDK Anda, sertakan setting source yang sesuai dengan [`setting_sources`](/id/agent-sdk/python#settingsource) atau [`settingSources`](/id/agent-sdk/typescript#settingsource):852`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](/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`](/id/agent-sdk/python#settingsource) atau [`settingSources`](/id/agent-sdk/typescript#settingsource):

845 853 

846<CodeGroup>854<CodeGroup>

847 ```python Python theme={null}855 ```python Python theme={null}

Details

209 209 

210* **Transkrip saja**: `SessionStore` mencerminkan transkrip, bukan file memori `CLAUDE.md` atau artefak direktori kerja lainnya. Pasang volume bersama atau sinkronkan yang lain secara terpisah.210* **Transkrip saja**: `SessionStore` mencerminkan transkrip, bukan file memori `CLAUDE.md` atau artefak direktori kerja lainnya. Pasang volume bersama atau sinkronkan yang lain secara terpisah.

211* **Cermin, bukan penggantian**: subprocess menulis ke disk lokal terlebih dahulu, dan penyimpanan menerima salinan setiap batch. Penulisan lokal tetap berwenang.211* **Cermin, bukan penggantian**: subprocess menulis ke disk lokal terlebih dahulu, dan penyimpanan menerima salinan setiap batch. Penulisan lokal tetap berwenang.

212* **Pesan `mirror_error`**: jika penyimpanan menolak atau habis waktu, SDK memancarkan pesan `{ type: "system", subtype: "mirror_error" }` dan melanjutkan kueri tanpa percobaan ulang. Beri peringatan pada ini jika daya tahan penyimpanan penting.212* **Pesan `mirror_error`**: batch yang ditolak penyimpanan dikirim hingga tiga kali total, dengan backoff singkat sebelum setiap percobaan ulang; panggilan yang habis waktu tidak dicoba ulang. Jika batch masih gagal, SDK melepasnya, memancarkan pesan `{ type: "system", subtype: "mirror_error" }`, dan melanjutkan kueri. Beri peringatan pada ini jika daya tahan penyimpanan penting.

213 213 

214<h3 id="observability">214<h3 id="observability">

215 Observabilitas215 Observabilitas

Details

44 </Step>44 </Step>

45</Steps>45</Steps>

46 46 

47<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=cc94220087262cd48c9b64a14c4e1c2c" alt="Diagram alur evaluasi izin lima langkah yang sesuai dengan langkah-langkah di atas: permintaan alat melewati hooks, aturan deny, mode izin, aturan allow, dan canUseTool. Hooks, aturan deny, dan canUseTool dapat merutekan ke Blocked; bypass mode izin, aturan allow, dan canUseTool dapat merutekan ke Execute." width="1024" height="260" data-path="images/agent-sdk/permissions-flow.svg" />47<img src="https://mintcdn.com/claude-code/jYgs7qigNjO1Badj/images/agent-sdk/permissions-flow.svg?fit=max&auto=format&n=jYgs7qigNjO1Badj&q=85&s=c771ad9085b1277d3708027a49c744bc" alt="Diagram alur evaluasi izin enam langkah yang sesuai dengan langkah-langkah di atas: permintaan alat melewati hooks, aturan deny, aturan ask, mode izin, aturan allow, dan canUseTool. Hooks, aturan deny, dan canUseTool dapat merutekan ke Blocked; bypass mode izin, aturan allow, dan canUseTool dapat merutekan ke Execute; aturan ask merutekan ke canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow.svg" />

48 48 

49Halaman ini berfokus pada **aturan allow dan deny** serta **mode izin**. Untuk langkah lainnya:49Halaman ini berfokus pada **aturan allow dan deny** serta **mode izin**. Untuk langkah lainnya:

50 50 

51* **Hooks:** jalankan kode khusus untuk mengizinkan, menolak, atau memodifikasi permintaan alat. Lihat [Kontrol eksekusi dengan hooks](/id/agent-sdk/hooks).51* **Hooks:** jalankan kode khusus untuk mengizinkan, menolak, atau memodifikasi permintaan alat. Lihat [Kontrol eksekusi dengan hooks](/id/agent-sdk/hooks).

52* **canUseTool callback:** minta persetujuan pengguna di runtime. Lihat [Tangani persetujuan dan input pengguna](/id/agent-sdk/user-input).52* **canUseTool callback:** minta persetujuan pengguna di runtime, ketika tidak ada langkah sebelumnya yang menyelesaikan panggilan. Lihat [Tangani persetujuan dan input pengguna](/id/agent-sdk/user-input).

53 53 

54<h2 id="allow-and-deny-rules">54<h2 id="allow-and-deny-rules">

55 Aturan allow dan deny55 Aturan allow dan deny


66 66 

67Aturan allow menerima glob nama-alat hanya setelah awalan literal `mcp__<server>__`. Segmen server harus bebas glob sehingga aturan menamai server spesifik yang Anda konfigurasi: `mcp__puppeteer__*` cocok dengan setiap alat dari server `puppeteer`, dan `mcp__github__get_*` cocok dengan alat `get_` miliknya. Entri yang tidak berlabuh seperti `allowed_tools=["*"]` atau `allowed_tools=["mcp__*"]` diabaikan dengan peringatan startup dan tidak menyetujui apa pun secara otomatis.67Aturan allow menerima glob nama-alat hanya setelah awalan literal `mcp__<server>__`. Segmen server harus bebas glob sehingga aturan menamai server spesifik yang Anda konfigurasi: `mcp__puppeteer__*` cocok dengan setiap alat dari server `puppeteer`, dan `mcp__github__get_*` cocok dengan alat `get_` miliknya. Entri yang tidak berlabuh seperti `allowed_tools=["*"]` atau `allowed_tools=["mcp__*"]` diabaikan dengan peringatan startup dan tidak menyetujui apa pun secara otomatis.

68 68 

69<Warning>

70 **Alat yang disetujui otomatis tidak pernah mencapai `canUseTool`.** Panggilan alat yang disetujui pada langkah sebelumnya apa pun, oleh `acceptEdits` atau `bypassPermissions`, atau oleh aturan allow, melewati callback `canUseTool` Anda, sehingga pemeriksaan izin yang Anda letakkan di sana secara diam-diam dilewati untuk alat tersebut. Cakupan tergantung pada bentuk entri: nama bare seperti `Read` atau `mcp__github__get_issue` menyetujui secara otomatis setiap panggilan ke alat tersebut, sementara aturan yang dibatasi seperti `Bash(ls *)` hanya menyetujui panggilan yang cocok dan panggilan `Bash` lainnya masih jatuh melalui callback. Untuk pemeriksaan yang harus berjalan pada setiap panggilan alat, gunakan hook [`PreToolUse`](/id/agent-sdk/hooks): hook berjalan sebelum setiap langkah lainnya, dan penolakan hook berlaku bahkan dalam mode `bypassPermissions`.

71</Warning>

72 

69Untuk agen yang terkunci, pasangkan `allowedTools` dengan `permissionMode: "dontAsk"`. Alat yang tercantum disetujui; apa pun yang lain ditolak sepenuhnya daripada meminta:73Untuk agen yang terkunci, pasangkan `allowedTools` dengan `permissionMode: "dontAsk"`. Alat yang tercantum disetujui; apa pun yang lain ditolak sepenuhnya daripada meminta:

70 74 

71```typescript theme={null}75```typescript theme={null}

Details

750 750 

751 751 

752async def main():752async def main():

753 options = ClaudeAgentOptions(753 # Jangan juga daftarkan tools yang dibatasi dalam allowed_tools: aturan izin menyetujui panggilan sebelum can_use_tool berjalan

754 can_use_tool=custom_permission_handler, allowed_tools=["Read", "Write", "Edit"]754 options = ClaudeAgentOptions(can_use_tool=custom_permission_handler)

755 )

756 755 

757 async with ClaudeSDKClient(options=options) as client:756 async with ClaudeSDKClient(options=options) as client:

758 await client.query("Update the system config file")757 await client.query("Update the system config file")


886 fork_session: bool = False885 fork_session: bool = False

887 agents: dict[str, AgentDefinition] | None = None886 agents: dict[str, AgentDefinition] | None = None

888 setting_sources: list[SettingSource] | None = None887 setting_sources: list[SettingSource] | None = None

888 skills: list[str] | Literal["all"] | None = None

889 sandbox: SandboxSettings | None = None889 sandbox: SandboxSettings | None = None

890 plugins: list[SdkPluginConfig] = field(default_factory=list)890 plugins: list[SdkPluginConfig] = field(default_factory=list)

891 max_thinking_tokens: int | None = None # Deprecated: use thinking instead891 max_thinking_tokens: int | None = None # Deprecated: use thinking instead


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

925| `debug_stderr` | `Any` | `sys.stderr` | *Deprecated* - Objek seperti file untuk output debug. Gunakan callback `stderr` sebagai gantinya |925| `debug_stderr` | `Any` | `sys.stderr` | *Deprecated* - Objek seperti file untuk output debug. Gunakan callback `stderr` sebagai gantinya |

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

927| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Fungsi callback izin tool. Lihat [Permission types](#canusetool) untuk detail |927| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Fungsi callback izin tool, dipanggil hanya ketika [alur izin](/id/agent-sdk/permissions#how-permissions-are-evaluated) jatuh ke prompt. Tidak dipanggil untuk panggilan yang auto-approved oleh entri `allowed_tools`, aturan allow, atau `permission_mode`. Lihat [`CanUseTool`](#canusetool) untuk detail |

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

929| `user` | `str \| None` | `None` | Pengenal pengguna |929| `user` | `str \| None` | `None` | Pengenal pengguna |

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


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

961* `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` untuk retry kapasitas error tanpa batas.961* `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` untuk retry kapasitas error tanpa batas.

962* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog stall untuk subagent yang diluncurkan dengan `run_in_background`. Default `600000`. Direset pada setiap event stream; pada stall itu membatalkan subagent, menandai tugas gagal, dan menampilkan error ke parent dengan hasil parsial apa pun. Tidak berlaku untuk subagent sinkron.962* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog stall untuk subagent yang diluncurkan dengan `run_in_background`. Default `600000`. Direset pada setiap event stream; pada stall itu membatalkan subagent, menandai tugas gagal, dan menampilkan error ke parent dengan hasil parsial apa pun. Tidak berlaku untuk subagent sinkron.

963* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: membatalkan permintaan ketika header telah tiba tetapi badan respons berhenti streaming. Ketika `CLAUDE_ENABLE_STREAM_WATCHDOG` tidak diatur, default adalah server-controlled pada Anthropic API langsung dan off pada penyedia lain. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` default ke `300000` dan diklem ke minimum itu. Permintaan yang dibatalkan melalui jalur retry normal.963* `CLAUDE_ENABLE_STREAM_WATCHDOG` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: membatalkan permintaan ketika header telah tiba tetapi badan respons berhenti streaming. Watchdog aktif secara default untuk semua penyedia; atur `CLAUDE_ENABLE_STREAM_WATCHDOG=0` untuk menonaktifkannya. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` default ke `300000` dan diklem ke minimum itu. Permintaan yang dibatalkan melalui jalur retry normal.

964 964 

965<h3 id="outputformat">965<h3 id="outputformat">

966 `OutputFormat`966 `OutputFormat`


1206 "low", # Minimal thinking, fastest responses1206 "low", # Minimal thinking, fastest responses

1207 "medium", # Moderate thinking1207 "medium", # Moderate thinking

1208 "high", # Deep reasoning1208 "high", # Deep reasoning

1209 "xhigh", # Extended reasoning (Opus 4.8 and Opus 4.7; falls back to "high" on other models)1209 "xhigh", # Extended reasoning; falls back to "high" on models that don't support it

1210 "max", # Maximum effort1210 "max", # Maximum effort

1211]1211]

1212```1212```


1231 1231 

1232Mengembalikan `PermissionResult` (baik `PermissionResultAllow` atau `PermissionResultDeny`).1232Mengembalikan `PermissionResult` (baik `PermissionResultAllow` atau `PermissionResultDeny`).

1233 1233 

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

1235 

1234<h3 id="toolpermissioncontext">1236<h3 id="toolpermissioncontext">

1235 `ToolPermissionContext`1237 `ToolPermissionContext`

1236</h3>1238</h3>


1432Gunakan dengan field `betas` dalam `ClaudeAgentOptions` untuk mengaktifkan fitur beta.1434Gunakan dengan field `betas` dalam `ClaudeAgentOptions` untuk mengaktifkan fitur beta.

1433 1435 

1434<Warning>1436<Warning>

1435 Beta `context-1m-2025-08-07` sudah pensiun sejak 30 April 2026. Melewatkan header ini dengan Claude Sonnet 4.5 atau Sonnet 4 tidak berpengaruh, dan permintaan yang melebihi jendela konteks standar 200k-token mengembalikan error. Untuk menggunakan jendela konteks 1M-token, migrasikan ke [Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, atau Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), yang mencakup konteks 1M pada harga standar tanpa header beta yang diperlukan.1437 Beta `context-1m-2025-08-07` sudah pensiun sejak 30 April 2026. Melewatkan header ini dengan Claude Sonnet 4.5 atau Sonnet 4 tidak berpengaruh, dan permintaan yang melebihi jendela konteks standar 200k-token mengembalikan error. Untuk menggunakan jendela konteks 1M-token, migrasikan ke [Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, atau Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), yang mencakup konteks 1M pada harga standar tanpa header beta yang diperlukan.

1436</Warning>1438</Warning>

1437 1439 

1438<h3 id="mcpsdkserverconfig">1440<h3 id="mcpsdkserverconfig">


2681 2683 

2682**Nama tool:** `Monitor`2684**Nama tool:** `Monitor`

2683 2685 

2684Menjalankan skrip latar belakang dan mengirimkan setiap baris stdout ke Claude sebagai event sehingga dapat bereaksi tanpa polling. Monitor mengikuti aturan izin yang sama seperti Bash. Lihat [Monitor tool reference](/id/tools-reference#monitor-tool) untuk perilaku dan ketersediaan penyedia.2686Menjalankan sumber latar belakang dan mengirimkan setiap event ke Claude sehingga dapat bereaksi tanpa polling: `command` menjalankan skrip dan mengeluarkan satu event per baris stdout, dan `ws` membuka WebSocket dan mengeluarkan satu event per frame teks. Berikan tepat satu dari `command` atau `ws`.

2687 

2688Ketika Monitor menjalankan perintah, ia mengikuti aturan izin yang sama seperti Bash; pengawasan WebSocket meminta persetujuan secara terpisah. {/* min-version: 2.1.195 */}Sumber `ws` memerlukan Claude Code v2.1.195 atau lebih baru. Lihat [Monitor tool reference](/id/tools-reference#monitor-tool) untuk perilaku dan ketersediaan penyedia.

2685 2689 

2686**Input:**2690**Input:**

2687 2691 

2688```python theme={null}2692```python theme={null}

2689{2693{

2690 "command": str, # Skrip shell; setiap baris stdout adalah event, keluar mengakhiri pengawasan2694 "command": str | None, # Skrip shell; setiap baris stdout adalah event, keluar mengakhiri pengawasan

2695 "ws": dict | None, # Sumber WebSocket: {"url": str, "protocols": list[str] | None}; setiap frame teks adalah event

2691 "description": str, # Deskripsi singkat ditampilkan dalam notifikasi2696 "description": str, # Deskripsi singkat ditampilkan dalam notifikasi

2692 "timeout_ms": int | None, # Bunuh setelah batas waktu ini (default 300000, maks 3600000)2697 "timeout_ms": int | None, # Bunuh setelah batas waktu ini (default 300000, maks 3600000)

2693 "persistent": bool | None, # Jalankan untuk seumur hidup sesi; hentikan dengan TaskStop2698 "persistent": bool | None, # Jalankan untuk seumur hidup sesi; hentikan dengan TaskStop

Details

41 Instal paket Agent SDK untuk bahasa Anda:41 Instal paket Agent SDK untuk bahasa Anda:

42 42 

43 <Tabs>43 <Tabs>

44 <Tab title="TypeScript">44 <Tab title="TypeScript (proyek baru)">

45 ```bash theme={null}45 ```bash theme={null}

46 npm init -y

47 npm pkg set type=module

46 npm install @anthropic-ai/claude-agent-sdk48 npm install @anthropic-ai/claude-agent-sdk

49 npm install --save-dev tsx

47 ```50 ```

51 

52 Mengatur `"type": "module"` di `package.json` memungkinkan skrip agen Anda menggunakan `await` tingkat atas, dan [tsx](https://tsx.is) menjalankan file TypeScript secara langsung.

53 </Tab>

54 

55 <Tab title="TypeScript (proyek yang ada)">

56 ```bash theme={null}

57 npm install @anthropic-ai/claude-agent-sdk

58 npm install --save-dev tsx

59 ```

60 

61 [tsx](https://tsx.is) menjalankan file TypeScript secara langsung. Jika proyek Anda menggunakan CommonJS, beri nama skrip agen Anda `agent.mts` alih-alih `agent.ts`. Ekstensi `.mts` membuat tsx memperlakukan file sebagai modul ES, sehingga `await` tingkat atas berfungsi tanpa mengonversi seluruh proyek Anda ke modul ES. Gunakan `agent.mts` sebagai pengganti `agent.ts` dalam langkah buat dan jalankan nanti dalam panduan cepat ini.

48 </Tab>62 </Tab>

49 63 

50 <Tab title="Python (uv)">64 <Tab title="Python (uv)">


85 </Step>99 </Step>

86 100 

87 <Step title="Atur kunci API Anda">101 <Step title="Atur kunci API Anda">

88 Dapatkan kunci API dari [Claude Console](https://platform.claude.com/), kemudian buat file `.env` di direktori proyek Anda:102 Dapatkan kunci API dari [Claude Console](https://platform.claude.com/), kemudian atur sebagai variabel lingkungan di shell tempat Anda akan menjalankan agen Anda:

89 103 

104 <Tabs>

105 <Tab title="macOS / Linux">

90 ```bash theme={null}106 ```bash theme={null}

91 ANTHROPIC_API_KEY=your-api-key107 export ANTHROPIC_API_KEY=your-api-key

92 ```108 ```

109 </Tab>

110 

111 <Tab title="Windows (PowerShell)">

112 ```powershell theme={null}

113 $env:ANTHROPIC_API_KEY = "your-api-key"

114 ```

115 </Tab>

116 </Tabs>

117 

118 SDK membaca kunci dari lingkungan proses yang menjalankan agen Anda; SDK tidak memuat file `.env` secara otomatis. Jika Anda menyimpan kunci di file `.env`, muat sendiri, misalnya dengan paket `dotenv`, sebelum memanggil SDK.

93 119 

94 SDK juga mendukung autentikasi melalui penyedia API pihak ketiga:120 SDK juga mendukung autentikasi melalui penyedia API pihak ketiga:

95 121 


133 Bangun agen yang menemukan dan memperbaiki bug159 Bangun agen yang menemukan dan memperbaiki bug

134</h2>160</h2>

135 161 

136Buat `agent.py` jika Anda menggunakan Python SDK, atau `agent.ts` untuk TypeScript:162Buat `agent.py` jika Anda menggunakan Python SDK, atau `agent.ts` untuk TypeScript. Gunakan `agent.mts` sebagai gantinya jika proyek yang ada Anda menggunakan CommonJS:

137 163 

138<CodeGroup>164<CodeGroup>

139 ```python Python theme={null}165 ```python Python theme={null}


218 ```bash theme={null}244 ```bash theme={null}

219 npx tsx agent.ts245 npx tsx agent.ts

220 ```246 ```

247 

248 Jika Anda memberi nama skrip Anda `agent.mts`, jalankan `npx tsx agent.mts` sebagai gantinya.

221 </Tab>249 </Tab>

222 250 

223 <Tab title="Python (uv)">251 <Tab title="Python (uv)">


235 </Tab>263 </Tab>

236</Tabs>264</Tabs>

237 265 

238Setelah menjalankan, periksa `utils.py`. Anda akan melihat kode defensif yang menangani daftar kosong dan pengguna null. Agen Anda secara mandiri:266Saat bekerja, agen mencetak penalarannya dan setiap alat yang dipanggilnya, diakhiri dengan `Done: success`. Setelah menjalankan, periksa `utils.py`. Anda akan melihat kode defensif yang menangani daftar kosong dan pengguna null. Agen Anda secara mandiri:

239 267 

2401. **Membaca** `utils.py` untuk memahami kode2681. **Membaca** `utils.py` untuk memahami kode

2412. **Menganalisis** logika dan mengidentifikasi kasus tepi yang akan mogok2692. **Menganalisis** logika dan mengidentifikasi kasus tepi yang akan mogok


244Inilah yang membuat Agent SDK berbeda: Claude menjalankan alat secara langsung alih-alih meminta Anda untuk mengimplementasikannya.272Inilah yang membuat Agent SDK berbeda: Claude menjalankan alat secara langsung alih-alih meminta Anda untuk mengimplementasikannya.

245 273 

246<Note>274<Note>

247 Jika Anda melihat "API key not found", pastikan Anda telah menetapkan variabel lingkungan `ANTHROPIC_API_KEY` di file `.env` atau lingkungan shell Anda. Lihat [panduan pemecahan masalah lengkap](/id/troubleshooting) untuk bantuan lebih lanjut.275 Jika Anda melihat "API key not found", pastikan Anda telah menetapkan variabel lingkungan `ANTHROPIC_API_KEY` di shell tempat Anda menjalankan agen Anda. SDK tidak memuat file `.env` secara otomatis. Lihat [panduan pemecahan masalah lengkap](/id/troubleshooting) untuk bantuan lebih lanjut.

248</Note>276</Note>

249 277 

250<h3 id="try-other-prompts">278<h3 id="try-other-prompts">


340**Permission modes** mengontrol berapa banyak pengawasan manusia yang Anda inginkan:368**Permission modes** mengontrol berapa banyak pengawasan manusia yang Anda inginkan:

341 369 

342| Mode | Perilaku | Kasus penggunaan |370| Mode | Perilaku | Kasus penggunaan |

343| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |371| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |

344| `acceptEdits` | Auto-persetujuan pengeditan file dan perintah sistem file umum, meminta tindakan lain | Alur kerja pengembangan terpercaya |372| `acceptEdits` | Auto-persetujuan pengeditan file dan perintah sistem file umum, meminta tindakan lain | Alur kerja pengembangan terpercaya |

373| `plan` | Menjalankan alat hanya-baca; pengeditan file tidak pernah auto-disetujui dan mencapai callback `canUseTool` Anda | Menentukan cakupan tugas sebelum menyetujui eksekusi |

345| `dontAsk` | Menolak apa pun yang tidak ada di `allowedTools` | Agen headless terkunci |374| `dontAsk` | Menolak apa pun yang tidak ada di `allowedTools` | Agen headless terkunci |

346| `auto` (TypeScript only) | Pengklasifikasi model menyetujui atau menolak setiap panggilan alat | Agen otonom dengan penjaga keamanan |375| `auto` (TypeScript only) | Pengklasifikasi model menyetujui atau menolak setiap panggilan alat | Agen otonom dengan penjaga keamanan |

347| `bypassPermissions` | Menjalankan setiap alat tanpa prompt, kecuali aturan [`ask`](/id/agent-sdk/permissions#how-permissions-are-evaluated) eksplisit cocok | CI sandboxed, lingkungan yang sepenuhnya terpercaya |376| `bypassPermissions` | Menjalankan setiap alat tanpa prompt, kecuali aturan [`ask`](/id/agent-sdk/permissions#how-permissions-are-evaluated) eksplisit cocok | CI sandboxed, lingkungan yang sepenuhnya terpercaya |


349 378 

350Contoh di atas menggunakan mode `acceptEdits`, yang auto-persetujuan operasi file sehingga agen dapat berjalan tanpa prompt interaktif. Jika Anda ingin meminta pengguna untuk persetujuan, gunakan mode `default` dan sediakan callback [`canUseTool`](/id/agent-sdk/user-input) yang mengumpulkan input pengguna. Untuk kontrol lebih lanjut, lihat [Permissions](/id/agent-sdk/permissions).379Contoh di atas menggunakan mode `acceptEdits`, yang auto-persetujuan operasi file sehingga agen dapat berjalan tanpa prompt interaktif. Jika Anda ingin meminta pengguna untuk persetujuan, gunakan mode `default` dan sediakan callback [`canUseTool`](/id/agent-sdk/user-input) yang mengumpulkan input pengguna. Untuk kontrol lebih lanjut, lihat [Permissions](/id/agent-sdk/permissions).

351 380 

352<h2 id="troubleshooting">

353 Pemecahan masalah

354</h2>

355 

356<h3 id="api-error-thinking-type-enabled-is-not-supported-for-this-model">

357 Kesalahan API `thinking.type.enabled` tidak didukung untuk model ini

358</h3>

359 

360Claude Opus 4.7 menggantikan `thinking.type.enabled` dengan `thinking.type.adaptive`. Versi Agent SDK yang lebih lama gagal dengan kesalahan API berikut ketika Anda memilih `claude-opus-4-7`:

361 

362```text theme={null}

363API Error: 400 {"type":"invalid_request_error","message":"\"thinking.type.enabled\" is not supported for this model. Use \"thinking.type.adaptive\" and \"output_config.effort\" to control thinking behavior."}

364```

365 

366Tingkatkan ke Agent SDK v0.2.111 atau lebih baru untuk menggunakan Opus 4.7.

367 

368<h2 id="next-steps">381<h2 id="next-steps">

369 Langkah berikutnya382 Langkah berikutnya

370</h2>383</h2>

Details

235 Penulisan cerminan adalah best-effort235 Penulisan cerminan adalah best-effort

236</h3>236</h3>

237 237 

238Jika `append()` menolak atau timeout, kesalahan dicatat, pesan `{ type: "system", subtype: "mirror_error" }` dipancarkan ke iterator, dan kueri berlanjut. Transkrip lokal sudah tahan lama di disk, jadi pemadaman penyimpanan tidak mengganggu agen atau kehilangan data secara lokal. Batch yang gagal tidak dicoba ulang, jadi pantau `mirror_error` jika Anda perlu mendeteksi kehilangan data penyimpanan.238Jika `append()` menolak, SDK mencoba ulang batch hingga dua kali lagi dengan backoff singkat, untuk maksimal tiga percobaan total. Panggilan yang timeout tidak dicoba ulang, karena panggilan asli mungkin masih mendarat. Jika batch masih gagal, kesalahan dicatat, pesan `{ type: "system", subtype: "mirror_error" }` dipancarkan ke iterator, batch dijatuhkan, dan kueri berlanjut. Transkrip lokal sudah tahan lama di disk, jadi pemadaman penyimpanan tidak mengganggu agen atau kehilangan data secara lokal. Pantau `mirror_error` jika Anda perlu mendeteksi kehilangan data penyimpanan. Karena batch yang dicoba ulang dapat mengirimkan ulang entri yang sudah mendarat, deduplikasi berdasarkan `entry.uuid` dalam implementasi `append()` Anda.

239 239 

240<h3 id="getsessionmessages-returns-the-post-compaction-chain">240<h3 id="getsessionmessages-returns-the-post-compaction-chain">

241 `getSessionMessages` mengembalikan rantai post-compaction241 `getSessionMessages` mengembalikan rantai post-compaction

Details

24 })) {24 })) {

25 if (message.type === "system" && message.subtype === "init") {25 if (message.type === "system" && message.subtype === "init") {

26 console.log("Available slash commands:", message.slash_commands);26 console.log("Available slash commands:", message.slash_commands);

27 // Example output: ["clear", "compact", "context", "usage"]27 // Includes built-in commands plus bundled skills, for example:

28 // ["clear", "compact", "context", "usage", "code-review", "verify", ...]

28 }29 }

29 }30 }

30 ```31 ```


38 async for message in query(prompt="Hello Claude", options=ClaudeAgentOptions(max_turns=1)):39 async for message in query(prompt="Hello Claude", options=ClaudeAgentOptions(max_turns=1)):

39 if isinstance(message, SystemMessage) and message.subtype == "init":40 if isinstance(message, SystemMessage) and message.subtype == "init":

40 print("Available slash commands:", message.data["slash_commands"])41 print("Available slash commands:", message.data["slash_commands"])

41 # Example output: ["clear", "compact", "context", "usage"]42 # Includes built-in commands plus bundled skills, for example:

43 # ["clear", "compact", "context", "usage", "code-review", "verify", ...]

42 44 

43 45 

44 asyncio.run(main())46 asyncio.run(main())


49 Mengirim Slash Commands51 Mengirim Slash Commands

50</h2>52</h2>

51 53 

52Kirim slash commands dengan memasukkannya dalam string prompt Anda, seperti teks biasa:54Kirim slash commands dengan memasukkannya dalam string prompt Anda, seperti teks biasa. Perintah yang bertindak pada riwayat percakapan, seperti `/compact`, memerlukan pesan sebelumnya untuk bekerja, jadi contoh di bawah ini mengajukan pertanyaan terlebih dahulu dan kemudian mengirim perintah sebagai tindak lanjut ke percakapan yang sama:

53 55 

54<CodeGroup>56<CodeGroup>

55 ```typescript TypeScript theme={null}57 ```typescript TypeScript theme={null}

56 import { query } from "@anthropic-ai/claude-agent-sdk";58 import { query } from "@anthropic-ai/claude-agent-sdk";

57 59 

58 // Send a slash command60 // Build up conversation history first

61 try {

59 for await (const message of query({62 for await (const message of query({

60 prompt: "/compact",63 prompt: "What does the README in this directory cover?",

61 options: { maxTurns: 1 }64 options: { maxTurns: 2 }

62 })) {65 })) {

63 if (message.type === "result" && message.subtype === "success") {66 if (message.type === "result" && message.subtype === "success") {

64 console.log("Command executed:", message.result);67 console.log(message.result);

68 }

69 }

70 } catch (error) {

71 // A single-shot query() throws after yielding an error result,

72 // so the follow-up query below still runs.

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

74 }

75 

76 // Send a slash command as a follow-up to the same conversation

77 for await (const message of query({

78 prompt: "/compact",

79 options: { continue: true, maxTurns: 1 }

80 })) {

81 if (message.type === "result") {

82 console.log("Command executed, result subtype:", message.subtype);

83 // Example output: Command executed, result subtype: success

65 }84 }

66 }85 }

67 ```86 ```


72 91 

73 92 

74 async def main():93 async def main():

75 # Send a slash command94 # Build up conversation history first

76 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):95 try:

96 async for message in query(

97 prompt="What does the README in this directory cover?",

98 options=ClaudeAgentOptions(max_turns=2),

99 ):

100 if isinstance(message, ResultMessage) and message.subtype == "success":

101 print(message.result)

102 except Exception as error:

103 # A single-shot query() raises after yielding an error result,

104 # so the follow-up query below still runs.

105 print(f"Session ended with an error: {error}")

106 

107 # Send a slash command as a follow-up to the same conversation

108 async for message in query(

109 prompt="/compact",

110 options=ClaudeAgentOptions(continue_conversation=True, max_turns=1),

111 ):

77 if isinstance(message, ResultMessage):112 if isinstance(message, ResultMessage):

78 print("Command executed:", message.result)113 print("Command executed, result subtype:", message.subtype)

114 # Example output: Command executed, result subtype: success

79 115 

80 116 

81 asyncio.run(main())117 asyncio.run(main())

82 ```118 ```

83</CodeGroup>119</CodeGroup>

84 120 

121<Note>

122 Kueri dapat berakhir dengan hasil kesalahan, misalnya ketika batas `maxTurns` / `max_turns` tercapai sebelum pekerjaan selesai. Pesan hasil akhir kemudian memiliki `is_error: true` dan subtipe kesalahan seperti `error_max_turns` alih-alih `success`.

123 

124 Setelah menghasilkan pesan hasil akhir tersebut, SDK melempar kesalahan, karena proses CLI keluar dengan kode non-nol.

125 

126 Bungkus loop dalam `try`/`catch` di TypeScript atau `try`/`except` di Python jika perintah Anda mungkin mencapai batas, seperti yang ditunjukkan dalam [Single Message Input](/id/agent-sdk/streaming-vs-single-mode#single-message-input), atau atur `maxTurns` cukup tinggi agar pekerjaan dapat selesai. Di Python, tangkap `Exception`: SDK menampilkan hasil kesalahan sebagai `Exception` biasa.

127</Note>

128 

85<h2 id="common-slash-commands">129<h2 id="common-slash-commands">

86 Slash Commands Umum130 Slash Commands Umum

87</h2>131</h2>


90 `/compact` - Memadatkan Riwayat Percakapan134 `/compact` - Memadatkan Riwayat Percakapan

91</h3>135</h3>

92 136 

93Perintah `/compact` mengurangi ukuran riwayat percakapan Anda dengan merangkum pesan yang lebih lama sambil mempertahankan konteks penting:137Perintah `/compact` mengurangi ukuran riwayat percakapan Anda dengan merangkum pesan yang lebih lama sambil mempertahankan konteks penting. Pemadatan memerlukan percakapan yang sudah ada dengan setidaknya dua pertukaran sebelumnya untuk dirangkum. Contoh ini memiliki percakapan terlebih dahulu, kemudian memadatkannya dan membaca pesan sistem `compact_boundary` yang melaporkan hasilnya:

94 138 

95<CodeGroup>139<CodeGroup>

96 ```typescript TypeScript theme={null}140 ```typescript TypeScript theme={null}

97 import { query } from "@anthropic-ai/claude-agent-sdk";141 import { query } from "@anthropic-ai/claude-agent-sdk";

98 142 

143 // Pemadatan memerlukan riwayat yang sudah ada, jadi mulai dengan percakapan terlebih dahulu

144 try {

145 for await (const message of query({

146 prompt: "Jelaskan apa yang dilakukan proyek ini",

147 options: { maxTurns: 2 }

148 })) {

149 if (message.type === "result" && message.subtype === "success") {

150 console.log(message.result);

151 }

152 }

153 } catch (error) {

154 // Satu query() sekali jalan melempar setelah menghasilkan hasil kesalahan,

155 // jadi query tindak lanjut di bawah masih berjalan.

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

157 }

158 

159 // Padatkan percakapan yang sama

99 for await (const message of query({160 for await (const message of query({

100 prompt: "/compact",161 prompt: "/compact",

101 options: { maxTurns: 1 }162 options: { continue: true, maxTurns: 1 }

102 })) {163 })) {

103 if (message.type === "system" && message.subtype === "compact_boundary") {164 if (message.type === "system" && message.subtype === "compact_boundary") {

104 console.log("Compaction completed");165 console.log("Pemadatan selesai");

105 console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);166 console.log("Token sebelum pemadatan:", message.compact_metadata.pre_tokens);

106 console.log("Trigger:", message.compact_metadata.trigger);167 console.log("Pemicu:", message.compact_metadata.trigger);

168 // Contoh output:

169 // Pemadatan selesai

170 // Token sebelum pemadatan: 1842

171 // Pemicu: manual

107 }172 }

108 }173 }

109 ```174 ```

110 175 

111 ```python Python theme={null}176 ```python Python theme={null}

112 import asyncio177 import asyncio

113 from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage178 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage, SystemMessage

114 179 

115 180 

116 async def main():181 async def main():

117 async for message in query(prompt="/compact", options=ClaudeAgentOptions(max_turns=1)):182 # Pemadatan memerlukan riwayat yang sudah ada, jadi mulai dengan percakapan terlebih dahulu

183 try:

184 async for message in query(

185 prompt="Jelaskan apa yang dilakukan proyek ini",

186 options=ClaudeAgentOptions(max_turns=2),

187 ):

188 if isinstance(message, ResultMessage) and message.subtype == "success":

189 print(message.result)

190 except Exception as error:

191 # Satu query() sekali jalan menaikkan setelah menghasilkan hasil kesalahan,

192 # jadi query tindak lanjut di bawah masih berjalan.

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

194 

195 # Padatkan percakapan yang sama

196 async for message in query(

197 prompt="/compact",

198 options=ClaudeAgentOptions(continue_conversation=True, max_turns=1),

199 ):

118 if isinstance(message, SystemMessage) and message.subtype == "compact_boundary":200 if isinstance(message, SystemMessage) and message.subtype == "compact_boundary":

119 print("Compaction completed")201 print("Pemadatan selesai")

120 print("Pre-compaction tokens:", message.data["compact_metadata"]["pre_tokens"])202 print("Token sebelum pemadatan:", message.data["compact_metadata"]["pre_tokens"])

121 print("Trigger:", message.data["compact_metadata"]["trigger"])203 print("Pemicu:", message.data["compact_metadata"]["trigger"])

204 # Contoh output:

205 # Pemadatan selesai

206 # Token sebelum pemadatan: 1842

207 # Pemicu: manual

122 208 

123 209 

124 asyncio.run(main())210 asyncio.run(main())

125 ```211 ```

126</CodeGroup>212</CodeGroup>

127 213 

214<Note>

215 Pesan `compact_boundary` hanya tiba ketika pemadatan berjalan. Tanpa ada yang dirangkum, `/compact` melaporkan alasannya sebagai gantinya dari menaikkan: jalannya masih berakhir dengan hasil `success`, tidak ada pesan `compact_boundary` yang dipancarkan, dan teks hasil membawa pesan, misalnya `Tidak cukup pesan untuk dipadatkan.` setelah satu pertukaran pendek. Panggilan `query()` sekali jalan yang segar dimulai dengan konteks kosong, jadi gunakan pola ini dalam sesi dengan putaran sebelumnya, misalnya dalam [mode input streaming](/id/agent-sdk/streaming-vs-single-mode) atau ketika melanjutkan sesi.

216</Note>

217 

128<h3 id="/clear-reset-conversation-context">218<h3 id="/clear-reset-conversation-context">

129 `/clear` - Atur Ulang Konteks Percakapan219 `/clear` - Atur Ulang Konteks Percakapan

130</h3>220</h3>


170 Contoh Dasar260 Contoh Dasar

171</h4>261</h4>

172 262 

173Buat `.claude/commands/refactor.md`:263Buat direktori `.claude/commands` di proyek Anda jika belum ada, kemudian buat `.claude/commands/refactor.md`:

174 264 

175```markdown theme={null}265```markdown theme={null}

176Refactor the selected code to improve readability and maintainability.266Refactor the selected code to improve readability and maintainability.


189---279---

190allowed-tools: Read, Grep, Glob280allowed-tools: Read, Grep, Glob

191description: Run security vulnerability scan281description: Run security vulnerability scan

192model: claude-opus-4-7282model: claude-opus-4-8

193---283---

194 284 

195Analyze the codebase for security vulnerabilities including:285Analyze the codebase for security vulnerabilities including:


210 import { query } from "@anthropic-ai/claude-agent-sdk";300 import { query } from "@anthropic-ai/claude-agent-sdk";

211 301 

212 // Use a custom command302 // Use a custom command

303 try {

213 for await (const message of query({304 for await (const message of query({

214 prompt: "/refactor src/auth/login.ts",305 prompt: "/refactor src/auth/login.ts",

215 options: { maxTurns: 3 }306 options: { maxTurns: 3 }


218 console.log("Refactoring suggestions:", message.message);309 console.log("Refactoring suggestions:", message.message);

219 }310 }

220 }311 }

312 } catch (error) {

313 // A single-shot query() throws after yielding an error result,

314 // so the second query below still runs.

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

316 }

221 317 

222 // Custom commands appear in the slash_commands list318 // Custom commands appear in the slash_commands list

223 for await (const message of query({319 for await (const message of query({


225 options: { maxTurns: 1 }321 options: { maxTurns: 1 }

226 })) {322 })) {

227 if (message.type === "system" && message.subtype === "init") {323 if (message.type === "system" && message.subtype === "init") {

228 // Will include both built-in and custom commands

229 console.log("Available commands:", message.slash_commands);324 console.log("Available commands:", message.slash_commands);

230 // Example: ["clear", "compact", "context", "usage", "refactor", "security-check"]325 // Includes built-in commands plus bundled skills and your custom commands, for example:

326 // ["clear", "compact", "context", "usage", "code-review", "verify", "refactor", "security-check", ...]

231 }327 }

232 }328 }

233 ```329 ```


239 335 

240 async def main():336 async def main():

241 # Use a custom command337 # Use a custom command

338 try:

242 async for message in query(339 async for message in query(

243 prompt="/refactor src/auth/login.py", options=ClaudeAgentOptions(max_turns=3)340 prompt="/refactor src/auth/login.py", options=ClaudeAgentOptions(max_turns=3)

244 ):341 ):


246 for block in message.content:343 for block in message.content:

247 if hasattr(block, "text"):344 if hasattr(block, "text"):

248 print("Refactoring suggestions:", block.text)345 print("Refactoring suggestions:", block.text)

346 except Exception as error:

347 # A single-shot query() raises after yielding an error result,

348 # so the second query below still runs.

349 print(f"Session ended with an error: {error}")

249 350 

250 # Custom commands appear in the slash_commands list351 # Custom commands appear in the slash_commands list

251 async for message in query(prompt="Hello", options=ClaudeAgentOptions(max_turns=1)):352 async for message in query(prompt="Hello", options=ClaudeAgentOptions(max_turns=1)):

252 if isinstance(message, SystemMessage) and message.subtype == "init":353 if isinstance(message, SystemMessage) and message.subtype == "init":

253 # Will include both built-in and custom commands

254 print("Available commands:", message.data["slash_commands"])354 print("Available commands:", message.data["slash_commands"])

255 # Example: ["clear", "compact", "context", "usage", "refactor", "security-check"]355 # Includes built-in commands plus bundled skills and your custom commands, for example:

356 # ["clear", "compact", "context", "usage", "code-review", "verify", "refactor", "security-check", ...]

256 357 

257 358 

258 asyncio.run(main())359 asyncio.run(main())


384 Contoh Praktis485 Contoh Praktis

385</h3>486</h3>

386 487 

387<h4 id="code-review-command">488<h4 id="pull-request-review-command">

388 Perintah Code Review489 Perintah Pull Request Review

389</h4>490</h4>

390 491 

391Buat `.claude/commands/code-review.md`:492Buat `.claude/commands/review-pr.md`:

392 493 

393```markdown theme={null}494```markdown theme={null}

394---495---


414Provide specific, actionable feedback organized by priority.515Provide specific, actionable feedback organized by priority.

415```516```

416 517 

518<Note>

519 Claude Code mencakup skills `code-review` dan `verify` yang disertakan. Jika Anda memberi nama perintah khusus setelah salah satunya, misalnya `.claude/commands/code-review.md`, perintah Anda menimpa skill yang disertakan dan `slash_commands` mencantumkan nama sekali.

520</Note>

521 

417<h4 id="test-runner-command">522<h4 id="test-runner-command">

418 Perintah Test Runner523 Perintah Test Runner

419</h4>524</h4>


442 import { query } from "@anthropic-ai/claude-agent-sdk";547 import { query } from "@anthropic-ai/claude-agent-sdk";

443 548 

444 // Run code review549 // Run code review

550 try {

445 for await (const message of query({551 for await (const message of query({

446 prompt: "/code-review",552 prompt: "/review-pr",

447 options: { maxTurns: 3 }553 options: { maxTurns: 3 }

448 })) {554 })) {

449 // Process review feedback555 // Process review feedback

450 }556 }

557 } catch (error) {

558 // A single-shot query() throws after yielding an error result,

559 // so the second query below still runs.

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

561 }

451 562 

452 // Run specific tests563 // Run specific tests

453 for await (const message of query({564 for await (const message of query({


465 576 

466 async def main():577 async def main():

467 # Run code review578 # Run code review

468 async for message in query(prompt="/code-review", options=ClaudeAgentOptions(max_turns=3)):579 try:

580 async for message in query(prompt="/review-pr", options=ClaudeAgentOptions(max_turns=3)):

469 # Process review feedback581 # Process review feedback

470 pass582 pass

583 except Exception as error:

584 # A single-shot query() raises after yielding an error result,

585 # so the second query below still runs.

586 print(f"Session ended with an error: {error}")

471 587 

472 # Run specific tests588 # Run specific tests

473 async for message in query(prompt="/test auth", options=ClaudeAgentOptions(max_turns=5)):589 async for message in query(prompt="/test auth", options=ClaudeAgentOptions(max_turns=5)):

Details

71 71 

72Tentukan subagents langsung dalam kode Anda menggunakan parameter `agents`. Contoh ini membuat dua subagents: peninjau kode dengan akses read-only dan runner test yang dapat menjalankan perintah. Claude memanggil subagents melalui alat `Agent`, jadi sertakan `Agent` dalam `allowedTools` untuk auto-approve invokasi subagent tanpa prompt izin.72Tentukan subagents langsung dalam kode Anda menggunakan parameter `agents`. Contoh ini membuat dua subagents: peninjau kode dengan akses read-only dan runner test yang dapat menjalankan perintah. Claude memanggil subagents melalui alat `Agent`, jadi sertakan `Agent` dalam `allowedTools` untuk auto-approve invokasi subagent tanpa prompt izin.

73 73 

74Sebagian besar contoh di halaman ini hanya mencetak hasil akhir. Untuk mengonfirmasi bahwa Claude mendelegasikan ke subagent daripada menjawab secara langsung, lihat [Mendeteksi invokasi subagent](#detecting-subagent-invocation).

75 

74<CodeGroup>76<CodeGroup>

75 ```python Python theme={null}77 ```python Python theme={null}

76 import asyncio78 import asyncio


193| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | No | Tingkat upaya penalaran untuk agen ini |195| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | No | Tingkat upaya penalaran untuk agen ini |

194| `permissionMode` | `PermissionMode` | No | Mode izin untuk eksekusi alat dalam agen ini |196| `permissionMode` | `PermissionMode` | No | Mode izin untuk eksekusi alat dalam agen ini |

195 197 

196Dalam Python SDK, nama field ini menggunakan camelCase untuk mencocokkan format wire. Lihat referensi [`AgentDefinition`](/id/agent-sdk/python#agentdefinition) untuk detail.198Dalam Python SDK, nama field multi-kata seperti `disallowedTools` dan `mcpServers` mempertahankan ejaan camelCase mereka untuk mencocokkan format wire daripada mengikuti konvensi snake\_case Python. Lihat referensi [`AgentDefinition`](/id/agent-sdk/python#agentdefinition) untuk detail.

197 199 

198<Note>200<Note>

199 {/* min-version: 2.1.172 */}Sejak Claude Code v2.1.172, subagents dapat menghasilkan subagents mereka sendiri. Subagent lima level di bawah agen utama tidak dapat menghasilkan subagents lebih lanjut, terlepas dari apakah itu berjalan di foreground atau background. Untuk mencegah subagent menghasilkan yang lain, hilangkan `Agent` dari array `tools` atau tambahkan ke `disallowedTools`. Lihat [subagents bersarang](/id/sub-agents#spawn-nested-subagents) untuk aturan kedalaman lengkap.201 {/* min-version: 2.1.172 */}Sejak Claude Code v2.1.172, subagents dapat menghasilkan subagents mereka sendiri. Subagent lima level di bawah agen utama tidak dapat menghasilkan subagents lebih lanjut, terlepas dari apakah itu berjalan di foreground atau background. Untuk mencegah subagent menghasilkan yang lain, hilangkan `Agent` dari array `tools` atau tambahkan ke `disallowedTools`. Lihat [subagents bersarang](/id/sub-agents#spawn-nested-subagents) untuk aturan kedalaman lengkap.


469 session_id = None471 session_id = None

470 472 

471 # First invocation - run the endpoint-finder subagent473 # First invocation - run the endpoint-finder subagent

474 try:

472 async for message in query(475 async for message in query(

473 prompt="Use the endpoint-finder agent to find all API endpoints in this codebase",476 prompt="Use the endpoint-finder agent to find all API endpoints in this codebase",

474 options=ClaudeAgentOptions(allowed_tools=["Read", "Grep", "Glob", "Agent"], agents=AGENTS),477 options=ClaudeAgentOptions(allowed_tools=["Read", "Grep", "Glob", "Agent"], agents=AGENTS),


483 # Print the final result486 # Print the final result

484 if hasattr(message, "result"):487 if hasattr(message, "result"):

485 print(message.result)488 print(message.result)

489 except Exception as error:

490 # A single-shot query() raises after yielding an error result,

491 # so session_id and agent_id have already been captured by the loop above.

492 print(f"Session ended with an error: {error}")

486 493 

487 # Second invocation - resume and ask follow-up494 # Second invocation - resume and ask follow-up

488 if agent_id and session_id:495 if agent_id and session_id:


494 ):501 ):

495 if hasattr(message, "result"):502 if hasattr(message, "result"):

496 print(message.result)503 print(message.result)

504 else:

505 print("No agentId found in the first query, so there is no subagent to resume.")

497 506 

498 507 

499 asyncio.run(main())508 asyncio.run(main())


522 let sessionId: string | undefined;531 let sessionId: string | undefined;

523 532 

524 // First invocation - run the endpoint-finder subagent533 // First invocation - run the endpoint-finder subagent

534 try {

525 for await (const message of query({535 for await (const message of query({

526 prompt: "Use the endpoint-finder agent to find all API endpoints in this codebase",536 prompt: "Use the endpoint-finder agent to find all API endpoints in this codebase",

527 options: { allowedTools: ["Read", "Grep", "Glob", "Agent"], agents }537 options: { allowedTools: ["Read", "Grep", "Glob", "Agent"], agents }


534 // Print the final result544 // Print the final result

535 if ("result" in message) console.log(message.result);545 if ("result" in message) console.log(message.result);

536 }546 }

547 } catch (error) {

548 // A single-shot query() throws after yielding an error result,

549 // so sessionId and agentId have already been captured by the loop above.

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

551 }

537 552 

538 // Second invocation - resume and ask follow-up553 // Second invocation - resume and ask follow-up

539 if (agentId && sessionId) {554 if (agentId && sessionId) {


543 })) {558 })) {

544 if ("result" in message) console.log(message.result);559 if ("result" in message) console.log(message.result);

545 }560 }

561 } else {

562 console.log("No agentId found in the first query, so there is no subagent to resume.");

546 }563 }

547 ```564 ```

548</CodeGroup>565</CodeGroup>

Details

475| `allowDangerouslySkipPermissions` | `boolean` | `false` | Aktifkan bypass izin. Diperlukan saat menggunakan `permissionMode: 'bypassPermissions'` |475| `allowDangerouslySkipPermissions` | `boolean` | `false` | Aktifkan bypass izin. Diperlukan saat menggunakan `permissionMode: 'bypassPermissions'` |

476| `allowedTools` | `string[]` | `[]` | Tool untuk auto-approve tanpa prompt. Ini tidak membatasi Claude hanya pada tool ini; tool yang tidak terdaftar jatuh ke `permissionMode` dan `canUseTool`. Gunakan `disallowedTools` untuk memblokir tool. Lihat [Izin](/id/agent-sdk/permissions#allow-and-deny-rules) |476| `allowedTools` | `string[]` | `[]` | Tool untuk auto-approve tanpa prompt. Ini tidak membatasi Claude hanya pada tool ini; tool yang tidak terdaftar jatuh ke `permissionMode` dan `canUseTool`. Gunakan `disallowedTools` untuk memblokir tool. Lihat [Izin](/id/agent-sdk/permissions#allow-and-deny-rules) |

477| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Aktifkan fitur beta |477| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Aktifkan fitur beta |

478| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Fungsi izin kustom untuk penggunaan tool |478| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Fungsi izin kustom, dipanggil hanya ketika [alur izin](/id/agent-sdk/permissions#how-permissions-are-evaluated) jatuh ke prompt. Tidak dipanggil untuk panggilan yang di-auto-approve oleh `allowedTools`, aturan allow, atau `permissionMode`. Lihat [`CanUseTool`](#canusetool) untuk detail |

479| `continue` | `boolean` | `false` | Lanjutkan percakapan terbaru |479| `continue` | `boolean` | `false` | Lanjutkan percakapan terbaru |

480| `cwd` | `string` | `process.cwd()` | Direktori kerja saat ini |480| `cwd` | `string` | `process.cwd()` | Direktori kerja saat ini |

481| `debug` | `boolean` | `false` | Aktifkan mode debug untuk proses Claude Code |481| `debug` | `boolean` | `false` | Aktifkan mode debug untuk proses Claude Code |


553* `API_TIMEOUT_MS`: timeout per-request pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagen.553* `API_TIMEOUT_MS`: timeout per-request pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagen.

554* `CLAUDE_CODE_MAX_RETRIES`: maksimum retry API. Default `10`, dibatasi pada `15`. Setiap retry mendapatkan jendela `API_TIMEOUT_MS` sendiri, jadi waktu dinding terburuk kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` ditambah backoff. Untuk run yang tidak diawasi yang perlu menunggu melalui pemadaman yang lebih lama, atur `CLAUDE_CODE_RETRY_WATCHDOG=1` untuk retry kapasitas error tanpa batas.554* `CLAUDE_CODE_MAX_RETRIES`: maksimum retry API. Default `10`, dibatasi pada `15`. Setiap retry mendapatkan jendela `API_TIMEOUT_MS` sendiri, jadi waktu dinding terburuk kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` ditambah backoff. Untuk run yang tidak diawasi yang perlu menunggu melalui pemadaman yang lebih lama, atur `CLAUDE_CODE_RETRY_WATCHDOG=1` untuk retry kapasitas error tanpa batas.

555* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: stall watchdog untuk subagen yang diluncurkan dengan `run_in_background`. Default `600000`. Reset pada setiap event stream; pada stall itu membatalkan subagen, menandai tugas gagal, dan menampilkan error ke parent dengan hasil parsial apa pun. Tidak berlaku untuk subagen sinkron.555* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: stall watchdog untuk subagen yang diluncurkan dengan `run_in_background`. Default `600000`. Reset pada setiap event stream; pada stall itu membatalkan subagen, menandai tugas gagal, dan menampilkan error ke parent dengan hasil parsial apa pun. Tidak berlaku untuk subagen sinkron.

556* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: membatalkan request ketika header telah tiba tetapi body respons berhenti streaming. Ketika `CLAUDE_ENABLE_STREAM_WATCHDOG` tidak diatur, default adalah server-controlled pada API Anthropic langsung dan off pada penyedia lain. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` default ke `300000` dan diklem ke minimum itu. Request yang dibatalkan melalui jalur retry normal.556* `CLAUDE_ENABLE_STREAM_WATCHDOG` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: membatalkan request ketika header telah tiba tetapi body respons berhenti streaming. Watchdog aktif secara default untuk semua penyedia; atur `CLAUDE_ENABLE_STREAM_WATCHDOG=0` untuk menonaktifkannya. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` default ke `300000` dan diklem ke minimum itu. Request yang dibatalkan melalui jalur retry normal.

557 557 

558<h3 id="query-object">558<h3 id="query-object">

559 Objek `Query`559 Objek `Query`


573 setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;573 setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;

574 applyFlagSettings(settings: { [K in keyof Settings]?: Settings[K] | null }): Promise<void>;574 applyFlagSettings(settings: { [K in keyof Settings]?: Settings[K] | null }): Promise<void>;

575 initializationResult(): Promise<SDKControlInitializeResponse>;575 initializationResult(): Promise<SDKControlInitializeResponse>;

576 reinitialize(): Promise<SDKControlInitializeResponse>;

576 supportedCommands(): Promise<SlashCommand[]>;577 supportedCommands(): Promise<SlashCommand[]>;

577 supportedModels(): Promise<ModelInfo[]>;578 supportedModels(): Promise<ModelInfo[]>;

578 supportedAgents(): Promise<AgentInfo[]>;579 supportedAgents(): Promise<AgentInfo[]>;


592</h4>593</h4>

593 594 

594| Metode | Deskripsi |595| Metode | Deskripsi |

595| :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |596| :------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

596| `interrupt()` | Mengganggu query (hanya tersedia dalam mode input streaming) |597| `interrupt()` | Mengganggu query (hanya tersedia dalam mode input streaming) |

597| `rewindFiles(userMessageId, options?)` | Mengembalikan file ke keadaan mereka pada pesan pengguna yang ditentukan. Lewatkan `{ dryRun: true }` untuk pratinjau perubahan. Memerlukan `enableFileCheckpointing: true`. Lihat [File checkpointing](/id/agent-sdk/file-checkpointing) |598| `rewindFiles(userMessageId, options?)` | Mengembalikan file ke keadaan mereka pada pesan pengguna yang ditentukan. Lewatkan `{ dryRun: true }` untuk pratinjau perubahan. Memerlukan `enableFileCheckpointing: true`. Lihat [File checkpointing](/id/agent-sdk/file-checkpointing) |

598| `setPermissionMode()` | Mengubah mode izin (hanya tersedia dalam mode input streaming) |599| `setPermissionMode()` | Mengubah mode izin (hanya tersedia dalam mode input streaming) |


600| `setMaxThinkingTokens()` | *Deprecated:* Gunakan opsi `thinking` sebagai gantinya. Mengubah token pemikiran maksimum |601| `setMaxThinkingTokens()` | *Deprecated:* Gunakan opsi `thinking` sebagai gantinya. Mengubah token pemikiran maksimum |

601| `applyFlagSettings(settings)` | Menggabungkan pengaturan ke dalam lapisan flag settings sesi saat runtime (hanya tersedia dalam mode input streaming). Lihat [`applyFlagSettings()`](#applyflagsettings) |602| `applyFlagSettings(settings)` | Menggabungkan pengaturan ke dalam lapisan flag settings sesi saat runtime (hanya tersedia dalam mode input streaming). Lihat [`applyFlagSettings()`](#applyflagsettings) |

602| `initializationResult()` | Mengembalikan hasil inisialisasi lengkap termasuk perintah yang didukung, model, info akun, dan konfigurasi gaya output |603| `initializationResult()` | Mengembalikan hasil inisialisasi lengkap termasuk perintah yang didukung, model, info akun, dan konfigurasi gaya output |

604| `reinitialize()` | {/* min-version: 2.1.195 */}Kirim ulang permintaan kontrol `initialize` ke CLI yang sedang berjalan dan kembalikan hasil segar alih-alih hasil first-connect yang di-cache. Gunakan setelah celah transport, seperti reattaching ke sesi setelah disconnect, sehingga permintaan izin yang tertunda mencapai callback `canUseTool` Anda lagi. Buat callback idempotent per request ID, karena permintaan yang responsnya hilang dikirim ulang. Memerlukan Claude Code v2.1.195 atau lebih baru |

603| `supportedCommands()` | Mengembalikan perintah slash yang tersedia |605| `supportedCommands()` | Mengembalikan perintah slash yang tersedia |

604| `supportedModels()` | Mengembalikan model yang tersedia dengan info tampilan |606| `supportedModels()` | Mengembalikan model yang tersedia dengan info tampilan |

605| `supportedAgents()` | Mengembalikan subagen yang tersedia sebagai [`AgentInfo`](#agentinfo)`[]` |607| `supportedAgents()` | Mengembalikan subagen yang tersedia sebagai [`AgentInfo`](#agentinfo)`[]` |


616 `applyFlagSettings()`618 `applyFlagSettings()`

617</h4>619</h4>

618 620 

619Mengubah [pengaturan](/id/settings) apa pun pada sesi yang sedang berjalan tanpa memulai ulang query. Gunakan ketika pengaturan yang tidak memiliki setter khusus perlu berubah di tengah sesi, seperti memperketat `permissions` setelah agen membaca input yang tidak terpercaya. `setModel()` dan `setPermissionMode()` adalah setter khusus untuk dua kunci itu; `applyFlagSettings()` adalah bentuk umum yang menerima subset kunci pengaturan apa pun, dan melewatkan `model` di sini berperilaku sama seperti `setModel()`.621Mengubah [pengaturan](/id/settings) pada sesi yang sedang berjalan tanpa memulai ulang query. Gunakan ketika pengaturan yang tidak memiliki setter khusus perlu berubah di tengah sesi, seperti memperketat `permissions` setelah agen membaca input yang tidak terpercaya. `setModel()` dan `setPermissionMode()` adalah setter khusus untuk dua kunci itu; `applyFlagSettings()` adalah bentuk umum yang menerima subset kunci pengaturan apa pun, dan melewatkan `model` di sini berperilaku sama seperti `setModel()`.

620 622 

621Hanya beberapa kunci yang berlaku di tengah sesi:623Hanya beberapa kunci yang berlaku di tengah sesi:

622 624 


689 691 

690Ketika klien mengirim `initialize` ke sesi yang sudah berjalan, wrapper control-response juga membawa array `pending_permission_requests` opsional. Field berada pada wrapper respons itu sendiri, bukan dalam payload `SDKControlInitializeResponse` di atas. Setiap entri adalah pesan `control_request` lengkap dengan bentuk `{ type: "control_request", request_id, request }` yang sama dengan sesi yang dialirkan untuk permintaan izin saat berjalan.692Ketika klien mengirim `initialize` ke sesi yang sudah berjalan, wrapper control-response juga membawa array `pending_permission_requests` opsional. Field berada pada wrapper respons itu sendiri, bukan dalam payload `SDKControlInitializeResponse` di atas. Setiap entri adalah pesan `control_request` lengkap dengan bentuk `{ type: "control_request", request_id, request }` yang sama dengan sesi yang dialirkan untuk permintaan izin saat berjalan.

691 693 

692Ini adalah permintaan yang dikeluarkan sebelum klien terhubung dan masih menunggu balasan, jadi baca array ini untuk menampilkan prompt izin in-flight segera; mereka tidak akan dikirim ulang.694Ini adalah permintaan yang dikeluarkan sebelum klien terhubung dan masih menunggu balasan. SDK membaca array untuk Anda dan mengirimkan setiap entri ke callback [`canUseTool`](#canusetool) Anda, pengiriman ulang yang sama yang [`reinitialize()`](#query-object) picu setelah celah transport. Tangani ID permintaan berulang secara idempotent, karena entri dapat mengulangi permintaan yang callback sudah terima sebelum koneksi putus.

693 695 

694<h3 id="agentdefinition">696<h3 id="agentdefinition">

695 `AgentDefinition`697 `AgentDefinition`


886 888 

887Tipe fungsi izin kustom untuk mengontrol penggunaan tool.889Tipe fungsi izin kustom untuk mengontrol penggunaan tool.

888 890 

891Fungsi adalah pengganti SDK untuk prompt izin interaktif: dipanggil hanya ketika [alur evaluasi izin](/id/agent-sdk/permissions#how-permissions-are-evaluated) diselesaikan ke prompt. Panggilan tool yang sudah disetujui oleh entri `allowedTools`, aturan allow pengaturan, atau mode izin, seperti `acceptEdits` atau `bypassPermissions`, tidak pernah memanggilnya. Untuk gating setiap tool call, gunakan hook [`PreToolUse`](/id/agent-sdk/hooks) sebagai gantinya.

892 

889```typescript theme={null}893```typescript theme={null}

890type CanUseTool = (894type CanUseTool = (

891 toolName: string,895 toolName: string,


1531 session_id: string;1535 session_id: string;

1532 transcript_path: string;1536 transcript_path: string;

1533 cwd: string;1537 cwd: string;

1538 prompt_id?: string;

1534 permission_mode?: string;1539 permission_mode?: string;

1535 effort?: { level: string };1540 effort?: { level: string };

1536 agent_id?: string;1541 agent_id?: string;


1538};1543};

1539```1544```

1540 1545 

1546Bidang `prompt_id` adalah UUID yang mengidentifikasi prompt pengguna yang sedang diproses. Ini cocok dengan [atribut `prompt.id` pada acara OpenTelemetry](/id/monitoring-usage#event-correlation-attributes) dan tidak ada sampai input pengguna pertama. Memerlukan Claude Code v2.1.196 atau lebih baru.

1547 

1541<h4 id="pretoolusehookinput">1548<h4 id="pretoolusehookinput">

1542 `PreToolUseHookInput`1549 `PreToolUseHookInput`

1543</h4>1550</h4>


2037 2044 

2038```typescript theme={null}2045```typescript theme={null}

2039type MonitorInput = {2046type MonitorInput = {

2040 command: string;2047 command?: string;

2048 ws?: {

2049 url: string;

2050 protocols?: string[];

2051 };

2041 description: string;2052 description: string;

2042 timeout_ms?: number;2053 timeout_ms?: number;

2043 persistent?: boolean;2054 persistent?: boolean;

2044};2055};

2045```2056```

2046 2057 

2047Menjalankan skrip latar belakang dan mengirimkan setiap baris stdout ke Claude sebagai event sehingga dapat bereaksi tanpa polling. Atur `persistent: true` untuk watch panjang sesi seperti log tails. Monitor mengikuti aturan izin yang sama seperti Bash. Lihat [referensi tool Monitor](/id/tools-reference#monitor-tool) untuk perilaku dan ketersediaan provider.2058Menjalankan sumber latar belakang dan mengirimkan setiap event ke Claude sehingga dapat bereaksi tanpa polling: `command` menjalankan skrip dan mengeluarkan satu event per baris stdout, dan `ws` membuka WebSocket dan mengeluarkan satu event per frame teks. Berikan tepat satu dari `command` atau `ws`. {/* min-version: 2.1.195 */}Sumber `ws` memerlukan Claude Code v2.1.195 atau yang lebih baru.

2059 

2060Atur `persistent: true` untuk watch panjang sesi seperti log tails. Ketika Monitor menjalankan perintah, ia mengikuti aturan izin yang sama seperti Bash; watch WebSocket meminta persetujuan secara terpisah. Lihat [referensi tool Monitor](/id/tools-reference#monitor-tool) untuk perilaku dan ketersediaan provider.

2048 2061 

2049<h3 id="taskoutput">2062<h3 id="taskoutput">

2050 TaskOutput2063 TaskOutput


2236Menjalankan [workflow dinamis](/id/workflows): skrip yang mengorkestra banyak subagen di latar belakang dan mengembalikan satu hasil yang dikonsolidasikan. Tool `Workflow` tersedia di Agent SDK v0.3.149 dan yang lebih baru. Setidaknya satu dari `script`, `name`, atau `scriptPath` diperlukan.2249Menjalankan [workflow dinamis](/id/workflows): skrip yang mengorkestra banyak subagen di latar belakang dan mengembalikan satu hasil yang dikonsolidasikan. Tool `Workflow` tersedia di Agent SDK v0.3.149 dan yang lebih baru. Setidaknya satu dari `script`, `name`, atau `scriptPath` diperlukan.

2237 2250 

2238| Field | Type | Description |2251| Field | Type | Description |

2239| ----------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2252| ----------------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2240| `script` | `string` | Skrip workflow inline. Harus dimulai dengan `export const meta = { name, description, phases }` sebagai literal, diikuti oleh badan skrip menggunakan `agent()`, `parallel()`, `pipeline()`, dan `phase()` |2253| `script` | `string` | Skrip workflow inline. Harus dimulai dengan `export const meta = { name, description }` sebagai literal, diikuti oleh badan skrip menggunakan `agent()`, `parallel()`, `pipeline()`, dan `phase()`. Array `phases` opsional dalam `meta` mengelompokkan agen di bawah tahap bernama dalam tampilan kemajuan |

2241| `name` | `string` | Nama workflow bawaan atau yang disimpan di `.claude/workflows/`. Diselesaikan ke skrip |2254| `name` | `string` | Nama workflow bawaan atau yang disimpan di `.claude/workflows/`. Diselesaikan ke skrip |

2242| `scriptPath` | `string` | Jalur ke file skrip workflow di disk. Mengambil prioritas atas `script` dan `name`. Setiap invokasi menyimpan skrip dan mengembalikan jalur dalam hasil, sehingga Anda dapat mengedit file itu dan menginvokasi kembali dengan `scriptPath` yang sama untuk melakukan iterasi |2255| `scriptPath` | `string` | Jalur ke file skrip workflow di disk. Mengambil prioritas atas `script` dan `name`. Setiap invokasi menyimpan skrip dan mengembalikan jalur dalam hasil, sehingga Anda dapat mengedit file itu dan menginvokasi kembali dengan `scriptPath` yang sama untuk melakukan iterasi |

2243| `args` | `unknown` | Nilai input yang diekspos ke skrip sebagai `args` global, untuk workflow bernama yang diparameterisasi seperti pertanyaan penelitian atau daftar jalur file. Lewatkan array dan objek sebagai nilai JSON aktual, bukan sebagai string yang dikodekan JSON |2256| `args` | `unknown` | Nilai input yang diekspos ke skrip sebagai `args` global, untuk workflow bernama yang diparameterisasi seperti pertanyaan penelitian atau daftar jalur file. Lewatkan array dan objek sebagai nilai JSON aktual, bukan sebagai string yang dikodekan JSON |


3098```3111```

3099 3112 

3100<Warning>3113<Warning>

3101 Beta `context-1m-2025-08-07` sudah pensiun sejak 30 April 2026. Melewatkan nilai ini dengan Claude Sonnet 4.5 atau Sonnet 4 tidak berpengaruh, dan permintaan yang melebihi jendela konteks standar 200k-token mengembalikan error. Untuk menggunakan jendela konteks 1M-token, migrasikan ke [Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, atau Claude Opus 4.8](https://platform.claude.com/docs/id/about-claude/models/overview), yang mencakup konteks 1M dengan harga standar tanpa header beta yang diperlukan.3114 Beta `context-1m-2025-08-07` sudah pensiun sejak 30 April 2026. Melewatkan nilai ini dengan Claude Sonnet 4.5 atau Sonnet 4 tidak berpengaruh, dan permintaan yang melebihi jendela konteks standar 200k-token mengembalikan error. Untuk menggunakan jendela konteks 1M-token, migrasikan ke [Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, atau Claude Opus 4.8](https://platform.claude.com/docs/id/about-claude/models/overview), yang mencakup konteks 1M dengan harga standar tanpa header beta yang diperlukan.

3102</Warning>3115</Warning>

3103 3116 

3104<h3 id="slashcommand">3117<h3 id="slashcommand">

Details

44 44 

45Callback dipicu dalam dua kasus:45Callback dipicu dalam dua kasus:

46 46 

471. **Alat membutuhkan persetujuan**: Claude ingin menggunakan alat yang tidak disetujui secara otomatis oleh [aturan izin](/id/agent-sdk/permissions) atau mode. Periksa `tool_name` untuk alat (misalnya, `"Bash"`, `"Write"`).471. **Alat membutuhkan persetujuan**: Claude ingin menggunakan alat yang tidak disetujui secara otomatis oleh [aturan izin](/id/agent-sdk/permissions) atau mode izin. Periksa `tool_name` untuk alat (misalnya, `"Bash"`, `"Write"`).

482. **Claude mengajukan pertanyaan**: Claude memanggil alat `AskUserQuestion`. Periksa apakah `tool_name == "AskUserQuestion"` untuk menanganinya secara berbeda. Jika Anda menentukan array `tools`, sertakan `AskUserQuestion` agar ini berfungsi. Lihat [Menangani pertanyaan klarifikasi](#handle-clarifying-questions) untuk detail.482. **Claude mengajukan pertanyaan**: Claude memanggil alat `AskUserQuestion`. Periksa apakah `tool_name == "AskUserQuestion"` untuk menanganinya secara berbeda. Jika Anda menentukan array `tools`, sertakan `AskUserQuestion` agar ini berfungsi. Lihat [Menangani pertanyaan klarifikasi](#handle-clarifying-questions) untuk detail.

49 49 

50<Note>50<Warning>

51 Untuk secara otomatis mengizinkan atau menolak alat tanpa meminta pengguna, gunakan [hooks](/id/agent-sdk/hooks) sebagai gantinya. Hooks dijalankan sebelum `canUseTool` dan dapat mengizinkan, menolak, atau memodifikasi permintaan berdasarkan logika Anda sendiri. Anda juga dapat menggunakan [hook `PermissionRequest`](/id/agent-sdk/hooks#available-hooks) untuk mengirim notifikasi eksternal (Slack, email, push) ketika Claude menunggu persetujuan.51 **Callback tidak pernah dipicu untuk alat yang disetujui secara otomatis.** Setiap persetujuan sebelumnya dalam [alur evaluasi izin](/id/agent-sdk/permissions#how-permissions-are-evaluated), aturan izin atau mode seperti `acceptEdits` atau `bypassPermissions`, menyelesaikan panggilan sebelum `canUseTool` dikonsultasikan. Jika Anda mencantumkan alat secara langsung dalam `allowed_tools`, pemeriksaan `canUseTool` untuk alat tersebut tidak pernah berjalan kecuali aturan ask atau mode `plan` mengarahkan panggilan kembali ke prompt. Untuk logika yang harus diterapkan ke setiap panggilan alat, gunakan [hook `PreToolUse`](/id/agent-sdk/hooks), yang dijalankan sebelum sisa alur dan dapat mengizinkan, menolak, atau memodifikasi permintaan.

52</Note>52</Warning>

53 

54Anda juga dapat menggunakan [hook `PermissionRequest`](/id/agent-sdk/hooks#available-hooks) untuk mengirim notifikasi eksternal (Slack, email, push) ketika Claude menunggu persetujuan.

53 55 

54<h2 id="handle-tool-approval-requests">56<h2 id="handle-tool-approval-requests">

55 Menangani permintaan persetujuan alat57 Menangani permintaan persetujuan alat

agent-teams.md +1 −1

Details

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

113</Note>113</Note>

114 114 

115Default adalah `"in-process"`. Sebelum v2.1.179 default adalah `"auto"`, jadi session yang ditingkatkan yang sebelumnya membuka split panes sekarang tetap dalam satu terminal kecuali Anda menetapkan mode secara eksplisit. Atur `"auto"` untuk mengaktifkan split panes ketika Anda sudah berjalan di dalam session tmux atau terminal Anda adalah iTerm2, jatuh kembali ke in-process sebaliknya. Pengaturan `"tmux"` mengaktifkan mode split-pane dan auto-detects apakah akan menggunakan tmux atau iTerm2 berdasarkan terminal Anda.115Default adalah `"in-process"`. Sebelum v2.1.179 default adalah `"auto"`, jadi session yang ditingkatkan yang sebelumnya membuka split panes sekarang tetap dalam satu terminal kecuali Anda menetapkan mode secara eksplisit. Atur `"auto"` untuk mengaktifkan split panes ketika Anda sudah berjalan di dalam session tmux, atau ketika terminal Anda adalah iTerm2 dengan CLI `it2` yang terinstal, jatuh kembali ke in-process sebaliknya. Pengaturan `"tmux"` mengaktifkan mode split-pane dan auto-detects apakah akan menggunakan tmux atau iTerm2 berdasarkan terminal Anda.

116 116 

117{/* min-version: 2.1.186 */}Mulai dari v2.1.186, atur `"iterm2"` untuk menggunakan iTerm2 native split panes secara eksplisit. Mode ini memerlukan [`it2` CLI](https://github.com/mkusaka/it2) dan menampilkan error dengan perintah install jika `it2` hilang. Prompt setup yang menawarkan untuk menginstal `it2` atau beralih ke tmux muncul di bawah `"auto"` atau `"tmux"` ketika terminal Anda adalah iTerm2 dan tmux tersedia sebagai fallback.117{/* min-version: 2.1.186 */}Mulai dari v2.1.186, atur `"iterm2"` untuk menggunakan iTerm2 native split panes secara eksplisit. Mode ini memerlukan [`it2` CLI](https://github.com/mkusaka/it2) dan menampilkan error dengan perintah install jika `it2` hilang. Prompt setup yang menawarkan untuk menginstal `it2` atau beralih ke tmux muncul di bawah `"auto"` atau `"tmux"` ketika terminal Anda adalah iTerm2 dan tmux tersedia sebagai fallback.

118 118 

agent-view.md +66 −38

Details

76 76 

77Jalankan `claude agents` untuk membuka tampilan agen. Ini mengambil alih terminal penuh dan mencantumkan setiap sesi yang dikelompokkan berdasarkan status, dengan sesi yang disematkan dan yang membutuhkan Anda di bagian atas. Setiap baris menunjukkan nama sesi, aktivitas saat ini, dan berapa lama yang lalu sesi terakhir berubah.77Jalankan `claude agents` untuk membuka tampilan agen. Ini mengambil alih terminal penuh dan mencantumkan setiap sesi yang dikelompokkan berdasarkan status, dengan sesi yang disematkan dan yang membutuhkan Anda di bagian atas. Setiap baris menunjukkan nama sesi, aktivitas saat ini, dan berapa lama yang lalu sesi terakhir berubah.

78 78 

79Secara default, daftar menampilkan setiap sesi latar belakang yang telah Anda mulai, di seluruh semua proyek Anda. Sesi yang bekerja di satu repositori dan sesi lain di worktree berbeda keduanya muncul di sini, terlepas dari direktori mana yang Anda buka tampilan agen dari. Untuk membatasi daftar ke satu proyek, berikan `--cwd` (memerlukan Claude Code v2.1.141 atau lebih baru):79Secara default, daftar menampilkan setiap sesi latar belakang yang telah Anda mulai, di seluruh semua proyek Anda. Sesi yang bekerja di satu repositori dan sesi lain di worktree berbeda keduanya muncul di sini, terlepas dari direktori mana yang Anda buka tampilan agen dari. Untuk membatasi daftar ke satu proyek, berikan `--cwd`:

80 80 

81```bash theme={null}81```bash theme={null}

82claude agents --cwd ~/projects/my-app82claude agents --cwd ~/projects/my-app


125 125 

126| Bentuk | Artinya |126| Bentuk | Artinya |

127| :------------------- | :---------------------------------------------------------------------------------------------------------------------------- |127| :------------------- | :---------------------------------------------------------------------------------------------------------------------------- |

128| `✻` atau `✽` animasi | Proses sesi masih hidup dan merespons segera |128| `✻` atau animasi `✽` | Proses sesi masih hidup dan merespons segera |

129| `∙` | Proses telah keluar. Anda masih dapat mengintip, membalas, atau melampirkan, dan Claude memulai ulang dari tempat ia berhenti |129| `∙` | Proses telah keluar. Anda masih dapat mengintip, membalas, atau melampirkan, dan Claude memulai ulang dari tempat ia berhenti |

130| `✢` | Sesi [`/loop`](/id/scheduled-tasks) yang tidur di antara iterasi. Baris menunjukkan jumlah jalannya dan hitungan mundur |130| `✢` | Sesi [`/loop`](/id/scheduled-tasks) yang tidur di antara iterasi. Baris menunjukkan jumlah jalannya dan hitungan mundur |

131 131 


143 143 

144Ringkasan satu baris di setiap baris dihasilkan oleh [model kelas Haiku](/id/model-config) sehingga baris dapat memberi tahu Anda apa yang dilakukan sesi, apa yang dibutuhkannya, atau apa yang dihasilkannya tanpa membuka transkrip. Saat sesi secara aktif bekerja, ringkasan menyegarkan paling banyak sekali setiap 15 detik, ditambah sekali ketika setiap giliran berakhir.144Ringkasan satu baris di setiap baris dihasilkan oleh [model kelas Haiku](/id/model-config) sehingga baris dapat memberi tahu Anda apa yang dilakukan sesi, apa yang dibutuhkannya, atau apa yang dihasilkannya tanpa membuka transkrip. Saat sesi secara aktif bekerja, ringkasan menyegarkan paling banyak sekali setiap 15 detik, ditambah sekali ketika setiap giliran berakhir.

145 145 

146Dari v2.1.161, ketika sesi menjalankan dua atau lebih item kerja paralel, seperti subagents, perintah shell latar belakang, atau monitor, hitungan `done/total` seperti `2/5` muncul sebelum teks ringkasan.146Ketika sesi menjalankan dua atau lebih item kerja paralel, seperti subagents, perintah shell latar belakang, atau monitor, hitungan `done/total` seperti `2/5` muncul sebelum teks ringkasan.

147 147 

148Setiap penyegaran adalah satu permintaan kelas Haiku pendek melalui penyedia normal Anda, ditagih dan ditangani di bawah [persyaratan penggunaan data](/id/data-usage) yang sama dengan sesi itu sendiri. Pada penyedia pihak ketiga seperti Bedrock, Vertex AI, Microsoft Foundry, dan gateway khusus, permintaan kembali ke model utama sesi ketika tidak ada model Haiku yang dikonfigurasi. Atur [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/id/model-config#environment-variables) untuk memilih model untuk ringkasan ini pada penyedia tersebut.148Setiap penyegaran adalah satu permintaan kelas Haiku pendek melalui penyedia normal Anda, ditagih dan ditangani di bawah [persyaratan penggunaan data](/id/data-usage) yang sama dengan sesi itu sendiri. Pada penyedia pihak ketiga seperti Bedrock, Vertex AI, Microsoft Foundry, dan gateway khusus, permintaan kembali ke model utama sesi ketika tidak ada model Haiku yang dikonfigurasi. Atur [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/id/model-config#environment-variables) untuk memilih model untuk ringkasan ini pada penyedia tersebut.

149 149 


172 172 

173Tekan `Space` pada baris yang dipilih untuk membuka panel intip. Ini menunjukkan apa yang dibutuhkan sesi dari Anda, output terakhirnya, dan permintaan tarik apa pun yang dibukanya. Sebagian besar waktu ini cukup, dan Anda tidak perlu membuka transkrip lengkap.173Tekan `Space` pada baris yang dipilih untuk membuka panel intip. Ini menunjukkan apa yang dibutuhkan sesi dari Anda, output terakhirnya, dan permintaan tarik apa pun yang dibukanya. Sebagian besar waktu ini cukup, dan Anda tidak perlu membuka transkrip lengkap.

174 174 

175Dari v2.1.161, ketika sesi menjalankan item kerja paralel, panel juga menyebutkan yang paling lama berjalan dan berapa lama sudah berjalan, sehingga Anda dapat melihat apa yang ditunggu sesi tanpa melampirkan.175Ketika sesi menjalankan item kerja paralel, panel juga menyebutkan yang paling lama berjalan dan berapa lama sudah berjalan, sehingga Anda dapat melihat apa yang ditunggu sesi tanpa melampirkan.

176 176 

177Ketik balasan di panel intip dan tekan `Enter` untuk mengirimnya ke sesi itu. Ketika sesi mengajukan pertanyaan pilihan ganda, panel intip menunjukkan opsi dan Anda dapat menekan tombol angka untuk memilih satu. Untuk sesi terhalang lainnya, tekan `Tab` untuk mengisi input dengan balasan yang disarankan yang dapat Anda edit sebelum mengirim. Awali balasan dengan `!` untuk mengirim perintah Bash sebagai gantinya.177Ketik balasan di panel intip dan tekan `Enter` untuk mengirimnya ke sesi itu. Ketika sesi mengajukan pertanyaan pilihan ganda, panel intip menunjukkan opsi dan Anda dapat menekan tombol angka untuk memilih satu. Untuk sesi terhalang lainnya, tekan `Tab` untuk mengisi input dengan balasan yang disarankan yang dapat Anda edit sebelum mengirim. Awali balasan dengan `!` untuk mengirim perintah Bash sebagai gantinya.

178 178 

179Dari v2.1.145, dengan [dikte suara](/id/voice-dictation) diaktifkan, tahan atau ketuk tombol push-to-talk Anda saat input balasan difokuskan untuk mendikte balasan alih-alih mengetiknya. Hal yang sama berlaku dalam input pengiriman di bagian bawah tampilan agen.179Dengan [dikte suara](/id/voice-dictation) diaktifkan, tahan atau ketuk tombol push-to-talk Anda saat input balasan difokuskan untuk mendikte balasan alih-alih mengetiknya. Hal yang sama berlaku dalam input pengiriman di bagian bawah tampilan agen.

180 180 

181Gunakan `↑` dan `↓` untuk mengintip sesi yang berdekatan tanpa menutup panel, atau `→` untuk melampirkan.181Gunakan `↑` dan `↓` untuk mengintip sesi yang berdekatan tanpa menutup panel, atau `→` untuk melampirkan.

182 182 


196 196 

197Melepaskan tidak pernah menghentikan sesi latar belakang: `←`, `Ctrl+Z`, `/exit`, dan `Ctrl+C` ganda atau `Ctrl+D` ganda semuanya membiarkannya berjalan. Untuk mengakhiri sesi dari dalamnya, jalankan `/stop`.197Melepaskan tidak pernah menghentikan sesi latar belakang: `←`, `Ctrl+Z`, `/exit`, dan `Ctrl+C` ganda atau `Ctrl+D` ganda semuanya membiarkannya berjalan. Untuk mengakhiri sesi dari dalamnya, jalankan `/stop`.

198 198 

199Menekan `←` pada prompt kosong berfungsi dari sesi Claude Code apa pun, bukan hanya yang Anda lampirkan dari tampilan agen. Ini mengirim sesi saat ini ke latar belakang dan membuka tampilan agen dengan sesi itu yang dipilih, sehingga Anda dapat beralih sesi tanpa meninggalkan terminal. Baris dibuat bahkan dari sesi segar tanpa riwayat percakapan, jadi `→` kembali ke sana. Ketika baris itu adalah satu-satunya, tampilan agen menampilkan petunjuk onboarding di bawahnya. Anda dapat mematikan pintasan ini di `/config` (pengaturan `leftArrowOpensAgents`).199Dalam sesi yang berjalan di latar depan, sesi yang Anda mulai di terminal daripada melampirkan dari tampilan agen, menekan `←` pada prompt kosong mengirimnya ke latar belakang dan membuka tampilan agen dengan baris itu dipilih, sehingga Anda dapat beralih sesi tanpa meninggalkan terminal. Tekan tunggal yang sama melepaskan sesi yang dilampirkan.

200 

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

202 

203Baris dibuat bahkan dari sesi segar tanpa riwayat percakapan, jadi `→` kembali ke sana. Ketika baris itu adalah satu-satunya, tampilan agen menampilkan petunjuk onboarding di bawahnya.

204 

205Anda dapat mematikan pintasan ini dengan pengaturan `leftArrowOpensAgents` di `/config`.

200 206 

201<h3 id="organize-the-list">207<h3 id="organize-the-list">

202 Atur daftar208 Atur daftar

203</h3>209</h3>

204 210 

205Tampilan agen mengelompokkan sesi sehingga yang membutuhkan masukan berada di atas, dengan `Siap untuk ditinjau` dan `Membutuhkan masukan` di atas `Bekerja` dan `Selesai`. Nama grup ini tidak memetakan satu-ke-satu ke [status](#read-session-state) di atas: sesi bergerak ke `Siap untuk ditinjau` ketika memiliki permintaan tarik terbuka, dan `Selesai` mengumpulkan sesi yang selesai, gagal, dan dihentikan bersama-sama. Tekan `Ctrl+S` untuk mengelompokkan berdasarkan direktori sebagai gantinya. Pilihan Anda bertahan di seluruh jalankan.211Tampilan agen mengelompokkan sesi sehingga yang membutuhkan masukan berada di atas, dengan `Siap untuk ditinjau` dan `Membutuhkan masukan` di atas `Bekerja` dan `Selesai`. Nama grup ini tidak memetakan satu-ke-satu ke [status](#read-session-state) di atas: sesi bergerak ke `Siap untuk ditinjau` ketika memiliki permintaan tarik terbuka, dan `Selesai` mengumpulkan sesi yang selesai, gagal, dan dihentikan bersama-sama.

212 

213Tekan `Ctrl+S` untuk mengelompokkan berdasarkan direktori sebagai gantinya. Pilihan Anda bertahan di seluruh jalankan.

206 214 

207Dalam grup:215Dalam grup:

208 216 


215 223 

216Menghapus menghapus sesi dari tampilan agen. Jika Claude [membuat worktree](#how-file-edits-are-isolated) untuk sesi, menghapus menghapus worktree itu juga, termasuk perubahan yang tidak dikomitkan di dalamnya, jadi dorong atau komitkan pekerjaan yang ingin Anda simpan terlebih dahulu. Worktree yang Anda buat sendiri dan mulai sesi di dalamnya dibiarkan di tempat. Transkrip percakapan tetap berada di mesin lokal Anda dan tetap tersedia melalui `claude --resume`.224Menghapus menghapus sesi dari tampilan agen. Jika Claude [membuat worktree](#how-file-edits-are-isolated) untuk sesi, menghapus menghapus worktree itu juga, termasuk perubahan yang tidak dikomitkan di dalamnya, jadi dorong atau komitkan pekerjaan yang ingin Anda simpan terlebih dahulu. Worktree yang Anda buat sendiri dan mulai sesi di dalamnya dibiarkan di tempat. Transkrip percakapan tetap berada di mesin lokal Anda dan tetap tersedia melalui `claude --resume`.

217 225 

218Sesi yang selesai lebih lama dilipat menjadi baris `… N more` untuk menjaga daftar tetap pendek. Kegagalan dan sesi dengan permintaan tarik terbuka selalu tetap terlihat.226Sesi yang selesai yang tidak muat di layar dilipat menjadi baris `… N more`. Kegagalan dan sesi dengan permintaan tarik terbuka selalu tetap terlihat. Grup `Completed` mengisi ruang vertikal yang tersisa setelah grup langsung, dan di terminal pendek header dikompakkan menjadi baris ringkasan tunggal sehingga sesi yang bekerja atau membutuhkan masukan tetap terlihat.

219 227 

220<h3 id="filter-sessions">228<h3 id="filter-sessions">

221 Filter sesi229 Filter sesi


305 313 

306Jalankan `/background` atau aliasnya `/bg` untuk memindahkan percakapan saat ini ke sesi latar belakang. Berikan prompt seperti `/bg run the test suite and fix any failures` untuk memberikan satu instruksi lagi terlebih dahulu. Jika Claude sedang merespons ketika Anda menjalankan `/bg`, respons berlanjut dalam sesi latar belakang.314Jalankan `/background` atau aliasnya `/bg` untuk memindahkan percakapan saat ini ke sesi latar belakang. Berikan prompt seperti `/bg run the test suite and fix any failures` untuk memberikan satu instruksi lagi terlebih dahulu. Jika Claude sedang merespons ketika Anda menjalankan `/bg`, respons berlanjut dalam sesi latar belakang.

307 315 

308Melepaskan dari sesi interaktif memulai proses segar yang dilanjutkan dari percakapan yang disimpan, jadi menjalankan subagent, [monitor](/id/tools-reference#monitor-tool), dan perintah latar belakang tidak ditransfer ke sesi itu. Claude meminta Anda untuk mengonfirmasi sebelum melepaskan ketika ada yang berjalan. Setelah berada di latar belakang, sesi dapat memulai subagent, monitor, dan perintah latar belakang baru, dan yang tersebut terus berjalan di seluruh detach dan reattach berikutnya.316Melepaskan dari sesi interaktif memulai proses segar yang dilanjutkan dari percakapan yang disimpan, dan pekerjaan yang sedang berlangsung berpindah ke sesi itu: menjalankan perintah shell latar belakang, subagent yang dilepaskan ke latar belakang, alur kerja dinamis, dan tugas terjadwal yang Anda buat dengan [`/loop`](/id/scheduled-tasks) dibawa ke sesi latar belakang dan terus berjalan di sana. Subagent bergerak bersama dengan semua yang dimulainya, jadi hanya dibawa ketika semua pekerjaan itu dapat berpindah juga, termasuk di Windows. Untuk menghentikan pekerjaan yang sedang berlangsung alih-alih membawanya, atur variabel lingkungan [`CLAUDE_DISABLE_ADOPT=1`](/id/env-vars#variables); Claude Code kemudian meminta Anda untuk mengonfirmasi sebelum melepaskan.

317 

318Pekerjaan yang tidak dapat dibawa, seperti [monitor](/id/tools-reference#monitor-tool) yang sedang berjalan, dihentikan. Subagent yang dilepaskan ke latar belakang yang memiliki monitor dihentikan bersama dengannya. Ketika ada pekerjaan seperti itu yang sedang berjalan, Claude Code menampilkan dialog `Background this session?` sehingga Anda dapat mengonfirmasi sebelum dihentikan.

319 

320Setelah berada di latar belakang, sesi dapat memulai subagent, monitor, dan perintah latar belakang baru, dan yang tersebut terus berjalan di seluruh detach dan reattach berikutnya.

309 321 

310Bendera konfigurasi dari peluncuran asli dibawa ke sesi yang dilepaskan ke latar belakang, sehingga server MCP, pengaturan, dan model fallback-nya tetap berlaku:322Bendera konfigurasi dari peluncuran asli dibawa ke sesi yang dilepaskan ke latar belakang, sehingga server MCP, pengaturan, dan model fallback-nya tetap berlaku:

311 323 


394}406}

395```407```

396 408 

397<Note>

398 Pengaturan `worktree.bgIsolation` memerlukan Claude Code v2.1.143 atau lebih baru.

399</Note>

400 

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

402 410 

403Menghapus sesi dalam tampilan agen (`Ctrl+X` dua kali) menghapus worktree yang Claude buat untuk sesi itu, termasuk perubahan yang belum dikomit, jadi gabungkan atau dorong perubahan yang ingin Anda simpan terlebih dahulu. Menghapus dari shell dengan [`claude rm`](#manage-sessions-from-the-shell) menyimpan worktree yang memiliki perubahan yang belum dikomit dan mencetak jalurnya sehingga Anda dapat membersihkannya sendiri. Worktree yang Anda buat sendiri dan mulai sesi di dalamnya dibiarkan di tempat baik cara apa pun.411Menghapus sesi dalam tampilan agen dengan `Ctrl+X` dua kali menghapus worktree yang Claude buat untuk sesi itu, termasuk perubahan yang belum dikomit, jadi gabungkan atau dorong perubahan yang ingin Anda simpan terlebih dahulu. Menghapus dari shell dengan [`claude rm`](#manage-sessions-from-the-shell) menyimpan worktree yang memiliki perubahan yang belum dikomit dan mencetak jalurnya sehingga Anda dapat membersihkannya sendiri. Worktree yang Anda buat sendiri dan mulai sesi di dalamnya dibiarkan di tempat baik cara apa pun.

404 412 

405Untuk menemukan jalur worktree sesi, intip sesi atau lampirkan dan periksa direktori kerjanya.413Untuk menemukan jalur worktree sesi, intip sesi atau lampirkan dan periksa direktori kerjanya.

406 414 


410 Atur model418 Atur model

411</h3>419</h3>

412 420 

413Nama model yang ditampilkan di header tampilan agen adalah default pengiriman. Sesi baru yang Anda mulai dari input menggunakan model ini, yang berasal dari pengaturan [`model`](/id/settings#available-settings) dalam pengaturan pengguna Anda. Atur dengan memilih model dalam pemilih [`/model`](/id/model-config), atau edit pengaturan secara langsung. Untuk menimpanya untuk seluruh sesi tampilan agen, berikan `--model` saat membuka tampilan agen. Lihat [Mode izin, model, dan upaya](#permission-mode-model-and-effort).421Nama model yang ditampilkan di header tampilan agen adalah default pengiriman. Sesi baru yang Anda mulai dari input menggunakan model ini, yang berasal dari pengaturan [`model`](/id/settings#available-settings) dalam pengaturan pengguna Anda. Atur dengan memilih model dalam pemilih [`/model`](/id/model-config), atau edit pengaturan secara langsung.

422 

423Untuk menimpanya untuk seluruh sesi tampilan agen, berikan `--model` saat membuka tampilan agen. Lihat [Mode izin, model, dan upaya](#permission-mode-model-and-effort).

414 424 

415Untuk mengubah default pengiriman dari dalam tampilan agen, ketik `/model` diikuti dengan nama model dalam input pengiriman dan tekan `Enter`. Header diperbarui untuk menampilkan model itu dengan penanda `(session)`, dan sesi yang Anda kirim setelahnya menggunakannya. Ketik `/model default` untuk menghapus penimpaan dan kembali ke default pengiriman. Penimpaan ini berlangsung untuk sisa dari `claude agents` saat ini, tidak menulis ke file pengaturan Anda, dan memerlukan Claude Code v2.1.172 atau lebih baru. {/* min-version: 2.1.172 */} Contoh berikut mengirim satu sesi pada Opus dan yang berikutnya pada Sonnet:425Untuk mengubah default pengiriman dari dalam tampilan agen, ketik `/model` diikuti dengan nama model dalam input pengiriman dan tekan `Enter`. Header diperbarui untuk menampilkan model itu dengan penanda `(session)`, dan sesi yang Anda kirim setelahnya menggunakannya. Ketik `/model default` untuk menghapus penimpaan dan kembali ke default pengiriman. Penimpaan ini berlangsung untuk sisa dari `claude agents` saat ini dan tidak menulis ke file pengaturan Anda. Contoh berikut mengirim satu sesi pada Opus dan yang berikutnya pada Sonnet:

416 426 

417```text theme={null}427```text theme={null}

418/model opus428/model opus


449 459 

450`claude agents` juga menerima `--dangerously-skip-permissions` sebagai singkatan untuk `--permission-mode bypassPermissions`, dan `--allow-dangerously-skip-permissions` untuk membuat `bypassPermissions` tersedia dalam siklus `Shift+Tab` setiap sesi yang dikirim tanpa memulai dalam mode itu. Keduanya cocok dengan [bendera CLI tingkat atas](/id/cli-reference).460`claude agents` juga menerima `--dangerously-skip-permissions` sebagai singkatan untuk `--permission-mode bypassPermissions`, dan `--allow-dangerously-skip-permissions` untuk membuat `bypassPermissions` tersedia dalam siklus `Shift+Tab` setiap sesi yang dikirim tanpa memulai dalam mode itu. Keduanya cocok dengan [bendera CLI tingkat atas](/id/cli-reference).

451 461 

452Bendera ini ditambahkan di seluruh rilis. Versi sebelumnya menolaknya dengan kesalahan unknown-option.

453 

454| Bendera atau pengaturan | Versi minimum |

455| :--------------------------------------------------------------------------- | :------------------------------------ |

456| `--permission-mode`, `--model`, `--effort`, `--dangerously-skip-permissions` | v2.1.142 {/* min-version: 2.1.142 */} |

457| `--allow-dangerously-skip-permissions` | v2.1.143 {/* min-version: 2.1.143 */} |

458| `--agent`, dan menghormati pengaturan `agent` untuk sesi yang dikirim | v2.1.157 {/* min-version: 2.1.157 */} |

459 

460Sebelum v2.1.157, tampilan agen mengabaikan pengaturan `agent` dan mengirim agen bawaan `claude`.

461 

462Default aktif muncul di footer di bawah input pengiriman.462Default aktif muncul di footer di bawah input pengiriman.

463 463 

464Tanpa bendera ini, sesi menggunakan `defaultMode` dari pengaturan direktori itu atau `permissionMode` dari [frontmatter subagent](/id/sub-agents#supported-frontmatter-fields) yang dikirim, dan model yang ditampilkan di header tampilan agen.464Tanpa bendera ini, sesi menggunakan `defaultMode` dari pengaturan direktori itu atau `permissionMode` dari [frontmatter subagent](/id/sub-agents#supported-frontmatter-fields) yang dikirim, dan model yang ditampilkan di header tampilan agen.

465 465 

466Menggunakan `bypassPermissions` atau `auto` ditolak sampai Anda telah menerima mode itu dengan menjalankan `claude` dengannya sekali secara interaktif, karena mode tersebut memungkinkan sesi yang tidak Anda tonton bertindak tanpa persetujuan. Hal yang sama berlaku apakah Anda meneruskan mode ke `claude agents` atau ke `claude --bg --permission-mode`.466Menggunakan `bypassPermissions` dengan `claude --bg --permission-mode` ditolak sampai Anda telah menerima pengecualian bypass dengan menjalankan `claude --dangerously-skip-permissions` sekali secara interaktif, karena mode itu memungkinkan sesi yang tidak Anda tonton bertindak tanpa persetujuan. Melewatkan `--dangerously-skip-permissions` atau `--permission-mode bypassPermissions` ke `claude agents` menampilkan pengecualian yang sama ketika Anda belum menerimanya sebelumnya, dan menerima menerapkan `bypassPermissions` ke sesi yang Anda luncurkan dari tampilan. Melewatkan `--allow-dangerously-skip-permissions` menampilkan pengecualian yang sama juga, dan menerima membuat `bypassPermissions` tersedia dalam siklus `Shift+Tab` sesi tersebut tanpa memulai di dalamnya.

467 467 

468<h3 id="settings-plugins-and-mcp-servers">468<h3 id="settings-plugins-and-mcp-servers">

469 Pengaturan, plugins, dan server MCP469 Pengaturan, plugins, dan server MCP

470</h3>470</h3>

471 471 

472Tampilan agen menerima bendera konfigurasi yang sama dengan `claude` untuk memuat pengaturan, plugins, server MCP, dan direktori tambahan. Bendera ini memerlukan Claude Code v2.1.142 atau lebih baru. Setiap bendera berlaku untuk tampilan agen itu sendiri dan diteruskan ke setiap sesi yang Anda kirim darinya, jadi plugin atau server MCP yang Anda muat dengan cara ini tersedia di sesi tersebut juga.472Tampilan agen menerima bendera konfigurasi yang sama dengan `claude` untuk memuat pengaturan, plugins, server MCP, dan direktori tambahan. Setiap bendera berlaku untuk tampilan agen itu sendiri dan diteruskan ke setiap sesi yang Anda kirim darinya, jadi plugin atau server MCP yang Anda muat dengan cara ini tersedia di sesi tersebut juga.

473 473 

474| Bendera | Efek |474| Bendera | Efek |

475| :----------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- |475| :----------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- |


494Setiap sesi latar belakang memiliki ID pendek yang dapat Anda gunakan dari shell. ID dicetak ketika Anda memulai sesi dengan `claude --bg`, dan ID setiap sesi adalah nama direktorinya di bawah `~/.claude/jobs/`. Perintah-perintah ini berguna untuk scripting atau ketika Anda tidak ingin membuka tampilan agen.494Setiap sesi latar belakang memiliki ID pendek yang dapat Anda gunakan dari shell. ID dicetak ketika Anda memulai sesi dengan `claude --bg`, dan ID setiap sesi adalah nama direktorinya di bawah `~/.claude/jobs/`. Perintah-perintah ini berguna untuk scripting atau ketika Anda tidak ingin membuka tampilan agen.

495 495 

496| Perintah | Tujuan |496| Perintah | Tujuan |

497| :--------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |497| :--------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

498| `claude agents` | Buka tampilan agen |498| `claude agents` | Buka tampilan agen |

499| `claude agents --cwd <path>` | Buka tampilan agen yang dibatasi pada sesi yang dimulai di bawah `<path>` |499| `claude agents --cwd <path>` | Buka tampilan agen yang dibatasi pada sesi yang dimulai di bawah `<path>` |

500| `claude agents --json` | Cetak sesi aktif sebagai array JSON dan keluar: setiap sesi langsung, ditambah sesi latar belakang yang masih bekerja atau terblokir bahkan ketika prosesnya telah keluar. Tambahkan `--all` untuk juga menyertakan sesi latar belakang yang telah selesai. Setiap entri memiliki `cwd`, `kind`, dan `startedAt`. Entri latar belakang juga memiliki `id`, dapat digunakan dengan `claude attach`/`logs`/`stop`, dan `state`: salah satu dari `working`, `blocked`, `done`, `failed`, atau `stopped`. `pid` dan `status` hanya ada saat proses masih hidup, ditambah `waitingFor` ketika status adalah `waiting`, yang mengatakan apa sesi diblokir, seperti `permission prompt` atau `input needed`; `sessionId` dan `name` muncul ketika diatur. Gabungkan dengan `--cwd <path>` untuk memfilter |500| `claude agents --json` | Cetak sesi aktif sebagai array JSON dan keluar: setiap sesi langsung, ditambah sesi latar belakang yang masih bekerja atau terblokir bahkan ketika prosesnya telah keluar. Tambahkan `--all` untuk juga menyertakan sesi latar belakang yang telah selesai. Setiap entri memiliki `cwd`, `kind`, dan `startedAt`. Entri latar belakang juga memiliki `id`, dapat digunakan dengan `claude attach`/`logs`/`stop`, dan `state`: salah satu dari `working`, `blocked`, `done`, `failed`, atau `stopped`. `pid` dan `status` hanya ada saat proses masih hidup, ditambah `waitingFor` ketika status adalah `waiting`, yang mengatakan apa sesi diblokir, seperti `permission prompt` atau `input needed`; `sessionId` dan `name` muncul ketika diatur. Entri interaktif yang tidak pernah Anda beri nama membawa nama default yang dibangun dari nama direktori kerja ditambah akhiran dua karakter, seperti `my-app-3f`. Gabungkan dengan `--cwd <path>` untuk memfilter |

501| `claude attach <id>` | Lampirkan ke sesi di terminal ini |501| `claude attach <id>` | Lampirkan ke sesi di terminal ini |

502| `claude logs <id>` | Cetak output terbaru sesi |502| `claude logs <id>` | Cetak output terbaru sesi |

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


523 523 

524Supervisor dan sesinya mengautentikasi dengan kredensial yang sama dengan sesi interaktif Anda dan tidak membuat koneksi jaringan tambahan di luar API model. Variabel pemilihan penyedia seperti `CLAUDE_CODE_USE_BEDROCK` dan alias `ANTHROPIC_DEFAULT_*_MODEL` dibaca dari shell yang mengirim setiap sesi dan diterapkan ke workernya.524Supervisor dan sesinya mengautentikasi dengan kredensial yang sama dengan sesi interaktif Anda dan tidak membuat koneksi jaringan tambahan di luar API model. Variabel pemilihan penyedia seperti `CLAUDE_CODE_USE_BEDROCK` dan alias `ANTHROPIC_DEFAULT_*_MODEL` dibaca dari shell yang mengirim setiap sesi dan diterapkan ke workernya.

525 525 

526{/* min-version: 2.1.174 */}Sesi latar belakang tidak mewarisi variabel titik akhir gateway seperti `ANTHROPIC_BASE_URL`, variabel URL dasar Bedrock, Vertex, dan Foundry yang setara, atau `ANTHROPIC_AUTH_TOKEN` yang berpasangan dari shell yang memulai supervisor atau dari shell pengiriman. Sesi menggunakan kredensial yang disimpan Anda dan nilai `env` apa pun dalam [pengaturan](/id/settings) direktori proyek sebagai gantinya. Untuk mengarahkan sesi latar belakang dalam proyek ke [gateway LLM](/id/llm-gateway), atur `ANTHROPIC_BASE_URL` dalam blok `env` `settings.json` `.claude/` proyek itu daripada mengekspornya di shell Anda. Sebelum v2.1.174, sesi latar belakang mewarisi variabel-variabel ini dari shell peluncuran supervisor, sehingga dapat menggunakan gateway yang telah Anda konfigurasi di shell itu alih-alih yang dikonfigurasi untuk direktori proyek.526Sesi latar belakang tidak mewarisi variabel titik akhir gateway seperti `ANTHROPIC_BASE_URL`, variabel URL dasar Bedrock, Vertex, dan Foundry yang setara, atau `ANTHROPIC_AUTH_TOKEN` yang berpasangan dari shell yang memulai supervisor atau dari shell pengiriman. Sesi menggunakan kredensial yang disimpan Anda dan nilai `env` apa pun dalam [pengaturan](/id/settings) direktori proyek sebagai gantinya. Untuk mengarahkan sesi latar belakang dalam proyek ke [gateway LLM](/id/llm-gateway), atur `ANTHROPIC_BASE_URL` dalam blok `env` `settings.json` `.claude/` proyek itu daripada mengekspornya di shell Anda.

527 527 

528Setiap sesi latar belakang adalah proses Claude Code-nya sendiri, dikelola oleh supervisor daripada terikat pada terminal Anda. Sesi yang secara aktif bekerja, menunggu masukan Anda, atau memiliki terminal yang terpasang membuat prosesnya tetap berjalan. Perintah shell latar belakang yang berjalan, subagen, alur kerja dinamis, atau monitor dihitung sebagai pekerjaan aktif, jadi proses yang berjalan lama seperti server dev membuat sesi tetap hidup.528Setiap sesi latar belakang adalah proses Claude Code-nya sendiri, dikelola oleh supervisor daripada terikat pada terminal Anda. Sesi yang secara aktif bekerja, menunggu masukan Anda, atau memiliki terminal yang terpasang membuat prosesnya tetap berjalan. Perintah shell latar belakang yang berjalan, subagen, alur kerja dinamis, atau monitor dihitung sebagai pekerjaan aktif, jadi proses yang berjalan lama seperti server dev membuat sesi tetap hidup.

529 529 

530Setelah sesi selesai dan duduk tanpa lampiran selama sekitar satu jam, supervisor menghentikan prosesnya untuk membebaskan sumber daya. Sesi yang Anda [pin](#organize-the-list) dengan `Ctrl+T` dikecualikan dan membuat prosesnya tetap berjalan saat idle. Transkrip dan status tetap di disk, dan lain kali Anda melampirkan, mengintip, atau membalas sesi yang dihentikan, supervisor memulai proses segar dari tempat ia berhenti. Ketika setiap sesi selesai dan tidak ada terminal yang terhubung, supervisor itu sendiri keluar dan dimulai lagi lain kali Anda membutuhkannya.530Setelah sesi selesai dan duduk tanpa lampiran selama sekitar satu jam, supervisor menghentikan prosesnya untuk membebaskan sumber daya. Sesi yang Anda [pin](#organize-the-list) dengan `Ctrl+T` dikecualikan dan membuat prosesnya tetap berjalan saat idle. Transkrip dan status tetap di disk, dan lain kali Anda melampirkan, mengintip, atau membalas sesi yang dihentikan, supervisor memulai proses segar dari tempat ia berhenti. Ketika setiap sesi selesai dan tidak ada terminal yang terhubung, supervisor itu sendiri keluar dan dimulai lagi lain kali Anda membutuhkannya.

531 531 

532Perintah shell latar belakang dan alur kerja dinamis yang sesi mulai terus berjalan ketika prosesnya dihentikan, dimulai ulang, atau diperbarui, termasuk di Windows. Proses berikutnya yang dimulai untuk sesi itu mengambilnya kembali, perintah shell yang selesai sementara itu dilaporkan sebagai selesai dengan outputnya, dan alur kerja dilanjutkan dari tempat ia berhenti. Perintah shell yang dimulai oleh subagent dan [monitor](/id/tools-reference#monitor-tool) yang sedang berjalan masih berhenti dengan proses, dan menghapus sesi menghentikan semua yang diserahkannya. Untuk menghentikan perintah shell latar belakang dan alur kerja dengan proses juga, atur variabel lingkungan [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](/id/env-vars#variables) ke `1`.

533 

534Jika sesi yang dimulai ulang kembali menampilkan hanya prompt aslinya karena Claude Code salah membaca transkrip sebagai kosong, transkrip percakapan diganti nama dengan akhiran `.orphaned-` alih-alih dihapus, jadi tetap berada di mesin Anda.

535 

532Baris kosong yang tersisa dari menekan `←` yang tidak pernah diberi prompt dihapus sepenuhnya setelah sekitar lima menit sehingga daftar membersihkan dirinya sendiri. Sesi yang dimulai dengan `claude --bg` dan sesi yang menunggu prompt pengaturan seperti dialog kepercayaan tidak dihapus dengan cara ini.536Baris kosong yang tersisa dari menekan `←` yang tidak pernah diberi prompt dihapus sepenuhnya setelah sekitar lima menit sehingga daftar membersihkan dirinya sendiri. Sesi yang dimulai dengan `claude --bg` dan sesi yang menunggu prompt pengaturan seperti dialog kepercayaan tidak dihapus dengan cara ini.

533 537 

534Ketika host kekurangan memori, supervisor menghentikan sesi idle non-pin terlebih dahulu dan menghentikan sesi pin idle hanya jika itu tidak membebaskan apa pun.538Ketika host kekurangan memori, supervisor menghentikan sesi idle non-pin terlebih dahulu dan menghentikan sesi pin idle hanya jika itu tidak membebaskan apa pun.


554 558 

555Perintah ini juga memperingatkan ketika supervisor yang berjalan berada pada versi yang berbeda dari `claude` yang Anda panggil, yang terjadi setelah pembaruan yang belum dimulai ulang oleh supervisor. Peringatan menunjukkan kedua versi dan memberi tahu Anda untuk menjalankan `claude daemon stop --any` untuk mengambil versi baru. Ketika Claude Code diinstal sebagai layanan OS, perintah yang disarankan adalah `claude daemon stop` tanpa flag.559Perintah ini juga memperingatkan ketika supervisor yang berjalan berada pada versi yang berbeda dari `claude` yang Anda panggil, yang terjadi setelah pembaruan yang belum dimulai ulang oleh supervisor. Peringatan menunjukkan kedua versi dan memberi tahu Anda untuk menjalankan `claude daemon stop --any` untuk mengambil versi baru. Ketika Claude Code diinstal sebagai layanan OS, perintah yang disarankan adalah `claude daemon stop` tanpa flag.

556 560 

561Sesi bertahan melalui ketidaksesuaian versi itu utuh: versi Claude Code yang lebih lama yang memperbarui `state.json` sesi menyimpan bidang yang tidak dikenalinya dan membuat sesi tetap terdaftar.

562 

557Di Windows, `claude daemon status` menampilkan kesalahan file yang mendasar ketika file kunci pipa daemon terkunci atau tidak dapat dibaca alih-alih melaporkan kegagalan koneksi generik.563Di Windows, `claude daemon status` menampilkan kesalahan file yang mendasar ketika file kunci pipa daemon terkunci atau tidak dapat dibaca alih-alih melaporkan kegagalan koneksi generik.

558 564 

559<h3 id="turn-off-agent-view">565<h3 id="turn-off-agent-view">


570 `claude agents` menampilkan subagen alih-alih membuka tampilan agen576 `claude agents` menampilkan subagen alih-alih membuka tampilan agen

571</h3>577</h3>

572 578 

573Jika `claude agents` mencetak hitungan diikuti oleh subagen yang dikonfigurasi dan kemudian keluar, tampilan agen tidak tersedia di lingkungan Anda. Versi sebelumnya tidak membuka tampilan agen di setiap lingkungan, termasuk saat terhubung melalui Bedrock, Vertex AI, atau Foundry. Jalankan `claude update` untuk menginstal versi terbaru.579Jika `claude agents` mencetak hitungan diikuti oleh subagen yang dikonfigurasi dan kemudian keluar, tampilan agen tidak tersedia di lingkungan Anda. Jalankan `claude update` untuk menginstal versi terbaru.

574 580 

575Jika tampilan agen masih tidak terbuka setelah memperbarui, periksa apakah telah [dimatikan](#turn-off-agent-view) oleh pengaturan atau variabel lingkungan.581Jika tampilan agen masih tidak terbuka setelah memperbarui, periksa apakah telah [dimatikan](#turn-off-agent-view) oleh pengaturan atau variabel lingkungan.

576 582 


580 586 

581Sebelum Anda mengirim sesi pertama Anda, tampilan agen menampilkan petunjuk onboarding singkat dengan contoh prompt sebagai pengganti daftar sesi. Ketik prompt dalam input di bagian bawah dan tekan `Enter` untuk mengirim sesi pertama Anda.587Sebelum Anda mengirim sesi pertama Anda, tampilan agen menampilkan petunjuk onboarding singkat dengan contoh prompt sebagai pengganti daftar sesi. Ketik prompt dalam input di bagian bawah dan tekan `Enter` untuk mengirim sesi pertama Anda.

582 588 

583<h3 id="cannot-open-agents-because-work-is-running-in-the-background">589<h3 id="backgrounding-shows-a-background-this-session-dialog">

584 Tidak dapat membuka agen karena pekerjaan sedang berjalan di latar belakang590 Melepaskan menunjukkan dialog `Background this session?`

585</h3>591</h3>

586 592 

587Jika menekan `←` untuk menempatkan sesi saat ini di latar belakang menunjukkan `Cannot open agents — N still running in the background`, sesi memiliki pekerjaan yang sedang berlangsung seperti subagen, alur kerja dinamis, atau perintah shell latar belakang, dan pintasan tidak akan diam-diam meninggalkannya. Jalankan `/tasks` untuk melihat apa yang sedang berjalan, kemudian `/bg` untuk mengonfirmasi peninggalannya. Lihat [Dari dalam sesi](#from-inside-a-session) untuk apa yang ditransfer dan apa yang tidak saat Anda menempatkan di latar belakang.593Jika menekan `←` untuk melepaskan sesi saat ini menunjukkan dialog `Background this session?`, sesi memiliki pekerjaan yang sedang berlangsung yang tidak dapat berpindah ke sesi latar belakang, seperti [monitor](/id/tools-reference#monitor-tool) yang sedang berjalan, dan Claude Code tidak akan diam-diam menghentikannya. Dialog menyebutkan pekerjaan yang akan dihentikan dan, secara terpisah, menghitung tugas yang dibawa. Jalankan `/tasks` untuk melihat semua yang sedang berjalan, kemudian konfirmasi untuk melepaskan atau pilih `Stay` untuk membiarkan pekerjaan selesai terlebih dahulu. Lihat [Dari dalam sesi](#from-inside-a-session) untuk jenis tugas mana yang dibawa dan mana yang dihentikan.

588 594 

589<h3 id="prompt-rejected-as-too-short">595<h3 id="prompt-rejected-as-too-short">

590 Prompt ditolak karena terlalu pendek596 Prompt ditolak karena terlalu pendek


612 618 

613Supervisor baru terhubung kembali ke sesi yang sedang berjalan. Tanpa `--keep-workers`, perintah mengakhiri sesi latar belakang juga. Bendera `--any` mengonfirmasi Anda ingin menghentikan supervisor yang dimulai sesuai permintaan daripada sebagai layanan yang diinstal, yang merupakan default.619Supervisor baru terhubung kembali ke sesi yang sedang berjalan. Tanpa `--keep-workers`, perintah mengakhiri sesi latar belakang juga. Bendera `--any` mengonfirmasi Anda ingin menghentikan supervisor yang dimulai sesuai permintaan daripada sebagai layanan yang diinstal, yang merupakan default.

614 620 

621Supervisor yang dimulai tetapi tidak dapat menerima koneksi keluar dan melepaskan kuncinya sendiri, jadi `claude agents` berikutnya memulai yang baru tanpa penghentian manual ini. Langkah-langkah di atas berlaku ketika supervisor yang sedang berjalan macet.

622 

615Di Windows, jika supervisor tidak merespons permintaan stop, perintah mencetak ID prosesnya. Akhiri proses itu dengan `taskkill /PID <pid>` untuk menyelesaikan pemulihan. Sesi latar belakang masih dipertahankan saat Anda memberikan `--keep-workers`.623Di Windows, jika supervisor tidak merespons permintaan stop, perintah mencetak ID prosesnya. Akhiri proses itu dengan `taskkill /PID <pid>` untuk menyelesaikan pemulihan. Sesi latar belakang masih dipertahankan saat Anda memberikan `--keep-workers`.

616 624 

617<h3 id="dispatch-fails-with-could-not-resolve-authentication-method">625<h3 id="dispatch-fails-with-could-not-resolve-authentication-method">

618 Pengiriman gagal dengan `Could not resolve authentication method`626 Pengiriman gagal dengan `Could not resolve authentication method`

619</h3>627</h3>

620 628 

621{/* min-version: 2.1.174 */}Jika pengiriman latar belakang gagal dengan `Could not resolve authentication method` sementara sesi interaktif mengautentikasi secara normal, worker yang menerima pengiriman tidak mengambil kredensial. Pada v2.1.174 dan yang lebih baru, supervisor menyediakan snapshot kredensial segar saat menugaskan [worker yang sudah dipanaskan sebelumnya](#the-supervisor-process), jadi kesalahan ini berarti tidak ada kredensial yang disimpan tersedia untuk proses supervisor itu sendiri. Konfirmasi Anda telah menjalankan `/login` atau mengonfigurasi kunci API, kemudian hentikan supervisor:629Jika pengiriman latar belakang gagal dengan `Could not resolve authentication method` sementara sesi interaktif mengautentikasi secara normal, worker yang menerima pengiriman tidak mengambil kredensial. Supervisor menyediakan snapshot kredensial segar saat menugaskan [worker yang sudah dipanaskan sebelumnya](#the-supervisor-process), jadi kesalahan ini berarti tidak ada kredensial yang disimpan tersedia untuk proses supervisor itu sendiri. Konfirmasi Anda telah menjalankan `/login` atau mengonfigurasi kunci API, kemudian hentikan supervisor:

622 630 

623```bash theme={null}631```bash theme={null}

624claude daemon stop --any --keep-workers632claude daemon stop --any --keep-workers


626 634 

627`claude agents` atau `claude --bg` berikutnya memulai supervisor segar yang membaca kredensial yang disimpan Anda. Jika Anda mengautentikasi dengan variabel lingkungan seperti `ANTHROPIC_API_KEY` daripada `/login`, jalankan perintah berikutnya dari shell tempat variabel diatur.635`claude agents` atau `claude --bg` berikutnya memulai supervisor segar yang membaca kredensial yang disimpan Anda. Jika Anda mengautentikasi dengan variabel lingkungan seperti `ANTHROPIC_API_KEY` daripada `/login`, jalankan perintah berikutnya dari shell tempat variabel diatur.

628 636 

629Lihat [referensi kesalahan](/id/errors#could-not-resolve-authentication-method) untuk daftar lengkap penyebab dan perbaikan. Sebelum v2.1.174, worker yang sudah dipanaskan sebelumnya yang duduk menganggur dapat menampilkan kesalahan ini saat ditugaskan ke pengiriman bahkan ketika kredensial Anda valid. Tingkatkan untuk memulihkan.637Lihat [referensi kesalahan](/id/errors#could-not-resolve-authentication-method) untuk daftar lengkap penyebab dan perbaikan.

630 638 

631<h3 id="background-sessions-cannot-read-desktop-documents-or-downloads-on-macos">639<h3 id="background-sessions-cannot-read-desktop-documents-or-downloads-on-macos">

632 Sesi latar belakang tidak dapat membaca Desktop, Documents, atau Downloads di macOS640 Sesi latar belakang tidak dapat membaca Desktop, Documents, atau Downloads di macOS


640 Sesi lambat merespons setelah melampirkan648 Sesi lambat merespons setelah melampirkan

641</h3>649</h3>

642 650 

643Setelah sesi selesai dan duduk tanpa lampiran selama sekitar satu jam, supervisor menghentikan prosesnya untuk membebaskan sumber daya. Melampirkan memulai proses segar dari tempat ia berhenti, yang membutuhkan waktu sebentar. Sesi yang bekerja, menunggu Anda, atau [disematkan](#organize-the-list) tidak dihentikan dengan cara ini, jadi semat sesi dengan `Ctrl+T` untuk menjaganya tetap responsif.651Setelah sesi selesai dan duduk tanpa lampiran selama sekitar satu jam, supervisor menghentikan prosesnya untuk membebaskan sumber daya. Melampirkan memulai proses segar dari tempat ia berhenti dan beralih ke sesi segera sementara proses dimulai ulang. Sesi yang bekerja, menunggu Anda, atau [disematkan](#organize-the-list) tidak dihentikan dengan cara ini, jadi semat sesi dengan `Ctrl+T` untuk menjaganya tetap responsif.

644 652 

645<h3 id="claude/worktrees/-is-filling-up">653<h3 id="claude/worktrees/-is-filling-up">

646 `.claude/worktrees/` penuh654 `.claude/worktrees/` penuh


667* [Jalankan agen secara paralel](/id/agents): bandingkan tampilan agen dengan subagents, tim agen, dan worktrees675* [Jalankan agen secara paralel](/id/agents): bandingkan tampilan agen dengan subagents, tim agen, dan worktrees

668* [Tim agen](/id/agent-teams): koordinasikan beberapa sesi yang saling berpesan676* [Tim agen](/id/agent-teams): koordinasikan beberapa sesi yang saling berpesan

669* [Claude Code di web](/id/claude-code-on-the-web): jalankan sesi di lingkungan cloud yang dikelola alih-alih secara lokal677* [Claude Code di web](/id/claude-code-on-the-web): jalankan sesi di lingkungan cloud yang dikelola alih-alih secara lokal

678 

679<h2 id="version-history">

680 Riwayat versi

681</h2>

682 

683Tampilan agen telah berkembang dengan cepat selama pratinjau penelitian. Jika Anda berada di versi Claude Code yang lebih lama, beberapa perilaku di halaman ini mungkin berbeda; khususnya, `claude agents` menolak bendera yang belum didukungnya dengan kesalahan `unknown option`. Tabel di bawah mencantumkan kapan setiap bendera dan perilaku ditambahkan.

684 

685| Versi | Perubahan |

686| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

687| v2.1.196 | {/* min-version: 2.1.196 */}Tekan `←` tunggal mengirim sesi latar depan ke latar belakang; versi sebelumnya memerlukan dua tekan, dengan petunjuk footer dan konfirmasi. `--dangerously-skip-permissions` yang diteruskan ke `claude agents` menampilkan pengecualian bypass alih-alih dijatuhkan diam-diam. Sesi interaktif yang tidak pernah Anda beri nama membawa nama default seperti `my-app-3f` dalam daftar sesi dan `claude agents --json`. Perintah shell latar belakang dan alur kerja dinamis bertahan ketika proses sesi dihentikan, dimulai ulang, atau diperbarui, termasuk di Windows; atur `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF=1` untuk mematikan handoff. Transkrip yang salah dibaca sebagai kosong saat restart diganti nama dengan akhiran `.orphaned-` alih-alih dihapus. |

688| v2.1.195 | {/* min-version: 2.1.195 */}Pekerjaan yang sedang berlangsung dibawa ketika Anda melepaskan sesi di Windows juga; atur `CLAUDE_DISABLE_ADOPT=1` untuk menghentikannya sebagai gantinya. Grup `Completed` mengisi ruang vertikal yang tersisa dan header dikompakkan di terminal pendek. Versi Claude Code yang lebih lama tidak lagi menjatuhkan bidang `state.json` sesi yang lebih baru atau menyembunyikan sesi tersebut dari `claude agents`. Melampirkan ke sesi yang dihentikan beralih segera alih-alih menampilkan layar kosong selama lima detik. Supervisor yang tidak dapat menerima koneksi keluar dan melepaskan kuncinya sendiri. |

689| v2.1.174 | {/* min-version: 2.1.174 */}Sesi latar belakang tidak lagi mewarisi variabel titik akhir gateway seperti `ANTHROPIC_BASE_URL` dari shell peluncuran supervisor; supervisor menyediakan snapshot kredensial segar ke worker yang sudah dipanaskan sebelumnya, memperbaiki kesalahan `Could not resolve authentication method` yang palsu. |

690| v2.1.172 | {/* min-version: 2.1.172 */}`/model` dalam input pengiriman menetapkan penimpaan model pengiriman yang dibatasi sesi. |

691| v2.1.161 | {/* min-version: 2.1.161 */}Ringkasan baris menampilkan hitungan `done/total` untuk item kerja paralel; panel intip menyebutkan item kerja paralel yang paling lama berjalan. |

692| v2.1.157 | {/* min-version: 2.1.157 */}`claude agents` menerima `--agent`; sesi yang dikirim menghormati pengaturan `agent`. |

693| v2.1.145 | {/* min-version: 2.1.145 */}Dikte suara didukung dalam input balasan panel intip dan input pengiriman. |

694| v2.1.143 | {/* min-version: 2.1.143 */}Pengaturan `worktree.bgIsolation` ditambahkan; `claude agents` menerima `--allow-dangerously-skip-permissions`. |

695| v2.1.142 | {/* min-version: 2.1.142 */}`claude agents` menerima `--permission-mode`, `--model`, `--effort`, `--dangerously-skip-permissions`, `--settings`, `--add-dir`, `--plugin-dir`, `--mcp-config`, dan `--strict-mcp-config`. |

696| v2.1.141 | {/* min-version: 2.1.141 */}`claude agents` menerima `--cwd` untuk membatasi daftar ke satu proyek. |

697| v2.1.139 | {/* min-version: 2.1.139 */}Tampilan agen diperkenalkan sebagai pratinjau penelitian. |

Details

397 Jendela konteks token 1M397 Jendela konteks token 1M

398</h2>398</h2>

399 399 

400Claude Opus 4.6 dan yang lebih baru, serta Sonnet 4.6, mendukung [jendela konteks token 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) di Amazon Bedrock. Claude Code secara otomatis mengaktifkan jendela konteks yang diperluas ketika Anda memilih varian model 1M.400Claude Sonnet 5, Opus 4.6 dan yang lebih baru, serta Sonnet 4.6 mendukung [jendela konteks token 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) di Amazon Bedrock. Sonnet 5 disajikan melalui [endpoint Mantle](#use-the-mantle-endpoint) dan selalu berjalan dengan jendela 1M, tanpa varian `[1m]` untuk dipilih. Untuk model lainnya, Claude Code secara otomatis mengaktifkan jendela konteks yang diperluas ketika Anda memilih varian model 1M.

401 401 

402[Wizard pengaturan](#sign-in-with-bedrock) menawarkan opsi konteks 1M ketika mempin model. Untuk mengaktifkannya untuk model yang dipinnya secara manual, tambahkan `[1m]` ke ID model. Lihat [Pin models for third-party deployments](/id/model-config#pin-models-for-third-party-deployments) untuk detail.402[Wizard pengaturan](#sign-in-with-bedrock) menawarkan opsi konteks 1M ketika mempin model. Untuk mengaktifkannya untuk model yang dipinnya secara manual, tambahkan `[1m]` ke ID model. Lihat [Pin models for third-party deployments](/id/model-config#pin-models-for-third-party-deployments) untuk detail.

403 403 


458 Pilih model Mantle458 Pilih model Mantle

459</h3>459</h3>

460 460 

461Mantle menggunakan ID model dengan awalan `anthropic.` dan tanpa akhiran versi, misalnya `anthropic.claude-haiku-4-5`. Model yang tersedia untuk akun Anda tergantung pada apa yang telah diberikan organisasi Anda; ID model tambahan tercantum dalam materi onboarding Anda dari AWS. Hubungi tim akun AWS Anda untuk meminta akses ke model yang diizinkan.461Mantle menggunakan ID model dengan awalan `anthropic.` dan tanpa akhiran versi, misalnya `anthropic.claude-sonnet-5` atau `anthropic.claude-haiku-4-5`. Model yang tersedia untuk akun Anda tergantung pada apa yang telah diberikan organisasi Anda; ID model tambahan tercantum dalam materi onboarding Anda dari AWS. Hubungi tim akun AWS Anda untuk meminta akses ke model yang diizinkan.

462 462 

463Atur model dengan flag `--model` atau dengan `/model` di dalam Claude Code:463Atur model dengan flag `--model` atau dengan `/model` di dalam Claude Code:

464 464 


542 542 

543Claude Code menggunakan [Invoke API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) Bedrock dan tidak mendukung Converse API.543Claude Code menggunakan [Invoke API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) Bedrock dan tidak mendukung Converse API.

544 544 

545<h3 id="zero-token-counts-in-/context">

546 Penghitungan token nol dalam /context

547</h3>

548 

549Perintah `/context` menghitung token untuk setiap grup alat dengan mengirimkan skema alat ke API count-tokens Bedrock. {/* min-version: 2.1.196 */}Pada versi Claude Code sebelum v2.1.196, Bedrock menolak permintaan itu karena skema membawa bidang yang tidak diterima API count-tokens-nya, jadi setiap grup alat menunjukkan 0 token. Baris lain dalam rincian, seperti pesan dan file memori, tidak terpengaruh.

550 

551Perbarui ke v2.1.196 atau lebih baru.

552 

545<h3 id="mantle-endpoint-errors">553<h3 id="mantle-endpoint-errors">

546 Kesalahan endpoint Mantle554 Kesalahan endpoint Mantle

547</h3>555</h3>

Details

24* **Claude for Teams atau Enterprise**: masuk dengan akun Claude.ai yang diundang oleh admin tim Anda.24* **Claude for Teams atau Enterprise**: masuk dengan akun Claude.ai yang diundang oleh admin tim Anda.

25* **Claude Console**: masuk dengan kredensial Console Anda. Admin Anda harus telah [mengundang Anda](#claude-console-authentication) terlebih dahulu.25* **Claude Console**: masuk dengan kredensial Console Anda. Admin Anda harus telah [mengundang Anda](#claude-console-authentication) terlebih dahulu.

26* **Penyedia cloud**: jika organisasi Anda menggunakan [Amazon Bedrock](/id/amazon-bedrock), [Google Vertex AI](/id/google-vertex-ai), atau [Microsoft Foundry](/id/microsoft-foundry), atur variabel lingkungan yang diperlukan sebelum menjalankan `claude`. Tidak diperlukan login browser.26* **Penyedia cloud**: jika organisasi Anda menggunakan [Amazon Bedrock](/id/amazon-bedrock), [Google Vertex AI](/id/google-vertex-ai), atau [Microsoft Foundry](/id/microsoft-foundry), atur variabel lingkungan yang diperlukan sebelum menjalankan `claude`. Tidak diperlukan login browser.

27* **Gateway cloud**: jika organisasi Anda menjalankan [gateway aplikasi Claude](/id/claude-apps-gateway) yang di-host sendiri, masuk dengan SSO perusahaan melalui `/login`. Token yang dikeluarkan gateway adalah satu-satunya kredensial sesi.

27 28 

28Untuk keluar dan melakukan autentikasi ulang, ketik `/logout` di prompt Claude Code.29Untuk keluar dan melakukan autentikasi ulang, ketik `/logout` di prompt Claude Code.

29 30 


37 38 

38* [Claude for Teams atau Enterprise](#claude-for-teams-or-enterprise), direkomendasikan untuk sebagian besar tim39* [Claude for Teams atau Enterprise](#claude-for-teams-or-enterprise), direkomendasikan untuk sebagian besar tim

39* [Claude Console](#claude-console-authentication)40* [Claude Console](#claude-console-authentication)

41* [Claude apps gateway](/id/claude-apps-gateway), gateway yang di-host sendiri yang menandatangani pengembang dengan IdP Anda dan merutekan inferensi ke penyedia cloud yang Anda konfigurasi

40* [Amazon Bedrock](/id/amazon-bedrock)42* [Amazon Bedrock](/id/amazon-bedrock)

41* [Google Vertex AI](/id/google-vertex-ai)43* [Google Vertex AI](/id/google-vertex-ai)

42* [Microsoft Foundry](/id/microsoft-foundry)44* [Microsoft Foundry](/id/microsoft-foundry)


131 * Di Windows, kredensial disimpan di `%USERPROFILE%\.claude\.credentials.json` dan mewarisi kontrol akses dari direktori profil pengguna Anda, yang membatasi file ke akun pengguna Anda secara default.133 * Di Windows, kredensial disimpan di `%USERPROFILE%\.claude\.credentials.json` dan mewarisi kontrol akses dari direktori profil pengguna Anda, yang membatasi file ke akun pengguna Anda secara default.

132 * Jika Anda telah menetapkan variabel lingkungan `CLAUDE_CONFIG_DIR` di Linux atau Windows, file `.credentials.json` berada di bawah direktori tersebut.134 * Jika Anda telah menetapkan variabel lingkungan `CLAUDE_CONFIG_DIR` di Linux atau Windows, file `.credentials.json` berada di bawah direktori tersebut.

133 * Claude Code mengelola `.credentials.json` melalui `/login` dan `/logout`. Untuk merutekan permintaan melalui titik akhir API kustom, atur variabel lingkungan [`ANTHROPIC_BASE_URL`](/id/env-vars) sebagai gantinya.135 * Claude Code mengelola `.credentials.json` melalui `/login` dan `/logout`. Untuk merutekan permintaan melalui titik akhir API kustom, atur variabel lingkungan [`ANTHROPIC_BASE_URL`](/id/env-vars) sebagai gantinya.

134* **Jenis autentikasi yang didukung**: kredensial Claude.ai, kredensial API Claude, Azure Auth, Bedrock Auth, dan Vertex Auth.136* **Jenis autentikasi yang didukung**: kredensial Claude.ai, kredensial API Claude, Azure Auth, Bedrock Auth, Vertex Auth, dan token sesi [gateway aplikasi Claude](/id/claude-apps-gateway).

135* **Skrip kredensial kustom**: pengaturan [`apiKeyHelper`](/id/settings#available-settings) dapat dikonfigurasi untuk menjalankan skrip shell yang mengembalikan kunci API.137* **Skrip kredensial kustom**: pengaturan [`apiKeyHelper`](/id/settings#available-settings) dapat dikonfigurasi untuk menjalankan skrip shell yang mengembalikan kunci API.

136* **Interval penyegaran**: secara default, `apiKeyHelper` dipanggil setelah 5 menit atau pada respons HTTP 401. Atur variabel lingkungan `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` untuk interval penyegaran kustom.138* **Interval penyegaran**: secara default, `apiKeyHelper` dipanggil setelah 5 menit atau pada respons HTTP 401. Atur variabel lingkungan `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` untuk interval penyegaran kustom.

137* **Pemberitahuan helper lambat**: jika `apiKeyHelper` membutuhkan waktu lebih lama dari 10 detik untuk mengembalikan kunci, Claude Code menampilkan pemberitahuan peringatan di bilah prompt yang menunjukkan waktu yang telah berlalu. Jika Anda melihat pemberitahuan ini secara teratur, periksa apakah skrip kredensial Anda dapat dioptimalkan.139* **Pemberitahuan helper lambat**: jika `apiKeyHelper` membutuhkan waktu lebih lama dari 10 detik untuk mengembalikan kunci, Claude Code menampilkan pemberitahuan peringatan di bilah prompt yang menunjukkan waktu yang telah berlalu. Jika Anda melihat pemberitahuan ini secara teratur, periksa apakah skrip kredensial Anda dapat dioptimalkan.


1515. Variabel lingkungan `CLAUDE_CODE_OAUTH_TOKEN`. Token OAuth berumur panjang yang dihasilkan oleh [`claude setup-token`](#generate-a-long-lived-token). Gunakan ini untuk pipeline CI dan skrip di mana login browser tidak tersedia.1535. Variabel lingkungan `CLAUDE_CODE_OAUTH_TOKEN`. Token OAuth berumur panjang yang dihasilkan oleh [`claude setup-token`](#generate-a-long-lived-token). Gunakan ini untuk pipeline CI dan skrip di mana login browser tidak tersedia.

1526. Kredensial OAuth langganan dari `/login`. Ini adalah default untuk pengguna Claude Pro, Max, Team, dan Enterprise.1546. Kredensial OAuth langganan dari `/login`. Ini adalah default untuk pengguna Claude Pro, Max, Team, dan Enterprise.

153 155 

156Sesi [gateway aplikasi Claude](/id/claude-apps-gateway) yang sudah masuk berada di luar daftar ini: ini adalah pemilihan penyedia seperti Bedrock atau Vertex, dan itu mengungguli mereka. Ketika sesi gateway ada, CLI melakukan autentikasi dengan token gateway bahkan jika `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, atau `CLAUDE_CODE_USE_FOUNDRY` diatur, dan entri token bearer, kunci API, dan `apiKeyHelper` di atas tidak digunakan.

157 

154Jika Anda memiliki langganan Claude aktif tetapi juga memiliki `ANTHROPIC_API_KEY` diatur di lingkungan Anda, kunci API memiliki prioritas setelah disetujui. Ini dapat menyebabkan kegagalan autentikasi jika kunci milik organisasi yang dinonaktifkan atau kedaluwarsa. Jalankan `unset ANTHROPIC_API_KEY` untuk kembali ke langganan Anda, dan periksa `/status` untuk mengonfirmasi metode mana yang aktif.158Jika Anda memiliki langganan Claude aktif tetapi juga memiliki `ANTHROPIC_API_KEY` diatur di lingkungan Anda, kunci API memiliki prioritas setelah disetujui. Ini dapat menyebabkan kegagalan autentikasi jika kunci milik organisasi yang dinonaktifkan atau kedaluwarsa. Jalankan `unset ANTHROPIC_API_KEY` untuk kembali ke langganan Anda, dan periksa `/status` untuk mengonfirmasi metode mana yang aktif.

155 159 

156[Claude Code di Web](/id/claude-code-on-the-web) selalu menggunakan kredensial langganan Anda. `ANTHROPIC_API_KEY` dan `ANTHROPIC_AUTH_TOKEN` di lingkungan sandbox tidak menimpanya.160[Claude Code di Web](/id/claude-code-on-the-web) selalu menggunakan kredensial langganan Anda. `ANTHROPIC_API_KEY` dan `ANTHROPIC_AUTH_TOKEN` di lingkungan sandbox tidak menimpanya.

Details

9[Auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode) memungkinkan Claude Code berjalan tanpa permintaan izin rutin dengan merutekan panggilan alat melalui pengklasifikasi yang memblokir apa pun yang tidak dapat dibalikkan, merusak, atau ditujukan di luar lingkungan Anda. Aturan Deny dan explicit ask dievaluasi sebelum pengklasifikasi dan masih memblokir atau meminta. Gunakan blok pengaturan `autoMode` untuk memberi tahu pengklasifikasi itu repo, bucket, dan domain mana yang dipercaya organisasi Anda, sehingga berhenti memblokir operasi internal rutin.9[Auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode) memungkinkan Claude Code berjalan tanpa permintaan izin rutin dengan merutekan panggilan alat melalui pengklasifikasi yang memblokir apa pun yang tidak dapat dibalikkan, merusak, atau ditujukan di luar lingkungan Anda. Aturan Deny dan explicit ask dievaluasi sebelum pengklasifikasi dan masih memblokir atau meminta. Gunakan blok pengaturan `autoMode` untuk memberi tahu pengklasifikasi itu repo, bucket, dan domain mana yang dipercaya organisasi Anda, sehingga berhenti memblokir operasi internal rutin.

10 10 

11<Note>11<Note>

12 Auto mode tersedia untuk semua pengguna pada Anthropic API. Pada Amazon Bedrock, Google Cloud Vertex AI, dan Microsoft Foundry, Anda harus terlebih dahulu [mengatur `CLAUDE_CODE_ENABLE_AUTO_MODE`](/id/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry). Jika Claude Code melaporkan auto mode tidak tersedia untuk akun Anda, periksa [persyaratan lengkap](/id/permission-modes#eliminate-prompts-with-auto-mode), yang juga mencakup model yang didukung dan pengaktifan Owner pada paket Team dan Enterprise.12 Auto mode tersedia untuk semua pengguna pada Anthropic API. Pada Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry, dan sesi [gateway aplikasi Claude](/id/claude-apps-gateway) yang masuk, Anda harus terlebih dahulu [mengatur `CLAUDE_CODE_ENABLE_AUTO_MODE`](/id/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry). Jika Claude Code melaporkan auto mode tidak tersedia untuk akun Anda, periksa [persyaratan lengkap](/id/permission-modes#eliminate-prompts-with-auto-mode), yang juga mencakup model yang didukung dan pengaktifan Owner pada paket Team dan Enterprise.

13</Note>13</Note>

14 14 

15Secara default, pengklasifikasi hanya mempercayai direktori kerja dan remote yang dikonfigurasi dari repo saat ini. Tindakan seperti mendorong ke org kontrol sumber perusahaan Anda atau menulis ke bucket cloud tim diblokir sampai Anda menambahkannya ke `autoMode.environment`.15Secara default, pengklasifikasi hanya mempercayai direktori kerja dan remote yang dikonfigurasi dari repo saat ini. Tindakan seperti mendorong ke org kontrol sumber perusahaan Anda atau menulis ke bucket cloud tim diblokir sampai Anda menambahkannya ke `autoMode.environment`.


21* [Pilih di mana menetapkan aturan](#where-the-classifier-reads-configuration) di seluruh CLAUDE.md, pengaturan pengguna, dan pengaturan terkelola21* [Pilih di mana menetapkan aturan](#where-the-classifier-reads-configuration) di seluruh CLAUDE.md, pengaturan pengguna, dan pengaturan terkelola

22* [Tentukan infrastruktur terpercaya](#define-trusted-infrastructure) dengan `autoMode.environment`22* [Tentukan infrastruktur terpercaya](#define-trusted-infrastructure) dengan `autoMode.environment`

23* [Ganti aturan blokir dan izin](#override-the-block-and-allow-rules) ketika default tidak sesuai dengan pipeline Anda23* [Ganti aturan blokir dan izin](#override-the-block-and-allow-rules) ketika default tidak sesuai dengan pipeline Anda

24* [Perutean semua perintah shell melalui pengklasifikasi](#route-all-shell-commands-through-the-classifier) dengan `autoMode.classifyAllShell`

24* [Periksa konfigurasi efektif Anda](#inspect-the-defaults-and-your-effective-config) dengan subperintah `claude auto-mode`25* [Periksa konfigurasi efektif Anda](#inspect-the-defaults-and-your-effective-config) dengan subperintah `claude auto-mode`

25* [Tinjau penolakan](#review-denials) sehingga Anda tahu apa yang harus ditambahkan selanjutnya26* [Tinjau penolakan](#review-denials) sehingga Anda tahu apa yang harus ditambahkan selanjutnya

26 27 


53 54 

54Untuk sebagian besar organisasi, `autoMode.environment` adalah satu-satunya bidang yang perlu Anda atur. Ini memberi tahu pengklasifikasi repo, bucket, dan domain mana yang dipercaya: pengklasifikasi menggunakannya untuk memutuskan apa arti "eksternal", jadi tujuan apa pun yang tidak terdaftar adalah target exfiltration potensial.55Untuk sebagian besar organisasi, `autoMode.environment` adalah satu-satunya bidang yang perlu Anda atur. Ini memberi tahu pengklasifikasi repo, bucket, dan domain mana yang dipercaya: pengklasifikasi menggunakannya untuk memutuskan apa arti "eksternal", jadi tujuan apa pun yang tidak terdaftar adalah target exfiltration potensial.

55 56 

56Daftar lingkungan default mempercayai repo kerja dan remote yang dikonfigurasinya. Untuk menambahkan entri Anda sendiri bersama default tersebut, sertakan string literal `"$defaults"` dalam array. Entri default disisipi pada posisi tersebut, jadi entri kustom Anda dapat berada sebelum atau sesudahnya.57Mulai dari Claude Code v2.1.195, `claude auto-mode defaults` mencetak dua jenis entri lingkungan.

58 

59* **Trust slots**: nama apa yang diperlakukan pengklasifikasi sebagai di dalam batas Anda. Slot tersebut adalah Trusted repo, Source control, Trusted internal domains, Trusted cloud buckets, Key internal services, dan Internal package registry. Entri repo dan source-control default ke repositori kerja dan remote yang dikonfigurasinya. Setiap trust slot lainnya default ke `None configured`, jadi tidak ada yang lain dipercaya sampai Anda menambahkannya.

60* **Sensitivity slots**: nama apa yang diperlakukan aturan perlindungan sebagai berisiko tinggi. Slot tersebut adalah PII / regulated-data locations, Sensitive remote targets, dan Protected IaC scopes. Masing-masing default ke heuristik luas, seperti memperlakukan host atau namespace apa pun yang namanya membawa `prod` atau `production` sebagai target remote sensitif, jadi aturan perlindungan aktif sebelum Anda mengonfigurasi apa pun. Penamaan target konkret dalam sensitivity slot membuat aturan tersebut berlaku untuk target bernama daripada heuristik.

61 

62Versi sebelum v2.1.195 hanya mencetak lima trust slot pertama.

63 

64Untuk menambahkan entri Anda sendiri bersama default tersebut, sertakan string literal `"$defaults"` dalam array. Entri default disisipi pada posisi tersebut, jadi entri kustom Anda dapat berada sebelum atau sesudahnya.

65 

66Contoh berikut menjaga entri default dan menambahkan repo, bucket, domain, dan layanan organisasi.

57 67 

58```json theme={null}68```json theme={null}

59{69{


73 83 

74* **Organisasi**: nama perusahaan Anda dan apa yang Claude Code digunakan terutama untuk, seperti pengembangan perangkat lunak, otomasi infrastruktur, atau rekayasa data84* **Organisasi**: nama perusahaan Anda dan apa yang Claude Code digunakan terutama untuk, seperti pengembangan perangkat lunak, otomasi infrastruktur, atau rekayasa data

75* **Kontrol sumber**: setiap GitHub, GitLab, atau org Bitbucket yang didorong pengembang Anda85* **Kontrol sumber**: setiap GitHub, GitLab, atau org Bitbucket yang didorong pengembang Anda

76* **Penyedia cloud dan bucket terpercaya**: nama bucket atau awalan yang Claude harus dapat membaca dan menulis86* **Penyedia cloud dan bucket terpercaya**: nama bucket atau awalan yang Claude harus dapat membaca dari dan menulis ke

77* **Domain internal terpercaya**: nama host untuk API, dasbor, dan layanan di dalam jaringan Anda, seperti `*.internal.example.com`87* **Domain internal terpercaya**: nama host untuk API, dasbor, dan layanan di dalam jaringan Anda, seperti `*.internal.example.com`

78* **Layanan internal utama**: CI, registri artefak, indeks paket internal, tooling insiden88* **Layanan internal utama**: CI, registri artefak, indeks paket internal, tooling insiden

89* **Registri paket internal**: registri npm, PyPI, atau lainnya yang pribadi yang instalasi harus dirutekan melalui, sehingga instalasi yang melewatinya untuk registri publik diblokir

90* **Lokasi PII / regulated-data**: bucket, database, atau path yang menyimpan data pribadi atau diatur, sehingga pengklasifikasi melindungi lokasi tersebut daripada menebak dari konten

91* **Target remote sensitif**: namespace, host, atau container yang dihitung sebagai production, sehingga remote shell dan port-forward ke dalamnya memerlukan persetujuan eksplisit Anda

92* **Protected IaC scopes**: sumber daya infrastruktur yang apply atau destroy harus selalu memerlukan Anda untuk menyebutkan perubahan

79* **Konteks tambahan**: batasan industri yang diatur, infrastruktur multi-tenant, atau persyaratan kepatuhan yang mempengaruhi apa yang harus diperlakukan pengklasifikasi sebagai berisiko93* **Konteks tambahan**: batasan industri yang diatur, infrastruktur multi-tenant, atau persyaratan kepatuhan yang mempengaruhi apa yang harus diperlakukan pengklasifikasi sebagai berisiko

80 94 

95Entri Internal package registry, PII / regulated-data locations, Sensitive remote targets, dan Protected IaC scopes memerlukan Claude Code v2.1.195 atau lebih baru. Versi sebelumnya masih membacanya sebagai konteks biasa tetapi tidak memiliki aturan bawaan yang menargetkannya.

96 

81Template awal yang berguna: isi bidang dalam kurung dan hapus baris apa pun yang tidak berlaku.97Template awal yang berguna: isi bidang dalam kurung dan hapus baris apa pun yang tidak berlaku.

82 98 

83```json theme={null}99```json theme={null}


105 Ganti aturan blokir dan izin121 Ganti aturan blokir dan izin

106</h2>122</h2>

107 123 

108Tiga bidang tambahan memungkinkan Anda mengganti daftar aturan bawaan pengklasifikasi: `autoMode.hard_deny` untuk batas keamanan tanpa syarat, `autoMode.soft_deny` untuk tindakan destruktif yang niat pengguna dapat menghapus, dan `autoMode.allow` untuk pengecualian. Masing-masing adalah array deskripsi prosa, dibaca sebagai aturan bahasa alami. Untuk hard block berbasis pola alat yang berjalan sebelum pengklasifikasi, gunakan [`permissions.deny`](/id/permissions).124Tiga bidang tambahan memungkinkan Anda mengganti daftar aturan bawaan pengklasifikasi:

125 

126* `autoMode.hard_deny`: batas keamanan tanpa syarat

127* `autoMode.soft_deny`: tindakan destruktif yang niat pengguna dapat menghapus

128* `autoMode.allow`: pengecualian untuk aturan blokir soft

129 

130Masing-masing adalah array deskripsi prosa, dibaca sebagai aturan bahasa alami. Untuk hard block berbasis pola alat yang berjalan sebelum pengklasifikasi, gunakan [`permissions.deny`](/id/permissions).

109 131 

110Di dalam pengklasifikasi, prioritas bekerja dalam empat tingkat:132Di dalam pengklasifikasi, prioritas bekerja dalam empat tingkat:

111 133 


120 142 

121Untuk menjaga aturan bawaan sambil menambahkan aturan Anda sendiri, sertakan string literal `"$defaults"` dalam array. Aturan default disisipi pada posisi itu, jadi aturan kustom Anda dapat berada sebelum atau sesudahnya, dan Anda terus mewarisi pembaruan saat daftar bawaan berubah di seluruh rilis.143Untuk menjaga aturan bawaan sambil menambahkan aturan Anda sendiri, sertakan string literal `"$defaults"` dalam array. Aturan default disisipi pada posisi itu, jadi aturan kustom Anda dapat berada sebelum atau sesudahnya, dan Anda terus mewarisi pembaruan saat daftar bawaan berubah di seluruh rilis.

122 144 

145Contoh berikut menjaga default di semua empat daftar dan menambahkan aturan spesifik organisasi ke masing-masing.

146 

123```json theme={null}147```json theme={null}

124{148{

125 "autoMode": {149 "autoMode": {


149 Menetapkan salah satu dari `environment`, `allow`, `soft_deny`, atau `hard_deny` tanpa `"$defaults"` menggantikan seluruh daftar default untuk bagian itu. Array `soft_deny` tanpa `"$defaults"` membuang setiap aturan blokir soft bawaan, termasuk force push, `curl | bash`, dan production deploys. Array `hard_deny` tanpa `"$defaults"` membuang aturan data exfiltration bawaan dan aturan bypass auto-mode.173 Menetapkan salah satu dari `environment`, `allow`, `soft_deny`, atau `hard_deny` tanpa `"$defaults"` menggantikan seluruh daftar default untuk bagian itu. Array `soft_deny` tanpa `"$defaults"` membuang setiap aturan blokir soft bawaan, termasuk force push, `curl | bash`, dan production deploys. Array `hard_deny` tanpa `"$defaults"` membuang aturan data exfiltration bawaan dan aturan bypass auto-mode.

150</Danger>174</Danger>

151 175 

152Setiap bagian dievaluasi secara independen, jadi menetapkan `environment` saja membiarkan daftar `allow`, `soft_deny`, dan `hard_deny` default tetap utuh. Hanya hilangkan `"$defaults"` ketika Anda bermaksud mengambil kepemilikan penuh atas daftar. Untuk melakukan itu dengan aman, jalankan `claude auto-mode defaults` untuk mencetak aturan bawaan, salin ke file pengaturan Anda, kemudian tinjau setiap aturan terhadap pipeline Anda sendiri dan toleransi risiko.176Setiap bagian dievaluasi secara independen, jadi menetapkan `environment` saja membiarkan daftar `allow`, `soft_deny`, dan `hard_deny` default tetap utuh.

177 

178Hanya hilangkan `"$defaults"` ketika Anda bermaksud mengambil kepemilikan penuh atas daftar. Untuk melakukan itu dengan aman, jalankan `claude auto-mode defaults` untuk mencetak aturan bawaan, salin ke file pengaturan Anda, kemudian tinjau setiap aturan terhadap pipeline Anda sendiri dan toleransi risiko.

179 

180<h2 id="route-all-shell-commands-through-the-classifier">

181 Perutean semua perintah shell melalui pengklasifikasi

182</h2>

183 

184Secara default, aturan izin Bash dan PowerShell yang sempit seperti `Bash(npm test)` terbawa ke auto mode dan diselesaikan sebelum pengklasifikasi berjalan. Auto mode hanya menangguhkan aturan luas yang memberikan eksekusi kode arbitrer, seperti `Bash(*)` atau interpreter dengan wildcard. Ini berarti aturan sempit masih dapat membiarkan argumen destruktif melewati tanpa pengklasifikasi melihatnya, misalnya path skrip atau flag yang awalan aturan tidak antisipasi.

185 

186Atur `autoMode.classifyAllShell` ke `true` untuk menangguhkan setiap aturan izin Bash dan PowerShell saat auto mode aktif, sehingga pengklasifikasi mengevaluasi setiap perintah shell terlepas dari daftar izin Anda.

187 

188```json theme={null}

189{

190 "autoMode": {

191 "classifyAllShell": true

192 }

193}

194```

195 

196Ini menukar latensi untuk cakupan: perintah yang aturan izin akan setujui secara instan sekarang menunggu keputusan pengklasifikasi, dan setiap perintah shell dihitung sebagai panggilan pengklasifikasi.

197 

198Pengaturan hanya berlaku saat auto mode aktif, dan aturan izin Anda berperilaku normal dalam mode izin lainnya.

199 

200<Note>

201 `autoMode.classifyAllShell` memerlukan Claude Code v2.1.193 atau lebih baru. Versi sebelumnya mengabaikan kunci dan terus membawa aturan izin shell sempit ke auto mode.

202</Note>

153 203 

154<h2 id="inspect-the-defaults-and-your-effective-config">204<h2 id="inspect-the-defaults-and-your-effective-config">

155 Periksa default dan konfigurasi efektif Anda205 Periksa default dan konfigurasi efektif Anda


175claude auto-mode critique225claude auto-mode critique

176```226```

177 227 

178Jalankan `claude auto-mode config` setelah menyimpan pengaturan Anda untuk mengonfirmasi bahwa aturan efektif adalah apa yang Anda harapkan, dengan `"$defaults"` diperluas di tempat. Jika Anda telah menulis aturan kustom, `claude auto-mode critique` meninjau mereka dan menandai entri yang ambigu, berlebihan, atau mungkin menyebabkan false positif. Jika Anda perlu menghapus atau menulis ulang aturan bawaan daripada menambahkan di sampingnya, simpan output `claude auto-mode defaults` ke file, edit daftarnya, dan tempel hasilnya ke file pengaturan Anda sebagai pengganti `"$defaults"`.228Jalankan `claude auto-mode config` setelah menyimpan pengaturan Anda untuk mengonfirmasi bahwa aturan efektif adalah apa yang Anda harapkan, dengan `"$defaults"` diperluas di tempat. Jika Anda telah menulis aturan kustom, `claude auto-mode critique` meninjau mereka dan menandai entri yang ambigu, berlebihan, atau mungkin menyebabkan false positif.

229 

230Jika Anda perlu menghapus atau menulis ulang aturan bawaan daripada menambahkan di sampingnya, simpan output `claude auto-mode defaults` ke file, edit daftarnya, dan tempel hasilnya ke file pengaturan Anda sebagai pengganti `"$defaults"`.

179 231 

180<h2 id="review-denials">232<h2 id="review-denials">

181 Tinjau penolakan233 Tinjau penolakan


183 235 

184Ketika auto mode menolak panggilan alat, penolakan dicatat di `/permissions` di bawah tab Recently denied. Tekan `r` pada tindakan yang ditolak untuk menandainya untuk retry: ketika Anda keluar dari dialog, Claude Code mengirim pesan memberi tahu model itu dapat retry panggilan alat itu dan melanjutkan percakapan.236Ketika auto mode menolak panggilan alat, penolakan dicatat di `/permissions` di bawah tab Recently denied. Tekan `r` pada tindakan yang ditolak untuk menandainya untuk retry: ketika Anda keluar dari dialog, Claude Code mengirim pesan memberi tahu model itu dapat retry panggilan alat itu dan melanjutkan percakapan.

185 237 

238Dalam Claude Code v2.1.193 dan lebih baru, alasan pengklasifikasi untuk setiap penolakan muncul bersama panggilan alat yang diblokir dalam transkrip, dalam notifikasi penolakan, dan di bawah setiap entri pada tab Recently denied. Gunakan alasan untuk memutuskan apakah perbaikannya adalah entri `environment`, pengecualian `allow`, atau retry dengan niat eksplisit dalam pesan Anda berikutnya.

239 

186Penolakan berulang untuk tujuan yang sama biasanya berarti pengklasifikasi kehilangan konteks. Tambahkan tujuan itu ke `autoMode.environment`, kemudian jalankan `claude auto-mode config` untuk mengonfirmasi itu berlaku.240Penolakan berulang untuk tujuan yang sama biasanya berarti pengklasifikasi kehilangan konteks. Tambahkan tujuan itu ke `autoMode.environment`, kemudian jalankan `claude auto-mode config` untuk mengonfirmasi itu berlaku.

187 241 

188Untuk bereaksi terhadap penolakan secara terprogram, gunakan hook [`PermissionDenied`](/id/hooks#permissiondenied).242Untuk bereaksi terhadap penolakan secara terprogram, gunakan hook [`PermissionDenied`](/id/hooks#permissiondenied).

claude-apps-gateway-config.md +749 −0 created

Details

1> ## Documentation Index

2> 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.

4 

5# Konfigurasi gateway aplikasi Claude

6 

7> Referensi untuk setiap opsi gateway.yaml: listener dan TLS, OIDC, session, Postgres store, Bedrock/Agent Platform/Foundry upstreams, model routing, managed policies, dan telemetry.

8 

9Deployment gateway aplikasi Claude dikonfigurasi oleh satu file YAML, secara konvensional `gateway.yaml`. File ini mendefinisikan semua yang dilakukan gateway: di mana ia mendengarkan, bagaimana pengembang masuk, ke mana inference pergi, dan kebijakan serta telemetry mana yang berlaku. Halaman ini adalah referensi untuk setiap opsi dalam file tersebut. Untuk menulis yang pertama, mulai dari [quickstart](/id/claude-apps-gateway#quickstart), yang membangun config minimal yang berfungsi dan menjalankannya; setelah Anda memiliki config yang Anda sukai, [deployment guide](/id/claude-apps-gateway-deploy) mencakup containerizing dan hosting di Kubernetes, Cloud Run, atau platform Anda sendiri.

10 

11Gateway membaca file sekali, saat startup, dengan `claude gateway --config /path/to/gateway.yaml`. Setiap opsi divalidasi terhadap schema saat boot, jadi config yang salah format gagal saat start dengan error tingkat field daripada saat penggunaan pertama.

12 

13[Complete example](#complete-example) di akhir halaman ini menggunakan setiap bagian.

14 

15<h2 id="file-structure">

16 Struktur file

17</h2>

18 

19Lima bagian [diperlukan](#required-sections). Setiap bagian lainnya [opsional](#optional-sections), dan bagian yang dihilangkan mengambil default-nya. Kunci yang tidak dikenal gagal boot, jadi typo muncul sebagai error bernama daripada setting yang diabaikan secara diam-diam.

20 

21**Bagian yang diperlukan:**

22 

23* [`listen`](#listen): bind address, public URL, TLS termination

24* [`oidc`](#oidc): identity provider Anda (IdP), termasuk issuer, client, claim mapping, dan siapa yang boleh masuk

25* [`session`](#session): bearer tokens yang dimint gateway, dengan secret dan lifetime

26* [`store`](#store): PostgreSQL, untuk device grants dan rate-limit counters

27* [`upstreams`](#upstreams): ke mana inference pergi, apakah Anthropic, Bedrock, Agent Platform, atau Foundry

28 

29**Bagian opsional:**

30 

31* [`admin`](#admin): Admin API auth dan retention untuk spend limits

32* [`enforcement`](#enforcement): perilaku spend-limit fail-open atau fail-closed

33* [`models`](#models) dan `auto_include_builtin_models`: daftar model yang dikurasi admin dan per-upstream IDs

34* [`managed`](#managed): managed settings policies berdasarkan IdP group

35* [`telemetry`](#telemetry): OTLP forwarding ke observability stack Anda

36* [`access_control`, `limits`, `timeouts`, `rate_limits`](#http-tuning): IP allow/deny, request size caps, upstream time-to-first-byte, dan per-IP sign-in limits

37 

38<h2 id="secret-expansion">

39 Ekspansi secret

40</h2>

41 

42Jangan tulis secrets seperti `client_secret`, `jwt_secret`, atau `postgres_url` langsung di `gateway.yaml`. Referensikan mereka dengan salah satu bentuk di bawah, dan gateway menyelesaikan nilai saat boot dari environment variable atau file:

43 

44| Bentuk | Diselesaikan ke | Gunakan untuk |

45| --------------- | -------------------------------------------------------------- | ---------------------------------------------------------------------- |

46| `${VAR}` | Environment variable `VAR`. Boot gagal jika tidak terdefinisi. | Container environment variables, AWS Secrets Manager via env injection |

47| `${file:/path}` | Isi file, dipangkas | Kubernetes Secret volume mounts, Vault Agent, SOPS |

48 

49<h2 id="required-sections">

50 Bagian yang diperlukan

51</h2>

52 

53<h3 id="listen">

54 `listen`

55</h3>

56 

57Blok `listen` mengontrol di mana gateway melayani: bind address dan port, origin yang terlihat secara eksternal, dan optional TLS termination.

58 

59| Field | Diperlukan | Deskripsi |

60| ---------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

61| `host` | Tidak | Bind address. Default `0.0.0.0`. |

62| `port` | Tidak | Bind port. Default `8080`. |

63| `public_url` | Di belakang proxy | Origin `https://` yang terlihat secara eksternal, digunakan untuk membangun IdP `redirect_uri` dan discovery metadata. Diperlukan di belakang proxy apa pun yang menghentikan TLS seperti ALB, Ingress, atau Cloud Run, karena gateway tidak mempercayai header `X-Forwarded-*` saat membangun origin-nya sendiri; mereka dapat dipalsukan oleh client. `trusted_proxies` di bawah mengatur resolusi client-IP saja. Juga diperlukan untuk mengaktifkan [telemetry](#telemetry), karena gateway membangun endpoint OTLP yang didorong ke client dari URL ini. |

64| `tls.cert` / `tls.key` | Tidak | Path PEM jika gateway menghentikan TLS sendiri |

65| `trusted_proxies` | Tidak | CIDR atau IP dari load balancer di depan gateway. Ketika diatur, gateway mempercayai `X-Forwarded-For` hanya dari peer ini dan mencatat IP client yang sebenarnya untuk per-IP rate limiting dan audit. Setara dengan nginx `set_real_ip_from`. |

66 

67<h3 id="oidc">

68 `oidc`

69</h3>

70 

71OpenID Connect (OIDC) adalah protokol SSO yang digunakan gateway dengan identity provider Anda; lihat [Identity provider setup](/id/claude-apps-gateway-deploy#identity-provider-setup) untuk apa yang harus didaftarkan di sisi IdP. Blok `oidc` menghubungkan gateway ke identity provider Anda dan memutuskan siapa yang dapat masuk. Ini menamai issuer dan OAuth client, memetakan claims yang membawa email dan groups, dan membatasi sign-in berdasarkan email domain atau group.

72 

73| Field | Diperlukan | Deskripsi |

74| ------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

75| `issuer` | Ya | OIDC discovery base. Harus melayani discovery di `/.well-known/openid-configuration`. Gunakan HTTPS dalam production; gateway menerima issuer `http://`. Issuer loopback seperti `http://localhost:8081` ditolak oleh [SSRF guard](/id/claude-apps-gateway-deploy#threat-model-summary) kecuali `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` diatur di environment gateway. |

76| `client_id` / `client_secret` | Ya | Dari registrasi OAuth client Anda |

77| `allowed_email_domains` | Tidak | Tolak id\_tokens yang claim `email`-nya tidak ada di salah satu domain ini, case-insensitive. Defense-in-depth terhadap misconfiguration IdP multi-tenant. Independen dari setting ini, id\_token yang claim `email_verified`-nya secara eksplisit `false` selalu ditolak. |

78| `allowed_groups` | Tidak | Batasi sign-in ke anggota IdP groups ini, dicocokkan terhadap `groups_claim`. User dalam email domain yang diizinkan tetapi tidak ada di salah satu groups ini ditolak. Memerlukan IdP untuk memancarkan groups claim. |

79| `groups_claim` | Tidak | Claim id\_token mana yang membawa group membership. Default `groups`. Microsoft Entra memancarkan app roles di bawah `roles`. Menerima flat key atau RFC 6901 JSON Pointer seperti `/resource_access/gateway/roles` untuk nested claims. |

80| `google_groups` | Tidak | Cari groups user yang masuk melalui Google Workspace Admin SDK Directory API, karena id\_token Google tidak membawa groups claim. Atur `service_account_json_path` ke file service-account key dengan domain-wide delegation pada scope `https://www.googleapis.com/auth/admin.directory.group.readonly`, dan `admin_email` ke administrator Workspace yang disamar oleh service account; Directory API memerlukan subject admin yang sebenarnya. Email address group setiap user menjadi groups claim mereka, jadi `allowed_groups` dan `managed.policies.match.groups` cocok pada group emails. |

81| `email_claim` | Tidak | Claim id\_token mana yang membawa email user. Default `email`. Beberapa IdP, seperti ADFS dan Entra B2C, memancarkan `upn` atau `preferred_username` sebagai gantinya. Menerima flat key, JSON Pointer, atau daftar fallback keys di mana key pertama yang ada digunakan. |

82| `scopes` | Tidak | Override lengkap dari scopes OIDC yang diminta gateway. Default `[openid, profile, email, offline_access]`. Atur ketika IdP Anda menolak scopes yang tidak dikenalinya, atau memerlukan custom scope untuk memancarkan groups atau email. Harus menyertakan `openid`. Menghilangkan `offline_access` menonaktifkan refresh tokens, jadi developer menjalankan kembali browser login setiap `session.ttl_hours`. Lihat [Identity provider setup](/id/claude-apps-gateway-deploy#identity-provider-setup) untuk per-IdP scope recipes seperti Google's refresh-token flow. |

83| `extra_auth_params` | Tidak | Extra query parameters ditambahkan ke IdP authorization request, verbatim. Ini adalah mekanisme override untuk perilaku spesifik IdP, seperti `access_type: offline` untuk Google refresh tokens, `domain_hint` untuk beberapa Entra tenants, atau `acr_values` untuk step-up flows. Tidak dapat override protocol params yang dikelola gateway: `state`, `nonce`, `redirect_uri`, PKCE, `scope`, `response_type`, `response_mode`, dan `client_id`. |

84| `userinfo_fallback` | Tidak | Ketika id\_token menghilangkan email atau groups, ambil dari `/userinfo`. Diperlukan untuk Keycloak lightweight access tokens, Okta org server, dan ADFS minimal tokens. Id\_token tetap authoritative; userinfo hanya mengisi gaps. Default `false`. |

85| `use_pkce` | Tidak | Kirim PKCE (S256) challenge pada authorization request. Default `true`. Atur `false` hanya jika IdP Anda menolak PKCE untuk confidential client ini. |

86| `clock_skew_seconds` | Tidak | Toleransi clock drift saat memvalidasi id\_token time claims. Default `0`, yang ketat. Naikkan jika Anda melihat error "token expired / not yet valid" tepat setelah sign-in karena host/IdP clock skew. |

87| `token_endpoint_auth_method` | Tidak | Override token-endpoint auth method. Menerima `client_secret_basic` atau `client_secret_post`. Auto-negotiated secara default. |

88| `id_token_signed_response_alg` | Tidak | Expected id\_token signing algorithm. Default `RS256`. Atur untuk IdP yang menandatangani dengan ES256, PS256, atau EdDSA. |

89| `additional_authorized_parties` | Tidak | Extra `azp` values untuk diterima di luar `client_id`, untuk Keycloak broker dan token-exchange flows |

90| `discovery_url` | Tidak | Ambil discovery document dari URL ini daripada menurunkannya dari `issuer`, untuk IdP di belakang proxy yang menulis ulang issuer host. Path harus berisi `/.well-known/`. |

91| `form_action_origins` | Tidak | Origins tambahan untuk direktif `Content-Security-Policy: form-action` halaman `/device`. Gateway sudah mengizinkan `'self'` dan origin `authorization_endpoint` yang ditemukan, tetapi Chrome memberlakukan `form-action` terhadap seluruh redirect chain. Jika IdP Anda mengalihkan melalui host kedua, seperti Azure AD federated ke ADFS, hub-spoke Okta, atau SSO interceptor korporat, daftar setiap origin yang mungkin dialihkan oleh authorization request. |

92| `ca_cert_pem` | Tidak | PEM CA cert yang menggantikan system trust store untuk IdP requests saja. Gunakan untuk Keycloak atau Dex di belakang corporate PKI. |

93 

94<h3 id="session">

95 `session`

96</h3>

97 

98Blok `session` membentuk bearer tokens yang dimint gateway setelah sign-in: secret yang menandatanganinya dan berapa lama mereka hidup.

99 

100| Field | Diperlukan | Deskripsi |

101| ------------ | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

102| `jwt_secret` | Ya | Minimal 32 bytes entropy, misalnya dari `openssl rand -base64 32`. Menandatangani gateway's HS256 bearer tokens. Menerima single string atau array untuk rotation: index 0 menandatangani dan semua entries memverifikasi. Untuk rotate, prepend secret baru, tunggu `ttl_hours`, kemudian drop yang lama. |

103| `ttl_hours` | Tidak | Gateway bearer token lifetime. Default `1`. CLI secara diam-diam refresh sebelum expiry ketika IdP mengeluarkan refresh tokens. Lifetime yang lebih pendek menghapus provisioning lebih cepat; yang lebih panjang membuat lebih sedikit IdP round-trips. Jika IdP Anda tidak dapat mengeluarkan refresh tokens karena `offline_access` tidak tersedia, tidak ada silent refresh, jadi naikkan ini ke `8` atau `12` untuk menghindari mengirim developer kembali ke browser login setiap jam. |

104 

105<h3 id="store">

106 `store`

107</h3>

108 

109Blok `store` menunjukkan gateway ke database PostgreSQL-nya, yang menyimpan device grants dan rate-limit counters.

110 

111| Field | Diperlukan | Deskripsi |

112| ----------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

113| `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, jadi role memerlukan `CREATE TABLE` pada target schema. Jika kebijakan keamanan Anda melarang DDL dari application role, jalankan migrations dengan admin role, awalnya dan lagi setiap kali release baru mengirim migrations, dan berikan app role `SELECT, INSERT, UPDATE, DELETE` pada gateway's tables. Lihat [Upgrades](/id/claude-apps-gateway-deploy#upgrades) dan [Postgres](/id/claude-apps-gateway-deploy#postgres). |

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

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

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

117 

118Untuk local development, arahkan `postgres_url` ke throwaway Postgres container, misalnya `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`.

119 

120<h3 id="upstreams">

121 `upstreams`

122</h3>

123 

124`upstreams` adalah ordered list. Gateway meneruskan inference ke upstream pertama yang menyelesaikan model yang diminta. Pada `5xx`, `429`, atau timeout ia failover ke next; `4xx` lainnya tidak, karena error tersebut dapat diatribusikan ke request daripada upstream. Multiple upstreams dari provider yang sama harus menetapkan distinct `name:`.

125 

126Bedrock, Agent Platform, dan Foundry clients dibangun sekali saat startup, dan SDK mereka refresh credentials secara internal, jadi rotating cloud credentials tidak memerlukan restart. Static Anthropic API keys dan bearers dibaca saat startup; lihat [Anthropic API](#anthropic-api).

127 

128<h4 id="anthropic-api">

129 Anthropic API

130</h4>

131 

132Minimal Anthropic upstream adalah API key dari [Claude Console](https://platform.claude.com):

133 

134```yaml theme={null}

135upstreams:

136 - provider: anthropic

137 auth:

138 api_key: ${ANTHROPIC_API_KEY}

139 # OR an OAuth bearer (e.g. a Workload-Identity-Federation-exchanged token):

140 # oauth_token: ${file:/var/run/secrets/anthropic-oauth-token}

141 # base_url: https://api.anthropic.com # default; override for a forward proxy

142```

143 

144Dua bentuk credential berbeda dalam header yang mereka kirim:

145 

146* **`api_key`**: mengirim `x-api-key`. Rotate di Claude Console dan update env var.

147* **`oauth_token`**: mengirim `Authorization: Bearer`. Gunakan bentuk bearer ketika org Anda mengeluarkan short-lived tokens daripada long-lived API keys. Bearer dibaca sekali saat startup, jadi refresh dengan remount secret dan restart.

148 

149Daripada static key atau bearer, Anda dapat menggunakan Workload Identity Federation. Buat federation rule dengan mengikuti [Workload Identity Federation guide](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation), kemudian mount workload's OIDC JWT Anda sebagai file, seperti Kubernetes projected service-account token atau CI platform's id-token. Gateway menukar JWT untuk short-lived bearer dan refresh secara otomatis. Token file dibaca ulang pada setiap exchange, jadi rotated projected tokens diambil tanpa restart.

150 

151```yaml theme={null}

152upstreams:

153 - provider: anthropic

154 auth:

155 federation_rule_id: ${ANTHROPIC_FEDERATION_RULE_ID}

156 organization_id: ${ANTHROPIC_ORGANIZATION_ID}

157 identity_token_file: /var/run/secrets/anthropic/id-token

158 # workspace_id: wrkspc_... # required if the rule covers >1 workspace

159 # service_account_id: svac_... # optional expected-target check

160```

161 

162<h4 id="amazon-bedrock">

163 Amazon Bedrock

164</h4>

165 

166Untuk client-side Bedrock deployment yang digantikan atau di-front oleh gateway, lihat [Claude Code on Amazon Bedrock](/id/amazon-bedrock). Gateway-side upstream:

167 

168```yaml theme={null}

169upstreams:

170 - provider: bedrock

171 region: us-east-1

172 auth: {} # preferred: AWS default credential chain

173 # OR explicit credentials:

174 # auth:

175 # aws_access_key_id: ${AWS_AKID}

176 # aws_secret_access_key: ${AWS_SK}

177 # aws_session_token: ${AWS_ST}

178 # OR a Bedrock API bearer token:

179 # auth:

180 # aws_bearer_token: ${AWS_BEARER_TOKEN}

181 # Override the bedrock-runtime endpoint for FIPS or VPC-endpoint deployments:

182 # base_url: https://bedrock-runtime-fips.us-east-1.amazonaws.com

183```

184 

185Empty `auth` block menggunakan AWS SDK's default credential chain: env vars, `~/.aws/credentials`, ECS task role, EC2 instance metadata, atau IRSA pada EKS. Dalam production, berikan gateway pod IAM role daripada embedding static keys dalam container image.

186 

187| Setup | Bagaimana |

188| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

189| IAM permissions | Berikan gateway's principal `bedrock:InvokeModel` dan `bedrock:InvokeModelWithResponseStream` pada inference-profile ARNs dan underlying foundation-model ARNs. Untuk built-in catalog di US regions: `arn:aws:bedrock:<region>:<account>:inference-profile/us.anthropic.*` dan `arn:aws:bedrock:*::foundation-model/anthropic.*`. |

190| Model access | Di Bedrock console, per region, request dan enable model access untuk Claude models yang Anda inginkan. Cross-region inference profiles (`us.anthropic.*`) memerlukan model access di setiap region yang dicakup profile. |

191| EKS (IRSA) | Buat IAM role dengan policy di atas dan trust policy untuk cluster's OIDC provider yang scoped ke gateway's service account. Annotate service account dengan `eks.amazonaws.com/role-arn: arn:aws:iam::<acct>:role/claude-gateway`. `auth: {}` mengambilnya. |

192| ECS / EC2 | Attach IAM role ke task definition atau instance profile. `auth: {}` mengambilnya. |

193| Tempat lain | Lewatkan credentials via `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, dan `AWS_SESSION_TOKEN` env vars, atau atur secara eksplisit di `auth:` dengan `${VAR}` expansion |

194| Region | `region:` adalah API endpoint region. Cross-region inference profiles route across geo (US, EU, APAC) terlepas dari mana Anda memilih. Untuk non-US regions atau provisioned-throughput ARNs, tambahkan [`models:`](#models) block dengan per-upstream IDs yang benar. |

195 

196<h4 id="google-cloud-agent-platform">

197 Google Cloud Agent Platform

198</h4>

199 

200Untuk equivalent client-side setup, lihat [Claude Code on Google Cloud](/id/google-vertex-ai). Gateway-side upstream:

201 

202```yaml theme={null}

203upstreams:

204 - provider: vertex

205 region: us-east5

206 project_id: example-prod

207 auth: {} # preferred: Application Default Credentials

208 # OR a service account key file:

209 # auth: { service_account_json: /secrets/sa.json }

210 # Override the aiplatform endpoint for Private Service Connect:

211 # base_url: https://us-east5-aiplatform.p.googleapis.com

212```

213 

214Empty `auth` block menggunakan Application Default Credentials: `GOOGLE_APPLICATION_CREDENTIALS`, GCE metadata, atau GKE Workload Identity. Service-account JSON key files didukung tetapi tidak disarankan; gunakan Workload Identity atau attach service account ke GCE atau Cloud Run instance.

215 

216Atur `region: global` untuk menggunakan [Agent Platform's global endpoint](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/locations) daripada regional. Google kemudian route setiap request ke available region, jadi Anda tidak track per-region model availability. Menetapkan region spesifik pin setiap request ke sana.

217 

218| Setup | Bagaimana |

219| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

220| IAM permissions | Berikan gateway's service account `roles/aiplatform.user` pada project, atau custom role dengan `aiplatform.endpoints.predict`. Enable Agent Platform API (`aiplatform.googleapis.com`). |

221| Model access | Di Model Garden, enable Claude models untuk project Anda. Mereka publish ke specific regions; check model card untuk supported regions. |

222| GKE (Workload Identity) | Bind GCP service account ke gateway's Kubernetes service account dan annotate KSA dengan `iam.gke.io/gcp-service-account: claude-gateway@<proj>.iam.gserviceaccount.com`. `auth: {}` mengambilnya. |

223| Cloud Run / GCE | Atur service's service account ke satu dengan `roles/aiplatform.user`. `auth: {}` mengambilnya. |

224| Tempat lain | `auth: { service_account_json: /secrets/sa.json }`, path ke JSON key file yang di-mount sebagai secret. Field mengambil file path, bukan key contents, jadi tidak ada `${file:…}` expansion yang terlibat. |

225 

226<h4 id="microsoft-foundry">

227 Microsoft Foundry

228</h4>

229 

230Untuk client-side Foundry deployment, lihat [Claude Code on Microsoft Foundry](/id/microsoft-foundry). Gateway-side upstream:

231 

232```yaml theme={null}

233upstreams:

234 - provider: foundry

235 resource: example-foundry # https://example-foundry.services.ai.azure.com

236 auth: { use_azure_ad: true } # preferred: DefaultAzureCredential / Managed Identity

237 # OR an API key:

238 # auth:

239 # api_key: ${FOUNDRY_API_KEY}

240```

241 

242`use_azure_ad: true` resolves melalui `DefaultAzureCredential`: Managed Identity pada AKS, ACI, atau App Service; Azure CLI; atau environment credentials. API keys bekerja tetapi project-wide dan tidak rotate secara otomatis. Foundry's endpoint diturunkan dari `resource:`; atur optional `base_url` untuk override untuk sovereign clouds seperti Azure Government.

243 

244| Setup | Bagaimana |

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

246| RBAC | Berikan gateway's identity `Azure AI User` atau `Cognitive Services User` pada Foundry resource |

247| Deployments | Foundry menggunakan admin-chosen deployment names, bukan canonical model IDs. Tambahkan [`models:`](#models) block memetakan setiap canonical ID ke deployment name Anda. |

248| AKS (workload identity) | Federate User-Assigned Managed Identity dengan cluster's OIDC issuer dan bind ke gateway's service account. `use_azure_ad: true` mengambilnya via `WorkloadIdentityCredential`. |

249| ACI / App Service | Enable system-assigned atau user-assigned managed identity pada resource. `use_azure_ad: true` mengambilnya. |

250| Tempat lain | `auth: { api_key: "${FOUNDRY_API_KEY}" }`. Quote `${…}` di dalam `{ }`. |

251 

252<h4 id="multiple-upstreams">

253 Multiple upstreams

254</h4>

255 

256Provider yang sama dapat muncul lebih dari sekali dengan distinct `name:`. Ini mencakup different regions, different accounts via different credential chains, provisioned throughput versus on-demand, dan cross-provider fallback.

257 

258Gateway mencoba upstreams secara berurutan. `5xx`, `429`, timeouts, dan missing-endpoint (`501`) failover; `4xx` lainnya tidak. `429` adalah per-upstream capacity, jadi provisioned-throughput (PT) exhaustion failover ke on-demand. Upstream yang tidak dapat menyelesaikan model yang diminta dilewati tanpa network round-trip.

259 

260Contoh ini route provisioned-throughput Bedrock allotment pertama, overflow ke on-demand dan second account, dan fallback ke Anthropic API terakhir:

261 

262```yaml theme={null}

263upstreams:

264 # Primary: provisioned throughput in your home region.

265 - name: bedrock-pt

266 provider: bedrock

267 region: us-east-1

268 auth: {}

269 # Overflow: on-demand cross-region.

270 - name: bedrock-od

271 provider: bedrock

272 region: us-west-2

273 auth: {}

274 # Different account: a separate Bedrock allotment via assumed-role creds.

275 - name: bedrock-acct2

276 provider: bedrock

277 region: us-east-1

278 auth:

279 aws_access_key_id: ${ACCT2_AKID}

280 aws_secret_access_key: ${ACCT2_SK}

281 # Last resort: direct Anthropic API.

282 - name: anthropic-fallback

283 provider: anthropic

284 auth:

285 api_key: ${ANTHROPIC_API_KEY}

286 

287# Per-upstream model IDs are keyed on the upstream's `name:`; an upstream

288# without a `name:` defaults to its provider string (e.g. `bedrock`). Any

289# upstream not listed for a model is skipped, which is how you route a model

290# to provisioned throughput while everything else stays on-demand.

291models:

292 - id: claude-opus-4-8

293 label: Claude Opus 4.8

294 upstream_model:

295 bedrock-pt: arn:aws:bedrock:us-east-1:111111111111:provisioned-model/abcdef

296 bedrock-od: us.anthropic.claude-opus-4-8

297 bedrock-acct2: us.anthropic.claude-opus-4-8

298 anthropic-fallback: claude-opus-4-8

299```

300 

301| Lever | Bagaimana |

302| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

303| Different regions | Satu Bedrock upstream per region, masing-masing dengan `region:` sendiri. Dengan [`auto_include_builtin_models: true`](#models) cross-region inference profiles route secara otomatis; untuk region-pinned deployments gunakan `models:` block. |

304| Different accounts | Satu Bedrock upstream per account, masing-masing dengan credentials sendiri di `auth:`. Default chain (`auth: {}`) menggunakan pod's identity; untuk second account, atur explicit credentials atau bearer token. |

305| Provisioned throughput | Map model ke provisioned-throughput ARN di `models:` untuk upstream's name itu. Upstreams lainnya simpan on-demand ID, jadi PT capacity exhausted sebelum failover. |

306| VPC / FIPS endpoints | Atur `base_url:` pada upstream ke VPC endpoint atau FIPS endpoint URL Anda |

307| Model-scoped routing | Omit upstream dari model's `upstream_model:` map dan upstream itu dilewati untuk model itu. Misalnya, route Opus ke provisioned throughput dan Sonnet dan Haiku ke on-demand. |

308 

309Failover antara cloud providers, atau ke direct Anthropic API, mengubah agreement, geography, dan terms lainnya yang mengatur request.

310 

311CLI menerapkan feature gating yang sama ke gateways terlepas dari upstream mana yang melayani request tertentu, jadi failover tidak mengirim body field yang upstream akan tolak.

312 

313<h2 id="optional-sections">

314 Bagian opsional

315</h2>

316 

317<h3 id="admin">

318 `admin`

319</h3>

320 

321Opsional. Mengaktifkan `/v1/organizations/spend_limits`, yang mencerminkan Anthropic's public Admin API, dan per-developer spend enforcement pada `/v1/messages`. Lihat [Spend limits](/id/claude-apps-gateway-spend-limits) untuk bagaimana caps ditetapkan dan ditegakkan; bagian ini mencakup `gateway.yaml` keys yang mengaktifkan fitur dan menyetelnya.

322 

323```yaml theme={null}

324admin:

325 # Named static API keys for the admin endpoints, sent as x-api-key.

326 # The id appears in the audit log as admin-key:<id> so each key is

327 # attributable. Array for rotation: add the new key, roll clients,

328 # remove the old.

329 write_keys:

330 - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }

331 - { id: ci, key: "${GATEWAY_ADMIN_WRITE_KEY_CI}" }

332 read_keys:

333 - { id: reporting, key: "${GATEWAY_ADMIN_READ_KEY}" }

334 # IdP groups granted full admin via the normal gateway JWT (no API key).

335 admin_groups: [platform-finops]

336 blocked_message: request an increase at https://go.example.com/claude-limits

337```

338 

339| Field | Diperlukan | Deskripsi |

340| ------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

341| `write_keys` | Tidak | Array dari `{id, key}`. `x-api-key` yang cocok dengan salah satu ini dapat list, set, dan delete spend limits. Nilai key harus minimal 32 karakter; `id`s harus unik di seluruh `read_keys` dan `write_keys`. |

342| `read_keys` | Tidak | Array dari `{id, key}`. Read-only: setiap endpoint `GET`, termasuk listing caps, mengambil satu berdasarkan ID, dan membaca [`/effective`](/id/claude-apps-gateway-spend-limits#%2Feffective) dan [`/audit`](/id/claude-apps-gateway-spend-limits#%2Faudit). |

343| `admin_groups` | Tidak | Nama grup IdP. JWT gateway yang klaim `groups`-nya mencakup salah satu ini memiliki akses admin penuh, read dan write, dan audit sebagai `oidc:<sub>`. Gunakan ini untuk admin manusia; gunakan API keys untuk mesin. |

344| `blocked_message` | Tidak | Ditambahkan verbatim ke `429 billing_error` yang dilihat developer yang diblokir. Tulis seluruh instruksi, seperti URL atau saluran Slack. Jika tidak diatur, error adalah `spend limit reached`. |

345| `audit_retention_days` | Tidak | Default `365`. Baris `admin_audit` yang lebih lama disapu. |

346| `spend_retention_months` | Tidak | Default `13`. Baris counter `spend` yang lebih tua dari ini disapu. Default menyimpan tahun penuh ditambah bulan parsial saat ini untuk pelaporan year-over-year. |

347| `identity_retention_days` | Tidak | Default `90`. Last-seen TTL untuk baris `principal_emails`, yang menyimpan email, nama tampilan, dan grup setiap developer (PII). Sengaja lebih pendek dari spend retention sehingga identitas yang dihapus provisioning-nya berusia keluar sementara counter spend anonimnya tetap ada. |

348| `group_limit_mode` | Tidak | `min` (default) atau `max`. Ketika developer ada di beberapa grup dengan caps, `min` memberlakukan yang paling ketat dan `max` yang paling longgar. Digunakan oleh enforcement dan `/effective`. |

349 

350<h3 id="enforcement">

351 `enforcement`

352</h3>

353 

354Blok `enforcement` mengontrol bagaimana pemeriksaan spend-limit berperilaku ketika store tidak tersedia.

355 

356| Field | Diperlukan | Deskripsi |

357| ---------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

358| `fail_closed_on_error` | Tidak | Default `false`. Enforcement spend gagal terbuka pada pemadaman Postgres, jadi inference tetap aktif. Atur `true` untuk gagal tertutup: developer yang over-cap diblokir, tetapi begitu juga semua orang jika store tidak dapat dijangkau. Tidak ada efek tanpa blok [`admin:`](#admin). |

359 

360<h3 id="models">

361 `models`

362</h3>

363 

364Blok `models` adalah daftar model yang dikurasi admin opsional, disajikan di `/v1/models` dan digunakan untuk menerjemahkan ID model per upstream. Ini diperlukan untuk wilayah Bedrock non-AS, ARN throughput provisioned Bedrock, dan nama deployment Foundry.

365 

366```yaml theme={null}

367auto_include_builtin_models: true # false: expose only the list below

368models:

369 - id: claude-opus-4-8

370 label: Claude Opus 4.8

371 # description: optional text shown in clients that surface it

372 upstream_model:

373 anthropic: claude-opus-4-8

374 bedrock: us.anthropic.claude-opus-4-8 # or an inference-profile ARN

375 foundry: your-opus-deployment-name

376```

377 

378<h3 id="managed">

379 `managed`

380</h3>

381 

382Blok `managed` mendefinisikan kebijakan akses berbasis peran yang dikunci pada grup IdP atau domain email. Kebijakan dievaluasi secara berurutan; kecocokan pertama dipilih, kemudian digabungkan ke basis catch-all `match: {}` yang dijelaskan di bawah. Mereka disajikan per-user di `GET /managed/settings` dengan caching ETag/304.

383 

384```yaml theme={null}

385managed:

386 policies:

387 # Specific groups first.

388 - match: { groups: [eng-contractors] }

389 cli:

390 availableModels: [claude-sonnet-4-6]

391 permissions: { deny: ["WebFetch", "WebSearch"] }

392 # Default catch-all last: matches everyone who authenticated.

393 - match: {}

394 cli:

395 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]

396```

397 

398Catch-all `match: {}`, secara konvensional terdaftar terakhir, diperlakukan sebagai lapisan dasar. Setiap kebijakan lainnya mewarisi kunci apa pun yang tidak ditetapkan dari catch-all, jadi entri per-peran hanya perlu mencantumkan apa yang berbeda dari default org. Aturan penggabungan tergantung pada jenis kunci:

399 

400* **Allow-lists**: `availableModels` dan `permissions.allow`. Daftar kebijakan spesifik sepenuhnya menggantikan daftar dasar.

401* **Deny-lists dan hook arrays**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces`, dan setiap array jenis event `hooks`. Ini mengambil union dari dasar dan kebijakan, jadi deny org-wide atau audit hook tidak dapat secara tidak sengaja dijatuhkan oleh override per-peran.

402* **Record-typed keys**: `env`, `modelOverrides`, dan `skillOverrides`. Ini shallow-merge, jadi blok `env` per-peran menimpa kunci yang ditetapkan dan mewarisi sisanya dari dasar.

403 

404`availableModels` juga ditegakkan server-side di `/v1/messages`, jadi model yang ditolak mengembalikan `400` terlepas dari apa yang dikirim klien.

405 

406| Matcher | Perilaku |

407| --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |

408| `match: {}` | Cocok dengan setiap pengguna yang terautentikasi. Mulai dengan satu ini dan tambahkan kebijakan yang dibatasi grup di atasnya nanti. |

409| `match: { groups: [a, b] }` | Cocok jika klaim `groups` JWT berisi salah satu grup yang terdaftar. Case-sensitive: grup harus cocok dengan casing yang tepat dari IdP. |

410| `match: { email_domain: example.com }` | Cocok dengan bagian setelah `@` terakhir dalam klaim `email` JWT, case-insensitive. Menerima satu domain per kebijakan. |

411| `match: { groups: [a], email_domain: example.com }` | Kedua kondisi harus cocok |

412 

413Pengguna yang terautentikasi yang tidak cocok dengan kebijakan apa pun mendapat default gateway, yang berarti setiap model dalam katalog dan tidak ada pengaturan terkelola. Tambahkan catch-all `match: {}` terakhir jika Anda menginginkan kebijakan default yang dijamin.

414 

415<Note>

416 Gateway tidak menyimpan direktori pengguna sendiri. Ini mengotorisasi setiap permintaan dari token IdP pengguna, membaca keanggotaan grup dari klaim `groups` token dan mengevaluasi kebijakan terhadapnya. Tidak ada roster untuk dihitung dan tidak ada akun untuk dibuat sebelumnya, dan oleh karena itu tidak ada endpoint SCIM, karena tidak ada apa pun untuk SCIM sinkronkan ke.

417 

418 Jalankan manajemen siklus hidup pengguna dan grup di sumber kebenaran, yang merupakan penyediaan SCIM asli IdP atau platform tata kelola identitas khusus. Keanggotaan dan deprovisioning yang diatur di sana mengalir ke gateway secara otomatis melalui token. Jika Anda menginginkan penyediaan SCIM dari akun Claude itu sendiri, itu adalah kemampuan [Claude for Enterprise](/id/admin-setup).

419 

420 Dua jam propagasi berlaku:

421 

422 * **Konten kebijakan**: mengedit kebijakan dan redeploy mencapai klien yang terhubung pada polling managed-settings berikutnya mereka, dalam satu jam

423 * **Keanggotaan grup**: mengubah keanggotaan grup pengguna mengubah kebijakan mana yang cocok dengan mereka. Ini berlaku pada re-mint sesi berikutnya, berarti refresh senyap berikutnya, dibatasi oleh `session.ttl_hours`.

424</Note>

425 

426<h4 id="what-goes-in-cli">

427 Apa yang masuk di `cli`

428</h4>

429 

430Setiap nilai `cli` adalah dokumen `managed-settings.json` Claude Code yang lengkap, skema yang sama yang akan Anda deploy melalui MDM atau `/etc/claude-code/managed-settings.json`, diekspresikan di sini sebagai YAML. CLI menerapkan dokumen yang dikirimkan pada tingkat terkelola, di atas pengaturan pengguna dan proyek.

431 

432Gateway memvalidasi setiap dokumen terhadap skema pengaturan CLI saat boot, jadi kunci tingkat atas yang tidak dikenali atau kunci yang dikenali dengan nilai yang salah bentuk gagal boot dengan error yang menamai setiap kunci yang bermasalah. Bagian skema yang sengaja terbuka masih menerima nilai arbitrer, karena klien yang lebih baru mungkin mengenali entri yang skema gateway tidak. Kunci terbuka ini adalah `env`, `pluginConfigs`, dan kunci yang bersarang di bawah `permissions`.

433 

434Karena validasi menggunakan skema yang disertakan dengan versi gateway yang terinstal, menempatkan kunci pengaturan tingkat atas yang diperkenalkan oleh rilis Claude Code yang lebih baru ke konfigurasi terkelola memerlukan upgrade gateway terlebih dahulu. Smoke-test kebijakan baru pada satu klien sebelum meluncurkannya.

435 

436Referensi kunci lengkap ada di [Claude Code settings](/id/settings#available-settings). Kunci yang paling sering dicari operator:

437 

438```yaml theme={null}

439managed:

440 policies:

441 - match: {}

442 cli:

443 # Model access (also enforced server-side at /v1/messages)

444 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]

445 

446 # Permission policy

447 permissions:

448 deny:

449 - "WebFetch"

450 - "Read(./.env)"

451 - "Read(./secrets/**)"

452 disableBypassPermissionsMode: disable # blocks --dangerously-skip-permissions

453 allowManagedPermissionRulesOnly: true # ignore user/project permission rules

454 

455 # Environment pushed into the CLI process. DISABLE_UPDATES blocks

456 # background and manual updates; DISABLE_AUTOUPDATER stops only

457 # background updates.

458 env:

459 DISABLE_UPDATES: "1" # pin versions via your own distribution

460 

461 # Org-wide hooks. Hook commands run on developer machines, not the

462 # gateway, so the path must exist on every client OS in the policy.

463 hooks:

464 PostToolUse:

465 - matcher: "Edit|Write"

466 hooks:

467 - { type: command, command: /usr/local/bin/audit-edit.sh }

468```

469 

470| Key | Ditegakkan oleh | Efek |

471| ------------------------------------------ | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

472| `availableModels` | Gateway + CLI | Allowlist model. Juga diperiksa di `/v1/messages`, jadi klien yang dipatch tidak dapat membypassnya. |

473| `permissions.allow` / `.deny` | CLI | Aturan tool dan command. Lihat [Permissions](/id/permissions). |

474| `permissions.disableBypassPermissionsMode` | CLI | Atur ke `disable` untuk memblokir [`bypassPermissions`](/id/permission-modes#skip-all-checks-with-bypasspermissions-mode), mode yang auto-approves setiap tool call, dan flag `--dangerously-skip-permissions` |

475| `allowManagedPermissionRulesOnly` | CLI | Ketika `true`, aturan permission pengguna dan proyek diabaikan; hanya aturan dari dokumen ini yang berlaku |

476| `env` | CLI | Variabel lingkungan yang digabungkan ke proses CLI. Gunakan untuk telemetry, auto-update, dan model-name overrides. |

477| `hooks` | CLI | Org-wide [hooks](/id/hooks) |

478 

479Karena pengaturan ini tiba melalui jaringan, CLI menunjukkan setiap developer dialog persetujuan keamanan satu kali sebelum menerapkan apa pun yang dapat menjalankan perintah shell atau mengubah ke mana traffic pergi. Dialog mencakup:

480 

481* `hooks`

482* Variabel `env` yang tidak ada di daftar aman bawaan CLI

483* pengaturan eksekusi shell seperti `apiKeyHelper` dan `statusLine`

484* konten CLAUDE.md yang terkelola

485 

486Daftar aman menentukan variabel `env` mana yang berlaku tanpa persetujuan:

487 

488* **Pada daftar aman**: auto-update dan model-name vars

489* **Tidak pada daftar aman**: proxy vars, base-URL vars, dan `OTEL_EXPORTER_OTLP_ENDPOINT`

490 

491Konfigurasi [telemetry](#telemetry) gateway mendorong `OTEL_EXPORTER_OTLP_ENDPOINT`, jadi pengaturan `telemetry.forward_to` memicu dialog pada setiap klien interaktif. Run non-interaktif dengan flag `-p` melewati dialog dan menerapkan pengaturan tanpa persetujuan. Dialog melindungi mesin developer dari gateway yang dikompromikan atau bermusuhan, bukan organisasi dari developer, jadi skip `-p` adalah disengaja daripada celah.

492 

493Jika developer menolak, Claude Code keluar daripada menerapkan kebijakan. Mendorong hook baru atau variabel env non-aman ke kebijakan yang luas oleh karena itu berarti prompt persetujuan pada startup berikutnya setiap developer yang cocok.

494 

495Kunci `cli` dinamai `settings` dalam rilis sebelumnya. Ejaan itu masih diterima sebagai alias, tetapi deployment baru harus menggunakan `cli`.

496 

497<h4 id="precedence-with-other-managed-sources">

498 Precedence dengan sumber terkelola lainnya

499</h4>

500 

501Jika perangkat juga memiliki `managed-settings.json` lokal atau kebijakan yang dikirimkan MDM, sumber terkelola tidak bergabung. Sumber prioritas tertinggi menyediakan semua pengaturan kebijakan, diurutkan dalam urutan ini dengan prioritas tertinggi terlebih dahulu:

502 

5031. [Policy helper](/id/settings#compute-managed-settings-with-a-policy-helper)

5042. Pengaturan yang dikirimkan gateway

5053. MDM, melalui registri HKLM di Windows atau plist di macOS

5064. File `managed-settings.json`

5075. Registri HKCU, hanya di Windows

508 

509Host embedding dapat menyediakan kebijakan melalui opsi SDK `managedSettings`. Ini diabaikan secara default dan berlaku hanya ketika sumber terkelola opt in dengan [`parentSettingsBehavior: "merge"`](/id/settings#available-settings), disaring sehingga dapat mengencangkan kebijakan tetapi tidak melonggarkannya.

510 

511Satu-satunya pengecualian adalah kunci berikut, yang dihormati ketika sumber admin apa pun di atas tingkat HKCU yang dapat ditulis pengguna menetapkannya, terlepas dari sumber mana yang menyediakan sisa kebijakan:

512 

513* `sandbox.network.allowManagedDomainsOnly` dan `sandbox.filesystem.allowManagedReadPathsOnly`: ketika terkunci, allowlist yang sesuai adalah union di seluruh sumber

514* [`allowAllClaudeAiMcps`](/id/settings#available-settings): override allow-only untuk allowlist server MCP claude.ai

515* `sandbox.bwrapPath` dan `sandbox.socatPath`: jalur filesystem ke binary helper [sandbox](/id/sandboxing)

516 

517Setiap kunci lainnya, termasuk `allowManagedPermissionRulesOnly` dan `disableBypassPermissionsMode`, berasal dari sumber prioritas tertinggi saja. Lihat [Settings precedence](/id/settings#settings-precedence) untuk aturan yang sama di halaman pengaturan.

518 

519Kebijakan gateway berlaku untuk setiap invokasi Claude Code pada mesin, termasuk run non-interaktif `claude -p` dan sesi yang dihasilkan oleh Agent SDK. Jika gateway tidak dapat dijangkau saat startup, sesi yang masuk keluar dengan error daripada menjalankan tanpa kebijakan mereka.

520 

521<Warning>

522 `mcpServers` di dalam blok `cli` kebijakan ditolak saat boot gateway. Distribusi MCP per-grup tidak tersedia; deploy server MCP melalui `managed-mcp.json` berbasis file pada setiap perangkat atau biarkan developer menambahkannya secara lokal.

523</Warning>

524 

525<h3 id="telemetry">

526 `telemetry`

527</h3>

528 

529CLI mengirim metrik, log, dan, ketika diaktifkan, trace OpenTelemetry Protocol (OTLP) melalui HTTP ke gateway, yang meneruskan mereka verbatim ke setiap tujuan yang dikonfigurasi. Lihat [Monitoring usage](/id/monitoring-usage) untuk metrik dan event yang CLI emit.

530 

531CLI memberi stempel setiap export dengan identitas pengguna yang terautentikasi, dibaca dari JWT yang diterbitkan gateway: atribut `user.id`, `user.email`, dan `user.groups`. Atribusi biaya dan penggunaan per-developer oleh karena itu bekerja tanpa konfigurasi sisi developer.

532 

533```yaml theme={null}

534telemetry:

535 forward_to:

536 - url: https://otel-collector.internal.example.com

537 headers:

538 Authorization: ${OTLP_TOKEN}

539 # Per-signal opt-in. Default: metrics only.

540 metrics: true

541 logs: false

542 traces: false

543 - url: https://api.datadoghq.com/api/v2/otlp

544 headers:

545 DD-API-KEY: ${DD_API_KEY}

546```

547 

548<Warning>

549 Setiap tujuan opt into `metrics`, `logs`, dan `traces` secara independen, dan default adalah metrics saja. Signal berbeda dalam sensitivitas:

550 

551 * **Metrics**: counter agregat seperti token counts, request counts, dan latency

552 * **Logs dan traces**: dapat membawa perintah bash lengkap, tool inputs, dan jalur file, mencakup apa pun yang Claude Code lakukan pada mesin developer

553 

554 Aktifkan logs dan traces hanya pada tujuan dengan kontrol akses dan kebijakan retensi yang data jamin.

555</Warning>

556 

557Telemetry off dalam CLI secara default. Mengonfigurasi `telemetry.forward_to` bersama dengan `listen.public_url` mengaktifkannya. Gateway mendorong lima variabel env ke setiap klien yang terhubung melalui `/managed/settings`:

558 

559* `CLAUDE_CODE_ENABLE_TELEMETRY=1`

560* `OTEL_METRICS_EXPORTER=otlp`

561* `OTEL_LOGS_EXPORTER=otlp`

562* `OTEL_TRACES_EXPORTER=otlp`

563* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`

564 

565Endpoint yang didorong dibangun dari URL publik, jadi metrik dan log tidak memerlukan konfigurasi OTEL dari developer atau kebijakan. Konfigurasi yang didorong diterapkan pada tingkat terkelola, menimpa variabel `OTEL_*` yang developer atur secara lokal.

566 

567[Traces](/id/monitoring-usage#traces-beta) selain itu memerlukan `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` pada setiap klien. Gateway tidak mendorong variabel itu, jadi atur melalui blok `env` kebijakan terkelola. Ini tidak pada daftar aman CLI, jadi mengirimkannya melalui kebijakan dicakup oleh dialog [security approval](#managed) yang sama yang endpoint OTLP yang didorong sudah trigger.

568 

569Kedua encoding OTLP protobuf dan JSON direlai, dan backend apa pun yang kompatibel dengan OpenTelemetry bekerja sebagai tujuan.

570 

571<h3 id="http-tuning">

572 HTTP tuning

573</h3>

574 

575Empat blok tingkat atas opsional, `access_control`, `limits`, `timeouts`, dan `rate_limits`, menyetel permukaan HTTP. Default cocok untuk sebagian besar deployment.

576 

577| Block | Key | Default | Deskripsi |

578| ---------------- | ---------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

579| `access_control` | `allow_cidrs` / `deny_cidrs` | empty | Inbound IP allow/deny berdasarkan alamat klien, setelah resolusi `trusted_proxies`. `deny_cidrs` diperiksa terlebih dahulu; klien yang cocok ditolak bahkan jika `allow_cidrs` juga cocok. Jika `allow_cidrs` non-empty gateway adalah default-deny. `/healthz` dan `/readyz` dikecualikan dari `allow_cidrs`. |

580| `limits` | `max_request_bytes` | 32 MiB | Max inbound request body; permintaan yang terlalu besar mendapat `413` sebelum body dibuffer. Naikkan untuk permintaan file atau gambar besar. |

581| `limits` | `max_request_header_bytes` | unset | Ketika diatur, header yang terlalu besar mengembalikan `431` |

582| `limits` | `max_url_length` | unset | Ketika diatur, URL yang terlalu panjang mengembalikan `414` |

583| `timeouts` | `upstream_ttfb_ms` | 120000 | Max wait untuk header respons upstream (time to first byte). Response body kemudian stream tanpa wall-clock cap. Berlaku ke jalur upstream Anthropic langsung; Bedrock, Agent Platform, dan Foundry dibatasi oleh timeout SDK penyedia mereka sendiri. |

584| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Per-IP rate limit pada endpoint device-authorization yang tidak terautentikasi. Naikkan untuk org besar di belakang IP egress bersama atau NAT. Limit ini berlaku hanya ke alur sign-in device-grant, bukan ke inference `/v1/messages`. Lihat [User-code brute-force resistance](/id/claude-apps-gateway-deploy#user-code-brute-force-resistance). |

585| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Per-IP rate limit pada pengajuan `user_code` di `/device` |

586 

587<h2 id="complete-example">

588 Contoh lengkap

589</h2>

590 

591Config reference penuh ini menggunakan setiap core section; [HTTP tuning blocks](#http-tuning) menyimpan defaults mereka. Salin, hapus apa yang Anda tidak butuhkan, dan isi values Anda. Config dalam [Quickstart](/id/claude-apps-gateway#quickstart) adalah minimal version dari ini.

592 

593```yaml gateway.yaml theme={null}

594# Run with:

595# claude gateway --config gateway.yaml

596#

597# Operational log verbosity is controlled by the CLAUDE_GATEWAY_LOG_LEVEL

598# environment variable (info | warn | error; default info). It does not

599# affect audit events, which are always emitted.

600 

601listen:

602 host: 0.0.0.0

603 port: 8080

604 public_url: https://claude-gateway.internal.example.com

605 # Omit the tls block when running behind a TLS-terminating ingress.

606 # tls:

607 # cert: /certs/gateway.crt

608 # key: /certs/gateway.key

609 # trusted_proxies:

610 # - 10.0.0.0/8

611 

612oidc:

613 issuer: https://example.okta.com

614 client_id: 0oa1example2

615 client_secret: ${OIDC_CLIENT_SECRET}

616 allowed_email_domains:

617 - example.com

618 # Required when the issuer is the Okta org server, whose id_tokens

619 # can omit email and groups; the gateway fills them from /userinfo.

620 userinfo_fallback: true

621 # allowed_groups: [claude-code-users]

622 # Okta emits groups only when the `groups` scope is requested and the

623 # app's groups claim filter allows them. The contractors policy below

624 # matches on groups, so the scope is requested here.

625 scopes: [openid, profile, email, offline_access, groups]

626 # extra_auth_params: { access_type: offline, prompt: consent } # Google

627 # groups_claim: groups # Entra app roles: use `roles`

628 # email_claim: email

629 

630session:

631 jwt_secret: ${GATEWAY_JWT_SECRET} # openssl rand -base64 32

632 # ttl_hours: 1

633 

634store:

635 postgres_url: ${GATEWAY_POSTGRES_URL}

636 # max_connections: 5

637 

638# Enables /v1/organizations/spend_limits (mirrors the Anthropic Admin API)

639# and per-developer spend enforcement on /v1/messages. Omit to disable.

640# Caps themselves are set via the admin API, not here.

641# admin:

642# write_keys:

643# - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }

644# read_keys:

645# - { id: reporting, key: "${GATEWAY_ADMIN_READ_KEY}" }

646# admin_groups: [platform-finops]

647# blocked_message: request an increase at https://go.example.com/claude-limits

648# # audit_retention_days: 365

649# # spend_retention_months: 13

650# # identity_retention_days: 90

651# # group_limit_mode: min

652 

653# enforcement:

654# fail_closed_on_error: false

655 

656upstreams:

657 - provider: anthropic

658 auth:

659 api_key: ${ANTHROPIC_API_KEY}

660 

661 # - provider: bedrock

662 # region: us-east-1

663 # auth: {}

664 

665 # - provider: vertex

666 # region: us-east5

667 # project_id: example-prod

668 # auth: {}

669 

670 # - provider: foundry

671 # resource: example-foundry

672 # auth: { use_azure_ad: true }

673 

674auto_include_builtin_models: true

675models:

676 - id: claude-opus-4-8

677 label: Claude Opus 4.8

678 upstream_model:

679 anthropic: claude-opus-4-8

680 # bedrock: us.anthropic.claude-opus-4-8

681 # vertex: claude-opus-4-8

682 # foundry: <your-opus-deployment-name>

683 - id: claude-sonnet-4-6

684 label: Claude Sonnet 4.6

685 upstream_model:

686 anthropic: claude-sonnet-4-6

687 - id: claude-haiku-4-5

688 label: Claude Haiku 4.5

689 upstream_model:

690 anthropic: claude-haiku-4-5

691 

692managed:

693 policies:

694 - match: { groups: [contractors] }

695 cli:

696 availableModels: [claude-haiku-4-5]

697 # Constrain the Default picker option to availableModels instead of

698 # the tier default, so contractors don't get a 400 on the default.

699 enforceAvailableModels: true

700 # allow auto-approves these tools; it does not block the rest.

701 # Add deny rules to restrict tools.

702 permissions: { allow: [Read, Grep] }

703 - match: {}

704 cli:

705 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]

706 permissions:

707 allow: [Read, Grep, Bash, Edit]

708 deny: ["WebFetch"]

709 env: { HTTP_PROXY: http://proxy.example.com:8080 }

710 

711telemetry:

712 forward_to:

713 - url: https://otel.internal.example.com:4318

714 headers:

715 Authorization: Bearer ${OTEL_TOKEN}

716```

717 

718<h2 id="client-side-managed-settings">

719 Managed settings sisi client

720</h2>

721 

722Semua di atas mengonfigurasi gateway server. Menunjukkan developer machines ke sana dikonfigurasi secara terpisah, pada setiap device, melalui Claude Code's [managed settings](/id/settings#settings-files). Gateway tidak dapat mendorong keys ini sendiri, karena mereka adalah apa yang memberitahu client di mana gateway berada.

723 

724Untuk CLI, atur kedua keys dalam per-OS `managed-settings.json`:

725 

726```json theme={null}

727{

728 "forceLoginMethod": "gateway",

729 "forceLoginGatewayUrl": "https://claude-gateway.internal.example.com"

730}

731```

732 

733Deploy file itu ke setiap device, typically via MDM platform Anda. File path berbeda by platform:

734 

735| Platform | Path |

736| ------------- | --------------------------------------------------------------------------------------------------------------------------- |

737| macOS | `/Library/Application Support/ClaudeCode/managed-settings.json`, atau `com.anthropic.claudecode` managed preferences domain |

738| Linux dan WSL | `/etc/claude-code/managed-settings.json` |

739| Windows | `C:\Program Files\ClaudeCode\managed-settings.json`, atau Group Policy via HKLM registry |

740 

741`forceLoginGatewayUrl`, dan `"gateway"` value dari `forceLoginMethod`, dihormati hanya dari admin-controlled managed tier. Developer menetapkan mereka dalam `~/.claude/settings.json` mereka sendiri tidak memiliki efek.

742 

743<h2 id="related">

744 Terkait

745</h2>

746 

747* [Claude apps gateway overview](/id/claude-apps-gateway): quickstart dan developer connection

748* [Deployment guide](/id/claude-apps-gateway-deploy): IdP setup, container image, Kubernetes dan Cloud Run, dan operations

749* [Spend limits](/id/claude-apps-gateway-spend-limits): per-developer caps dan Admin API

claude-apps-gateway-deploy.md +301 −0 created

Details

1> ## Documentation Index

2> 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.

4 

5# Penyebaran dan operasi gateway aplikasi Claude

6 

7> Daftarkan gateway dengan IdP Anda, bangun kontainer, sebarkan di Kubernetes atau Cloud Run, dan operasikan: pemeriksaan kesehatan, rotasi rahasia, peningkatan, dan keamanan.

8 

9Halaman ini mencakup sisi operasional menjalankan [gateway aplikasi Claude](/id/claude-apps-gateway): mendaftarkan klien OAuth di penyedia identitas (IdP) Anda, menyebarkan gateway sebagai kontainer, dan menjalankannya sehari-hari. Untuk setiap opsi dalam file `gateway.yaml` yang dibaca gateway saat boot, lihat [Referensi Konfigurasi](/id/claude-apps-gateway-config).

10 

11Penyebaran produksi mengikuti empat langkah secara berurutan, dan bagian di bawah cocok dengan mereka. Dua yang pertama adalah tempat Anda membuat pilihan; dua yang kedua adalah materi referensi untuk dikonsultasikan setelah berjalan.

12 

131. [Siapkan penyedia identitas Anda](#identity-provider-setup): daftarkan klien OAuth dan periksa catatan per-IdP untuk Okta, Entra, dan Google

142. [Sebarkan gateway](#deployment): bangun gambar kontainer yang disematkan dan jalankan di Kubernetes, Cloud Run, atau platform Anda sendiri. Bagian ini juga mencakup keputusan biaya, bypass, gateway-ganda, dan serverless

153. [Siapkan operasi](#operations): log, probe kesehatan, perilaku pemadaman, rotasi rahasia, dan peningkatan. Referensi untuk ketika Anda menghubungkan pemantauan dan runbook

164. [Tinjau postur keamanan](#security): aliran data ke mana, model ancaman, dan jawaban kepatuhan. Referensi untuk tinjauan keamanan

17 

18Jika masuk atau boot gagal di sepanjang jalan, langsung ke [Troubleshooting](#troubleshooting), yang dikunci pada kesalahan yang Anda lihat.

19 

20<Note>

21 **Sebarkan di jaringan pribadi Anda.** Claude Code hanya terhubung ke gateway yang alamatnya pribadi. Ini adalah penjaga keamanan, karena gateway yang dipercaya dapat mendorong pengaturan yang menjalankan perintah pada mesin pengembang. Letakkan gateway di belakang penyeimbang beban internal atau VPN dan berikan nama host yang hanya diselesaikan ke IP pribadi.

22</Note>

23 

24<h2 id="identity-provider-setup">

25 Penyiapan penyedia identitas

26</h2>

27 

28Daftarkan aplikasi web OAuth/OpenID Connect (OIDC) rahasia dengan URI pengalihan tunggal, `https://<gateway>/oauth/callback`, dan tetapkan ke pengguna atau grup yang harus memiliki akses gateway.

29 

30IdP apa pun yang sesuai dengan OIDC berfungsi: Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex, PingFederate, dan lainnya. IdP harus memenuhi tiga persyaratan:

31 

32* Melayani `/.well-known/openid-configuration`, melalui HTTPS dalam produksi; gateway menerima [`http://` issuer](/id/claude-apps-gateway-config#oidc), dan issuer loopback juga memerlukan `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1`

33* Mendukung aliran kode otorisasi. PKCE (Proof Key for Code Exchange) aktif secara default; nonaktifkan dengan `oidc.use_pkce: false` untuk IdP yang tidak mendukungnya

34* Mengembalikan `email` dan secara opsional `groups` dalam id\_token, atau melayaninya dari endpoint userinfo dengan `oidc.userinfo_fallback: true`

35 

36Untuk PKI pribadi, atur `oidc.ca_cert_pem`.

37 

38Beberapa penyedia menangani klaim email dan grup secara berbeda:

39 

40* **Okta**: server otorisasi org di `https://example.okta.com` mengembalikan id\_token tipis yang menghilangkan `email` dan `groups`, jadi atur `oidc.userinfo_fallback: true` kapan pun Anda menggunakannya sebagai `issuer`. Server otorisasi khusus seperti `https://example.okta.com/oauth2/default` yang menyertakan `email` dan secara opsional `groups` dalam id\_token memancarkannya secara langsung dan tidak memerlukan fallback. Okta memancarkan `groups` hanya ketika scope `groups` diminta dalam `oidc.scopes` dan filter klaim grup aplikasi memungkinkannya; `userinfo_fallback` tidak dapat mengisi klaim yang IdP tidak diminta.

41* **Microsoft Entra ID**: `issuer` = `https://login.microsoftonline.com/<tenant-id>/v2.0`. Entra memancarkan Object ID grup daripada nama, jadi gunakan GUID dalam `managed.policies.match.groups`, atau gunakan App Roles untuk nama yang dapat dibaca manusia. Jika penyewa Anda memancarkan peran di bawah `roles` bukan `groups`, atur `oidc.groups_claim: roles`.

42* **Google Workspace**: `issuer` = `https://accounts.google.com`. id\_token Google tidak membawa grup. Untuk menggunakan `allowed_groups` berbasis grup atau `managed.policies` dengan Google sebagai IdP, konfigurasikan [`oidc.google_groups`](/id/claude-apps-gateway-config#oidc), yang mencari grup setiap pengguna melalui Admin SDK Directory API menggunakan akun layanan dengan delegasi di seluruh domain. Tanpa itu, gunakan `oidc.allowed_email_domains` untuk gating keanggotaan dan `managed.policies.match.email_domain` untuk penugasan kebijakan. Google juga mengabaikan scope `offline_access` standar. Untuk token refresh, atur `oidc.scopes: [openid, profile, email]` dan `oidc.extra_auth_params: { access_type: offline, prompt: consent }`.

43 

44Untuk dukungan dengan penyedia identitas yang tidak tercakup di atas, lihat [Troubleshooting](#troubleshooting).

45 

46<Warning>

47 Token refresh memungkinkan gateway untuk memperbarui sesi pengembang secara diam-diam, tanpa mengirim pengembang kembali ke browser. Mereka juga mendorong deprovisioning, karena ketika IdP menonaktifkan pengguna, refresh berikutnya gagal dan sesi berakhir dalam `ttl_hours`. Gateway meminta `offline_access` secara default untuk mendapatkan token refresh. Jika IdP Anda memerlukan persetujuan eksplisit untuk akses offline, konfigurasikan klien OAuth untuk memungkinkannya.

48 

49 Jika IdP Anda tidak dapat mengeluarkan token refresh sama sekali, gateway masih berfungsi, tetapi tidak ada pembaruan diam-diam, jadi pengembang menjalankan kembali login browser ketika sesi mereka berakhir. Untuk mencegah itu terjadi setiap jam, naikkan [`session.ttl_hours`](/id/claude-apps-gateway-config#session) ke `8` atau `12`. Tradeoff adalah latensi deprovisioning, karena tanpa token refresh pengguna yang dinonaktifkan tetap memiliki akses sampai TTL yang lebih lama berlalu.

50</Warning>

51 

52<h2 id="deployment">

53 Penyebaran

54</h2>

55 

56Gateway adalah satu biner Linux. Ini diskalakan secara horizontal karena replika tidak memiliki status dan Postgres adalah lapisan koordinasi bersama. Jalankan bagaimanapun Anda menjalankan layanan stateless di lingkungan Anda. Sisa bagian ini menyatakan apa yang dibutuhkan gambar, dengan catatan singkat untuk Kubernetes dan Cloud Run.

57 

58Gateway dirancang untuk berjalan di dalam jaringan Anda, karena menyimpan kredensial upstream Anda dan bertindak sebagai titik egress tunggal untuk inferensi. Ini dapat berjalan di mana pun pengembang Anda dan IdP Anda dapat menjangkau melalui HTTPS; perlakukan seperti layanan lain yang menyimpan kredensial produksi.

59 

60Beberapa keputusan membentuk penyebaran di luar tempat berjalan:

61 

62* **Biaya**: tidak ada lisensi terpisah atau biaya per-kursi untuk gateway; itu adalah bagian dari biner `claude`. Anda membayar untuk inferensi melalui komitmen cloud atau Anthropic yang ada, ditambah komputasi untuk kontainer dan kolektor telemetri Anda.

63* **Bypass**: gateway tidak memberlakukan bahwa satu-satunya rute ke model melaluinya. Pengembang dengan kredensial mereka sendiri masih dapat memanggil penyedia secara langsung, jadi menutup jalur itu adalah keputusan kebijakan jaringan, misalnya memblokir egress ke `api.anthropic.com` kecuali dari gateway. Memblokir egress itu juga merusak [pemeriksaan keamanan domain WebFetch](/id/data-usage#webfetch-domain-safety-check), yang memanggil `api.anthropic.com` dari mesin setiap pengembang; atur `skipWebFetchPreflight: true` dalam kebijakan terkelola untuk menonaktifkannya.

64* **Multiple gateways**: setiap gateway adalah penyebaran terpisah dengan konfigurasinya sendiri. CLI menyimpan sidik jari kepercayaan dan kredensialnya per nama host gateway, jadi tim yang berbeda dapat terhubung ke gateway yang berbeda tanpa konflik. Untuk melayani beberapa issuer OIDC, jalankan instance terpisah.

65* **Serverless**: Cloud Run berfungsi; atur `min-instances: 1` untuk menghindari penemuan OIDC dingin. Lambda dan Cloud Functions tidak, karena gateway adalah server HTTP yang berjalan lama.

66 

67Setiap topologi produksi di sini menempatkan proxy L7, seperti Ingress, frontend Cloud Run, atau ALB, di depan replika HTTP biasa. Atur [`listen.trusted_proxies`](/id/claude-apps-gateway-config#listen) ke rentang sumber proxy sehingga gateway membaca IP klien dari `X-Forwarded-For`. Gateway menghormati header hanya ketika peer TCP dipercaya; [contoh yang dikerjakan Google Cloud](/id/claude-apps-gateway-on-gcp) memiliki nilai konkret per topologi. Tanpa proxy terpercaya, setiap permintaan tampak berasal dari IP proxy, yang meruntuhkan batas laju per-IP menjadi satu bucket bersama dan mencatat IP proxy dalam acara audit.

68 

69<h3 id="container-image">

70 Gambar kontainer

71</h3>

72 

73Bangun gambar Anda sendiri di sekitar biner `claude` asli dari rilis Claude Code standar:

74 

751. Unduh build Linux untuk arsitektur gambar Anda dari rilis yang disematkan; lihat [Instal versi spesifik](/id/setup#install-a-specific-version) untuk URL unduhan.

762. Verifikasi terhadap `manifest.json` yang ditandatangani GPG rilis seperti yang dijelaskan dalam [Integritas biner dan penandatanganan kode](/id/setup#binary-integrity-and-code-signing).

773. Salin ke konteks build.

78 

79Cerminkan rilis ke registri internal Anda jika build Anda tidak dapat menjangkau host rilis, dan sematkan versi yang dijalankan armada Anda.

80 

81Di luar biner, gambar membutuhkan:

82 

83* **Gambar berbasis glibc**: build glibc hanya memiliki dependensi dinamis perpustakaan glibc. Gambar berbasis Musl memerlukan build `linux-x64-musl` atau `linux-arm64-musl` ditambah paket tambahan; lihat [Penyiapan Alpine Linux](/id/setup#alpine-linux-and-musl-based-distributions).

84* **Direktori status yang dapat ditulis**: gateway berjalan sebagai pengguna apa pun, tetapi gambar minimal tidak memiliki rumah yang dapat ditulis. Atur `CLAUDE_CONFIG_DIR` ke jalur yang dapat ditulis seperti `/tmp/.claude`.

85* **Perintah kontainer**: `claude gateway --config /etc/claude/gateway.yaml`, dengan file konfigurasi dipasang hanya-baca dan rahasia disuplai sebagai variabel lingkungan; gateway mendengarkan di `listen.port`, default `8080`.

86 

87<h3 id="kubernetes">

88 Kubernetes

89</h3>

90 

91Jalankan gateway sebagai Deployment, seperti layanan stateless apa pun:

92 

93* Pasang konfigurasi dari ConfigMap dan rahasia dari Secret; referensikan rahasia dalam YAML melalui `${file:/path/to/secret}` atau sebagai variabel lingkungan

94* Hentikan TLS di Ingress dan atur `listen.public_url` ke nama host Ingress

95* Arahkan probe kesiapan ke `GET /readyz` dan probe liveness ke `GET /healthz`

96 

97<Note>

98 **Identitas beban kerja**

99 

100 Lebih suka identitas beban kerja platform daripada kunci statis: IRSA di EKS untuk Bedrock, Workload Identity di GKE untuk Agent Platform, dan identitas beban kerja di AKS untuk Foundry. Atur `auth: {}` dalam blok upstream, atau `use_azure_ad: true` untuk Foundry, dan gateway mengambil identitas pod melalui rantai kredensial default penyedia itu. Untuk pasangan lintas cloud, seperti upstream Bedrock di GKE, atur kredensial eksplisit dalam blok `auth` upstream sebagai gantinya. Referensi [`upstreams`](/id/claude-apps-gateway-config#upstreams) memiliki detail penyiapan per-platform.

101</Note>

102 

103<h3 id="cloud-run">

104 Cloud Run

105</h3>

106 

107Konfigurasikan layanan sebagai berikut:

108 

109* Biarkan `listen.port` pada default `8080`, yang cocok dengan `PORT` default Cloud Run, atau atur `port: ${PORT}`

110* Atur `public_url` ke asal yang dapat dijangkau secara eksternal. Untuk produksi ini biasanya nama host penyeimbang beban internal, karena `/login` [menolak alamat publik](/id/claude-apps-gateway#prerequisites) dan URL `*.run.app` diselesaikan ke satu, jadi URL Cloud Run saja hanya berfungsi untuk uji coba `curl` atau browser. Pengecualiannya adalah jaringan di mana `*.run.app` diselesaikan secara pribadi melalui Private Service Connect dan zona pribadi Cloud DNS; dalam topologi itu URL Cloud Run adalah `public_url` yang valid. [Contoh yang dikerjakan Google Cloud](/id/claude-apps-gateway-on-gcp#deploy-the-gateway) mencakup keduanya.

111* Pasang konfigurasi sebagai volume rahasia

112* Atur `min-instances: 1` untuk menghindari penemuan OIDC dingin pada permintaan pertama

113 

114<Note>

115 Untuk contoh lengkap yang dikerjakan di Google Cloud, mencakup Cloud Run atau GKE, Cloud SQL, dan Secret Manager, lihat [Sebarkan di Google Cloud](/id/claude-apps-gateway-on-gcp).

116</Note>

117 

118<h3 id="push-the-gateway-url-to-developer-machines">

119 Dorong URL gateway ke mesin pengembang

120</h3>

121 

122Setelah gateway melayani, dorong `forceLoginMethod` dan `forceLoginGatewayUrl` ke mesin setiap pengembang melalui pengaturan terkelola, melalui MDM atau dengan menulis `managed-settings.json` per-OS secara langsung. Tanpa ini, `/login` menampilkan pemilih akun standar tanpa opsi gateway. Lihat [Pengaturan terkelola sisi klien](/id/claude-apps-gateway-config#client-side-managed-settings) untuk jalur file.

123 

124<h2 id="operations">

125 Operasi

126</h2>

127 

128Setelah gateway melayani lalu lintas, operasi sehari-hari membaca lognya, menyelidiki kesehatannya, dan memutar rahasianya sesuai jadwal Anda. Subbagian mencakup masing-masing, ditambah apa yang disimpan Postgres dan bagaimana upgrade dan rollback berperilaku.

129 

130<h3 id="logs">

131 Log

132</h3>

133 

134Gateway menulis dua aliran ke stderr, keduanya ramah JSON:

135 

136* **Acara audit**: JSON satu baris per acara yang relevan dengan keamanan. Pipa stderr ke agregator log Anda. Acara yang dipancarkan termasuk `config.load`, `session.mint`, `session.refresh`, `device.authorize`, `device.verify`, `auth.denied`, `access.denied`, `inference`, `managed.serve`, `spend.blocked`, dan `admin.denied`. Bidang bervariasi menurut acara:

137 * Acara mint dan refresh yang berhasil membawa `sub`, `email`, `client_ip`, dan hasilnya

138 * Acara penolakan membawa alasan, jalur, dan IP klien, karena tidak ada identitas pada penolakan

139 * `inference` mencatat upstream mana yang melayani permintaan dan status respons

140 * `admin.denied` mencatat upaya autentikasi admin-API yang ditolak dengan alasan (`invalid_key` atau `no_credentials`), IP klien, metode, dan jalur, tanpa materi kunci yang disajikan

141* **Log operasional**: baris yang dapat dibaca manusia dengan awalan `[gateway]` untuk boot, peringatan, dan kesalahan upstream. Variabel lingkungan `CLAUDE_GATEWAY_LOG_LEVEL` mengontrol verbositas dan menerima `info`, `warn`, atau `error`, dengan `info` sebagai default. Ini tidak mempengaruhi acara audit, yang selalu dipancarkan.

142 

143<h3 id="health">

144 Kesehatan

145</h3>

146 

147Gateway melayani `GET /healthz` sebagai probe liveness dan `GET /readyz` sebagai probe kesiapan; `/readyz` memverifikasi toko dapat dijangkau. Keduanya dikecualikan dari `access_control.allow_cidrs`, jadi probe terus bekerja pada pendengar yang terkunci.

148 

149Dokumen penemuan OAuth di `/.well-known/oauth-authorization-server` juga mengembalikan `200` hanya setelah pemuatan konfigurasi, penemuan OIDC, konstruksi klien upstream, dan migrasi Postgres semua berhasil, jadi berfungsi ganda sebagai pemeriksaan boot end-to-end.

150 

151Gateway yang berjalan juga melayani deskripsi jalur dan bentuk permintaan yang diterimanya di `<public_url>/protocol`, cocok dengan versi yang Anda jalankan. Isinya tidak stabil di seluruh rilis.

152 

153<h3 id="outage-behavior">

154 Perilaku pemadaman

155</h3>

156 

157Jika Postgres turun, gateway itu sendiri terus melayani pengembang yang masuk dan masuk baru gagal. Apakah pengembang benar-benar terus bekerja tergantung pada bagaimana orchestrator Anda menangani kesiapan:

158 

159* **Sesi yang ada**: token pembawa memvalidasi secara lokal dengan rahasia JWT, penyegaran sesi tidak menyentuh toko, dan proses gateway masih dapat melayani inferensi

160* **Masuk baru**: gagal sampai Postgres pulih, karena aliran perangkat dan penghitung batas lajunya tinggal di Postgres

161* **[Penegakan batas pengeluaran](/id/claude-apps-gateway-spend-limits#postgres-availability)**: gagal terbuka secara default selama pemadaman, jadi inferensi masih mengalir; balikkan ke gagal tertutup jika Anda lebih suka memblokir daripada menjalankan tanpa meter

162* **Kesiapan**: `/readyz` melaporkan tidak siap selama pemadaman, jadi orchestrator yang gating lalu lintas pada kesiapan menghapus setiap replika dari rotasi sekaligus. Dalam topologi itu semua lalu lintas, termasuk inferensi yang dapat masih dilayani gateway, gagal di penyeimbang beban sampai Postgres pulih. Probe liveness di `/healthz` terus lulus, jadi replika tidak dimulai ulang. Arahkan probe kesiapan ke `/healthz` sebagai gantinya jika Anda lebih suka pengembang yang masuk terus bekerja melalui pemadaman toko; biayanya adalah masuk baru gagal terhadap replika yang masih melaporkan siap.

163 

164Jika IdP Anda turun, sesi yang ada bekerja sampai `ttl_hours`, dan login dan penyegaran baru gagal. Atur `ttl_hours` yang lebih lama jika IdP Anda memiliki jendela pemeliharaan yang sering.

165 

166<h3 id="jwt-secret-rotation">

167 Rotasi rahasia JWT

168</h3>

169 

170Putar rahasia penandatanganan dalam tiga langkah sehingga sesi yang ada tetap valid:

171 

1721. Hasilkan rahasia baru. Tambahkan ke depan array `session.jwt_secret`.

1732. Gulung penyebaran. Token baru menandatangani dengan rahasia baru; token lama masih memverifikasi.

1743. Setelah `ttl_hours` ditambah margin, hapus rahasia lama dan gulung lagi.

175 

176Rotasi juga satu-satunya cara untuk memaksa sesi keluar sebelum mereka berakhir: token pembawa memvalidasi secara lokal terhadap rahasia JWT, jadi tidak ada pencabutan per-sesi. Mengganti rahasia sepenuhnya, tanpa menyimpan yang lama dalam array, membatalkan setiap sesi yang luar biasa sekaligus. Untuk offboarding individual, deprovision pengguna di IdP Anda; sesi mereka berakhir dalam `ttl_hours`.

177 

178<h3 id="postgres">

179 Postgres

180</h3>

181 

182Gateway menyimpan lima tabel, semuanya dibuat oleh migrasi waktu boot-nya:

183 

184| Tabel | Isi | Retensi |

185| ------------------ | --------------------------------------------------------------------------------- | -------------------------------------------------------------------- |

186| `kv` | Hibah perangkat (TTL 10 menit) dan penghitung batas laju | TTL per baris |

187| `spend` | Penghitung pengeluaran periode-ke-tanggal per-principal, dalam sen | `admin.spend_retention_months`, default 13 |

188| `spend_limits` | Batas pengeluaran yang dikonfigurasi | Sampai dihapus melalui API |

189| `admin_audit` | Jejak mutasi Admin API | `admin.audit_retention_days`, default 365 |

190| `principal_emails` | Email terakhir dilihat setiap principal, nama tampilan, dan grup IdP. Berisi PII. | `admin.identity_retention_days` sejak aktivitas terakhir, default 90 |

191 

192Loop 30 detik mengakhiri baris `kv` melewati TTL mereka, dan sapuan per jam memberlakukan jendela retensi pada tabel pengeluaran, jadi tidak ada yang tumbuh tanpa batas. Tanpa [batas pengeluaran](/id/claude-apps-gateway-spend-limits) yang dikonfigurasi, hanya `kv` yang ditulis. Jika kebijakan keamanan Anda melarang DDL dari peran aplikasi, buat tabel ini sebelumnya dan `_migrations` dengan peran admin dan berikan peran aplikasi `SELECT, INSERT, UPDATE, DELETE` pada masing-masing.

193 

194Dengan batas pengeluaran digunakan, database yang hilang berarti pelacakan pengeluaran dan batas yang hilang, bukan hanya login ulang pengembang, jadi jalankan backup reguler. Untuk menghapus satu pengembang yang pergi segera daripada menunggu retensi, jalankan `DELETE FROM principal_emails WHERE principal = '<sub>'` secara langsung; itu menghapus satu-satunya tabel yang menyimpan email, nama, dan grup mereka. Baris `spend` dan `admin_audit` mereferensikan hanya `sub` OIDC pseudonim.

195 

196<h3 id="upgrades">

197 Upgrade

198</h3>

199 

200Replika tidak memiliki status, jadi restart bergulir aman kapan saja. Gateway menjalankan migrasi skema saat boot, yang berarti menyebarkan biner baru secara otomatis memigrasikan database. Jika peran database tidak dapat menjalankan DDL, buat skema sebelumnya, termasuk tabel `_migrations` yang ditanam ke versi saat ini; jika tidak boot gagal mencoba `CREATE TABLE`.

201 

202Migrasi adalah append-only, jadi rollback ke biner sebelumnya yang mengetahui lebih sedikit migrasi aman; itu mengabaikan baris ekstra. Rollback juga memvalidasi ulang YAML terhadap skema biner yang lebih lama, jadi konfigurasi yang mengadopsi kunci yang diperkenalkan oleh rilis yang lebih baru gagal boot pada yang lebih lama. Hapus kunci baru sebelum rollback.

203 

204Karena Anda menyematkan versi gateway dalam gambar Anda sendiri, perbaikan dalam rilis Claude Code baru, termasuk perbaikan keamanan, mencapai penyebaran Anda hanya ketika Anda memperbarui pin dan menyebarkan ulang. Sertakan gateway dalam kadence patching yang sama yang Anda gunakan untuk layanan lain yang menyimpan kredensial produksi.

205 

206<h2 id="security">

207 Keamanan

208</h2>

209 

210Bagian ini menjawab pertanyaan yang ditanyakan tinjauan keamanan: aliran data apa melalui gateway dan ke mana perginya, serangan mana yang dipertahankan desain, dan jawaban mana yang termasuk dalam kuesioner kepatuhan.

211 

212<h3 id="data-flow">

213 Aliran data

214</h3>

215 

216| Data | Jalur | Dikirim ke Anthropic oleh gateway |

217| -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ----------------------------------------------------------- |

218| Inferensi (prompt, penyelesaian) | CLI → gateway → upstream Anda | Hanya jika API Anthropic adalah upstream yang dikonfigurasi |

219| Telemetri (metrik OTLP, ditambah [log dan jejak opt-in](/id/claude-apps-gateway-config#telemetry)) | CLI → gateway → kolektor Anda | Tidak pernah |

220| Identitas (email, grup, sub) | IdP → gateway → JWT → CLI; CLI memberi stempel pada ekspor OTLP | Tidak pernah |

221| Pengaturan terkelola | YAML gateway Anda → CLI | Tidak pernah |

222| Log audit | Stderr gateway → agregator Anda | Tidak pernah |

223 

224<h3 id="threat-model-summary">

225 Ringkasan model ancaman

226</h3>

227 

228Gateway duduk di dalam perimeter jaringan Anda, tetapi laptop pengembang individual tidak diperlakukan sebagai terpercaya. Desain memperhitungkan ini dalam tiga cara:

229 

230* Pengembang menyimpan JWT berumur pendek bukan kunci upstream mentah. Leg CLI-ke-gateway menggunakan hibah perangkat RFC 8628, dan pertukaran kode otorisasi gateway dengan IdP menjalankan PKCE dalam konfigurasi default, jadi kode otorisasi IdP yang disadap tidak berguna.

231* Halaman verifikasi perangkat memberlakukan POST asal-sama dan batas laju per-IP per RFC 8628 §5.1. Lihat [Resistansi brute-force kode pengguna](#user-code-brute-force-resistance).

232* Permintaan keluar melalui penjaga server-side request forgery (SSRF) yang menyelesaikan DNS, memblokir alamat link-lokal dan cloud-metadata ditambah loopback secara default, dan menyematkan koneksi ke IP yang diselesaikan, jadi URL yang dipengaruhi operator seperti IdP dan tujuan OTLP tidak dapat dialihkan ke endpoint metadata cloud. Rentang pribadi RFC 1918 secara sengaja diizinkan, karena IdP dan kolektor OTLP biasanya tinggal di IP pribadi. Untuk pengembangan lokal terhadap IdP loopback atau kolektor, atur `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` dalam lingkungan gateway; biarkan tidak disetel dalam produksi.

233 

234Jika Anda menambahkan kontrol egress Anda sendiri, gateway harus menjangkau server metadata kapan pun menggunakan kredensial metadata instance seperti identitas beban kerja.

235 

236Dua ancaman berada di luar cakupan karena mereka adalah infrastruktur Anda untuk diamankan:

237 

238* **Host gateway yang dikompromikan**: host menyimpan kredensial upstream dan mendistribusikan [pengaturan terkelola](/id/claude-apps-gateway-config#managed) ke setiap pengembang yang terhubung, jadi kontrol atas konfigurasi gateway sebanding dengan kontrol atas MDM Anda. Dialog persetujuan satu kali CLI untuk pengaturan yang mampu shell membatasi perubahan diam-diam tetapi tidak menggantikan keamanan host.

239* **Penyedia OIDC yang berbahaya**: penyedia menandatangani id\_token yang dipercaya gateway, jadi dapat menegaskan identitas apa pun. Penyaringan dan pengamanan IdP Anda adalah tanggung jawab Anda.

240 

241<h3 id="user-code-brute-force-resistance">

242 Resistansi brute-force kode pengguna

243</h3>

244 

245`user_code` yang diketik pengembang ke halaman verifikasi `/device` adalah 8 karakter yang diambil dari alfabet 20 karakter, yang menghasilkan 20⁸ atau sekitar 2,56×10¹⁰ kombinasi, dan berakhir setelah 10 menit.

246 

247Gateway menerapkan batas laju per-IP pada endpoint hibah perangkat, dapat dikonfigurasi melalui [`rate_limits`](/id/claude-apps-gateway-config#http-tuning). Naikkan batas jika banyak pengembang masuk dari alamat NAT korporat bersama tunggal. Batas hanya berlaku pada aliran masuk, bukan pada inferensi.

248 

249<h3 id="compliance-posture">

250 Postur kepatuhan

251</h3>

252 

253* **Residensi data**: bidang data sendiri gateway mengirim tidak ada ke Anthropic kecuali API Anthropic adalah upstream yang dikonfigurasi; ketika itu, perjanjian penanganan data yang ada berlaku untuk jalur inferensi. Telemetri, audit, identitas, dan pengaturan hanya pergi ke tujuan yang Anda konfigurasikan.

254* **Lalu lintas proses host**: proses host adalah CLI Claude Code, yang dapat mengirim analitik startup dan pemeriksaan pembaruan ke Anthropic. Untuk penyebaran egress ketat, atur `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` dalam lingkungan kontainer gateway.

255* **Analitik klien**: CLI menonaktifkan analitik penggunaan sendiri saat masuk ke gateway, dan pelaporan kesalahan dimatikan secara default pada permukaan API pihak ketiga.

256* **Mesin klien**: CLI pengembang masih mengirim pemeriksaan nama host WebFetch dan pemeriksaan versi ke Anthropic kecuali `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` dan `skipWebFetchPreflight: true` diatur. Lihat [penggunaan data](/id/data-usage).

257* **Peringkat survei**: kredensial gateway menonaktifkan sink peringkat terikat Anthropic, jadi peringkat tidak dikirim ke Anthropic.

258* **Berbagi transkrip**: memilih Ya pada prompt berbagi transkrip survei menulis file lokal di bawah `~/.claude/feedback-bundles/` bukan mengunggah ke Anthropic.

259* **Pembaruan klien**: pemeriksaan pembaruan terpisah dari lalu lintas gateway. Sematkan versi melalui distribusi Anda sendiri dan atur `DISABLE_UPDATES` jika laptop tidak boleh mengambil rilis. `DISABLE_AUTOUPDATER` menghentikan hanya pembaruan latar belakang sementara `claude update` masih berfungsi.

260* **TLS**: layani `public_url` melalui HTTPS dalam produksi, baik dari pendengar gateway sendiri melalui `listen.tls` atau dari ingress yang menghentikan TLS di depan replika HTTP biasa dengan `listen.public_url` diatur. Gateway tidak menolak HTTP biasa. IdP harus melayani HTTPS dalam produksi, dan Postgres mendukung `?sslmode=require`. Atur `Strict-Transport-Security` di ingress Anda.

261* **Pengungkapan kerentanan**: ikuti [Melaporkan masalah keamanan](/id/security#reporting-security-issues)

262 

263<h2 id="troubleshooting">

264 Troubleshooting

265</h2>

266 

267Untuk pertanyaan dan umpan balik, gunakan [dukungan Claude Code](https://support.claude.com/en/collections/14445694-claude-code), atau buka masalah di [repositori GitHub Claude Code](https://github.com/anthropics/claude-code/issues). Saat melaporkan masalah, sertakan:

268 

269* **Masalah gateway**: stderr gateway untuk jendela yang relevan, `gateway.yaml` Anda dengan rahasia diedit, versi gateway, ditampilkan di halaman pendaratan di `/` dan dalam header respons `x-cc-gateway-version` di `/managed/settings`, dan apa yang berubah baru-baru ini

270* **Masalah login**: pengembang menjalankan `claude --debug-file ./claude-debug.txt`, mereproduksi, dan mengirim file itu ditambah log audit gateway untuk jendela yang sama

271* **Masalah inferensi**: model yang diminta, upstream yang dikonfigurasi, dan log audit gateway untuk permintaan, yang mencatat upstream mana yang melayaninya dan status respons

272 

273| Gejala | Penyebab | Perbaikan |

274| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

275| `/login` pengembang menampilkan pemilih akun standar bukan layar **Cloud gateway** | `forceLoginMethod` atau `forceLoginGatewayUrl` tidak diatur dalam pengaturan terkelola pada mesin itu | Sebarkan [file pengaturan terkelola](/id/claude-apps-gateway#set-the-gateway-url) ke perangkat; `/login` membaca URL gateway dari sana |

276| Startup menampilkan `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | Build Claude Code yang diinstal mendahului dukungan gateway | Minta pengembang memperbarui Claude Code ke rilis yang mencakup dukungan Cloud gateway |

277| CLI `/login`: `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | Nama host gateway diselesaikan ke setidaknya satu alamat IP publik. Claude Code memeriksa setiap alamat yang diselesaikan dan memerlukan setiap satu menjadi pribadi. Penyebab umum adalah nama dual-stack di mana satu keluarga diselesaikan ke alamat publik, termasuk penyeimbang beban dual-stack internal AWS, yang mengembalikan alamat AAAA rentang publik | Minta nama gateway hanya diselesaikan ke alamat pribadi pada mesin pengembang. Untuk nama dual-stack, lepaskan catatan rentang publik atau layani nama DNS internal saja. Lihat [prasyarat jaringan pribadi](/id/claude-apps-gateway#prerequisites). |

278| CLI `/login`: `Gateway login requires a direct connection and does not support connecting through an HTTP proxy` | `HTTPS_PROXY` atau `HTTP_PROXY` berlaku untuk host gateway dan nama host proxy diselesaikan ke alamat publik. Proxy yang nama hostnya hanya diselesaikan ke alamat pribadi diizinkan dan tidak memicu kesalahan ini | Tambahkan host gateway ke `NO_PROXY` pada mesin pengembang sehingga koneksi langsung, atau gunakan proxy yang nama hostnya diselesaikan ke alamat pribadi |

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

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

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

282| 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. |

283| Boot keluar dengan kesalahan izin Postgres | Peran aplikasi kekurangan `CREATE TABLE` | Buat skema sebelumnya dengan peran admin dan berikan DML ke peran aplikasi, atau berikan DDL sementara untuk boot yang menerapkan migrasi baru |

284| `/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`. |

285| Log: `token exchange failed: 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`. |

286| Setiap permintaan Bedrock mengembalikan 502; log menunjukkan `Could not load credentials from any providers` | Di EC2, batas hop default IMDSv2 sebesar 1 memblokir permintaan metadata instance dari dalam kontainer. Boot dan `/readyz` lulus bagaimanapun karena AWS SDK menyelesaikan kredensial instance pada permintaan pertama, bukan pada konstruksi klien | Naikkan batas hop dengan `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, atau atur dalam template peluncuran. Perubahan berlaku untuk setiap kontainer pada instance. Lebih suka peran tugas ECS di mana tersedia, yang membaca kredensial dari endpoint kredensial kontainer ECS dan menghindari perubahan sepenuhnya, atau terapkan perubahan pada instance gateway khusus untuk membatasi eksposur. |

287| Kesalahan IdP: unknown or unsupported scope | IdP menolak scope yang tidak dikenalinya | Atur `oidc.scopes` ke tepat daftar yang diterima IdP Anda; itu harus menyertakan `openid`. Default adalah `openid profile email offline_access`. |

288| Sesi tidak secara diam-diam memperbarui setelah menetapkan `oidc.scopes` | `offline_access` dijatuhkan dari override | Tambahkan `offline_access` kembali jika IdP Anda mendukungnya. Tanpa token refresh, pengembang menjalankan kembali login browser setiap `session.ttl_hours`. |

289| Browser menampilkan "This request came from another site and was blocked" | POST formulir lintas situs, diblokir sebagai perlindungan CSRF. Diharapkan untuk halaman tertanam atau diproksi | Buka tautan verifikasi secara langsung |

290| Chrome memblokir tombol Approve dengan "Refused to send form data … violates … Content Security Policy directive: form-action", tetapi halaman yang sama berfungsi di Safari atau Firefox | Chrome memberlakukan `form-action` terhadap seluruh rantai pengalihan. IdP Anda mengalihkan ke host kedua yang tidak ada dalam daftar putih. | Tambahkan setiap asal tambahan dalam rantai pengalihan ke `oidc.form_action_origins`. Buka Chrome DevTools → Console pada halaman Approve untuk melihat asal mana yang diblokir. |

291| Masuk selesai di IdP tetapi callback gagal, dengan kesalahan CSP di Chrome atau "this sign-in link has expired" di Safari | IdP mengembalikan kode melalui `response_mode=form_post`, yang secara otomatis mengirimkannya lintas asal melalui POST ke `/oauth/callback`. Chrome memblokir itu di bawah CSP ketat; Safari memungkinkan pengiriman tetapi callback hanya membaca string kueri. | Pastikan IdP Anda menghormati `response_mode=query`, yang gateway minta secara eksplisit sehingga callback adalah pengalihan biasa |

292| Login bekerja secara lokal tetapi gagal di belakang ALB | `public_url` tidak diatur, jadi IdP mendapat asal `http://` dalam sebagai `redirect_uri` | Atur `listen.public_url` ke asal `https://` eksternal |

293| Pengembang melihat prompt kepercayaan berulang kali | Sertifikat TLS berputar per replika atau per permintaan | Gunakan sertifikat stabil di ingress, atau hentikan TLS sekali dan jalankan replika melalui HTTP biasa secara internal |

294| CLI `/login`: "Could not verify the gateway's TLS certificate" atau `SELF_SIGNED_CERT_IN_CHAIN` | Rantai TLS gateway ditandatangani oleh CA pribadi bukan dalam toko kepercayaan host CLI | Claude Code membaca toko kepercayaan OS secara default pada biner asli dan pada Node 22.15 atau lebih baru; [`CLAUDE_CODE_CERT_STORE`](/id/network-config#ca-certificate-store) mengontrol perilaku ini. Jika CA diinstal dalam toko kepercayaan OS, pastikan pengembang berada di runtime saat ini. Jika tidak atur `NODE_EXTRA_CA_CERTS` ke PEM sertifikat CA sebelum meluncurkan. Prompt sidik jari koneksi pertama masih berlaku. |

295 

296<h2 id="related">

297 Terkait

298</h2>

299 

300* [Gambaran umum gateway aplikasi Claude](/id/claude-apps-gateway): quickstart dan koneksi pengembang

301* [Referensi konfigurasi](/id/claude-apps-gateway-config): setiap opsi `gateway.yaml`

claude-apps-gateway-on-gcp.md +330 −0 created

Details

1> ## Documentation Index

2> 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.

4 

5# Terapkan gateway aplikasi Claude di Google Cloud

6 

7> Contoh praktis menjalankan gateway aplikasi Claude di Google Cloud: Cloud Run atau GKE, Cloud SQL untuk PostgreSQL, Secret Manager, dan autentikasi service-account ke Agent Platform.

8 

9<Note>

10 Halaman ini menjelaskan satu cara untuk menjalankan gateway aplikasi Claude di Google Cloud. Konfigurasi ini adalah contoh kerja untuk infrastruktur yang dikelola pelanggan daripada penyebaran produksi yang didukung; gunakan ini untuk melihat bagaimana potongan-potongan cocok bersama sebelum menyesuaikannya dengan lingkungan Anda sendiri. Untuk persyaratan yang tidak bergantung pada platform, lihat [panduan penyebaran](/id/claude-apps-gateway-deploy).

11</Note>

12 

13Contoh ini menyediakan gateway aplikasi Claude di Google Cloud dengan Agent Platform Google Cloud sebagai upstream model, menggunakan Cloud Run atau GKE untuk komputasi. Google Workspace adalah penyedia identitas contoh (IdP), tetapi penyedia IdP yang sesuai dengan OpenID Connect (OIDC) apa pun berfungsi; hanya blok `oidc` yang berubah. Lihat [Penyiapan penyedia identitas](/id/claude-apps-gateway-deploy#identity-provider-setup) untuk detail per-IdP.

14 

15<h2 id="what-you’ll-build">

16 Apa yang akan Anda bangun

17</h2>

18 

19<Frame>

20 <img src="https://mintcdn.com/claude-code/-uq-4JE0W_JO5Er5/images/claude-gateway-gcp-architecture.svg?fit=max&auto=format&n=-uq-4JE0W_JO5Er5&q=85&s=cb705151c69128ac0da235852d5600ab" alt="Diagram gateway aplikasi Claude di Google Cloud: klien Claude Code terhubung melalui HTTPS ke gateway (Cloud Run atau GKE), yang berjalan di dalam VPC bersama database Cloud SQL IP pribadi untuk status sesi. Gateway menandatangani pengguna melalui OIDC terhadap Google Workspace, membaca konfigurasi dan rahasia dari Secret Manager, meneruskan permintaan model ke Agent Platform, dan menarik gambarnya dari Artifact Registry saat penyebaran." width="760" height="400" data-path="images/claude-gateway-gcp-architecture.svg" />

21</Frame>

22 

23Konfigurasi referensi menyediakan:

24 

25* Layanan **Cloud Run** atau **GKE** Deployment yang menjalankan kontainer gateway

26* Repositori **Artifact Registry** untuk gambar gateway

27* Instans **Cloud SQL untuk PostgreSQL**, IP pribadi saja, untuk [store](/id/claude-apps-gateway-config#store) gateway

28* Rahasia **Secret Manager** untuk `gateway.yaml`, kunci penandatanganan JWT, rahasia klien OIDC, dan URL Postgres

29* **Service account** dengan `roles/aiplatform.user`, terlampir langsung di Cloud Run atau terikat melalui Workload Identity di GKE

30* **Internal Application Load Balancer** di Cloud Run, atau **GKE Ingress** internal dari kelas `gce-internal` di GKE, untuk HTTPS

31 

32<h2 id="prerequisites">

33 Prasyarat

34</h2>

35 

36* Proyek GCP dengan penagihan diaktifkan, dan izin untuk membuat sumber daya di atas

37* CLI `gcloud`, diautentikasi dengan `gcloud auth login`, dan Docker dipasang secara lokal

38* Untuk jalur GKE: `kubectl`, dan kluster GKE di VPC yang dibuat dalam panduan di bawah

39* Akses ke model Claude yang Anda butuhkan di Model Garden, di wilayah yang menerbitkannya

40* Klien aplikasi web OAuth 2.0 Google Workspace dengan URI pengalihan `https://<gateway-host>/oauth/callback`; lihat [Penyiapan penyedia identitas](/id/claude-apps-gateway-deploy#identity-provider-setup)

41* Nama host TLS untuk gateway, biasanya nama DNS internal yang menunjuk ke load balancer

42 

43Atur proyek dan wilayah sekali:

44 

45```bash theme={null}

46export PROJECT_ID=<your-project>

47export REGION=us-east5 # a region where the Claude models you need are published in Model Garden

48gcloud config set project "$PROJECT_ID"

49```

50 

51<h2 id="deploy-the-gateway">

52 Terapkan gateway

53</h2>

54 

55Langkah-langkah di bawah menyediakan penyebaran lengkap dengan perintah `gcloud`.

56 

57<Steps>

58 <Step title="Aktifkan API">

59 Aktifkan API layanan yang digunakan panduan:

60 

61 ```bash theme={null}

62 gcloud services enable \

63 aiplatform.googleapis.com \

64 artifactregistry.googleapis.com \

65 sqladmin.googleapis.com \

66 secretmanager.googleapis.com \

67 iamcredentials.googleapis.com \

68 iam.googleapis.com \

69 compute.googleapis.com \

70 servicenetworking.googleapis.com \

71 run.googleapis.com \

72 container.googleapis.com

73 ```

74 

75 API yang Anda butuhkan bergantung pada jalur penyebaran:

76 

77 * `compute` dan `servicenetworking`: diperlukan untuk jalur Cloud SQL IP pribadi

78 * `run`: Cloud Run saja

79 * `container`: GKE saja

80 </Step>

81 

82 <Step title="Buat service account dan berikan IAM">

83 Gateway berjalan sebagai service account khusus dengan izin untuk memanggil Agent Platform. Ini menjangkau Cloud SQL melalui VPC dengan pengguna kata sandi, jadi tidak ada peran IAM Cloud SQL yang diperlukan:

84 

85 ```bash theme={null}

86 gcloud iam service-accounts create claude-gateway --display-name="Claude apps gateway"

87 SA="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com"

88 

89 gcloud projects add-iam-policy-binding "$PROJECT_ID" \

90 --member="serviceAccount:${SA}" --role="roles/aiplatform.user" --condition=None

91 ```

92 

93 Kemudian aktifkan model Claude untuk proyek di Model Garden; model menerbitkan ke wilayah tertentu, jadi periksa setiap kartu model.

94 </Step>

95 

96 <Step title="Bangun dan dorong gambar ke Artifact Registry">

97 Bangun gambar sesuai dengan [persyaratan gambar kontainer](/id/claude-apps-gateway-deploy#container-image), menggunakan biner glibc `linux-x64`, dan dorong:

98 

99 ```bash theme={null}

100 gcloud artifacts repositories create claude-gateway \

101 --repository-format=docker --location="$REGION"

102 gcloud auth configure-docker "${REGION}-docker.pkg.dev" --quiet

103 

104 # Cloud Run requires linux/amd64. --provenance=false avoids a buildx OCI

105 # image index that Cloud Run rejects.

106 docker build --platform=linux/amd64 --provenance=false \

107 -t "${REGION}-docker.pkg.dev/${PROJECT_ID}/claude-gateway/gateway:<version>" .

108 docker push "${REGION}-docker.pkg.dev/${PROJECT_ID}/claude-gateway/gateway:<version>"

109 ```

110 </Step>

111 

112 <Step title="Sediakan Cloud SQL untuk PostgreSQL">

113 Buat instans di VPC melalui Private Services Access sehingga tidak memiliki IP publik; ini juga memenuhi proyek di mana `constraints/sql.restrictPublicIp` diberlakukan:

114 

115 ```bash theme={null}

116 VPC=cc-gateway-vpc

117 gcloud compute networks create "$VPC" --subnet-mode=custom

118 gcloud compute networks subnets create cc-gateway-subnet \

119 --network="$VPC" --region="$REGION" --range=10.0.0.0/24

120 

121 # Private Services Access: one-time per VPC

122 gcloud compute addresses create "google-managed-services-${VPC}" \

123 --global --purpose=VPC_PEERING --prefix-length=16 --network="$VPC"

124 gcloud services vpc-peerings connect \

125 --service=servicenetworking.googleapis.com \

126 --ranges="google-managed-services-${VPC}" --network="$VPC"

127 

128 gcloud sql instances create claude-gateway-db \

129 --database-version=POSTGRES_16 --tier=db-g1-small --region="$REGION" \

130 --network="projects/${PROJECT_ID}/global/networks/${VPC}" --no-assign-ip

131 gcloud sql databases create claude_gateway --instance=claude-gateway-db

132 PGPASS="$(openssl rand -hex 24)"

133 gcloud sql users create gateway --instance=claude-gateway-db --password="$PGPASS"

134 

135 PRIVATE_IP="$(gcloud sql instances describe claude-gateway-db \

136 --format='value(ipAddresses[0].ipAddress)')"

137 GATEWAY_POSTGRES_URL="postgres://gateway:${PGPASS}@${PRIVATE_IP}:5432/claude_gateway?sslmode=require"

138 ```

139 

140 Runtime Cloud Run atau GKE harus berada di, atau dirutekan ke, VPC ini.

141 </Step>

142 

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

144 Blok `upstreams` menunjuk ke Agent Platform dengan `auth: {}`, jadi gateway mengautentikasi melalui Application Default Credentials dari service account runtime. Lihat [referensi konfigurasi](/id/claude-apps-gateway-config) untuk setiap bidang.

145 

146 Dua bidang `listen` bergantung pada apa yang berada di depan gateway:

147 

148 * `public_url`: diperlukan di belakang Cloud Run atau GKE Ingress. Gateway membangun `redirect_uri` IdP dan dokumen penemuannya hanya dari nilai ini, tidak pernah dari header `X-Forwarded-*`.

149 * `trusted_proxies`: rentang sumber front end. Gateway menghormati `X-Forwarded-For` hanya ketika peer TCP berada dalam daftar ini, kemudian berjalan melalui rantai melewati hop terpercaya, jadi batas laju sign-in per-IP dan acara audit mencatat IP pengembang daripada load balancer.

150 

151 Atur `trusted_proxies` agar sesuai dengan front end Anda. GKE Ingress eksternal dari kelas `gce` tidak terdaftar: ini menyediakan alamat forwarding-rule publik, yang pemeriksaan [jaringan pribadi](/id/claude-apps-gateway#prerequisites) `/login` menolak.

152 

153 | Front end | `trusted_proxies` |

154 | ----------------------------------------------------- | ----------------------------------------------------- |

155 | Cloud Run dijangkau langsung, tidak ada load balancer | `[169.254.0.0/16]` |

156 | Internal Application Load Balancer di depan Cloud Run | `169.254.0.0/16` ditambah CIDR subnet proxy-only Anda |

157 | GKE internal Ingress, kelas `gce-internal` | CIDR subnet proxy-only Anda |

158 

159 Contoh di bawah menggunakan nilai internal-load-balancer-in-front-of-Cloud-Run.

160 

161 ```yaml gateway.yaml theme={null}

162 listen:

163 host: 0.0.0.0

164 port: 8080

165 public_url: https://claude-gateway.internal.example.com

166 trusted_proxies: [169.254.0.0/16, <your-proxy-only-subnet-cidr>]

167 

168 oidc:

169 issuer: https://accounts.google.com

170 client_id: <your-oauth-client-id>

171 client_secret: ${OIDC_CLIENT_SECRET} # GKE: ${file:/secrets/oidc-client-secret}

172 allowed_email_domains: [example.com]

173 # Google ignores offline_access; these yield refresh tokens:

174 scopes: [openid, profile, email]

175 extra_auth_params: { access_type: offline, prompt: consent }

176 

177 session:

178 jwt_secret: ${GATEWAY_JWT_SECRET} # GKE: ${file:/secrets/jwt-secret}

179 

180 store:

181 postgres_url: ${GATEWAY_POSTGRES_URL} # GKE: ${file:/secrets/postgres-url}

182 

183 upstreams:

184 - provider: vertex

185 region: <your-region> # must match $REGION

186 project_id: <your-project>

187 auth: {} # ADC via the runtime service account

188 ```

189 

190 <Note>

191 Token id Google tidak membawa klaim `groups`. Untuk menggunakan kebijakan berbasis grup dalam [`managed.policies`](/id/claude-apps-gateway-config#managed) dengan Google Workspace sebagai IdP, konfigurasikan [`oidc.google_groups`](/id/claude-apps-gateway-config#oidc), yang mencari grup setiap pengguna melalui Admin SDK Directory API menggunakan service account dengan delegasi domain-wide. Tanpa itu, cocokkan pada `email_domain` sebagai gantinya.

192 </Note>

193 </Step>

194 

195 <Step title="Simpan rahasia di Secret Manager">

196 Buat empat rahasia dan berikan `roles/secretmanager.secretAccessor` ke service account `claude-gateway`:

197 

198 | Rahasia | Sumber |

199 | ---------------------------- | ---------------------------------------------- |

200 | `gateway-jwt-secret` | `openssl rand -base64 32` |

201 | `gateway-oidc-client-secret` | Google Cloud Console → OAuth client |

202 | `gateway-postgres-url` | `$GATEWAY_POSTGRES_URL` dari langkah Cloud SQL |

203 | `gateway-config` | `gateway.yaml` lengkap dari langkah sebelumnya |

204 

205 Bagaimana rahasia mencapai kontainer berbeda menurut jalur:

206 

207 * Di GKE mereka dipasang sebagai file melalui driver CSI Secret Manager, dan `gateway.yaml` mereferensikan `${file:/secrets/...}`.

208 * Di Cloud Run, yang tidak dapat memasang beberapa rahasia ke satu direktori, `gateway.yaml` dipasang sebagai file dan tiga lainnya disuntikkan sebagai variabel lingkungan, jadi `gateway.yaml` mereferensikan `${GATEWAY_JWT_SECRET}`, `${OIDC_CLIENT_SECRET}`, dan `${GATEWAY_POSTGRES_URL}` sebagai gantinya.

209 </Step>

210 

211 <Step title="Terapkan">

212 <Tabs>

213 <Tab title="Cloud Run">

214 Perintah di bawah menyebarkan untuk produksi di belakang load balancer internal.

215 

216 ```bash theme={null}

217 gcloud run deploy claude-gateway \

218 --image="${REGION}-docker.pkg.dev/${PROJECT_ID}/claude-gateway/gateway:<version>" \

219 --region="$REGION" \

220 --service-account="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com" \

221 --min-instances=1 \

222 --timeout=3600 \

223 --ingress=internal-and-cloud-load-balancing \

224 --network="$VPC" --subnet=cc-gateway-subnet --vpc-egress=private-ranges-only \

225 --set-secrets=/etc/claude/gateway.yaml=gateway-config:latest,GATEWAY_JWT_SECRET=gateway-jwt-secret:latest,OIDC_CLIENT_SECRET=gateway-oidc-client-secret:latest,GATEWAY_POSTGRES_URL=gateway-postgres-url:latest \

226 --no-invoker-iam-check

227 ```

228 

229 Egress VPC langsung, melalui `--network`, `--subnet`, dan `--vpc-egress=private-ranges-only`, memungkinkan layanan menjangkau IP pribadi Cloud SQL secara langsung. Egress publik ke endpoint Agent Platform dan `accounts.google.com` langsung ke internet daripada melalui VPC, jadi Cloud NAT tidak diperlukan.

230 

231 Pemeriksaan IAM invoker harus terbuka atau dinonaktifkan. Gateway menjalankan OIDC-nya sendiri dan kliennya tidak membawa token GCP, jadi pemeriksaan invoker Cloud Run harus mengakui permintaan yang tidak diautentikasi. Autentikasi OIDC gateway mengautentikasi permintaan setelah mencapai kontainer, dengan `allowed_email_domains` membatasi domain mana yang dapat masuk.

232 

233 Dua bendera mengakui permintaan yang tidak diautentikasi:

234 

235 * `--no-invoker-iam-check`: menonaktifkan pemeriksaan tanpa ikatan `allUsers` untuk dikelola, dan bekerja di bawah Domain Restricted Sharing

236 * `--allow-unauthenticated`: memberikan peran `run.invoker` kepada `allUsers`; gunakan jika organisasi Anda tidak memungkinkan `--no-invoker-iam-check`

237 

238 Pembatasan ingress melalui `--ingress` adalah lapisan terpisah dan independen dari pemeriksaan invoker; tetap atur untuk membatasi layanan ke jaringan perusahaan Anda.

239 

240 Secara default URL Cloud Run `*.run.app` diselesaikan ke alamat publik, yang pemeriksaan [jaringan pribadi](/id/claude-apps-gateway#prerequisites) `/login` menolak. Dua topologi memberikan pengembang nama host yang dapat diselesaikan secara pribadi, dan Cloud Run tidak menyediakan keduanya untuk Anda:

241 

242 * **Internal Application Load Balancer**, topologi yang diasumsikan perintah deploy di atas: terapkan dengan `--ingress=internal-and-cloud-load-balancing`, sediakan Internal Application Load Balancer di depan layanan dengan nama DNS internal dan sertifikat, dan atur `listen.public_url` ke nama host itu.

243 * **Ingress internal saja tanpa load balancer**: terapkan dengan `--ingress=internal` dan biarkan `listen.public_url` sebagai URL `*.run.app`, default dalam [aset referensi](#terraform-reference) di bawah. Agar `*.run.app` diselesaikan secara pribadi, tim jaringan Anda harus sudah mengoperasikan endpoint Private Service Connect untuk Google APIs, zona DNS pribadi Cloud yang menyelesaikan `*.run.app` ke dalamnya, dan perutean on-premises ke endpoint itu.

244 

245 [Panduan jaringan pribadi Google untuk Cloud Run](https://cloud.google.com/run/docs/securing/private-networking) mencakup infrastruktur yang kedua opsi butuhkan. Verifikasi sign-in setelah gateway melayani pada nama host pribadi; sampai saat itu, konfirmasi kontainer boot dari lognya di Cloud Run.

246 

247 Perbarui URI pengalihan otorisasi klien OAuth ke `<public_url>/oauth/callback` sebelum sign-in pertama. Terapkan ulang setelah mengubah `public_url`, karena gateway membangun asal publiknya hanya dari pengaturan itu dan mengabaikan `X-Forwarded-Host` dan `X-Forwarded-Proto`. `X-Forwarded-For` dihormati untuk IP klien hanya ketika `listen.trusted_proxies` diatur.

248 </Tab>

249 

250 <Tab title="GKE">

251 Kluster harus berada di `$VPC` yang dibuat dalam langkah Cloud SQL sehingga pod dapat menjangkau IP pribadi database; peering VPC saja tidak berfungsi, karena IP pribadi Cloud SQL itu sendiri adalah jaringan yang di-peer dan peering tidak transitif. Untuk membuat kluster baru di VPC itu, teruskan `--network="$VPC" --subnetwork=cc-gateway-subnet` ke `gcloud container clusters create`.

252 

253 Aktifkan Workload Identity di kluster dan pool node-nya, kemudian ikat service account Google ke service account Kubernetes sehingga pod mewarisi kredensialnya:

254 

255 ```bash theme={null}

256 gcloud container clusters update <cluster> --region="$REGION" \

257 --workload-pool="${PROJECT_ID}.svc.id.goog"

258 # On a Standard cluster, existing node pools also need GKE_METADATA;

259 # Autopilot enables this by default.

260 gcloud container node-pools update <pool> --cluster=<cluster> \

261 --region="$REGION" --workload-metadata=GKE_METADATA

262 

263 kubectl create namespace claude-gateway

264 kubectl create serviceaccount gateway -n claude-gateway

265 

266 gcloud iam service-accounts add-iam-policy-binding \

267 "claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com" \

268 --role roles/iam.workloadIdentityUser \

269 --member "serviceAccount:${PROJECT_ID}.svc.id.goog[claude-gateway/gateway]"

270 

271 kubectl annotate serviceaccount gateway -n claude-gateway \

272 iam.gke.io/gcp-service-account="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com"

273 ```

274 

275 Terapkan gateway sebagai Deployment standar ditambah Service dan Ingress internal, kelas `gce-internal`, seperti dijelaskan dalam [penyebaran Kubernetes](/id/claude-apps-gateway-deploy#kubernetes), dengan:

276 

277 * `serviceAccountName: gateway`

278 * driver CSI Secret Manager memasang rahasia di `/secrets`

279 * probe kesiapan menunjuk ke `GET /readyz`

280 

281 Lampirkan BackendConfig dengan `timeoutSec` yang ditingkatkan ke Service gateway: layanan backend load balancer di belakang GKE Ingress default ke timeout 30 detik, yang memotong respons streaming panjang.

282 

283 Jangan terapkan NetworkPolicy egress yang memblokir `169.254.169.254` di kluster Workload Identity; pod harus menjangkau server metadata untuk kredensial. [Penjaga SSRF](/id/claude-apps-gateway-deploy#threat-model-summary) gateway yang tertanam adalah pertahanan di sana.

284 

285 Gateway mencatat peringatan boot bahwa endpoint metadata dapat dijangkau dan menyarankan menerapkan NetworkPolicy egress. Di bawah Workload Identity peringatan itu diharapkan, karena pod membutuhkan endpoint.

286 </Tab>

287 </Tabs>

288 </Step>

289 

290 <Step title="Dorong URL gateway ke mesin pengembang">

291 Gateway sekarang berjalan, tetapi pengembang tidak dapat menjangkaunya dari `/login` sampai URL gateway berada di mesin mereka. Atur `forceLoginMethod` dan `forceLoginGatewayUrl` dalam [file pengaturan terkelola](/id/claude-apps-gateway#set-the-gateway-url) yang Anda terapkan ke setiap perangkat melalui MDM. Tidak ada opsi gateway di pemilih login untuk pengembang memilih secara manual.

292 </Step>

293</Steps>

294 

295<h2 id="terraform-reference">

296 Referensi Terraform

297</h2>

298 

299[Aset penyebaran referensi](https://github.com/anthropics/claude-code/tree/main/examples/gateway/gcp) mengotomatisasi jalur Cloud Run di halaman ini; aset konfigurasi dan gambar berlaku untuk kedua jalur:

300 

301* `setup.sh`: penyedia `gcloud` idempoten yang berjalan melalui jalur Cloud Run lengkap, dari mengaktifkan API melalui penyebaran pertama

302* `terraform/`: penyebaran yang sama sebagai infrastruktur-sebagai-kode, untuk penyebaran greenfield: penerapan bertarget untuk membuat repositori Artifact Registry, kemudian membangun dan mendorong gambar, kemudian penerapan penuh

303* `gateway.yaml.example` dan `Dockerfile` untuk gambar runtime distroless

304 

305Artefak default ingress Cloud Run ke `internal`, jadi tidak ada load balancer yang diperlukan. Untuk mencocokkan penyebaran produksi-di-belakang-ALB halaman ini, jalankan `setup.sh` dengan `INGRESS=internal-and-cloud-load-balancing`, atau atur variabel Terraform `ingress` ke `INGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER`. Artefak juga default lapisan invoker ke pemberian `run.invoker` `allUsers` daripada `--no-invoker-iam-check`, kebalikan dari panduan halaman ini; keduanya berfungsi, dan pilihan bergantung pada batasan kebijakan organisasi Anda.

306 

307Aset disediakan sebagai contoh kerja, bukan sebagai artefak produksi yang didukung; tinjau dan sesuaikan dengan lingkungan Anda.

308 

309<h2 id="troubleshooting">

310 Troubleshooting

311</h2>

312 

313Untuk boot gateway dan kesalahan login, lihat tabel [troubleshooting](/id/claude-apps-gateway-deploy#troubleshooting) yang tidak bergantung pada platform. Entri di bawah khusus untuk Google Cloud.

314 

315| Gejala | Penyebab | Perbaikan |

316| ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

317| Cloud Run mengembalikan `403 Forbidden` sebelum mencapai kontainer | Pemeriksaan IAM invoker masih diaktifkan | Terapkan dengan `--no-invoker-iam-check`, atau berikan peran `run.invoker` kepada `allUsers` dengan `--allow-unauthenticated` |

318| `--no-invoker-iam-check` ditolak dengan `invoker_iam_disabled is not currently available` | Diblokir oleh `constraints/run.managed.requireInvokerIam` | Gunakan `--allow-unauthenticated`. Jika Domain Restricted Sharing melalui `constraints/iam.allowedPolicyMemberDomains` juga memblokir itu, gunakan jalur GKE, yang mengekspos gateway di lapisan jaringan tanpa ikatan `allUsers`. |

319| `Container manifest type … must support amd64/linux` saat penyebaran | Gambar dibangun di host non-amd64, atau buildx memancarkan indeks gambar OCI | Bangun dengan `--platform=linux/amd64 --provenance=false` |

320| Boot gateway keluar dengan kesalahan timeout koneksi Postgres di Cloud Run | Layanan tidak terlampir ke VPC, atau Cloud SQL tidak memiliki IP pribadi di VPC itu; store berhenti menunggu setelah 5 detik | Terapkan dengan `--network` dan `--subnet` untuk egress VPC Langsung, dan buat instans Cloud SQL dengan `--no-assign-ip` dan `--network` menunjuk ke VPC yang sama |

321| Permintaan Agent Platform mengembalikan `403 PERMISSION_DENIED` | Runtime tidak menggunakan service account `claude-gateway`, atau model tidak diaktifkan di Model Garden untuk proyek | Atur `--service-account` di Cloud Run atau ikat Workload Identity di GKE, dan aktifkan setiap model Claude di Model Garden untuk wilayah target |

322| Respons streaming terpotong setelah durasi tetap | Timeout permintaan front-end: layanan backend load balancer di belakang GKE Ingress default ke 30 detik dan Cloud Run ke 300 detik | Lampirkan BackendConfig dengan `timeoutSec` yang ditingkatkan di GKE, atau terapkan dengan `--timeout=3600` di Cloud Run |

323 

324<h2 id="next-steps">

325 Langkah berikutnya

326</h2>

327 

328* [Referensi konfigurasi](/id/claude-apps-gateway-config): setiap opsi `gateway.yaml`, termasuk `managed.policies` dan `telemetry`

329* [Penyebaran dan operasi](/id/claude-apps-gateway-deploy): penyiapan IdP, pemeriksaan kesehatan, rotasi rahasia JWT, upgrade, dan model keamanan

330* [Gambaran umum gateway aplikasi Claude](/id/claude-apps-gateway): quickstart dan menghubungkan pengembang

Details

1> ## Documentation Index

2> 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.

4 

5# Batas pengeluaran gateway aplikasi Claude

6 

7> Batasi pengeluaran setiap pengembang melalui gateway aplikasi Claude berdasarkan hari, minggu, atau bulan. Tetapkan batas dengan Admin API dan gateway memberlakukannya secara langsung pada setiap permintaan.

8 

9Batas pengeluaran membatasi berapa banyak yang dapat dikeluarkan setiap pengembang melalui [gateway aplikasi Claude](/id/claude-apps-gateway) Anda dalam hari, minggu, atau bulan tertentu. Ketika seorang pengembang melampaui batas mereka, gateway mengembalikan `429` pada permintaan berikutnya dan memblokir mereka sampai periode disetel ulang atau admin menaikkan batas. Gunakan batas pengeluaran untuk memberikan setiap pengembang, grup, atau seluruh organisasi batas maksimal pada kredensial yang dibagikan semua orang.

10 

11Gateway aplikasi Claude meneruskan semua inferensi melalui satu kredensial hulu bersama, sehingga tagihan penyedia Anda mengatribusikan semuanya ke kredensial tersebut, bukan ke pengembang individual. Tanpa batas per-pengembang, satu armada agen yang tidak terkontrol dapat menghabiskan seluruh komitmen organisasi. Batas pengeluaran adalah tampilan per-pengembang gateway dan pemutus sirkuit di atas tagihan bersama tersebut.

12 

13<h2 id="set-a-cap">

14 Tetapkan batas

15</h2>

16 

17Dengan blok [`admin:`](/id/claude-apps-gateway-config#admin) yang dikonfigurasi dalam `gateway.yaml`, gateway melayani Admin API di `/v1/organizations/spend_limits` dan memberlakukan batas secara langsung pada setiap permintaan inferensi. Batas itu sendiri ditetapkan melalui API tersebut, bukan dalam `gateway.yaml`; setiap permintaan `POST /v1/organizations/spend_limits` membuat atau mengganti satu batas dari `{scope, amount, period}`. API mencerminkan bentuk kawat dari [Admin API](https://platform.claude.com/docs/en/manage-claude/admin-api) publik Anthropic untuk titik akhir batas pengeluaran, sehingga klien HTTP yang ditulis terhadap kontrak tersebut dapat menargetkan gateway dengan mengubah URL dasarnya.

18 

19Permintaan ini menetapkan default seluruh organisasi sebesar \$500 per bulan untuk setiap pengembang:

20 

21```bash theme={null}

22curl -sS https://claude-gateway.internal.example.com/v1/organizations/spend_limits \

23 -H "x-api-key: $GATEWAY_ADMIN_WRITE_KEY" \

24 -H "Content-Type: application/json" \

25 -d '{"scope": {"type": "organization"}, "amount": "50000", "period": "monthly"}'

26```

27 

28Permintaan ini menerapkan batas yang lebih ketat sebesar \$100 per hari pada setiap anggota grup `contractors`:

29 

30```bash theme={null}

31curl -sS https://claude-gateway.internal.example.com/v1/organizations/spend_limits \

32 -H "x-api-key: $GATEWAY_ADMIN_WRITE_KEY" \

33 -H "Content-Type: application/json" \

34 -d '{"scope": {"type": "rbac_group", "rbac_group_id": "contractors"}, "amount": "10000", "period": "daily"}'

35```

36 

37| Bidang | Nilai | Deskripsi |

38| ------------ | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

39| `scope.type` | `user`, `rbac_group`, `organization` | `user` menargetkan satu pengembang berdasarkan OpenID Connect (OIDC) `sub` mereka, ID pengguna stabil yang ditetapkan penyedia identitas Anda; teruskan sebagai `scope.user_id`. `rbac_group` menargetkan [grup IdP](/id/claude-apps-gateway-config#managed) berdasarkan nama; teruskan sebagai `scope.rbac_group_id`. `organization` adalah default seluruh organisasi. Gateway menerima ketiganya; `POST` publik Anthropic hanya untuk pengguna hari ini. |

40| `amount` | String angka keseluruhan sen USD, atau `null` | `null` tidak terbatas. `"0"` adalah batas nol, yang memblokir setiap permintaan. |

41| `period` | `daily`, `weekly`, `monthly` | Ruang lingkup dapat menahan satu batas per periode, dan masing-masing memberlakukan secara independen: pengembang diblokir jika melampaui salah satu dari mereka. |

42 

43Batas grup atau organisasi adalah default per-kursi yang diwarisi setiap anggota, bukan kumpulan bersama. Per periode, batas efektif pengembang diselesaikan dalam urutan ini: penggantian per-pengguna, kemudian yang paling ketat dari batas grup mereka, kemudian default organisasi, kemudian tidak terbatas. [`admin.group_limit_mode: max`](/id/claude-apps-gateway-config#admin) membalik tie-break multi-grup ke yang paling tidak ketat sebagai gantinya.

44 

45<h3 id="authenticate-to-the-admin-api">

46 Autentikasi ke Admin API

47</h3>

48 

49Kirim salah satu dari:

50 

51* Header `x-api-key` yang cocok dengan kunci dalam [`admin.write_keys`](/id/claude-apps-gateway-config#admin) untuk akses penuh, atau `admin.read_keys` untuk akses `GET`-saja. Setiap kunci membawa `id` yang muncul dalam log audit sebagai `admin-key:<id>`, jadi berikan Terraform, CI, dan setiap otomasi miliknya sendiri.

52* Token pembawa gateway yang klaim `groups` mencakup salah satu dari [`admin.admin_groups`](/id/claude-apps-gateway-config#admin). Ini adalah akses penuh dan audit sebagai `oidc:<sub>`, jadi lebih suka untuk admin manusia.

53 

54<h2 id="how-enforcement-works">

55 Cara penegakan bekerja

56</h2>

57 

58Pada setiap permintaan `/v1/messages`, gateway menyelesaikan batas pengembang dan pengeluaran periode-ke-tanggal dalam satu kueri Postgres. Jika mereka melampaui batas apa pun, permintaan mengembalikan `429` dengan `error.type: billing_error` dan header `x-should-retry: false`. Pesan adalah `spend limit reached`, diikuti oleh [`admin.blocked_message`](/id/claude-apps-gateway-config#admin) Anda jika ditetapkan.

59 

60`/v1/messages/count_tokens` dikecualikan. Penghitungan token gratis, jadi berjalan terlepas dari status batas.

61 

62Setelah setiap respons, meter penggunaan membaca jumlah token dari respons saat mengalir ke klien, menghargainya pada harga daftar USD, dan menambah penghitung Postgres untuk ketiga bucket periode. Meter adalah pembaca tunggal pada aliran, jadi byte klien tidak tersentuh dan kegagalan metering tidak merusak respons.

63 

64Batas pengeluaran memperkirakan pengeluaran dari jumlah token pada harga daftar USD; mereka adalah pemutus sirkuit, bukan faktur. Untuk penagihan yang berwenang, rekonsiliasi terhadap pelaporan penggunaan penyedia Anda sendiri, seperti Admin API Penggunaan & Biaya Anthropic, log invokasi di Bedrock, atau Cloud Monitoring di Google Cloud.

65 

66Penetapan harga menggunakan tabel yang sama yang digunakan Claude Code CLI untuk tampilan biaya sendiri, dengan kanonikalisasi ID model yang sama di seluruh Anthropic, Bedrock (`us.anthropic.…-v1:0`), Agent Platform (`claude-…@date`), dan bentuk ID Foundry. ID model yang tidak dapat ditempatkan tabel, seperti nama penerapan Foundry atau ARN profil inferensi, dihargai pada tingkat default model yang tidak dikenal sebesar \$5/\$25 per juta token input/output daripada nol, jadi ID yang tidak dikenali tidak dapat melewati batas dengan tidak diukur. Gateway memperingatkan saat boot dan sekali per ID saat runtime ketika model dihargai melalui fallback.

67 

68Pembatalan klien juga ditagih. Hulu melaporkan token output hanya dalam bingkai terminal aliran, jadi aliran yang dibatalkan tidak membawanya. Meter menyimpan perkiraan lantai konservatif dari ukuran konten yang dialirkan, sekitar empat karakter per token, dan menagihnya ketika dan hanya ketika bingkai penggunaan terminal hilang. Aliran lengkap selalu menagih jumlah yang dilaporkan hulu. Tanpa ini, pengembang yang dibatasi dapat mengalirkan output dan membatalkan setiap permintaan segera sebelum akhir, menghabiskan tanpa pernah dihitung.

69 

70<h3 id="postgres-availability">

71 Ketersediaan Postgres

72</h3>

73 

74Kueri pra-pemeriksaan Postgres dengan batas waktu dua detik. Jika toko tidak dapat dijangkau atau waktu habis, penegakan gagal terbuka secara default: permintaan dilanjutkan dan gateway mencatat peringatan. Atur [`enforcement.fail_closed_on_error: true`](/id/claude-apps-gateway-config#enforcement) untuk gagal tertutup sebagai gantinya, yang mengembalikan `429 billing_error` yang sama dengan pesan `spend limit unavailable`. Gagal-terbuka menjaga pemadaman toko agar tidak menjadi pemadaman inferensi; gagal-tertutup menjamin tidak ada pengeluaran yang tidak diukur.

75 

76<h2 id="admin-api-reference">

77 Referensi Admin API

78</h2>

79 

80Titik akhir di bawah ini disajikan di bawah `/v1/organizations/spend_limits`.

81 

82| Metode dan jalur | Deskripsi |

83| ---------------------------------------------- | ------------------------------------------------------------------------------------- |

84| `GET /v1/organizations/spend_limits` | Daftar batas yang dikonfigurasi. Kueri: `?limit=&after_id=&before_id=`. |

85| `POST /v1/organizations/spend_limits` | Buat atau ganti batas untuk `{scope, period}`. |

86| `GET /v1/organizations/spend_limits/{id}` | Ambil satu batas berdasarkan ID dengan awalan `spl_`. |

87| `DELETE /v1/organizations/spend_limits/{id}` | Hapus satu batas. Mengembalikan `{type: "spend_limit_deleted", id}`. |

88| `GET /v1/organizations/spend_limits/effective` | Batas yang diselesaikan dan pengeluaran periode-ke-tanggal per prinsipal per periode. |

89| `GET /v1/organizations/spend_limits/audit` | Jejak mutasi admin, terbaru-pertama. Kueri: `?limit=`. |

90 

91Konvensi mencerminkan Admin API Anthropic:

92 

93* `type` pada setiap objek

94* ID dengan awalan `spl_`

95* Jumlah sebagai string angka keseluruhan sen USD; `POST` menolak `currency` lain apa pun dengan `400`

96* Amplop kesalahan `{type: "error", error: {type, message}, request_id}`

97* Header respons `request-id` pada setiap respons admin, sukses atau kesalahan, cocok dengan `request_id` badan

98 

99Setiap mutasi menulis baris sebelum/sesudah ke `admin_audit` dalam transaksi yang sama, dikaitkan dengan `admin-key:<id>` atau `oidc:<sub>`.

100 

101Gateway melayani titik akhir batas pengeluaran saja. Permukaan Admin API lainnya, seperti antrian `spend_limit_increase_requests`, bukan bagian dari admin API gateway.

102 

103<h3 id="/effective">

104 `/effective`

105</h3>

106 

107`GET /v1/organizations/spend_limits/effective` mengembalikan skema `SpendSummary` Anthropic: setiap baris adalah prinsipal untuk periode, dengan batas yang diselesaikan, pengeluaran periode-ke-tanggal, dan objek `actor`. Perbedaan khusus gateway:

108 

109* `user_id` adalah OIDC `sub`.

110* `actor.name` dan `actor.email_address` adalah `null` sampai permintaan inferensi pertama prinsipal melalui gateway. Gateway tidak memiliki direktori pengguna; itu mencatat nilai terakhir terlihat dari JWT sesi setiap pengguna.

111* Setiap baris juga membawa array `groups`, grup IdP terakhir terlihat prinsipal. Ini adalah ekstensi gateway sehingga UI admin dapat menunjukkan setiap tingkat batas yang berlaku; klien berbentuk Anthropic mengabaikannya.

112* Tanpa filter `user_ids[]`, itu mencantumkan prinsipal dengan pengeluaran yang tercatat, karena gateway tidak dapat menghitung semua anggota organisasi.

113 

114Batas bersumber grup diselesaikan terhadap grup terakhir terlihat dengan tie-break `group_limit_mode` yang sama yang digunakan penegakan, jadi penampil menunjukkan batas yang benar-benar berlaku.

115 

116| Parameter kueri | Deskripsi |

117| ---------------- | --------------------------------------------------------------------------------------------------------------------------------- |

118| `user_ids[]` | Dapat diulang. Filter ke prinsipal spesifik berdasarkan OIDC `sub`. |

119| `period[]` | Dapat diulang. Filter ke baris `daily`, `weekly`, atau `monthly`. |

120| `sort` | `spend_desc` mencantumkan pengguna teratas terlebih dahulu. Memerlukan tepat satu `period[]`. |

121| `q` | Filter substring yang tidak peka huruf besar-kecil atas OIDC `sub`, email terakhir terlihat, dan nama tampilan terakhir terlihat. |

122| `limit` / `page` | Ukuran halaman, 1–1000 dengan default 20, dan kursor buram dari `next_page` respons sebelumnya. |

123 

124<Warning>

125 `q=` dan `user_ids[]=` naik string kueri GET, jadi proxy fronting apa pun atau penyeimbang beban menangkapnya dalam log akses. Jika kebijakan log PII Anda ketat, bersihkan parameter ini di sana.

126</Warning>

127 

128<h3 id="/audit">

129 `/audit`

130</h3>

131 

132Mengembalikan jejak mutasi batas pengeluaran: siapa yang mengubah batas mana, snapshot sebelum/sesudah, dan alasan opsional, terbaru-pertama. `has_more` tepat. Titik akhir ini mengikuti konvensi Admin API lokal daripada bentuk kawat pihak pertama.

133 

134<h3 id="pagination">

135 Paginasi

136</h3>

137 

138Daftar mentah halaman berdasarkan `after_id` dan `before_id`, yang merupakan ID `spl_…` yang saling eksklusif; hasil diurutkan berdasarkan pembuatan dan `has_more` mencerminkan arah traversal. `/effective` halaman berdasarkan token `next_page` buram yang diteruskan kembali sebagai `?page=`, dengan prinsipal diurutkan naik sehingga halaman tetap stabil saat pengeluaran sedang dicatat. `limit` adalah 1–1000, default 20, di keduanya.

139 

140<h2 id="data-lifecycle">

141 Siklus hidup data

142</h2>

143 

144Gateway menyimpan empat tabel terkait pengeluaran; sapuan per jam memberlakukan jendela retensi:

145 

146| Tabel | Isi | Retensi |

147| ------------------ | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |

148| `spend` | Penghitung periode-ke-tanggal per-prinsipal dalam sen | [`admin.spend_retention_months`](/id/claude-apps-gateway-config#admin), default 13 |

149| `spend_limits` | Batas yang dikonfigurasi | Sampai dihapus melalui API |

150| `admin_audit` | Jejak mutasi | [`admin.audit_retention_days`](/id/claude-apps-gateway-config#admin), default 365 |

151| `principal_emails` | Email terakhir terlihat setiap prinsipal, nama tampilan, dan grup IdP. Berisi PII. | [`admin.identity_retention_days`](/id/claude-apps-gateway-config#admin) sejak aktivitas terakhir, default 90 |

152 

153`identity_retention_days` sengaja lebih pendek dari `spend_retention_months`: identitas yang dihapus provisioning berhenti menyegarkan dan menua, sementara penghitung pengeluaran anonimnya tetap untuk pelaporan tahun-ke-tahun.

154 

155Ketika pengembang pergi, hapus batas per-pengguna apa pun melalui `DELETE /v1/organizations/spend_limits/{id}`; pengeluaran dan baris identitas mereka menua pada jendela retensi di atas. Untuk menghapus satu orang segera, untuk offboarding atau permintaan akses subjek data (DSAR), jalankan `DELETE FROM principal_emails WHERE principal = '<sub>'` langsung terhadap database gateway. Itu menghapus satu-satunya tabel yang menyimpan email, nama, dan grup mereka. Baris `spend` dan `admin_audit` mereferensikan OIDC `sub` pseudonim saja dan menua pada jendela mereka sendiri.

156 

157<h2 id="related">

158 Terkait

159</h2>

160 

161* [Konfigurasi `admin` dan `enforcement`](/id/claude-apps-gateway-config#admin): mengaktifkan Admin API dan menyetel retensi

162* [Panduan penerapan](/id/claude-apps-gateway-deploy#postgres): skema Postgres dan panduan cadangan

Details

63 Apa yang tersedia di sesi cloud63 Apa yang tersedia di sesi cloud

64</h3>64</h3>

65 65 

66Sesi cloud dimulai dari klon segar repositori Anda. Apa pun yang dikomit ke repo tersedia. Apa pun yang Anda instal atau konfigurasikan hanya di mesin Anda sendiri tidak tersedia; kebijakan organisasi Anda tiba secara terpisah melalui [pengaturan yang dikelola server](/id/server-managed-settings).66Sesi cloud dimulai dari klon segar repositori Anda. Apa pun yang dikomit ke repo tersedia. Apa pun yang Anda instal atau konfigurasikan hanya di mesin Anda sendiri tidak tersedia di sesi. Kebijakan organisasi Anda tiba secara terpisah melalui [pengaturan yang dikelola server](/id/server-managed-settings).

67 67 

68| | Tersedia di sesi cloud | Mengapa |68| | Tersedia di sesi cloud | Mengapa |

69| :----------------------------------------------------------------------------- | :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |69| :----------------------------------------------------------------------------- | :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


81| Token API statis dan kredensial | Tidak | Tidak ada penyimpanan rahasia khusus yang ada. Lihat di bawah |81| Token API statis dan kredensial | Tidak | Tidak ada penyimpanan rahasia khusus yang ada. Lihat di bawah |

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

83 83 

84Untuk membuat konfigurasi Anda sendiri tersedia di sesi cloud, komitkan ke repo; kebijakan organisasi tiba secara terpisah melalui [pengaturan yang dikelola server](/id/server-managed-settings). Penyimpanan rahasia khusus belum tersedia. Baik variabel lingkungan maupun skrip setup disimpan dalam konfigurasi lingkungan, terlihat oleh siapa pun yang dapat mengedit lingkungan itu. Jika Anda memerlukan rahasia di sesi cloud, tambahkan sebagai variabel lingkungan dengan visibilitas itu dalam pikiran.84Untuk membuat konfigurasi Anda sendiri tersedia di sesi cloud, komitkan ke repo; kebijakan organisasi tiba secara terpisah melalui [pengaturan yang dikelola server](/id/server-managed-settings).

85 

86Penyimpanan rahasia khusus belum tersedia. Baik variabel lingkungan maupun skrip setup disimpan dalam konfigurasi lingkungan, terlihat oleh siapa pun yang dapat mengedit lingkungan itu. Jika Anda memerlukan rahasia di sesi cloud, tambahkan sebagai variabel lingkungan dengan visibilitas itu dalam pikiran.

85 87 

86<h3 id="installed-tools">88<h3 id="installed-tools">

87 Alat yang diinstal89 Alat yang diinstal


143 Jalankan tes, mulai layanan, dan tambahkan paket145 Jalankan tes, mulai layanan, dan tambahkan paket

144</h3>146</h3>

145 147 

146Claude menjalankan tes sebagai bagian dari mengerjakan tugas. Minta di prompt Anda, seperti "perbaiki tes yang gagal di `tests/`" atau "jalankan pytest setelah setiap perubahan." Pelari tes seperti pytest, jest, dan cargo test bekerja langsung karena sudah diinstal sebelumnya.148Claude menjalankan tes sebagai bagian dari mengerjakan tugas. Minta di prompt Anda, seperti "perbaiki tes yang gagal di `tests/`" atau "jalankan pytest setelah setiap perubahan." Pelari tes seperti pytest, jest, dan cargo test sudah diinstal sebelumnya dan bekerja tanpa setup tambahan.

147 149 

148PostgreSQL dan Redis sudah diinstal tetapi tidak berjalan secara default. Minta Claude untuk memulai masing-masing selama sesi:150PostgreSQL dan Redis sudah diinstal tetapi tidak berjalan secara default. Minta Claude untuk memulai masing-masing selama sesi:

149 151 


186| Arsipkan lingkungan | Buka lingkungan untuk pengeditan dan pilih **Arsipkan**. Lingkungan yang diarsipkan disembunyikan dari pemilih tetapi sesi yang ada terus berjalan. |188| Arsipkan lingkungan | Buka lingkungan untuk pengeditan dan pilih **Arsipkan**. Lingkungan yang diarsipkan disembunyikan dari pemilih tetapi sesi yang ada terus berjalan. |

187| Atur default untuk `--remote` | Jalankan `/remote-env` di terminal Anda. Jika Anda memiliki satu lingkungan, perintah ini menunjukkan konfigurasi saat ini Anda. `/remote-env` hanya memilih default; tambahkan, edit, dan arsipkan lingkungan dari antarmuka web. |189| Atur default untuk `--remote` | Jalankan `/remote-env` di terminal Anda. Jika Anda memiliki satu lingkungan, perintah ini menunjukkan konfigurasi saat ini Anda. `/remote-env` hanya memilih default; tambahkan, edit, dan arsipkan lingkungan dari antarmuka web. |

188 190 

189Variabel lingkungan menggunakan format `.env` dengan satu pasangan `KEY=value` per baris. Jangan bungkus nilai dalam tanda kutip, karena tanda kutip disimpan sebagai bagian dari nilai.191Variabel lingkungan menggunakan format `.env` dengan satu pasangan `KEY=value` per baris. Jangan bungkus nilai dalam tanda kutip, karena tanda kutip disimpan sebagai bagian dari nilai. Contoh ini mendefinisikan tiga variabel:

190 192 

191```text theme={null}193```text theme={null}

192NODE_ENV=development194NODE_ENV=development


593 * \*.sentry.io595 * \*.sentry.io

594 * downloads.sentry-cdn.com596 * downloads.sentry-cdn.com

595 * http-intake.logs.datadoghq.com597 * http-intake.logs.datadoghq.com

598 * browser-intake-us5-datadoghq.com

596 * \*.datadoghq.com599 * \*.datadoghq.com

597 * \*.datadoghq.eu600 * \*.datadoghq.eu

598 * api.honeycomb.io601 * api.honeycomb.io


641 644 

642Ini membuat sesi cloud baru di claude.ai. Sesi mengkloning remote GitHub direktori saat ini Anda di cabang saat ini Anda, jadi dorong terlebih dahulu jika Anda memiliki komit lokal, karena VM mengkloning dari GitHub daripada mesin Anda. `--remote` bekerja dengan satu repositori pada satu waktu. Tugas berjalan di cloud sementara Anda terus bekerja secara lokal.645Ini membuat sesi cloud baru di claude.ai. Sesi mengkloning remote GitHub direktori saat ini Anda di cabang saat ini Anda, jadi dorong terlebih dahulu jika Anda memiliki komit lokal, karena VM mengkloning dari GitHub daripada mesin Anda. `--remote` bekerja dengan satu repositori pada satu waktu. Tugas berjalan di cloud sementara Anda terus bekerja secara lokal.

643 646 

647{/* min-version: 2.1.195 */}Mulai dari v2.1.195, CLI menampilkan daftar periksa langsung dari langkah-langkah penyiapan, seperti mengkloning repositori dan menjalankan [skrip penyiapan Anda](#setup-scripts), sementara kontainer cloud dimulai. Pesan yang Anda ketik saat kontainer sedang disediakan antri dan dikirim setelah sesi siap.

648 

644<Note>649<Note>

645 `--remote` membuat sesi cloud. `--remote-control` tidak terkait: itu mengekspos sesi CLI lokal untuk pemantauan dari web. Lihat [Remote Control](/id/remote-control).650 `--remote` membuat sesi cloud. `--remote-control` tidak terkait: itu mengekspos sesi CLI lokal untuk pemantauan dari web. Lihat [Remote Control](/id/remote-control).

646</Note>651</Note>


703Tarik sesi cloud ke terminal Anda menggunakan salah satu dari ini:708Tarik sesi cloud ke terminal Anda menggunakan salah satu dari ini:

704 709 

705* **Menggunakan `--teleport`**: dari baris perintah, jalankan `claude --teleport` untuk pemilih sesi interaktif, atau `claude --teleport <session-id>` untuk melanjutkan sesi tertentu secara langsung. Jika Anda memiliki perubahan yang tidak dikomit, Anda akan diminta untuk menyimpannya terlebih dahulu.710* **Menggunakan `--teleport`**: dari baris perintah, jalankan `claude --teleport` untuk pemilih sesi interaktif, atau `claude --teleport <session-id>` untuk melanjutkan sesi tertentu secara langsung. Jika Anda memiliki perubahan yang tidak dikomit, Anda akan diminta untuk menyimpannya terlebih dahulu.

706* **Menggunakan `/teleport`**: di dalam sesi CLI yang ada, jalankan `/teleport` (atau `/tp`) untuk membuka pemilih sesi yang sama tanpa memulai ulang Claude Code.711* **Menggunakan `/teleport`**: di dalam sesi CLI yang ada, jalankan `/teleport` atau `/tp` untuk membuka pemilih sesi yang sama tanpa memulai ulang Claude Code.

707* **Dari `/tasks`**: jalankan `/tasks` untuk melihat sesi latar belakang Anda, kemudian tekan `t` untuk teleport ke salah satunya712* **Dari `/tasks`**: jalankan `/tasks` untuk melihat sesi latar belakang Anda, kemudian tekan `t` untuk teleport ke salah satunya.

708* **Dari antarmuka web**: pilih **Buka di CLI** untuk menyalin perintah yang dapat Anda tempel ke terminal Anda713* **Dari antarmuka web**: pilih **Buka di CLI** untuk menyalin perintah yang dapat Anda tempel ke terminal Anda.

709 714 

710Saat Anda teleport sesi, Claude memverifikasi Anda berada di repositori yang benar, mengambil dan checkout cabang dari sesi cloud, dan memuat riwayat percakapan lengkap ke terminal Anda.715Saat Anda teleport sesi, Claude memverifikasi Anda berada di repositori yang benar, mengambil dan checkout cabang dari sesi cloud, dan memuat riwayat percakapan lengkap ke terminal Anda.

711 716 


752 757 

753Auto-compaction berjalan secara otomatis saat jendela konteks mendekati kapasitas. Untuk memicunya lebih awal, atur [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/id/env-vars) di [variabel lingkungan](#configure-your-environment) Anda. Misalnya, `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70` mengompak pada kapasitas 70% daripada menunggu hingga jendela hampir penuh. Untuk mengubah ukuran jendela efektif untuk perhitungan compaction, gunakan [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/id/env-vars).758Auto-compaction berjalan secara otomatis saat jendela konteks mendekati kapasitas. Untuk memicunya lebih awal, atur [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/id/env-vars) di [variabel lingkungan](#configure-your-environment) Anda. Misalnya, `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70` mengompak pada kapasitas 70% daripada menunggu hingga jendela hampir penuh. Untuk mengubah ukuran jendela efektif untuk perhitungan compaction, gunakan [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/id/env-vars).

754 759 

755[Subagents](/id/sub-agents) bekerja dengan cara yang sama seperti secara lokal. Claude dapat menelurkan mereka dengan alat Task untuk mengalihkan penelitian atau pekerjaan paralel ke jendela konteks terpisah, menjaga percakapan utama lebih ringan. Subagents yang didefinisikan di `.claude/agents/` repo Anda diambil secara otomatis. [Tim agen](/id/agent-teams) dimatikan secara default tetapi dapat diaktifkan dengan menambahkan `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` ke [variabel lingkungan](#configure-your-environment) Anda.760[Subagents](/id/sub-agents) bekerja dengan cara yang sama seperti secara lokal. Claude dapat menelurkan mereka dengan alat Task untuk mengalihkan penelitian atau pekerjaan paralel ke jendela konteks terpisah, menjaga percakapan utama lebih ringan. Subagents yang didefinisikan di `.claude/agents/` repo Anda diambil secara otomatis.

761 

762[Tim agen](/id/agent-teams) dimatikan secara default tetapi dapat diaktifkan dengan menambahkan `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` ke [variabel lingkungan](#configure-your-environment) Anda.

756 763 

757<h3 id="review-changes">764<h3 id="review-changes">

758 Tinjau perubahan765 Tinjau perubahan


770 Bagikan dari akun Enterprise atau Team777 Bagikan dari akun Enterprise atau Team

771</h4>778</h4>

772 779 

773Untuk akun Enterprise dan Team, dua opsi visibilitas adalah **Private** dan **Team**. Visibilitas Team membuat sesi terlihat oleh anggota lain dari organisasi claude.ai Anda. Verifikasi akses repositori diaktifkan secara default, berdasarkan akun GitHub yang terhubung ke akun penerima Anda. Nama tampilan akun Anda terlihat oleh semua penerima dengan akses. Sesi [Claude in Slack](/id/slack) secara otomatis dibagikan dengan visibilitas Team.780Untuk akun Enterprise dan Team, dua opsi visibilitas adalah **Private** dan **Team**. Visibilitas Team membuat sesi terlihat oleh anggota lain dari organisasi claude.ai Anda. [Claude in Slack](/id/slack) sesi secara otomatis dibagikan dengan visibilitas Team.

781 

782Verifikasi akses repositori diaktifkan secara default, berdasarkan akun GitHub yang terhubung ke akun penerima Anda. Nama tampilan akun Anda terlihat oleh semua penerima dengan akses.

774 783 

775<h4 id="share-from-a-max-or-pro-account">784<h4 id="share-from-a-max-or-pro-account">

776 Bagikan dari akun Max atau Pro785 Bagikan dari akun Max atau Pro


863 872 

864* Periksa [status.claude.com](https://status.claude.com) untuk insiden sesi cloud873* Periksa [status.claude.com](https://status.claude.com) untuk insiden sesi cloud

865* Coba lagi setelah satu menit, karena kapasitas disediakan sesuai permintaan874* Coba lagi setelah satu menit, karena kapasitas disediakan sesuai permintaan

866* Konfirmasi repositori Anda dapat dijangkau. Akun GitHub yang terhubung harus memiliki akses ke repositori di GitHub, baik melalui otorisasi Claude GitHub App atau token `gh` yang disinkronkan melalui `/web-setup` menginstal App di repositori tidak diperlukan. Lihat [GitHub authentication options](#github-authentication-options).875* Konfirmasi repositori Anda dapat dijangkau. Akun GitHub yang terhubung harus memiliki akses ke repositori di GitHub, baik melalui otorisasi Claude GitHub App atau token `gh` yang disinkronkan melalui `/web-setup`. Menginstal App di repositori tidak diperlukan. Lihat [GitHub authentication options](#github-authentication-options).

867 876 

868<h3 id="remote-control-session-expired-or-access-denied">877<h3 id="remote-control-session-expired-or-access-denied">

869 Remote Control session expired or access denied878 Remote Control session expired or access denied


873 882 

874* Jalankan `/login` secara lokal untuk menyegarkan kredensial Anda, kemudian sambungkan kembali883* Jalankan `/login` secara lokal untuk menyegarkan kredensial Anda, kemudian sambungkan kembali

875* Konfirmasi Anda masuk ke akun yang sama yang memiliki sesi884* Konfirmasi Anda masuk ke akun yang sama yang memiliki sesi

876* Jika Anda melihat `Remote Control may not be available for this organization`, admin Anda belum mengaktifkan sesi cloud untuk paket Anda885* Jika Anda melihat `Remote Control may not be available for this organization`, pemilik belum mengaktifkan sesi cloud untuk organisasi Anda

877 886 

878<h3 id="environment-expired">887<h3 id="environment-expired">

879 Environment expired888 Environment expired

Details

283```bash theme={null}283```bash theme={null}

284export ANTHROPIC_DEFAULT_FABLE_MODEL=claude-fable-5284export ANTHROPIC_DEFAULT_FABLE_MODEL=claude-fable-5

285export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-7285export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-7

286export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6286export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5

287export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5287export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5

288```288```

289 289 

Details

22| `claude -c -p "query"` | Lanjutkan melalui SDK | `claude -c -p "Check for type errors"` |22| `claude -c -p "query"` | Lanjutkan melalui SDK | `claude -c -p "Check for type errors"` |

23| `claude -r "<session>" "query"` | Lanjutkan sesi berdasarkan ID atau nama | `claude -r "auth-refactor" "Finish this PR"` |23| `claude -r "<session>" "query"` | Lanjutkan sesi berdasarkan ID atau nama | `claude -r "auth-refactor" "Finish this PR"` |

24| `claude update` | Perbarui ke versi terbaru | `claude update` |24| `claude update` | Perbarui ke versi terbaru | `claude update` |

25| `claude gateway` | Mulai server [gateway aplikasi Claude](/id/claude-apps-gateway) yang di-host sendiri, untuk administrator yang menerapkan SSO dan kebijakan di depan Claude Code di Bedrock, Vertex AI, atau Foundry. Memerlukan `--config` yang menunjuk ke [`gateway.yaml`](/id/claude-apps-gateway-config). Tersedia di Claude Code v2.1.195 dan lebih baru. | `claude gateway --config gateway.yaml` |

25| `claude install [version]` | Instal atau instal ulang binary asli. Menerima versi seperti `2.1.118`, atau `stable` atau `latest`. Lihat [Instal versi tertentu](/id/setup#install-a-specific-version) | `claude install stable` |26| `claude install [version]` | Instal atau instal ulang binary asli. Menerima versi seperti `2.1.118`, atau `stable` atau `latest`. Lihat [Instal versi tertentu](/id/setup#install-a-specific-version) | `claude install stable` |

26| `claude auth login` | Masuk ke akun Anthropic Anda. Gunakan `--email` untuk mengisi email Anda sebelumnya, `--sso` untuk memaksa autentikasi SSO, dan `--console` untuk masuk dengan Anthropic Console untuk penagihan penggunaan API alih-alih langganan Claude | `claude auth login --console` |27| `claude auth login` | Masuk ke akun Anthropic Anda. Gunakan `--email` untuk mengisi email Anda sebelumnya, `--sso` untuk memaksa autentikasi SSO, dan `--console` untuk masuk dengan Anthropic Console untuk penagihan penggunaan API alih-alih langganan Claude | `claude auth login --console` |

27| `claude auth logout` | Keluar dari akun Anthropic Anda | `claude auth logout` |28| `claude auth logout` | Keluar dari akun Anthropic Anda | `claude auth logout` |


93| `--max-budget-usd` | Jumlah dolar maksimum untuk dihabiskan pada panggilan API sebelum berhenti (mode cetak saja) | `claude -p --max-budget-usd 5.00 "query"` |94| `--max-budget-usd` | Jumlah dolar maksimum untuk dihabiskan pada panggilan API sebelum berhenti (mode cetak saja) | `claude -p --max-budget-usd 5.00 "query"` |

94| `--max-turns` | Batasi jumlah putaran agentic (mode cetak saja). Keluar dengan kesalahan saat batas tercapai. Tidak ada batas secara default | `claude -p --max-turns 3 "query"` |95| `--max-turns` | Batasi jumlah putaran agentic (mode cetak saja). Keluar dengan kesalahan saat batas tercapai. Tidak ada batas secara default | `claude -p --max-turns 3 "query"` |

95| `--mcp-config` | Muat server MCP dari file JSON atau string (dipisahkan spasi) | `claude --mcp-config ./mcp.json` |96| `--mcp-config` | Muat server MCP dari file JSON atau string (dipisahkan spasi) | `claude --mcp-config ./mcp.json` |

96| `--model` | Menetapkan model untuk sesi saat ini dengan alias untuk model terbaru (`sonnet`, `opus`, `haiku`, atau `fable`) atau nama lengkap model. Menimpa pengaturan [`model`](/id/settings#available-settings) dan [`ANTHROPIC_MODEL`](/id/model-config#environment-variables) | `claude --model claude-sonnet-4-6` |97| `--model` | Menetapkan model untuk sesi saat ini dengan alias untuk model terbaru (`sonnet`, `opus`, `haiku`, atau `fable`) atau nama lengkap model. Menimpa pengaturan [`model`](/id/settings#available-settings) dan [`ANTHROPIC_MODEL`](/id/model-config#environment-variables) | `claude --model claude-sonnet-5` |

97| `--name`, `-n` | Atur nama tampilan untuk sesi, ditampilkan di `/resume` dan judul terminal. Anda dapat melanjutkan sesi bernama dengan `claude --resume <name>`. <br /><br />[`/rename`](/id/commands) mengubah nama di tengah sesi dan juga menampilkannya di bilah prompt | `claude -n "my-feature-work"` |98| `--name`, `-n` | Atur nama tampilan untuk sesi, ditampilkan di `/resume` dan judul terminal. Anda dapat melanjutkan sesi bernama dengan `claude --resume <name>`. <br /><br />[`/rename`](/id/commands) mengubah nama di tengah sesi dan juga menampilkannya di bilah prompt | `claude -n "my-feature-work"` |

98| `--no-chrome` | Nonaktifkan [integrasi browser Chrome](/id/chrome) untuk sesi ini | `claude --no-chrome` |99| `--no-chrome` | Nonaktifkan [integrasi browser Chrome](/id/chrome) untuk sesi ini | `claude --no-chrome` |

99| `--no-session-persistence` | Nonaktifkan persistensi sesi sehingga sesi tidak disimpan ke disk dan tidak dapat dilanjutkan. Mode cetak saja. Variabel lingkungan [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/id/env-vars) melakukan hal yang sama dalam mode apa pun | `claude -p --no-session-persistence "query"` |100| `--no-session-persistence` | Nonaktifkan persistensi sesi sehingga sesi tidak disimpan ke disk dan tidak dapat dilanjutkan. Mode cetak saja. Variabel lingkungan [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/id/env-vars) melakukan hal yang sama dalam mode apa pun | `claude -p --no-session-persistence "query"` |

commands.md +2 −0

Details

70| `/cost` | Alias untuk `/usage` |70| `/cost` | Alias untuk `/usage` |

71| `/debug [description]` | **[Skill](/id/skills#bundled-skills).** Aktifkan debug logging untuk sesi saat ini dan troubleshoot masalah dengan membaca session debug log. Debug logging dimatikan secara default kecuali Anda memulai dengan `claude --debug`, jadi menjalankan `/debug` di tengah sesi mulai menangkap log dari titik itu ke depan. Secara opsional jelaskan masalah untuk fokus analisis |71| `/debug [description]` | **[Skill](/id/skills#bundled-skills).** Aktifkan debug logging untuk sesi saat ini dan troubleshoot masalah dengan membaca session debug log. Debug logging dimatikan secara default kecuali Anda memulai dengan `claude --debug`, jadi menjalankan `/debug` di tengah sesi mulai menangkap log dari titik itu ke depan. Secara opsional jelaskan masalah untuk fokus analisis |

72| `/deep-research <question>` | **[Workflow](/id/workflows#bundled-workflows).** Menyebarkan pencarian web pada pertanyaan, mengambil dan cross-check sumber, dan mensintesis laporan yang dikutip |72| `/deep-research <question>` | **[Workflow](/id/workflows#bundled-workflows).** Menyebarkan pencarian web pada pertanyaan, mengambil dan cross-check sumber, dan mensintesis laporan yang dikutip |

73| `/design-login` | Otorisasi akses design-system untuk `/design-sync` dengan akun claude.ai Anda |

74| `/design-sync [hint]` | **[Skill](/id/skills#bundled-skills).** Konversi design system React repo Anda dan unggah ke [Claude Design](https://claude.ai/design), sehingga desain yang dihasilkannya menggunakan komponen nyata Anda. Secara opsional beri nama design system, misalnya `/design-sync Acme DS`. Sinkronisasi pertama kali memverifikasi setiap komponen dan dapat memakan waktu beberapa jam pada repo besar. Tersedia di Anthropic API; di Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry alat yang mendasarinya tidak dapat menjangkau claude.ai, jadi perintah tidak tersedia |

73| `/desktop` | Lanjutkan sesi saat ini di aplikasi Claude Code Desktop. Memerlukan macOS atau Windows dan langganan Claude. Alias: `/app` |75| `/desktop` | Lanjutkan sesi saat ini di aplikasi Claude Code Desktop. Memerlukan macOS atau Windows dan langganan Claude. Alias: `/app` |

74| `/diff` | Buka penampil diff interaktif yang menampilkan perubahan yang belum di-commit dan per-turn diffs. Gunakan panah kiri/kanan untuk beralih antara git diff saat ini dan turn Claude individual, dan atas/bawah untuk menelusuri file |76| `/diff` | Buka penampil diff interaktif yang menampilkan perubahan yang belum di-commit dan per-turn diffs. Gunakan panah kiri/kanan untuk beralih antara git diff saat ini dan turn Claude individual, dan atas/bawah untuk menelusuri file |

75| `/doctor` | Diagnosa dan verifikasi instalasi dan pengaturan Claude Code Anda. Hasil ditampilkan dengan ikon status. Tekan `f` untuk membuat Claude memperbaiki masalah yang dilaporkan |77| `/doctor` | Diagnosa dan verifikasi instalasi dan pengaturan Claude Code Anda. Hasil ditampilkan dengan ikon status. Tekan `f` untuk membuat Claude memperbaiki masalah yang dilaporkan |

computer-use.md +3 −3

Details

112 Satu sesi pada satu waktu112 Satu sesi pada satu waktu

113</h3>113</h3>

114 114 

115Computer use menahan kunci machine-wide saat aktif. Jika sesi Claude Code lain sudah menggunakan komputer Anda, upaya baru gagal dengan pesan yang memberi tahu Anda sesi mana yang menahan kunci. Selesaikan atau keluar dari sesi itu terlebih dahulu.115Computer use menahan kunci machine-wide dari tindakan computer use pertama hingga sesi yang mengambilnya keluar. {/* min-version: 2.1.195 */}Mulai dari v2.1.195, menyelesaikan tugas tidak melepaskan kunci; hanya keluar dari sesi yang melakukannya. Jika sesi Claude Code lain sudah menggunakan komputer Anda, upaya baru gagal dengan pesan yang memberi tahu Anda sesi mana yang menahan kunci. Keluar dari sesi itu terlebih dahulu.

116 116 

117<h3 id="apps-are-hidden-while-claude-works">117<h3 id="apps-are-hidden-while-claude-works">

118 Aplikasi disembunyikan saat Claude bekerja118 Aplikasi disembunyikan saat Claude bekerja


134 Hentikan kapan saja134 Hentikan kapan saja

135</h3>135</h3>

136 136 

137Ketika Claude memperoleh kunci, notifikasi macOS muncul: "Claude is using your computer · press Esc to stop." Tekan `Esc` di mana saja untuk membatalkan tindakan saat ini segera, atau tekan `Ctrl+C` di terminal. Bagaimanapun, Claude melepaskan kunci, menampilkan kembali aplikasi Anda, dan mengembalikan kontrol kepada Anda.137Ketika Claude memperoleh kunci, notifikasi macOS muncul: "Claude is using your computer · press Esc to stop." Tekan `Esc` di mana saja untuk membatalkan tindakan saat ini segera, atau tekan `Ctrl+C` di terminal. Bagaimanapun, Claude berhenti, menampilkan kembali aplikasi Anda, dan mengembalikan kontrol kepada Anda. Sesi mempertahankan [kunci computer use](#one-session-at-a-time) hingga keluar.

138 138 

139Notifikasi kedua muncul ketika Claude selesai.139Notifikasi kedua muncul ketika Claude selesai.

140 140 


223 "Computer use is in use by another Claude session"223 "Computer use is in use by another Claude session"

224</h3>224</h3>

225 225 

226Sesi Claude Code lain menahan kunci. Selesaikan tugas dalam sesi itu atau keluar darinya. Jika sesi lain mogok, kunci dilepaskan secara otomatis ketika Claude mendeteksi proses tidak lagi berjalan.226Sesi Claude Code lain menahan kunci, yang disimpannya sampai keluar. Keluar dari sesi itu. Jika sesi lain mogok, kunci dilepaskan secara otomatis ketika Claude mendeteksi proses tidak lagi berjalan.

227 227 

228<h3 id="macos-permissions-prompt-keeps-reappearing">228<h3 id="macos-permissions-prompt-keeps-reappearing">

229 macOS permissions prompt keeps reappearing229 macOS permissions prompt keeps reappearing

Details

1615* **Bersihkan antar tugas**: jalankan `/clear` saat beralih ke pekerjaan yang tidak terkait. Percakapan lama mengalahkan file yang Anda butuhkan selanjutnya dan menghabiskan token pada setiap pesan.1615* **Bersihkan antar tugas**: jalankan `/clear` saat beralih ke pekerjaan yang tidak terkait. Percakapan lama mengalahkan file yang Anda butuhkan selanjutnya dan menghabiskan token pada setiap pesan.

1616* **Delegasikan pembacaan besar**: kirim penelitian ke [subagent](/id/sub-agents) sehingga konten file tetap berada di jendela konteksnya, bukan milik Anda.1616* **Delegasikan pembacaan besar**: kirim penelitian ke [subagent](/id/sub-agents) sehingga konten file tetap berada di jendela konteksnya, bukan milik Anda.

1617 1617 

1618Jika Anda membutuhkan jendela yang lebih besar daripada percakapan yang lebih kecil, Fable 5, Opus 4.6 dan yang lebih baru, dan Sonnet 4.6 mendukung jendela konteks 1 juta token. Lihat [Extended context](/id/model-config#extended-context) untuk ketersediaan menurut paket dan cara memilih varian model `[1m]`. Pemadatan bekerja dengan cara yang sama pada batas yang lebih besar.1618Jika Anda membutuhkan jendela yang lebih besar daripada percakapan yang lebih kecil, Fable 5, Sonnet 5, Opus 4.6 dan yang lebih baru, dan Sonnet 4.6 mendukung jendela konteks 1 juta token. Lihat [Extended context](/id/model-config#extended-context) untuk ketersediaan menurut paket dan cara memilih varian model `[1m]`. Sonnet 5 berjalan pada 1M tanpa varian `[1m]` untuk dipilih; lihat [Sonnet 5 context window](/id/model-config#sonnet-5-context-window) untuk ambang batas auto-compaction-nya dan pengecualian gateway LLM. Pemadatan bekerja dengan cara yang sama pada batas yang lebih besar.

1619 1619 

1620<h2 id="check-your-own-session">1620<h2 id="check-your-own-session">

1621 Periksa sesi Anda sendiri1621 Periksa sesi Anda sendiri

costs.md +1 −1

Details

51 Untuk organisasi dengan batas laju kustom, lalu lintas Claude Code di ruang kerja ini dihitung terhadap batas laju API keseluruhan organisasi Anda. Anda dapat menetapkan [batas laju ruang kerja](https://platform.claude.com/docs/id/api/rate-limits#setting-lower-limits-for-workspaces) di halaman Batas ruang kerja ini di Claude Console untuk membatasi bagian Claude Code dan melindungi beban kerja produksi lainnya.51 Untuk organisasi dengan batas laju kustom, lalu lintas Claude Code di ruang kerja ini dihitung terhadap batas laju API keseluruhan organisasi Anda. Anda dapat menetapkan [batas laju ruang kerja](https://platform.claude.com/docs/id/api/rate-limits#setting-lower-limits-for-workspaces) di halaman Batas ruang kerja ini di Claude Console untuk membatasi bagian Claude Code dan melindungi beban kerja produksi lainnya.

52</Note>52</Note>

53 53 

54Di Bedrock, Vertex, dan Foundry, Claude Code tidak mengirim metrik dari cloud Anda. Organisasi yang sudah merutekan Claude Code melalui [gateway LLM](/id/llm-gateway) dapat melacak pengeluaran di sana, karena gateway melihat setiap permintaan.54Di Bedrock, Vertex, dan Foundry, Claude Code tidak mengirim metrik dari cloud Anda. Gateway [Claude apps gateway](/id/claude-apps-gateway) yang di-host sendiri menyediakan atribusi penggunaan per pengguna, metrik OTLP dengan penghitungan token, dan [batas pengeluaran per pengguna](/id/claude-apps-gateway-spend-limits) pada penyedia ini. Organisasi yang merutekan Claude Code melalui [gateway LLM](/id/llm-gateway) yang berbeda dapat melacak pengeluaran di gateway sebagai gantinya, karena gateway melihat setiap permintaan.

55 55 

56<h3 id="rate-limit-recommendations">56<h3 id="rate-limit-recommendations">

57 Rekomendasi batas laju57 Rekomendasi batas laju

data-usage.md +2 −2

Details

39 39 

40Setelah prompt penilaian, Anda mungkin melihat pertanyaan tindak lanjut terpisah yang menanyakan "Dapatkah Anthropic melihat transkrip sesi Anda untuk membantu kami meningkatkan Claude Code?". Ini adalah langkah kedua opsional yang berbeda dari penilaian:40Setelah prompt penilaian, Anda mungkin melihat pertanyaan tindak lanjut terpisah yang menanyakan "Dapatkah Anthropic melihat transkrip sesi Anda untuk membantu kami meningkatkan Claude Code?". Ini adalah langkah kedua opsional yang berbeda dari penilaian:

41 41 

42* **Ya**: mengunggah transkrip percakapan Anda, transkrip subagen apa pun, dan file log sesi mentah dari disk ke Anthropic. Pola kunci API dan token yang dikenal diredaksi sebelum pengunggahan. Kode sumber, konten file, dan konten percakapan lainnya diunggah apa adanya. Transkrip yang dibagikan disimpan hingga 6 bulan.42* **Ya**: mengunggah transkrip percakapan Anda, transkrip subagen apa pun, dan file log sesi mentah dari disk ke Anthropic. Pola kunci API dan token yang dikenal diredaksi sebelum pengunggahan. Kode sumber, konten file, dan konten percakapan lainnya diunggah apa adanya. Transkrip yang dibagikan disimpan hingga 6 bulan. Di Bedrock, Vertex AI, Foundry, dan sesi [gateway aplikasi Claude](/id/claude-apps-gateway) yang masuk, Ya menulis payload yang sama ke arsip lokal di bawah `~/.claude/feedback-bundles/` alih-alih mengunggah; tidak ada yang meninggalkan mesin Anda sampai Anda meneruskan file tersebut.

43* **Tidak**: menolak tanpa mengirim apa pun43* **Tidak**: menolak tanpa mengirim apa pun

44* **Jangan tanya lagi**: menolak dan menghentikan pertanyaan tindak lanjut ini agar tidak muncul di sesi mendatang44* **Jangan tanya lagi**: menolak dan menghentikan pertanyaan tindak lanjut ini agar tidak muncul di sesi mendatang

45 45 


127 Perilaku default menurut penyedia API127 Perilaku default menurut penyedia API

128</h2>128</h2>

129 129 

130Secara default, pelaporan kesalahan, telemetri, dan pelaporan bug dinonaktifkan saat menggunakan Bedrock, Vertex, Foundry, atau Claude Platform on AWS. Survei kualitas sesi dan pemeriksaan keamanan domain WebFetch adalah pengecualian dan berjalan terlepas dari penyedia. Anda dapat menolak semua lalu lintas non-esensial, termasuk survei, sekaligus dengan mengatur `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Variabel ini tidak mempengaruhi pemeriksaan WebFetch, yang memiliki opt-out tersendiri. Berikut adalah perilaku default lengkapnya:130Secara default, pelaporan kesalahan, telemetri, dan pelaporan bug dinonaktifkan saat menggunakan Bedrock, Vertex, Foundry, atau Claude Platform on AWS. Survei kualitas sesi dan pemeriksaan keamanan domain WebFetch adalah pengecualian dan berjalan terlepas dari penyedia. Pada sesi [gateway aplikasi Claude](/id/claude-apps-gateway) yang masuk, analitik penggunaan, pelaporan kesalahan, dan penilaian survei ke Anthropic dinonaktifkan oleh kredensial gateway itu sendiri, tanpa pengaturan untuk mengaktifkannya kembali. Anda dapat menolak semua lalu lintas non-esensial, termasuk survei, sekaligus dengan mengatur `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`. Variabel ini tidak mempengaruhi pemeriksaan WebFetch, yang memiliki opt-out tersendiri. Berikut adalah perilaku default lengkapnya:

131 131 

132| Layanan | Claude API | Vertex API | Bedrock API | Foundry API | Claude Platform on AWS |132| Layanan | Claude API | Vertex API | Bedrock API | Foundry API | Claude Platform on AWS |

133| ---------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |133| ---------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |

Details

19Untuk detail tentang kategori tertentu, lanjutkan dengan perintah khusus:19Untuk detail tentang kategori tertentu, lanjutkan dengan perintah khusus:

20 20 

21| Perintah | Menampilkan |21| Perintah | Menampilkan |

22| :--------------- | :---------------------------------------------------------------------------------------------------------------------- |22| :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

23| `/memory` | File `CLAUDE.md` dan rules mana yang dimuat, ditambah entri auto-memory |23| `/memory` | File `CLAUDE.md` dan rules mana yang dimuat, ditambah entri auto-memory |

24| `/skills` | Skill yang tersedia dari sumber proyek, pengguna, dan plugin |24| `/skills` | Skill yang tersedia dari sumber proyek, pengguna, dan plugin |

25| `/agents` | Subagent yang dikonfigurasi dan pengaturannya |25| `/agents` | Subagent yang dikonfigurasi dan pengaturannya |

26| `/hooks` | Konfigurasi hook aktif |26| `/hooks` | Konfigurasi hook aktif |

27| `/mcp` | Server MCP yang terhubung dan statusnya |27| `/mcp` | Server MCP yang terhubung dan statusnya |

28| `/permissions` | Aturan allow dan deny yang diselesaikan saat ini berlaku |28| `/permissions` | Aturan allow dan deny yang diselesaikan saat ini berlaku |

29| `/doctor` | Diagnostik konfigurasi: kunci tidak valid, kesalahan schema, kesehatan instalasi |29| `/doctor` | Diagnostik konfigurasi: kunci tidak valid, kesalahan schema, kesehatan instalasi. {/* min-version: 2.1.196 */}Mulai dari v2.1.196, juga melaporkan nama [subagent](/id/sub-agents) duplikat yang ditentukan dalam cakupan yang sama dan menandai mana yang aktif |

30| `/debug [issue]` | Mengaktifkan debug logging untuk sesi dan meminta Claude untuk mendiagnosis menggunakan output log dan jalur pengaturan |30| `/debug [issue]` | Mengaktifkan debug logging untuk sesi dan meminta Claude untuk mendiagnosis menggunakan output log dan jalur pengaturan |

31| `/status` | Sumber pengaturan aktif, termasuk apakah pengaturan terkelola berlaku |31| `/status` | Sumber pengaturan aktif, termasuk apakah pengaturan terkelola berlaku |

32 32 

desktop.md +10 −6

Details

8 8 

9Aplikasi Claude Desktop memiliki tiga tab: **Chat** untuk percakapan, **Cowork** untuk [Dispatch dan pekerjaan agentic yang lebih panjang](https://claude.com/product/cowork), dan **Code** untuk pengembangan perangkat lunak. Halaman ini adalah referensi untuk tab Code.9Aplikasi Claude Desktop memiliki tiga tab: **Chat** untuk percakapan, **Cowork** untuk [Dispatch dan pekerjaan agentic yang lebih panjang](https://claude.com/product/cowork), dan **Code** untuk pengembangan perangkat lunak. Halaman ini adalah referensi untuk tab Code.

10 10 

11<CardGroup cols={2}>11<CardGroup cols={3}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon13 Universal build for Intel and Apple Silicon

14 </Card>14 </Card>


16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors17 For x64 processors

18 </Card>18 </Card>

19 

20 <Card title="Get Claude for Linux (beta)" icon="linux" href="/en/desktop-linux">

21 apt or .deb for Ubuntu and Debian

22 </Card>

19</CardGroup>23</CardGroup>

20 24 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.25For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). On Linux, install with apt; see [Claude Desktop on Linux](/en/desktop-linux).

22 26 

23Setelah menginstal, luncurkan Claude, masuk, dan klik tab **Code**. Pertama kali Anda membukanya di Windows, Anda perlu menginstal [Git for Windows](https://git-scm.com/downloads/win); mulai ulang aplikasi setelah menginstalnya. Untuk panduan sesi pertama Anda, lihat [panduan Memulai](/id/desktop-quickstart).27Setelah menginstal, luncurkan Claude, masuk, dan klik tab **Code**. Pertama kali Anda membukanya di Windows, Anda perlu menginstal [Git for Windows](https://git-scm.com/downloads/win); mulai ulang aplikasi setelah menginstalnya. Untuk panduan sesi pertama Anda, lihat [panduan Memulai](/id/desktop-quickstart).

24 28 


88 92 

89<span id="auto-mode-availability" />93<span id="auto-mode-availability" />

90 94 

91Auto mode adalah pratinjau penelitian yang tersedia untuk semua pengguna di Anthropic API dan memerlukan Claude Opus 4.6 atau lebih baru, atau Sonnet 4.6. Dalam penyebaran Enterprise yang merutekan Desktop ke Google Cloud Vertex AI, auto mode dimatikan sampai Anda [mengatur `CLAUDE_CODE_ENABLE_AUTO_MODE`](/id/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry), dan hanya Claude Opus 4.7 dan Opus 4.8 yang didukung di sana.95Auto mode adalah pratinjau penelitian yang tersedia untuk semua pengguna di Anthropic API dan memerlukan Claude Opus 4.6 atau lebih baru, atau Sonnet 4.6 atau lebih baru. Dalam penyebaran Enterprise yang merutekan Desktop ke Google Cloud Vertex AI, auto mode dimatikan sampai Anda [mengatur `CLAUDE_CODE_ENABLE_AUTO_MODE`](/id/permission-modes#enable-auto-mode-on-bedrock-vertex-ai-or-foundry), dan hanya Claude Sonnet 5, Opus 4.7, dan Opus 4.8 yang didukung di sana.

92 96 

93<Tip title="Best practice">97<Tip title="Best practice">

94 Mulai tugas kompleks di Plan mode sehingga Claude memetakan pendekatan sebelum membuat perubahan. Setelah Anda menyetujui rencana, beralih ke Auto accept edits atau Ask permissions untuk menjalankannya. Lihat [explore first, then plan, then code](/id/best-practices#explore-first-then-plan-then-code) untuk informasi lebih lanjut tentang alur kerja ini.98 Mulai tugas kompleks di Plan mode sehingga Claude memetakan pendekatan sebelum membuat perubahan. Setelah Anda menyetujui rencana, beralih ke Auto accept edits atau Ask permissions untuk menjalankannya. Lihat [explore first, then plan, then code](/id/best-practices#explore-first-then-plan-then-code) untuk informasi lebih lanjut tentang alur kerja ini.


600 604 

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

602 606 

603[Extended thinking](/id/model-config#extended-thinking) diaktifkan secara default, yang meningkatkan kinerja pada tugas penalaran kompleks tetapi menggunakan token tambahan. Untuk menonaktifkan pemikiran, atur `MAX_THINKING_TOKENS` ke `0` di editor lingkungan lokal; ini tidak berpengaruh pada Fable 5, yang selalu menggunakan extended thinking. Pada [penyedia pihak ketiga](/id/third-party-integrations), `0` menghilangkan parameter `thinking` sebagai gantinya, dan model adaptive-reasoning mungkin masih berpikir. Pada model dengan [adaptive reasoning](/id/model-config#adjust-effort-level), nilai `MAX_THINKING_TOKENS` apa pun yang lain diabaikan karena adaptive reasoning mengontrol kedalaman pemikiran sebagai gantinya. Pada Opus 4.6 dan Sonnet 4.6, atur `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` ke `1` untuk menggunakan anggaran pemikiran tetap; Opus 4.7 dan yang lebih baru selalu menggunakan adaptive reasoning dan tidak memiliki mode anggaran tetap.607[Extended thinking](/id/model-config#extended-thinking) diaktifkan secara default, yang meningkatkan kinerja pada tugas penalaran kompleks tetapi menggunakan token tambahan. Untuk menonaktifkan pemikiran, atur `MAX_THINKING_TOKENS` ke `0` di editor lingkungan lokal; ini tidak berpengaruh pada Fable 5, yang selalu menggunakan extended thinking. Pada [penyedia pihak ketiga](/id/third-party-integrations), `0` menghilangkan parameter `thinking` sebagai gantinya, dan model adaptive-reasoning mungkin masih berpikir. Pada model dengan [adaptive reasoning](/id/model-config#adjust-effort-level), nilai `MAX_THINKING_TOKENS` apa pun yang lain diabaikan karena adaptive reasoning mengontrol kedalaman pemikiran sebagai gantinya. Pada Opus 4.6 dan Sonnet 4.6, atur `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` ke `1` untuk menggunakan anggaran pemikiran tetap; Fable 5, Sonnet 5, dan Opus 4.7 dan yang lebih baru selalu menggunakan adaptive reasoning dan tidak memiliki mode anggaran tetap.

604 608 

605<h3 id="cloud-sessions">609<h3 id="cloud-sessions">

606 Cloud sessions610 Cloud sessions


822Fitur berikut hanya tersedia di CLI atau ekstensi VS Code, kecuali jika dicatat:826Fitur berikut hanya tersedia di CLI atau ekstensi VS Code, kecuali jika dicatat:

823 827 

824* **Penyedia pihak ketiga**: Desktop terhubung ke API Anthropic secara default. Penerapan enterprise dapat mengonfigurasi Vertex AI dan penyedia gateway melalui [pengaturan terkelola](https://support.claude.com/en/articles/12622667-enterprise-configuration). Untuk Bedrock atau Foundry di CLI, lihat [quickstart](/id/quickstart). Sebagai pengecualian terhadap bagian di atas, [Cowork on 3P research preview](https://claude.com/docs/cowork/3p/overview) menjalankan tab Code di Bedrock, Vertex AI, Foundry, atau gateway LLM yang di-host sendiri.828* **Penyedia pihak ketiga**: Desktop terhubung ke API Anthropic secara default. Penerapan enterprise dapat mengonfigurasi Vertex AI dan penyedia gateway melalui [pengaturan terkelola](https://support.claude.com/en/articles/12622667-enterprise-configuration). Untuk Bedrock atau Foundry di CLI, lihat [quickstart](/id/quickstart). Sebagai pengecualian terhadap bagian di atas, [Cowork on 3P research preview](https://claude.com/docs/cowork/3p/overview) menjalankan tab Code di Bedrock, Vertex AI, Foundry, atau gateway LLM yang di-host sendiri.

825* **Linux**: aplikasi desktop hanya tersedia di macOS dan Windows. Di Linux, gunakan [CLI](/id/quickstart).829* **Linux (beta)**: Computer Use belum tersedia di aplikasi desktop Linux. Lihat [Claude Desktop on Linux](/id/desktop-linux).

826* **Saran kode inline**: Desktop tidak menyediakan saran gaya autocomplete. Ini bekerja melalui prompt percakapan dan perubahan kode eksplisit.830* **Saran kode inline**: Desktop tidak menyediakan saran gaya autocomplete. Ini bekerja melalui prompt percakapan dan perubahan kode eksplisit.

827* **Tim agent**: sesi Claude Code paralel yang saling berkirim pesan tersedia di [CLI](/id/agent-teams), bukan di Desktop. Untuk pekerjaan multi-agent di dalam satu sesi, gunakan [dynamic workflows](/id/workflows), yang berjalan di Desktop.831* **Tim agent**: sesi Claude Code paralel yang saling berkirim pesan tersedia di [CLI](/id/agent-teams), bukan di Desktop. Untuk pekerjaan multi-agent di dalam satu sesi, gunakan [dynamic workflows](/id/workflows), yang berjalan di Desktop.

828* **Perintah terminal-dialog**: perintah bawaan yang membuka panel interaktif di terminal, seperti `/permissions`, `/config`, `/agents`, dan `/doctor`, tidak tersedia di tab Code dan membalas dengan `isn't available in this environment`. Edit [file pengaturan](/id/settings) secara langsung untuk mengelola aturan izin dan konfigurasi, atau jalankan perintah dari CLI mandiri.832* **Perintah terminal-dialog**: perintah bawaan yang membuka panel interaktif di terminal, seperti `/permissions`, `/config`, `/agents`, dan `/doctor`, tidak tersedia di tab Code dan membalas dengan `isn't available in this environment`. Edit [file pengaturan](/id/settings) secara langsung untuk mengelola aturan izin dan konfigurasi, atau jalankan perintah dari CLI mandiri.


862Jika aplikasi terbuka tetapi menampilkan layar kosong atau tidak responsif:866Jika aplikasi terbuka tetapi menampilkan layar kosong atau tidak responsif:

863 867 

8641. Mulai ulang aplikasi.8681. Mulai ulang aplikasi.

8652. Periksa pembaruan yang tertunda. Aplikasi secara otomatis memperbarui saat peluncuran.8692. Periksa pembaruan yang tertunda. Pada macOS dan Windows, aplikasi secara otomatis memperbarui saat peluncuran; di Linux, perbarui melalui apt seperti yang dijelaskan dalam [Claude Desktop on Linux](/id/desktop-linux).

8663. Di Windows, periksa Event Viewer untuk log crash di bawah **Windows Logs → Application**.8703. Di Windows, periksa Event Viewer untuk log crash di bawah **Windows Logs → Application**.

867 871 

868<h3 id="failed-to-load-session">872<h3 id="failed-to-load-session">

desktop-linux.md +113 −0 created

Details

1> ## Documentation Index

2> 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.

4 

5# Claude Desktop di Linux (beta)

6 

7> Instal dan perbarui aplikasi desktop Claude di Ubuntu dan Debian

8 

9<Note>

10 Dukungan Linux untuk aplikasi desktop Claude sedang dalam beta. Tab Chat, Cowork, dan Code semuanya tersedia.

11</Note>

12 

13Aplikasi desktop di Linux memberikan Anda pengalaman Chat, Cowork, dan Claude Code yang sama seperti macOS dan Windows: sesi paralel, tinjauan diff visual, terminal dan editor terintegrasi, dan pratinjau aplikasi langsung. Lihat [Gunakan Claude Code Desktop](/id/desktop) untuk referensi fitur lengkap.

14 

15<h2 id="requirements">

16 Persyaratan

17</h2>

18 

19* Ubuntu 22.04 atau lebih baru, atau Debian 12 atau lebih baru

20* x86\_64 atau arm64

21 

22Distribusi berbasis Debian lainnya yang memenuhi persyaratan ini mungkin berfungsi tetapi tidak diuji secara resmi.

23 

24<h2 id="install">

25 Instal

26</h2>

27 

28Instal dari repositori apt Anthropic sehingga pembaruan tiba melalui pembaruan paket reguler sistem Anda.

29 

30<Steps>

31 <Step title="Tambahkan repositori apt Anthropic">

32 Unduh kunci penandatanganan Anthropic:

33 

34 ```bash theme={null}

35 sudo curl -fsSLo /usr/share/keyrings/claude-desktop-archive-keyring.asc https://downloads.claude.ai/claude-desktop/key.asc

36 ```

37 

38 Daftarkan repositori:

39 

40 ```bash theme={null}

41 echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/claude-desktop-archive-keyring.asc] https://downloads.claude.ai/claude-desktop/apt/stable stable main" | sudo tee /etc/apt/sources.list.d/claude-desktop.list

42 ```

43 </Step>

44 

45 <Step title="Instal paket">

46 ```bash theme={null}

47 sudo apt update && sudo apt install claude-desktop

48 ```

49 </Step>

50 

51 <Step title="Luncurkan dan masuk">

52 Luncurkan **Claude** dari peluncur aplikasi Anda, atau jalankan `claude-desktop` dari terminal, dan masuk dengan akun Anthropic Anda.

53 </Step>

54</Steps>

55 

56<Accordion title="Verifikasi kunci penandatanganan">

57 Anda dapat mengonfirmasi bahwa kunci penandatanganan yang diunduh milik Anthropic:

58 

59 ```bash theme={null}

60 gpg --show-keys /usr/share/keyrings/claude-desktop-archive-keyring.asc

61 ```

62 

63 Sidik jari harus `31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE`.

64</Accordion>

65 

66<h3 id="install-from-a-downloaded-file">

67 Instal dari file yang diunduh

68</h3>

69 

70Jika Anda tidak dapat menggunakan repositori apt, unduh paket `.deb` untuk arsitektur Anda (x64 atau arm64) dari [claude.com/download](https://claude.com/download), kemudian buka dengan penginstal perangkat lunak Anda atau jalankan dari direktori unduhan Anda:

71 

72```bash theme={null}

73sudo apt install ./claude-desktop_*.deb

74```

75 

76`.deb` yang diinstal dengan cara ini tidak menerima pembaruan. Untuk mendapatkan pembaruan melalui apt, tambahkan repositori seperti yang ditunjukkan di atas, atau batalkan komentar pada baris `deb` dalam entri placeholder yang ditulis paket ke `/etc/apt/sources.list.d/claude-desktop.list`.

77 

78<h2 id="update">

79 Perbarui

80</h2>

81 

82Aplikasi desktop tidak memperbarui dirinya sendiri di Linux. Pembaruan tiba dengan pembaruan paket reguler sistem Anda:

83 

84```bash theme={null}

85sudo apt update && sudo apt upgrade

86```

87 

88Pembarui perangkat lunak grafis distribusi Anda juga akan mengambil versi baru.

89 

90<h2 id="uninstall">

91 Copot

92</h2>

93 

94```bash theme={null}

95sudo apt remove claude-desktop

96```

97 

98Ini menghapus kunci penandatanganan bersama dengan aplikasi, jadi jika Anda menambahkan entri repositori selama instalasi, hapus juga:

99 

100```bash theme={null}

101sudo rm /etc/apt/sources.list.d/claude-desktop.list

102```

103 

104<h2 id="what’s-not-in-the-linux-beta-yet">

105 Apa yang belum ada di beta Linux

106</h2>

107 

108* **Computer Use**: [kontrol aplikasi dan layar](/id/desktop#let-claude-use-your-computer) tidak tersedia di Linux.

109* **Dictation**: input suara tidak tersedia di aplikasi desktop Linux. Gunakan [dictation suara](/id/voice-dictation) di CLI sebagai gantinya.

110* **Quick Entry global hotkey**: berfungsi di X11. Di Wayland asli, ini memerlukan portal GlobalShortcuts lingkungan desktop Anda.

111* **Fedora dan RHEL**: hanya distribusi berbasis Debian yang didukung hari ini. Dukungan untuk distribusi tambahan akan datang di masa depan.

112 

113Untuk apa pun yang belum tersedia di aplikasi desktop, [CLI](/id/quickstart) menjalankan mesin Claude Code yang sama dan mendukung berbagai distribusi Linux yang lebih luas; lihat [persyaratan sistem](/id/setup#system-requirements).

Details

8 8 

9Aplikasi desktop memberi Anda Claude Code dengan antarmuka grafis yang dirancang untuk menjalankan beberapa sesi berdampingan: sidebar untuk mengelola pekerjaan paralel, tata letak drag-and-drop dengan terminal terintegrasi dan editor file, tinjauan diff visual, pratinjau aplikasi langsung, pemantauan GitHub PR dengan penggabungan otomatis, dan tugas terjadwal. Tidak perlu terminal.9Aplikasi desktop memberi Anda Claude Code dengan antarmuka grafis yang dirancang untuk menjalankan beberapa sesi berdampingan: sidebar untuk mengelola pekerjaan paralel, tata letak drag-and-drop dengan terminal terintegrasi dan editor file, tinjauan diff visual, pratinjau aplikasi langsung, pemantauan GitHub PR dengan penggabungan otomatis, dan tugas terjadwal. Tidak perlu terminal.

10 10 

11<CardGroup cols={2}>11<CardGroup cols={3}>

12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">12 <Card title="Download for macOS" icon="apple" href="https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code&utm_medium=docs">

13 Universal build for Intel and Apple Silicon13 Universal build for Intel and Apple Silicon

14 </Card>14 </Card>


16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">16 <Card title="Download for Windows" icon="windows" href="https://claude.ai/api/desktop/win32/x64/setup/latest/redirect?utm_source=claude_code&utm_medium=docs">

17 For x64 processors17 For x64 processors

18 </Card>18 </Card>

19 

20 <Card title="Get Claude for Linux (beta)" icon="linux" href="/en/desktop-linux">

21 apt or .deb for Ubuntu and Debian

22 </Card>

19</CardGroup>23</CardGroup>

20 24 

21For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). The desktop app is not available on Linux; use the [CLI](/en/quickstart) instead.25For Windows ARM64, download the [ARM64 installer](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). On Linux, install with apt; see [Claude Desktop on Linux](/en/desktop-linux).

22 26 

23<Note>27<Note>

24 Claude Code memerlukan [langganan Pro, Max, Team, atau Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_pricing).28 Claude Code memerlukan [langganan Pro, Max, Team, atau Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=desktop_quickstart_pricing).


40 44 

41<Steps>45<Steps>

42 <Step title="Instal dan masuk">46 <Step title="Instal dan masuk">

43 Unduh installer untuk platform Anda dari tautan di atas dan jalankan. Luncurkan Claude dari folder Aplikasi Anda di macOS atau menu Start di Windows, kemudian masuk dengan akun Anthropic Anda.47 Di macOS dan Windows, unduh installer dari tautan di atas dan jalankan. Di Linux, ikuti langkah-langkah instalasi di [Claude Desktop di Linux](/id/desktop-linux). Luncurkan Claude dari folder Aplikasi Anda di macOS, menu Start di Windows, atau peluncur aplikasi Anda di Linux, kemudian masuk dengan akun Anthropic Anda.

44 </Step>48 </Step>

45 49 

46 <Step title="Buka tab Code">50 <Step title="Buka tab Code">

Details

162 </Step>162 </Step>

163 163 

164 <Step title="Jelajahi plugin yang tersedia">164 <Step title="Jelajahi plugin yang tersedia">

165 Jalankan `/plugin` untuk membuka plugin manager. Ini membuka antarmuka bertab dengan empat tab yang dapat Anda siklus menggunakan **Tab** (atau **Shift+Tab** untuk mundur):165 Jalankan `/plugin` untuk membuka plugin manager. Ini membuka antarmuka bertab dengan empat tab yang dapat Anda siklus menggunakan **Tab**, atau **Shift+Tab** untuk mundur:

166 166 

167 * **Discover**: jelajahi plugin yang tersedia dari semua marketplace Anda167 * **Discover**: jelajahi plugin yang tersedia dari semua marketplace Anda

168 * **Installed**: lihat dan kelola plugin yang diinstal168 * **Installed**: lihat dan kelola plugin yang diinstal


185 * **Project scope**: instal untuk semua kolaborator di repositori ini185 * **Project scope**: instal untuk semua kolaborator di repositori ini

186 * **Local scope**: instal untuk diri sendiri di repositori ini saja186 * **Local scope**: instal untuk diri sendiri di repositori ini saja

187 187 

188 Misalnya, pilih **commit-commands** (plugin yang menambahkan skills alur kerja git) dan instal ke cakupan pengguna Anda.188 Misalnya, pilih **commit-commands**, plugin yang menambahkan skills alur kerja git, dan instal ke cakupan pengguna Anda.

189 189 

190 Anda juga dapat menginstal langsung dari baris perintah:190 Anda juga dapat menginstal langsung dari baris perintah:

191 191 


223 **Shortcuts**: Anda dapat menggunakan `/plugin market` sebagai ganti `/plugin marketplace`, dan `rm` sebagai ganti `remove`.223 **Shortcuts**: Anda dapat menggunakan `/plugin market` sebagai ganti `/plugin marketplace`, dan `rm` sebagai ganti `remove`.

224</Tip>224</Tip>

225 225 

226* **GitHub repositories**: format `owner/repo` (misalnya, `anthropics/claude-code`)226* **GitHub repositories**: format `owner/repo`, misalnya `anthropics/claude-code`

227* **Git URLs**: URL repositori git apa pun (GitLab, Bitbucket, self-hosted)227* **Git URLs**: URL repositori git apa pun, termasuk GitLab, Bitbucket, dan server self-hosted

228* **Local paths**: direktori atau jalur langsung ke file `marketplace.json`228* **Local paths**: direktori atau jalur langsung ke file `marketplace.json`

229* **Remote URLs**: URL langsung ke file `marketplace.json` yang dihosting229* **Remote URLs**: URL langsung ke file `marketplace.json` yang dihosting

230 230 


232 Tambahkan dari GitHub232 Tambahkan dari GitHub

233</h3>233</h3>

234 234 

235Tambahkan repositori GitHub yang berisi file `.claude-plugin/marketplace.json` menggunakan format `owner/repo`di mana `owner` adalah nama pengguna atau organisasi GitHub dan `repo` adalah nama repositori.235Tambahkan repositori GitHub yang berisi file `.claude-plugin/marketplace.json` menggunakan format `owner/repo`, di mana `owner` adalah nama pengguna atau organisasi GitHub dan `repo` adalah nama repositori.

236 236 

237Misalnya, `anthropics/claude-code` merujuk ke repositori `claude-code` yang dimiliki oleh `anthropics`:237Misalnya, `anthropics/claude-code` merujuk ke repositori `claude-code` yang dimiliki oleh `anthropics`:

238 238 


246 246 

247Tambahkan repositori git apa pun dengan memberikan URL lengkap. Ini bekerja dengan host Git apa pun, termasuk GitLab, Bitbucket, dan server self-hosted. Sertakan akhiran `.git` sehingga Claude Code mengkloning repositori daripada memperlakukan URL sebagai tautan langsung ke file `marketplace.json` yang dihosting.247Tambahkan repositori git apa pun dengan memberikan URL lengkap. Ini bekerja dengan host Git apa pun, termasuk GitLab, Bitbucket, dan server self-hosted. Sertakan akhiran `.git` sehingga Claude Code mengkloning repositori daripada memperlakukan URL sebagai tautan langsung ke file `marketplace.json` yang dihosting.

248 248 

249Sertakan awalan `https://` juga. Claude Code v2.1.196 dan yang lebih baru menolak host yang diketik tanpa itu, seperti `gitlab.com/company/plugins.git`, sebagai shorthand `owner/repo` GitHub yang tidak valid, dan kesalahan memberi tahu Anda untuk menambahkan awalan. Versi sebelumnya salah membacanya sebagai jalur repositori GitHub dan gagal saat waktu kloning.

250 

249Menggunakan HTTPS:251Menggunakan HTTPS:

250 252 

251```shell theme={null}253```shell theme={null}


298 Instal plugin300 Instal plugin

299</h2>301</h2>

300 302 

301Setelah Anda menambahkan marketplace, Anda dapat menginstal plugin secara langsung (menginstal ke cakupan pengguna secara default):303Setelah Anda menambahkan marketplace, Anda dapat menginstal plugin secara langsung:

302 304 

303```shell theme={null}305```shell theme={null}

304/plugin install plugin-name@marketplace-name306/plugin install plugin-name@marketplace-name

305```307```

306 308 

307Untuk memilih [cakupan instalasi](/id/settings#configuration-scopes) yang berbeda, gunakan UI interaktif: jalankan `/plugin`, buka tab **Discover**, dan tekan **Enter** pada plugin. Anda akan melihat opsi untuk:309Perintah membuka detail plugin tersebut, di mana Anda memilih [cakupan instalasi](/id/settings#configuration-scopes). Anda melihat pilihan yang sama ketika Anda menjalankan `/plugin`, pergi ke tab **Discover**, dan menekan **Enter** pada plugin:

308 310 

309* **User scope** (default): instal untuk diri sendiri di semua proyek311* **User scope** (default): instal untuk diri sendiri di semua proyek

310* **Project scope**: instal untuk semua kolaborator di repositori ini (menambahkan ke `.claude/settings.json`)312* **Project scope**: instal untuk semua kolaborator di repositori ini, yang menambahkan plugin ke `.claude/settings.json`

311* **Local scope**: instal untuk diri sendiri di repositori ini saja (tidak dibagikan dengan kolaborator)313* **Local scope**: instal untuk diri sendiri di repositori ini saja, tidak dibagikan dengan kolaborator

314 

315Untuk menginstal tanpa langkah interaktif, gunakan perintah shell [`claude plugin install`](/id/plugins-reference#plugin-install), yang menginstal ke cakupan pengguna kecuali Anda melewatkan `--scope`.

312 316 

313Anda juga dapat melihat plugin dengan cakupan **managed**—ini diinstal oleh administrator melalui [managed settings](/id/settings#settings-files) dan tidak dapat dimodifikasi.317Anda juga dapat melihat plugin dengan cakupan **managed**. Ini diinstal oleh administrator melalui [managed settings](/id/settings#settings-files) dan tidak dapat dimodifikasi.

314 318 

315<Warning>319<Warning>

316 Pastikan Anda mempercayai plugin sebelum menginstalnya. Anthropic tidak mengontrol MCP servers, file, atau perangkat lunak lain apa yang disertakan dalam plugin dan tidak dapat memverifikasi bahwa mereka bekerja seperti yang dimaksudkan. Periksa homepage setiap plugin untuk informasi lebih lanjut.320 Pastikan Anda mempercayai plugin sebelum menginstalnya. Anthropic tidak mengontrol apa yang MCP servers, file, atau perangkat lunak lain yang disertakan dalam plugin dan tidak dapat memverifikasi bahwa mereka bekerja seperti yang dimaksudkan. Periksa homepage setiap plugin untuk informasi lebih lanjut.

317</Warning>321</Warning>

318 322 

319<h2 id="manage-installed-plugins">323<h2 id="manage-installed-plugins">


358/plugin enable plugin-name@marketplace-name362/plugin enable plugin-name@marketplace-name

359```363```

360 364 

365Dalam pengenal ini, `plugin-name` adalah `name` plugin dalam [entri marketplace](/id/plugin-marketplaces#plugin-entries), yang dapat berbeda dari `name` dalam `plugin.json` plugin itu sendiri.

366 

367Mulai dari Claude Code v2.1.195, **Enable** dan **Disable** dalam antarmuka `/plugin` bekerja untuk plugin yang dua namanya berbeda, dan `/plugin enable` serta `/plugin disable` menerima nama apa pun. Ketika Anda menonaktifkan plugin seperti itu dalam versi sebelumnya, Claude Code melaporkan `already disabled` dan membiarkannya tetap diaktifkan.

368 

361Hapus plugin sepenuhnya:369Hapus plugin sepenuhnya:

362 370 

363```shell theme={null}371```shell theme={null}


464 472 

465Admin tim dapat menyiapkan instalasi marketplace otomatis untuk proyek dengan menambahkan konfigurasi marketplace ke `.claude/settings.json`. Saat anggota tim mempercayai folder repositori, Claude Code meminta mereka untuk menginstal marketplace dan plugin ini.473Admin tim dapat menyiapkan instalasi marketplace otomatis untuk proyek dengan menambahkan konfigurasi marketplace ke `.claude/settings.json`. Saat anggota tim mempercayai folder repositori, Claude Code meminta mereka untuk menginstal marketplace dan plugin ini.

466 474 

475Mulai dari Claude Code v2.1.195, langkah instalasi ini berlaku pada setiap path yang memuat plugin. Plugin yang hanya diaktifkan oleh `.claude/settings.json` proyek dan berasal dari sumber eksternal seperti repositori GitHub atau paket npm, tidak akan dimuat sampai anggota tim menginstalnya. Sampai saat itu, Claude Code melaporkan plugin sebagai tidak terinstal dan menampilkan perintah `claude plugin install` untuk dijalankan.

476 

467Tambahkan `extraKnownMarketplaces` ke `.claude/settings.json` proyek Anda:477Tambahkan `extraKnownMarketplaces` ke `.claude/settings.json` proyek Anda:

468 478 

469```json theme={null}479```json theme={null}


499 509 

5001. **Periksa versi Anda**: Jalankan `claude --version` untuk melihat apa yang diinstal.5101. **Periksa versi Anda**: Jalankan `claude --version` untuk melihat apa yang diinstal.

5012. **Perbarui Claude Code**:5112. **Perbarui Claude Code**:

502 * **Homebrew**: `brew upgrade claude-code` (atau `brew upgrade claude-code@latest` jika Anda menginstal cask itu)512 * **Homebrew**: `brew upgrade claude-code`, atau `brew upgrade claude-code@latest` jika Anda menginstal cask itu

503 * **npm**: `npm install -g @anthropic-ai/claude-code@latest`513 * **npm**: `npm install -g @anthropic-ai/claude-code@latest`

504 * **Native installer**: Jalankan kembali perintah install dari [Setup](/id/setup)514 * **Native installer**: Jalankan kembali perintah install dari [Setup](/id/setup)

5053. **Restart Claude Code**: Setelah memperbarui, restart terminal Anda dan jalankan `claude` lagi.5153. **Restart Claude Code**: Setelah memperbarui, restart terminal Anda dan jalankan `claude` lagi.


509</h3>519</h3>

510 520 

511* **Marketplace not loading**: Verifikasi URL dapat diakses dan bahwa `.claude-plugin/marketplace.json` ada di jalur521* **Marketplace not loading**: Verifikasi URL dapat diakses dan bahwa `.claude-plugin/marketplace.json` ada di jalur

512* **Plugin installation failures**: Periksa bahwa URL sumber plugin dapat diakses dan repositori bersifat publik (atau Anda memiliki akses)522* **Plugin installation failures**: Periksa bahwa URL sumber plugin dapat diakses dan repositori bersifat publik, atau bahwa Anda memiliki akses ke repositori tersebut

513* **Files not found after installation**: Plugin disalin ke cache, jadi jalur yang mereferensikan file di luar direktori plugin tidak akan berfungsi523* **Files not found after installation**: Plugin disalin ke cache, jadi jalur yang mereferensikan file di luar direktori plugin tidak akan berfungsi

514* **Plugin skills not appearing**: Hapus cache dengan `rm -rf ~/.claude/plugins/cache`, restart Claude Code, dan instal ulang plugin.524* **Plugin skills not appearing**: Hapus cache dengan `rm -rf ~/.claude/plugins/cache`, restart Claude Code, dan instal ulang plugin.

515 525 


519 Code intelligence issues529 Code intelligence issues

520</h3>530</h3>

521 531 

522* **Language server not starting**: verifikasi binary diinstal dan tersedia di `$PATH` Anda. Periksa tab `/plugin` Errors untuk detail.532* **Language server not starting**: Verifikasi binary diinstal dan tersedia di `$PATH` Anda. Periksa tab `/plugin` Errors untuk detail.

523* **High memory usage**: language server seperti `rust-analyzer` dan `pyright` dapat mengonsumsi memori signifikan pada proyek besar. Jika Anda mengalami masalah memori, nonaktifkan plugin dengan `/plugin disable <plugin-name>` dan andalkan tools pencarian bawaan Claude sebagai gantinya.533* **High memory usage**: Language server seperti `rust-analyzer` dan `pyright` dapat mengonsumsi memori signifikan pada proyek besar. Jika Anda mengalami masalah memori, nonaktifkan plugin dengan `/plugin disable <plugin-name>` dan andalkan tools pencarian bawaan Claude sebagai gantinya.

524* **False positive diagnostics in monorepos**: language server mungkin melaporkan kesalahan impor yang tidak terselesaikan untuk paket internal jika workspace tidak dikonfigurasi dengan benar. Ini tidak mempengaruhi kemampuan Claude untuk mengedit kode.534* **False positive diagnostics in monorepos**: Language server mungkin melaporkan kesalahan impor yang tidak terselesaikan untuk paket internal jika workspace tidak dikonfigurasi dengan benar. Ini tidak mempengaruhi kemampuan Claude untuk mengedit kode.

525 535 

526<h2 id="next-steps">536<h2 id="next-steps">

527 Langkah selanjutnya537 Langkah selanjutnya

528</h2>538</h2>

529 539 

530* **Build your own plugins**: Lihat [Plugins](/id/plugins) untuk membuat skills, agen, dan hooks540* **Buat plugin Anda sendiri**: lihat [Plugins](/id/plugins) untuk membuat skills, agen, dan hooks

531* **Create a marketplace**: Lihat [Create a plugin marketplace](/id/plugin-marketplaces) untuk mendistribusikan plugin ke tim atau komunitas Anda541* **Buat marketplace**: lihat [Create a plugin marketplace](/id/plugin-marketplaces) untuk mendistribusikan plugin ke tim atau komunitas Anda

532* **Technical reference**: Lihat [Plugins reference](/id/plugins-reference) untuk spesifikasi lengkap542* **Referensi teknis**: lihat [Plugins reference](/id/plugins-reference) untuk spesifikasi lengkap

errors.md +22 −4

Details

40| `Your organization has disabled API key authentication` | [Autentikasi](#your-organization-has-disabled-api-key-authentication) |40| `Your organization has disabled API key authentication` | [Autentikasi](#your-organization-has-disabled-api-key-authentication) |

41| `Your organization has disabled Claude subscription access` | [Autentikasi](#your-organization-has-disabled-claude-subscription-access) |41| `Your organization has disabled Claude subscription access` | [Autentikasi](#your-organization-has-disabled-claude-subscription-access) |

42| `Routines are disabled by your organization's policy` | [Autentikasi](#routines-are-disabled-by-your-organization%E2%80%99s-policy) |42| `Routines are disabled by your organization's policy` | [Autentikasi](#routines-are-disabled-by-your-organization%E2%80%99s-policy) |

43| `Remote Control is only available when using Claude via api.anthropic.com` | [Autentikasi](#remote-control-requires-the-anthropic-api) |

43| `OAuth token revoked` / `OAuth token has expired` | [Autentikasi](#oauth-token-revoked-or-expired) |44| `OAuth token revoked` / `OAuth token has expired` | [Autentikasi](#oauth-token-revoked-or-expired) |

44| `does not meet scope requirement user:profile` | [Autentikasi](#oauth-scope-requirement) |45| `does not meet scope requirement user:profile` | [Autentikasi](#oauth-scope-requirement) |

45| `Unable to connect to API` | [Jaringan](#unable-to-connect-to-api) |46| `Unable to connect to API` | [Jaringan](#unable-to-connect-to-api) |


426* Minta Pemilik dalam organisasi Anda untuk mengaktifkan toggle **Routines** di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)427* Minta Pemilik dalam organisasi Anda untuk mengaktifkan toggle **Routines** di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

427* Untuk pekerjaan terjadwal sekali pakai yang tidak memerlukan routines tingkat organisasi, lihat [scheduled tasks](/id/scheduled-tasks)428* Untuk pekerjaan terjadwal sekali pakai yang tidak memerlukan routines tingkat organisasi, lihat [scheduled tasks](/id/scheduled-tasks)

428 429 

430<h3 id="remote-control-requires-the-anthropic-api">

431 Remote Control requires the Anthropic API

432</h3>

433 

434Sesi tidak berbicara langsung ke Anthropic API, jadi tidak ada backend claude.ai untuk [Remote Control](/id/remote-control) untuk dipasangkan.

435 

436```text theme={null}

437Remote Control is only available when using Claude via api.anthropic.com.

438```

439 

440Ini muncul di Amazon Bedrock, Google Vertex AI, dan Microsoft Foundry. {/* min-version: 2.1.196 */}Mulai dari v2.1.196, ini juga muncul ketika [`ANTHROPIC_BASE_URL`](/id/env-vars) menunjuk ke host selain `api.anthropic.com`, seperti [LLM gateway](/id/llm-gateway) atau proxy, bahkan ketika Anda masuk dengan claude.ai.

441 

442**Yang harus dilakukan:**

443 

444* Batalkan pengaturan `ANTHROPIC_BASE_URL` dan mulai ulang sesi, atau mulai Remote Control dari sesi yang berbicara langsung ke Anthropic API

445* Untuk ini dan pesan startup Remote Control lainnya, lihat [Troubleshoot Remote Control](/id/remote-control#troubleshooting)

446 

429<h3 id="oauth-token-revoked-or-expired">447<h3 id="oauth-token-revoked-or-expired">

430 OAuth token revoked or expired448 OAuth token revoked or expired

431</h3>449</h3>


727 thinking.type.enabled is not supported for this model745 thinking.type.enabled is not supported for this model

728</h3>746</h3>

729 747 

730Versi Claude Code Anda lebih lama dari minimum untuk Opus 4.7 atau Opus 4.8. CLI mengirim konfigurasi pemikiran yang tidak lagi diterima model.748Versi Claude Code Anda lebih lama dari minimum untuk Sonnet 5, Opus 4.8, atau Opus 4.7. CLI mengirim konfigurasi pemikiran yang tidak lagi diterima model.

731 749 

732```text theme={null}750```text theme={null}

733API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.751API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.


735 753 

736**Yang harus dilakukan:**754**Yang harus dilakukan:**

737 755 

738* Jalankan `claude update` dan restart Claude Code. Opus 4.7 memerlukan v2.1.111 atau lebih baru. Opus 4.8 memerlukan v2.1.154 atau lebih baru756* Jalankan `claude update` dan restart Claude Code. Opus 4.7 memerlukan v2.1.111 atau lebih baru. Opus 4.8 memerlukan v2.1.154 atau lebih baru. Sonnet 5 memerlukan v2.1.197 atau lebih baru

739* Jika Anda tidak dapat meningkatkan, jalankan `/model` dan pilih Opus 4.6 atau Sonnet sebagai gantinya757* Jika Anda tidak dapat meningkatkan, jalankan `/model` dan pilih Opus 4.6 atau Sonnet 4.6 sebagai gantinya

740* Jika Anda mengalami ini di Agent SDK, lihat [SDK troubleshooting](/id/agent-sdk/quickstart#troubleshooting)758* {/* min-version: agent-sdk@0.3.197 */}Jika Anda mengalami ini di [Agent SDK](/id/agent-sdk/overview), tingkatkan paket SDK sebagai gantinya. Opus 4.8 memerlukan TypeScript SDK v0.3.154 atau lebih baru dan Python SDK v0.2.88 atau lebih baru. Sonnet 5 memerlukan TypeScript SDK v0.3.197 atau lebih baru

741 759 

742<h3 id="thinking-budget-exceeds-output-limit">760<h3 id="thinking-budget-exceeds-output-limit">

743 Thinking budget exceeds output limit761 Thinking budget exceeds output limit

fullscreen.md +13 −3

Details

62* **Klik dan seret** untuk memilih teks di mana saja dalam percakapan. Klik ganda memilih kata, mencocokkan batas kata iTerm2 sehingga jalur file memilih sebagai satu unit. Klik tiga kali memilih baris.62* **Klik dan seret** untuk memilih teks di mana saja dalam percakapan. Klik ganda memilih kata, mencocokkan batas kata iTerm2 sehingga jalur file memilih sebagai satu unit. Klik tiga kali memilih baris.

63* **Gulir dengan roda mouse** untuk bergerak melalui percakapan.63* **Gulir dengan roda mouse** untuk bergerak melalui percakapan.

64 64 

65Teks yang dipilih disalin ke clipboard Anda secara otomatis saat pelepasan mouse. Untuk mematikan ini, alihkan Copy on select di `/config`. Dengan itu dimatikan, tekan `Ctrl+Shift+c` untuk menyalin secara manual. Di terminal yang mendukung protokol keyboard kitty, seperti kitty, WezTerm, Ghostty, dan iTerm2, `Cmd+c` juga berfungsi. Jika Anda memiliki pemilihan aktif, `Ctrl+c` menyalin alih-alih membatalkan.65Teks yang dipilih disalin ke clipboard Anda secara otomatis saat pelepasan mouse. Untuk mematikan ini, alihkan Copy on select di `/config`.

66 

67Dengan Copy on select dimatikan, tekan `Ctrl+Shift+c` untuk menyalin secara manual. Di terminal yang mendukung protokol keyboard kitty, seperti kitty, WezTerm, Ghostty, dan iTerm2, `Cmd+c` juga berfungsi. Jika Anda memiliki pemilihan aktif, `Ctrl+c` menyalin alih-alih membatalkan.

66 68 

67Dengan pemilihan aktif, tahan `Shift` dan tekan tombol panah untuk memperluas dari keyboard. `Shift+↑` dan `Shift+↓` menggulir viewport saat pemilihan mencapai tepi atas atau bawah. `Shift+Home` dan `Shift+End` memperluas ke awal atau akhir baris saat ini.69Dengan pemilihan aktif, tahan `Shift` dan tekan tombol panah untuk memperluas dari keyboard. `Shift+↑` dan `Shift+↓` menggulir viewport saat pemilihan mencapai tepi atas atau bawah. `Shift+Home` dan `Shift+End` memperluas ke awal atau akhir baris saat ini.

68 70 


107 109 

108Nilai `3` cocok dengan default di `vim` dan aplikasi serupa. Pengaturan menerima nilai dari 1 hingga 20, dan nilai fraksional di bawah 1 seperti `0.5` untuk memperlambat scrolling trackpad dan roda yang dipercepat di terminal yang sudah memperkuat peristiwa roda.110Nilai `3` cocok dengan default di `vim` dan aplikasi serupa. Pengaturan menerima nilai dari 1 hingga 20, dan nilai fraksional di bawah 1 seperti `0.5` untuk memperlambat scrolling trackpad dan roda yang dipercepat di terminal yang sudah memperkuat peristiwa roda.

109 111 

110Untuk menyesuaikan kecepatan scroll secara interaktif, jalankan `/scroll-speed`. Dialog menampilkan penggaris yang dapat Anda gulir saat terbuka sehingga Anda dapat merasakan perubahan segera. Tekan `←` dan `→` untuk menyesuaikan, `r` untuk mengatur ulang ke default yang terdeteksi otomatis, dan `Enter` untuk menyimpan. Perintah menulis nilai yang sama yang ditetapkan variabel lingkungan `CLAUDE_CODE_SCROLL_SPEED`, disimpan ke `~/.claude/settings.json`. Perintah tidak tersedia di terminal IDE JetBrains.112Untuk menyesuaikan kecepatan scroll secara interaktif, jalankan `/scroll-speed`. Dialog menampilkan penggaris yang dapat Anda gulir saat terbuka sehingga Anda dapat merasakan perubahan segera. Tekan `←` dan `→` untuk menyesuaikan, `r` untuk mengatur ulang ke default yang terdeteksi otomatis, dan `Enter` untuk menyimpan.

113 

114Perintah menulis nilai yang sama yang ditetapkan variabel lingkungan `CLAUDE_CODE_SCROLL_SPEED`, disimpan ke `~/.claude/settings.json`. Perintah tidak tersedia di terminal IDE JetBrains.

111 115 

112Terpisah dari kecepatan dasar, Claude Code mempercepat laju scroll ketika Anda memutar roda dengan cepat, sehingga putaran cepat mencakup jarak lebih jauh daripada jumlah takik lambat yang sama. {/* min-version: 2.1.174 */}Untuk mematikan akselerasi dan mempertahankan laju konstan per takik, atur `wheelScrollAccelerationEnabled` ke `false` di [`settings.json`](/id/settings#available-settings). Pengaturan ini memerlukan Claude Code v2.1.174 atau lebih baru.116Terpisah dari kecepatan dasar, Claude Code mempercepat laju scroll ketika Anda memutar roda dengan cepat, sehingga putaran cepat mencakup jarak lebih jauh daripada jumlah takik lambat yang sama. {/* min-version: 2.1.174 */}Untuk mematikan akselerasi dan mempertahankan laju konstan per takik, atur `wheelScrollAccelerationEnabled` ke `false` di [`settings.json`](/id/settings#available-settings). Pengaturan ini memerlukan Claude Code v2.1.174 atau lebih baru.

113 117 


123 Cari dan tinjau percakapan127 Cari dan tinjau percakapan

124</h2>128</h2>

125 129 

126`Ctrl+o` mengalihkan antara prompt normal dan mode transkrip. Untuk tampilan yang lebih tenang yang menampilkan hanya prompt terakhir Anda, ringkasan satu baris panggilan alat dengan diffstat edit, dan respons akhir, jalankan `/focus`. Pengaturan bertahan di seluruh sesi. Jalankan `/focus` lagi untuk mematikannya.130`Ctrl+o` mengalihkan antara prompt normal dan mode transkrip.

131 

132Untuk tampilan yang lebih tenang yang menampilkan hanya prompt terakhir Anda, ringkasan satu baris panggilan alat dengan diffstat edit, dan respons akhir, jalankan `/focus`. Pengaturan bertahan di seluruh sesi. Jalankan `/focus` lagi untuk mematikannya.

127 133 

128Mode transkrip mendapatkan navigasi dan pencarian gaya `less`:134Mode transkrip mendapatkan navigasi dan pencarian gaya `less`:

129 135 


203 209 

204Dengan penangkapan mouse dinonaktifkan, scrolling keyboard dengan `PgUp`, `PgDn`, `Ctrl+Home`, dan `Ctrl+End` masih berfungsi, dan terminal Anda menangani pemilihan secara asli. Anda kehilangan klik-untuk-memposisikan-kursor, klik-untuk-memperluas-output-alat, klik-URL, dan scrolling roda di dalam Claude Code.210Dengan penangkapan mouse dinonaktifkan, scrolling keyboard dengan `PgUp`, `PgDn`, `Ctrl+Home`, dan `Ctrl+End` masih berfungsi, dan terminal Anda menangani pemilihan secara asli. Anda kehilangan klik-untuk-memposisikan-kursor, klik-untuk-memperluas-output-alat, klik-URL, dan scrolling roda di dalam Claude Code.

205 211 

212Untuk mempertahankan scrolling roda tetapi mematikan penanganan klik, seret, dan hover, atur `CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1` sebagai gantinya. Memerlukan Claude Code v2.1.195 atau lebih baru. `CLAUDE_CODE_DISABLE_MOUSE` memiliki prioritas ketika kedua variabel diatur.

213 

214Dengan klik dinonaktifkan, Claude Code masih menangkap mouse, sehingga roda dan touchpad menggulir percakapan tetapi klik kiri tidak melakukan apa pun di dalam Claude Code. Anda masih perlu menahan kunci terminal Anda untuk pemilihan klik-dan-seret asli. Klik kanan dan paste tengah-klik terus berfungsi di terminal yang mendukungnya.

215 

206<h2 id="research-preview">216<h2 id="research-preview">

207 Pratinjau penelitian217 Pratinjau penelitian

208</h2>218</h2>

gateways.md +87 −0 created

Details

1> ## Documentation Index

2> 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.

4 

5# Jalankan Claude Code melalui gateway

6 

7> Arahkan Claude Code melalui gateway yang di-host sendiri untuk kredensial terpusat, pelacakan penggunaan, dan kontrol biaya. Mencakup arsitektur, gateway aplikasi Claude Anthropic, dan menggunakan produk gateway lainnya.

8 

9Gateway adalah proxy yang dijalankan organisasi Anda antara Claude Code dan penyedia model. Claude Code mengirimkan lalu lintas API ke gateway alih-alih langsung ke penyedia, dan gateway meneruskannya menggunakan kredensial yang dipegang organisasi Anda. Pengembang melakukan autentikasi ke gateway daripada memegang kredensial penyedia, sehingga autentikasi, pelacakan penggunaan, anggaran, dan pencatatan audit terjadi di satu tempat yang Anda kontrol.

10 

11Claude Code menyertakan gateway yang di-host sendiri, [Claude apps gateway](/id/claude-apps-gateway), dalam biner `claude`, sehingga Anda tidak perlu mengadopsi produk gateway terpisah untuk menjalankan satu. Jika organisasi Anda sudah menjalankan [LLM gateway](/id/llm-gateway), Claude Code juga bekerja dengan itu.

12 

13Halaman ini mencakup:

14 

15* [Bagaimana gateway berada di antara Claude Code dan penyedia Anda](#how-a-gateway-works)

16* [Memilih antara Claude apps gateway dan gateway yang sudah Anda jalankan](#choose-a-gateway)

17* [Bagaimana gateway berinteraksi dengan langganan claude.ai](#subscriptions-and-gateways)

18* [Apa yang dikonfigurasi secara terpisah dari gateway](#configure-separately-from-the-gateway)

19 

20<h2 id="how-a-gateway-works">

21 How a gateway works

22</h2>

23 

24Setiap Claude Code pengembang ditunjukkan ke alamat gateway dan melakukan autentikasi dengan kredensial yang dikeluarkan gateway.

25 

26Gateway melakukan autentikasi pengembang, menerapkan aturan akses dan anggaran apa pun yang Anda konfigurasikan, dan meneruskan permintaan ke penyedia Anda dengan kredensial organisasi. Penyedia dapat berupa API Anthropic atau [penyedia cloud](/id/third-party-integrations) seperti Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry; konfigurasi gateway memutuskan. Dengan Claude apps gateway, atau gateway lain yang mengekspos titik akhir format Anthropic tunggal, mengubah penyedia tidak memerlukan menyentuh mesin pengembang.

27 

28<Frame>

29 <img src="https://mintcdn.com/claude-code/-uq-4JE0W_JO5Er5/images/llm-gateway-flow.svg?fit=max&auto=format&n=-uq-4JE0W_JO5Er5&q=85&s=1c1a8dcc0cfcc3a58652cc8e28cd3e20" alt="Diagram menunjukkan Claude Code merutekan melalui gateway. Di zona mesin pengembang, CLI Claude Code dan ekstensi VS Code mengirimkan permintaan ke alamat gateway dengan kredensial per-pengembang. Di zona berlabel infrastruktur Anda, gateway menangani autentikasi, pelacakan penggunaan, anggaran, dan perutean, dan meneruskan permintaan dengan kredensial organisasi Anda. Di zona penyedia model, panah solid mengarah ke penyedia yang Anda konfigurasikan, ditampilkan sebagai API Anthropic, dan panah putus-putus mengarah ke opsi penyedia lain, diilustrasikan dengan Amazon Bedrock, Google Cloud, dan Microsoft Foundry sebagai contoh." width="780" height="322" data-path="images/llm-gateway-flow.svg" />

30</Frame>

31 

32Dua jenis kredensial terlibat:

33 

34* **Kredensial pengembang**: setiap pengembang memegang milik mereka sendiri, dikeluarkan oleh gateway. Ini melakukan autentikasi mereka ke gateway dan mengidentifikasi mereka dalam pelacakan penggunaan

35* **Kredensial penyedia**: gateway memegang satu kredensial untuk akun penyedia Anda, dibagikan oleh semua lalu lintas yang diteruskan

36 

37<h2 id="choose-a-gateway">

38 Choose a gateway

39</h2>

40 

41Claude Code bekerja dengan gateway Anthropic sendiri atau dengan gateway yang sudah dijalankan organisasi Anda.

42 

43<h3 id="claude-apps-gateway">

44 Claude apps gateway

45</h3>

46 

47Claude apps gateway adalah gateway yang di-host sendiri milik Anthropic, disertakan dalam biner `claude`. Ini merutekan ke Amazon Bedrock, Google Cloud, Microsoft Foundry, atau API Anthropic sebagai upstream. Pengembang masuk dengan penyedia identitas perusahaan Anda melalui `/login`, gateway memberlakukan akses model dan [pengaturan terkelola](/id/permissions#managed-settings) berdasarkan grup IdP, dan memancarkan metrik penggunaan [OpenTelemetry Protocol (OTLP)](/id/monitoring-usage) ke tumpukan observabilitas Anda sendiri.

48 

49Karena dibangun dan diuji bersama setiap rilis Claude Code, ia meneruskan header dan bidang permintaan yang dikirim Claude Code. Gateway yang dipertahankan secara terpisah memerlukan [aturan penerusan diperbarui](/id/llm-gateway-protocol#forward-as-open-lists) karena header dan bidang tersebut berubah dengan setiap rilis; Claude apps gateway dirilis dengan CLI, jadi tidak ada daftar untuk tetap terkini. Lihat [Ketersediaan dan keterbatasan](/id/claude-apps-gateway#availability-and-limitations) untuk set kecil fitur yang berperilaku berbeda pada sesi gateway.

50 

51Masuk gateway adalah langkah SSO browser, dan tidak ada alur token layanan, jadi pipeline CI tanpa pengembang untuk menyetujui masuk tidak dapat melakukan autentikasi melaluinya; konfigurasikan yang terhadap penyedia Anda secara langsung. Sesi SDK Agent dan `claude -p` berjalan pada mesin tempat pengembang telah masuk menggunakan sesi gateway mesin itu dan diatur oleh kebijakannya. Lihat [Pipeline CI dan mesin jarak jauh](/id/claude-apps-gateway#ci-pipelines-and-remote-machines).

52 

53Lihat [Claude apps gateway](/id/claude-apps-gateway) untuk menerapkannya.

54 

55<h3 id="other-gateways">

56 Other gateways

57</h3>

58 

59Jika organisasi Anda sudah menjalankan gateway LLM atau gateway API, Anda dapat menggunakannya sebagai gantinya. Anthropic tidak mendukung, mempertahankan, atau mengaudit produk gateway lain, dan tidak mendukung perutean Claude Code ke model non-Claude melalui gateway apa pun. Lihat [Other LLM gateways](/id/llm-gateway) untuk daftar periksa peluncuran admin, apa yang harus diimplementasikan gateway, dan cara menunjukkan Claude Code ke sana.

60 

61<h2 id="subscriptions-and-gateways">

62 Subscriptions and gateways

63</h2>

64 

65Ketika pengembang terhubung melalui gateway dengan kredensial gateway, penggunaan ditagihkan ke akun penyedia organisasi Anda dengan tarif API, dan langganan claude.ai mereka tidak digunakan atau ditagihkan. Menetapkan [`ANTHROPIC_AUTH_TOKEN`](/id/env-vars) untuk gateway yang Anda jalankan, atau masuk ke Claude apps gateway dengan `/login`, mematikan masuk langganan untuk sesi itu. Setiap permintaan yang diteruskan di bawah kredensial itu ditagihkan ke akun di balik kredensial penyedia gateway.

66 

67Pengecualiannya adalah menetapkan hanya `ANTHROPIC_BASE_URL`, tanpa kredensial gateway. Permintaan masih merutekan melalui gateway, tetapi login claude.ai yang disimpan tetap menjadi kredensial aktif, sehingga batas penggunaan dan penagihan langganan berlaku. [Other LLM gateways](/id/llm-gateway#subscriptions-and-gateways) mencakup konfigurasi itu dan apa yang harus diteruskan gateway agar berfungsi.

68 

69<h2 id="configure-separately-from-the-gateway">

70 Configure separately from the gateway

71</h2>

72 

73Gateway merutekan permintaan API model. Beberapa hal yang mungkin Anda harapkan untuk ditangani dikonfigurasi di tempat lain:

74 

75* **Model mana yang menjawab**: pilih model dengan perintah `/model` atau [variabel lingkungan model](/id/model-config#setting-your-model). Gateway memutuskan ke mana permintaan pergi, bukan model mana yang dipilih pengembang. Claude apps gateway dapat membatasi pilihan dengan daftar izin `availableModels` per-grup, tetapi pengembang masih memilih di dalamnya.

76* **Lalu lintas jaringan lainnya**: Claude Code sendiri mengirimkan pemeriksaan versi dan unduhan langsung ke Anthropic, terpisah dari jalur gateway. Apakah aliran telemetri klien opsional juga aktif tergantung pada penyedia Anda; [tabel default telemetri](/id/data-usage#telemetry-services) mencakup setiap kasus. Pada sesi Claude apps gateway yang masuk, kredensial gateway menonaktifkan analitik terikat Anthropic dan, ketika [penerusan telemetri](/id/claude-apps-gateway-config#telemetry) dikonfigurasi, menyematkan ekspor OTLP ke gateway. Jaringan Anda masih memerlukan egress ke [domain yang diperlukan](/id/network-config), atau atur [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/id/env-vars) untuk mematikan aliran opsional.

77* **Proxy HTTP perusahaan**: `HTTPS_PROXY` berada di antara Claude Code dan setiap server yang dibicarakannya, termasuk gateway. Jika jaringan Anda memerlukan satu, [konfigurasikan proxy](/id/network-config) selain gateway. Untuk Claude apps gateway khususnya, [masuk memeriksa bahwa host proxy juga berada di jaringan pribadi](/id/claude-apps-gateway#prerequisites); jika tidak, tambahkan host gateway ke `NO_PROXY` sehingga CLI terhubung langsung ke sana.

78 

79<h2 id="next-steps">

80 Next steps

81</h2>

82 

83Halaman berikutnya tergantung pada siapa yang menjalankan gateway. Gateway Anthropic berjalan dari biner `claude` dan memiliki panduan pengaturannya sendiri; gateway yang sudah dijalankan organisasi Anda memiliki protokol untuk diimplementasikan dan daftar periksa peluncuran admin.

84 

85* [Claude apps gateway](/id/claude-apps-gateway) untuk menerapkan gateway yang di-host sendiri Anthropic dengan masuk SSO dan telemetri OTLP

86* [Other LLM gateways](/id/llm-gateway) untuk apa yang harus diimplementasikan gateway yang sudah dijalankan organisasi Anda, dan cara menunjukkan Claude Code ke sana

87* [Set up Claude Code for your organization](/id/admin-setup) untuk keputusan peluncuran yang lebih luas yang merupakan bagian dari gateway

Details

127 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}127 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

128 custom_instructions: "Follow our coding standards"128 custom_instructions: "Follow our coding standards"

129 max_turns: "10"129 max_turns: "10"

130 model: "claude-sonnet-4-6"130 model: "claude-sonnet-5"

131```131```

132 132 

133**Versi GA (v1.0):**133**Versi GA (v1.0):**


140 claude_args: |140 claude_args: |

141 --append-system-prompt "Follow our coding standards"141 --append-system-prompt "Follow our coding standards"

142 --max-turns 10142 --max-turns 10

143 --model claude-sonnet-4-6143 --model claude-sonnet-5

144```144```

145 145 

146<Tip>146<Tip>


228 228 

229Dalam komentar issue atau PR:229Dalam komentar issue atau PR:

230 230 

231```text theme={null}231```text wrap theme={null}

232@claude implement this feature based on the issue description232@claude implement this feature based on the issue description

233@claude how should I implement user authentication for this endpoint?233@claude how should I implement user authentication for this endpoint?

234@claude fix the TypeError in the user dashboard component234@claude fix the TypeError in the user dashboard component


709Parameter `claude_args` menerima argumen Claude Code CLI apa pun:709Parameter `claude_args` menerima argumen Claude Code CLI apa pun:

710 710 

711```yaml theme={null}711```yaml theme={null}

712claude_args: "--max-turns 5 --model claude-sonnet-4-6 --mcp-config /path/to/config.json"712claude_args: "--max-turns 5 --model claude-sonnet-5 --mcp-config /path/to/config.json"

713```713```

714 714 

715Argumen umum:715Argumen umum:

716 716 

717* `--max-turns`: Maksimum conversation turns (default: 10)717* `--max-turns`: Maksimum conversation turns (default: 10)

718* `--model`: Model yang digunakan (misalnya, `claude-sonnet-4-6`)718* `--model`: Model yang digunakan (misalnya, `claude-sonnet-5`)

719* `--mcp-config`: Path ke konfigurasi MCP719* `--mcp-config`: Path ke konfigurasi MCP

720* `--allowedTools`: Daftar tools yang diizinkan dipisahkan koma. Alias `--allowed-tools` juga berfungsi.720* `--allowedTools`: Daftar tools yang diizinkan dipisahkan koma. Alias `--allowed-tools` juga berfungsi.

721* `--debug`: Aktifkan output debug721* `--debug`: Aktifkan output debug

glossary.md +1 −1

Details

170 Effort level170 Effort level

171</h3>171</h3>

172 172 

173Pengaturan yang mengontrol berapa banyak anggaran thinking adaptive-reasoning yang Claude gunakan pada setiap giliran. Effort yang lebih tinggi berarti lebih banyak thinking tokens dan reasoning yang lebih dalam; effort yang lebih rendah lebih cepat dan lebih murah. Effort didukung di Fable 5, di Opus 4.6 dan yang lebih baru, serta di Sonnet 4.6.173Pengaturan yang mengontrol berapa banyak anggaran thinking adaptive-reasoning yang Claude gunakan pada setiap giliran. Effort yang lebih tinggi berarti lebih banyak thinking tokens dan reasoning yang lebih dalam; effort yang lebih rendah lebih cepat dan lebih murah. Effort didukung di Fable 5, di Opus 4.6 dan yang lebih baru, serta di Sonnet 4.6 dan yang lebih baru.

174 174 

175Pelajari lebih lanjut: [Adjust effort level](/id/model-config#adjust-effort-level)175Pelajari lebih lanjut: [Adjust effort level](/id/model-config#adjust-effort-level)

176 176 

Details

236 236 

237```bash theme={null}237```bash theme={null}

238export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'238export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'

239export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'239export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-5'

240export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'240export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5@20251001'

241```241```

242 242 


290 Jendela konteks token 1M290 Jendela konteks token 1M

291</h2>291</h2>

292 292 

293Claude Opus 4.6 dan yang lebih baru, serta Sonnet 4.6, mendukung [jendela konteks token 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) di Vertex AI. Claude Code secara otomatis mengaktifkan jendela konteks yang diperluas ketika Anda memilih varian model 1M.293Claude Sonnet 5, Opus 4.6 dan yang lebih baru, serta Sonnet 4.6 mendukung [jendela konteks token 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) di Vertex AI. Sonnet 5 selalu berjalan dengan jendela 1M, tanpa varian `[1m]` untuk dipilih. Untuk model lainnya, Claude Code secara otomatis mengaktifkan jendela konteks yang diperluas ketika Anda memilih varian model 1M.

294 294 

295[Wizard pengaturan](#sign-in-with-vertex-ai) menawarkan opsi konteks 1M ketika mempinkan model. Untuk mengaktifkannya untuk model yang dipinkan secara manual, tambahkan `[1m]` ke ID model. Lihat [Pin models for third-party deployments](/id/model-config#pin-models-for-third-party-deployments) untuk detail.295[Wizard pengaturan](#sign-in-with-vertex-ai) menawarkan opsi konteks 1M ketika mempinkan model. Untuk mengaktifkannya untuk model yang dipinkan secara manual, tambahkan `[1m]` ke ID model. Lihat [Pin models for third-party deployments](/id/model-config#pin-models-for-third-party-deployments) untuk detail.

296 296 

hooks.md +52 −19

Details

191Bidang `matcher` memfilter kapan hooks dijalankan. Bagaimana matcher dievaluasi tergantung pada karakter yang dikandungnya:191Bidang `matcher` memfilter kapan hooks dijalankan. Bagaimana matcher dievaluasi tergantung pada karakter yang dikandungnya:

192 192 

193| Nilai matcher | Dievaluasi sebagai | Contoh |193| Nilai matcher | Dievaluasi sebagai | Contoh |

194| :-------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------- |194| :------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

195| `"*"`, `""`, atau dihilangkan | Cocokkan semua | dijalankan pada setiap kemunculan event |195| `"*"`, `""`, atau dihilangkan | Cocokkan semua | dijalankan pada setiap kemunculan event |

196| Hanya huruf, digit, `_`, spasi, `,`, dan `\|` | String yang tepat, atau daftar string yang tepat dipisahkan `\|` atau `,` dengan whitespace opsional di sekitarnya | `Bash` cocok hanya dengan tool Bash; `Edit\|Write` dan `Edit, Write` masing-masing cocok dengan salah satu tool dengan tepat |196| Hanya huruf, digit, `_`, `-`, spasi, `,`, dan `\|` | String yang tepat, atau daftar string yang tepat dipisahkan `\|` atau `,` dengan whitespace opsional di sekitarnya | `Bash` cocok hanya dengan tool Bash; `Edit\|Write` dan `Edit, Write` masing-masing cocok dengan salah satu tool dengan tepat; `code-reviewer` cocok hanya dengan tipe agent itu |

197| Berisi karakter lain apa pun | Ekspresi reguler JavaScript | `^Notebook` cocok dengan tool apa pun yang dimulai dengan Notebook; `mcp__memory__.*` cocok dengan setiap tool dari server `memory` |197| Berisi karakter lain apa pun | Ekspresi reguler JavaScript, tidak berlabuh | `^Notebook` cocok dengan tool apa pun yang dimulai dengan Notebook; `mcp__memory__.*` cocok dengan setiap tool dari server `memory` |

198 198 

199Pemisah koma dan toleransi whitespace di sekitarnya memerlukan Claude Code v2.1.191 atau lebih baru. Event `FileChanged` dan `StopFailure` hanya menerima `|` sebagai pemisah daftar dan memperlakukan `,` sebagai karakter literal; semua event lain yang tercantum dalam tabel berikut menerima `|` atau `,`.199Matcher pada jalur ekspresi reguler diuji dengan `RegExp.prototype.test` JavaScript, yang berhasil pada kecocokan di mana pun dalam nilai. `Edit.*` cocok dengan `Edit` dan `NotebookEdit`; bungkus pola dalam `^` dan `$`, seperti `^Edit$`, ketika Anda memerlukan kecocokan seluruh string.

200 

201Pemisah koma dan toleransi whitespace di sekitarnya memerlukan Claude Code v2.1.191 atau lebih baru.

202 

203Tanda hubung dalam set exact-match memerlukan Claude Code v2.1.195 atau lebih baru. Pada versi sebelumnya, nama dengan tanda hubung seperti `code-reviewer` dievaluasi sebagai ekspresi reguler yang tidak berlabuh, jadi juga dijalankan untuk `senior-code-reviewer`; labuhnya sebagai `^code-reviewer$` pada versi tersebut untuk mencocokkan hanya nama itu.

204 

205`FileChanged` dan `StopFailure` menggunakan set exact-match yang lebih sempit dari huruf, digit, `_`, dan `|` saja. Tanda hubung, spasi, atau koma dalam matcher untuk dua event itu membuat tetap pada jalur ekspresi reguler, dan hanya `|` yang memisahkan alternatif. Setiap event lain dengan dukungan matcher dalam tabel yang mengikuti menerima `|` atau `,`.

200 206 

201Event `FileChanged` tidak mengikuti aturan ini saat membangun daftar watch-nya. Lihat [FileChanged](#filechanged).207Event `FileChanged` tidak mengikuti aturan ini saat membangun daftar watch-nya. Lihat [FileChanged](#filechanged).

202 208 


209| `Setup` | flag CLI mana yang memicu setup | `init`, `maintenance` |215| `Setup` | flag CLI mana yang memicu setup | `init`, `maintenance` |

210| `SessionEnd` | mengapa sesi berakhir | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |216| `SessionEnd` | mengapa sesi berakhir | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

211| `Notification` | tipe notifikasi | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |217| `Notification` | tipe notifikasi | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |

212| `SubagentStart` | tipe agent | `general-purpose`, `Explore`, `Plan`, atau nama agent kustom |218| `SubagentStart` | tipe agent | `general-purpose`, `Explore`, `Plan`, nama agent kustom, atau nama dengan cakupan plugin seperti `^my-plugin:reviewer$` |

213| `PreCompact`, `PostCompact` | apa yang memicu compaction | `manual`, `auto` |219| `PreCompact`, `PostCompact` | apa yang memicu compaction | `manual`, `auto` |

214| `SubagentStop` | tipe agent | nilai yang sama seperti `SubagentStart` |220| `SubagentStop` | tipe agent | nilai yang sama seperti `SubagentStart` |

215| `ConfigChange` | sumber konfigurasi | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |221| `ConfigChange` | sumber konfigurasi | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |


244}250}

245```251```

246 252 

247`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, dan `CwdChanged` tidak mendukung matchers dan selalu dijalankan pada setiap kemunculan. Jika Anda menambahkan bidang `matcher` ke event ini, itu akan diabaikan secara diam-diam.253`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `MessageDisplay`, dan `CwdChanged` tidak mendukung matchers dan selalu dijalankan pada setiap kemunculan. Jika Anda menambahkan bidang `matcher` ke event ini, itu akan diabaikan secara diam-diam.

248 254 

249Untuk tool events, Anda dapat memfilter lebih sempit dengan menetapkan bidang [`if`](#common-fields) pada handler hook individual. `if` menggunakan [sintaks aturan izin](/id/permissions) untuk mencocokkan terhadap nama tool dan argumen bersama-sama, jadi `"Bash(git *)"` dijalankan ketika subperintah apa pun dari input Bash cocok dengan `git *` dan `"Edit(*.ts)"` dijalankan hanya untuk file TypeScript.255Untuk tool events, Anda dapat memfilter lebih sempit dengan menetapkan bidang [`if`](#common-fields) pada handler hook individual. `if` menggunakan [sintaks aturan izin](/id/permissions) untuk mencocokkan terhadap nama tool dan argumen bersama-sama, jadi `"Bash(git *)"` dijalankan ketika subperintah apa pun dari input Bash cocok dengan `git *` dan `"Edit(*.ts)"` dijalankan hanya untuk file TypeScript.

250 256 


260* `mcp__filesystem__read_file`: tool read file dari Filesystem server266* `mcp__filesystem__read_file`: tool read file dari Filesystem server

261* `mcp__github__search_repositories`: tool search dari GitHub server267* `mcp__github__search_repositories`: tool search dari GitHub server

262 268 

263Untuk mencocokkan setiap tool dari server, tambahkan `.*` ke awalan server. `.*` diperlukan: matcher seperti `mcp__memory` hanya berisi huruf dan underscore, jadi dibandingkan sebagai string yang tepat dan tidak cocok dengan tool apa pun.269Untuk mencocokkan setiap tool dari server, tambahkan `.*` ke awalan server. `.*` diperlukan: matcher seperti `mcp__memory` atau `mcp__brave-search` hanya berisi karakter exact-match, jadi dibandingkan sebagai string yang tepat dan tidak cocok dengan tool apa pun.

264 270 

265* `mcp__memory__.*` cocok dengan semua tools dari server `memory`271* `mcp__memory__.*` cocok dengan semua tools dari server `memory`

272* `mcp__brave-search__.*` cocok dengan semua tools dari server yang namanya berisi tanda hubung

266* `mcp__.*__write.*` cocok dengan tool apa pun yang namanya dimulai dengan `write` dari server apa pun273* `mcp__.*__write.*` cocok dengan tool apa pun yang namanya dimulai dengan `write` dari server apa pun

267 274 

275Tanda hubung dalam set exact-match memerlukan Claude Code v2.1.195 atau lebih baru. Pada versi sebelumnya, awalan bare dengan tanda hubung seperti `mcp__brave-search` dievaluasi sebagai ekspresi reguler yang tidak berlabuh dan cocok dengan setiap tool dari server itu. Bentuk `mcp__brave-search__.*` bekerja pada setiap versi.

276 

268Contoh ini mencatat semua operasi memory server dan memvalidasi operasi write dari server MCP apa pun:277Contoh ini mencatat semua operasi memory server dan memvalidasi operasi write dari server MCP apa pun:

269 278 

270```json theme={null}279```json theme={null}


306* **[Prompt hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): kirimkan prompt ke model Claude untuk evaluasi single-turn. Model mengembalikan keputusan yes/no sebagai JSON. Lihat [Prompt-based hooks](#prompt-based-hooks).315* **[Prompt hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): kirimkan prompt ke model Claude untuk evaluasi single-turn. Model mengembalikan keputusan yes/no sebagai JSON. Lihat [Prompt-based hooks](#prompt-based-hooks).

307* **[Agent hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): spawn subagent yang dapat menggunakan tools seperti Read, Grep, dan Glob untuk memverifikasi kondisi sebelum mengembalikan keputusan. Agent hooks adalah eksperimental dan mungkin berubah. Lihat [Agent-based hooks](#agent-based-hooks).316* **[Agent hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): spawn subagent yang dapat menggunakan tools seperti Read, Grep, dan Glob untuk memverifikasi kondisi sebelum mengembalikan keputusan. Agent hooks adalah eksperimental dan mungkin berubah. Lihat [Agent-based hooks](#agent-based-hooks).

308 317 

318Semua matching hooks dijalankan secara paralel, dan handler identik dideduplikasi secara otomatis. Command hooks dideduplikasi berdasarkan string perintah dan `args`, dan HTTP hooks dideduplikasi berdasarkan URL.

319 

320Handlers dijalankan di direktori saat ini dengan lingkungan Claude Code. Variabel lingkungan `$CLAUDE_CODE_REMOTE` diatur ke `"true"` di lingkungan web jarak jauh dan tidak diatur di CLI lokal.

321 

309<h4 id="common-fields">322<h4 id="common-fields">

310 Bidang umum323 Bidang umum

311</h4>324</h4>


341Selain [bidang umum](#common-fields), command hooks menerima bidang-bidang ini:354Selain [bidang umum](#common-fields), command hooks menerima bidang-bidang ini:

342 355 

343| Bidang | Diperlukan | Deskripsi |356| Bidang | Diperlukan | Deskripsi |

344| :------------ | :--------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |357| :------------ | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

345| `command` | ya | Perintah shell untuk dijalankan. Dengan `args`, executable untuk spawn secara langsung. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |358| `command` | ya | Perintah shell untuk dijalankan. Dengan `args`, executable untuk spawn secara langsung. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |

346| `args` | tidak | Daftar argumen. Ketika ada, `command` diselesaikan sebagai executable dan di-spawn secara langsung dengan `args` sebagai vektor argumen, tanpa shell yang terlibat. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |359| `args` | tidak | Daftar argumen. Ketika ada, `command` diselesaikan sebagai executable dan di-spawn secara langsung dengan `args` sebagai vektor argumen, tanpa shell yang terlibat. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |

347| `async` | tidak | Jika `true`, dijalankan di latar belakang tanpa memblokir. Lihat [Run hooks in the background](#run-hooks-in-the-background) |360| `async` | tidak | Jika `true`, dijalankan di latar belakang tanpa memblokir. Lihat [Run hooks in the background](#run-hooks-in-the-background) |

348| `asyncRewake` | tidak | Jika `true`, dijalankan di latar belakang dan membangunkan Claude pada kode keluar 2. Menyiratkan `async`. stderr hook, atau stdout jika stderr kosong, ditampilkan ke Claude sebagai pengingat sistem sehingga dapat bereaksi terhadap kegagalan latar belakang yang berjalan lama |361| `asyncRewake` | tidak | Jika `true`, dijalankan di latar belakang dan membangunkan Claude pada kode keluar 2. Menyiratkan `async`. stderr hook, atau stdout jika stderr kosong, ditampilkan ke Claude sebagai pengingat sistem sehingga dapat bereaksi terhadap kegagalan latar belakang yang berjalan lama |

349| `shell` | tidak | Shell untuk digunakan untuk hook ini. Menerima `"bash"` (default) atau `"powershell"`. Menetapkan `"powershell"` menjalankan perintah melalui PowerShell di Windows. Tidak memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL` karena hooks spawn PowerShell secara langsung. Diabaikan ketika `args` diatur |362| `shell` | tidak | Shell untuk digunakan untuk hook ini. Menerima `"bash"` atau `"powershell"`. Default ke `"bash"`, atau ke `"powershell"` di Windows ketika Git Bash tidak diinstal. Menetapkan `"powershell"` menjalankan perintah melalui PowerShell di Windows. Tidak memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL` karena hooks spawn PowerShell secara langsung. Diabaikan ketika `args` diatur |

350 363 

351<a id="exec-form-and-shell-form" />364<a id="exec-form-and-shell-form" />

352 365 


479| `prompt` | ya | Teks prompt untuk dikirim ke model. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Escape dengan backslash untuk menyertakan teks literal: `\$1.00` dirender sebagai `$1.00` |492| `prompt` | ya | Teks prompt untuk dikirim ke model. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Escape dengan backslash untuk menyertakan teks literal: `\$1.00` dirender sebagai `$1.00` |

480| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model cepat |493| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model cepat |

481 494 

482Semua matching hooks dijalankan secara paralel, dan handler identik dideduplikasi secara otomatis. Command hooks dideduplikasi berdasarkan string perintah dan `args`, dan HTTP hooks dideduplikasi berdasarkan URL. Handlers dijalankan di direktori saat ini dengan lingkungan Claude Code. Variabel lingkungan `$CLAUDE_CODE_REMOTE` diatur ke `"true"` di lingkungan web jarak jauh dan tidak diatur di CLI lokal.

483 

484<h3 id="reference-scripts-by-path">495<h3 id="reference-scripts-by-path">

485 Referensi skrip berdasarkan path496 Referensi skrip berdasarkan path

486</h3>497</h3>


620| Bidang | Deskripsi |631| Bidang | Deskripsi |

621| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |632| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

622| `session_id` | Pengenal sesi saat ini |633| `session_id` | Pengenal sesi saat ini |

634| `prompt_id` | UUID yang mengidentifikasi prompt pengguna yang sedang diproses. Cocok dengan atribut [`prompt.id` pada events OpenTelemetry](/id/monitoring-usage#event-correlation-attributes), sehingga Anda dapat menghubungkan output hook dengan telemetri untuk satu prompt. Tidak ada sampai input pengguna pertama. {/* min-version: 2.1.196 */}Memerlukan Claude Code v2.1.196 atau lebih baru |

623| `transcript_path` | Path ke JSON percakapan |635| `transcript_path` | Path ke JSON percakapan |

624| `cwd` | Direktori kerja saat hook dipanggil |636| `cwd` | Direktori kerja saat hook dipanggil |

625| `permission_mode` | [Mode izin](/id/permissions#permission-modes) saat ini: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"`, atau `"bypassPermissions"`. Tidak semua events menerima bidang ini: lihat contoh JSON setiap event di bawah untuk memeriksa |637| `permission_mode` | [Mode izin](/id/permissions#permission-modes) saat ini: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"`, atau `"bypassPermissions"`. Tidak semua events menerima bidang ini: lihat contoh JSON setiap event di bawah untuk memeriksa |


629Saat berjalan dengan `--agent` atau di dalam subagent, dua bidang tambahan disertakan:641Saat berjalan dengan `--agent` atau di dalam subagent, dua bidang tambahan disertakan:

630 642 

631| Bidang | Deskripsi |643| Bidang | Deskripsi |

632| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |644| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

633| `agent_id` | Pengenal unik untuk subagent. Hadir hanya ketika hook dijalankan di dalam pemanggilan subagent. Gunakan ini untuk membedakan pemanggilan hook subagent dari pemanggilan thread utama. |645| `agent_id` | Pengenal unik untuk subagent. Hadir hanya ketika hook dijalankan di dalam pemanggilan subagent. Gunakan ini untuk membedakan pemanggilan hook subagent dari pemanggilan thread utama. |

634| `agent_type` | Nama agent (misalnya, `"Explore"` atau `"security-reviewer"`). Hadir ketika sesi menggunakan `--agent` atau hook dijalankan di dalam subagent. Untuk subagents, tipe subagent mengambil alih nilai `--agent` sesi. Untuk [custom subagents](/id/sub-agents), ini adalah bidang `name` dari frontmatter agent, bukan nama file. |646| `agent_type` | Nama agent (misalnya, `"Explore"` atau `"security-reviewer"`). Hadir ketika sesi menggunakan `--agent` atau hook dijalankan di dalam subagent. Untuk subagents, tipe subagent mengambil alih nilai `--agent` sesi. Untuk [custom subagents](/id/sub-agents), ini adalah bidang `name` dari frontmatter agent, bukan nama file. Untuk subagents yang dikirim oleh [plugin](/id/plugins), ini adalah pengenal yang dibatasi plugin seperti `my-plugin:reviewer`, bukan nama frontmatter telanjang. Lihat [SubagentStart](#subagentstart) untuk cara menulis matcher terhadap nama yang dibatasi plugin. |

635 647 

636Hanya hooks [`SessionStart`](#sessionstart) yang dapat menerima bidang `model`, dan tidak dijamin ada. Tidak ada variabel lingkungan `$CLAUDE_MODEL`. Proses hook mewarisi lingkungan induk, jadi dapat membaca `$ANTHROPIC_MODEL` jika Anda menetapkannya di shell Anda, tetapi nilai itu tidak berubah ketika Anda beralih model dengan `/model` selama sesi.648Hanya hooks [`SessionStart`](#sessionstart) yang dapat menerima bidang `model`, dan tidak dijamin ada. Tidak ada variabel lingkungan `$CLAUDE_MODEL`. Proses hook mewarisi lingkungan induk, jadi dapat membaca `$ANTHROPIC_MODEL` jika Anda menetapkannya di shell Anda, tetapi nilai itu tidak berubah ketika Anda beralih model dengan `/model` selama sesi.

637 649 


640```json theme={null}652```json theme={null}

641{653{

642 "session_id": "abc123",654 "session_id": "abc123",

655 "prompt_id": "550e8400-e29b-41d4-a716-446655440000",

643 "transcript_path": "/home/user/.claude/projects/.../transcript.jsonl",656 "transcript_path": "/home/user/.claude/projects/.../transcript.jsonl",

644 "cwd": "/home/user/my-project",657 "cwd": "/home/user/my-project",

645 "permission_mode": "default",658 "permission_mode": "default",


796# Notification hook: ping desktop ketika Claude Code membutuhkan perhatian.809# Notification hook: ping desktop ketika Claude Code membutuhkan perhatian.

797input=$(cat)810input=$(cat)

798title="Claude Code'811title="Claude Code'

799body=$(jq -r '.message // 'Needs your attention'' <<<'$input")812body=$(jq -r '.message // 'Needs your attention"' <<<"$input")

800seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")813seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")

801jq -nc --arg seq "$seq" '{terminalSequence: $seq}'814jq -nc --arg seq "$seq" '{terminalSequence: $seq}'

802```815```


867 880 

868Beberapa events juga dapat menulis ulang konten daripada hanya mengizinkan atau memblokir:881Beberapa events juga dapat menulis ulang konten daripada hanya mengizinkan atau memblokir:

869 882 

870* `PreToolUse` `updatedInput` langsung di bawah `hookSpecificOutput` menggantikan argumen tool sebelum dijalankan ([details](#pretooluse-decision-control))883* `PreToolUse`: `updatedInput` langsung di bawah `hookSpecificOutput` menggantikan argumen tool sebelum dijalankan. Lihat [PreToolUse decision control](#pretooluse-decision-control) untuk set lengkap opsi.

871* `PermissionRequest` `updatedInput` di dalam objek `decision` ([details](#permissionrequest-decision-control))884* `PermissionRequest`: `updatedInput` di dalam objek `decision`. Lihat [PermissionRequest decision control](#permissionrequest-decision-control) untuk set lengkap opsi.

872* `PostToolUse` `updatedToolOutput` menggantikan hasil tool ([details](#posttooluse-decision-control))885* `PostToolUse`: `updatedToolOutput` menggantikan hasil tool. Lihat [PostToolUse decision control](#posttooluse-decision-control) untuk set lengkap opsi.

873* `UserPromptSubmit` tidak dapat mengganti prompt; hanya menyuntikkan `additionalContext` di sampingnya886* `UserPromptSubmit`: tidak dapat mengganti prompt; hanya menyuntikkan `additionalContext` di sampingnya

874 887 

875Untuk kasus penggunaan redaksi atau transformasi, intersep di `PreToolUse` untuk input tool keluar dan `PostToolUse` untuk hasil tool masuk.888Untuk kasus penggunaan redaksi atau transformasi, intersep di `PreToolUse` untuk input tool keluar dan `PostToolUse` untuk hasil tool masuk.

876 889 


959 "cwd": "/Users/...",972 "cwd": "/Users/...",

960 "hook_event_name": "SessionStart",973 "hook_event_name": "SessionStart",

961 "source": "startup",974 "source": "startup",

962 "model": "claude-sonnet-4-6"975 "model": "claude-sonnet-5"

963}976}

964```977```

965 978 


1148 1161 

1149Hooks `UserPromptSubmit` memiliki timeout default 30 detik untuk tipe `command`, `http`, dan `mcp_tool`, lebih pendek dari default 600 detik untuk tipe tersebut pada event lain. Karena hook ini dijalankan sebelum setiap prompt dan memblokir pemrosesan model sampai selesai, hook yang macet menghentikan sesi. Jika hook Anda memerlukan lebih banyak waktu, atur bidang `timeout` dalam entri hook.1162Hooks `UserPromptSubmit` memiliki timeout default 30 detik untuk tipe `command`, `http`, dan `mcp_tool`, lebih pendek dari default 600 detik untuk tipe tersebut pada event lain. Karena hook ini dijalankan sebelum setiap prompt dan memblokir pemrosesan model sampai selesai, hook yang macet menghentikan sesi. Jika hook Anda memerlukan lebih banyak waktu, atur bidang `timeout` dalam entri hook.

1150 1163 

1164Hook `UserPromptSubmit` yang mencapai timeout-nya dibatalkan dan output-nya, termasuk `additionalContext` apa pun, dibuang. Prompt masih mencapai Claude tanpa konteks itu. Mulai dari v2.1.196, transkrip menampilkan pemberitahuan yang menamai hook, timeout yang dijalankan, dan bahwa output dibuang. Versi sebelumnya membatalkan hook tanpa pemberitahuan.

1165 

1151<h4 id="userpromptsubmit-input">1166<h4 id="userpromptsubmit-input">

1152 UserPromptSubmit input1167 UserPromptSubmit input

1153</h4>1168</h4>


1404 1419 

1405Dijalankan setelah Claude membuat parameter tool dan sebelum memproses pemanggilan tool. Cocok pada nama tool: `Bash`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `WebFetch`, `WebSearch`, `AskUserQuestion`, `ExitPlanMode`, dan nama [MCP tool](#match-mcp-tools) apa pun.1420Dijalankan setelah Claude membuat parameter tool dan sebelum memproses pemanggilan tool. Cocok pada nama tool: `Bash`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `WebFetch`, `WebSearch`, `AskUserQuestion`, `ExitPlanMode`, dan nama [MCP tool](#match-mcp-tools) apa pun.

1406 1421 

1422<Warning>

1423 PreToolUse hanya dijalankan ketika Claude memanggil tool. File yang Anda [referensikan dengan `@` dalam prompt Anda](/id/common-workflows#reference-files-and-directories) ditambahkan tanpa pemanggilan tool apa pun: Claude Code menyisipkan konten mereka saat membangun prompt, jadi tidak ada hook PreToolUse yang dijalankan untuk mereka, termasuk hooks yang cocok dengan `Read`. Untuk memblokir path tertentu dari referensi `@`, gunakan [aturan deny `Read`](/id/permissions#read-and-edit) sebagai gantinya.

1424</Warning>

1425 

1407Gunakan [PreToolUse decision control](#pretooluse-decision-control) untuk mengizinkan, menolak, menanyakan, atau menunda pemanggilan tool.1426Gunakan [PreToolUse decision control](#pretooluse-decision-control) untuk mengizinkan, menolak, menanyakan, atau menunda pemanggilan tool.

1408 1427 

1409<h4 id="pretooluse-input">1428<h4 id="pretooluse-input">


2054 2073 

2055Dijalankan ketika subagent Claude Code dispawn melalui tool Agent. Mendukung matchers untuk memfilter berdasarkan nama tipe agent. Untuk agent bawaan, ini adalah nama agent seperti `general-purpose`, `Explore`, atau `Plan`. Untuk [custom subagents](/id/sub-agents), ini adalah bidang `name` dari frontmatter agent, bukan nama file.2074Dijalankan ketika subagent Claude Code dispawn melalui tool Agent. Mendukung matchers untuk memfilter berdasarkan nama tipe agent. Untuk agent bawaan, ini adalah nama agent seperti `general-purpose`, `Explore`, atau `Plan`. Untuk [custom subagents](/id/sub-agents), ini adalah bidang `name` dari frontmatter agent, bukan nama file.

2056 2075 

2076Untuk subagents yang dikirim oleh [plugin](/id/plugins), tipe agent adalah pengenal bersifat plugin seperti `my-plugin:reviewer`, bukan nama frontmatter biasa. Titik dua menempatkan nama bersifat plugin pada jalur ekspresi reguler, jadi jangkar matcher dengan `^` dan `$` untuk kecocokan yang tepat: `^my-plugin:reviewer$`.

2077 

2057<h4 id="subagentstart-input">2078<h4 id="subagentstart-input">

2058 SubagentStart input2079 SubagentStart input

2059</h4>2080</h4>


3287}3308}

3288```3309```

3289 3310 

3311Untuk mereferensikan root proyek dari perintah bentuk shell PowerShell, bacalah sebagai variabel lingkungan dengan `$env:CLAUDE_PROJECT_DIR`. PowerShell memperlakukan bentuk `${CLAUDE_PROJECT_DIR}` bare sebagai variabel lokal, bukan pencarian lingkungan, dan Claude Code mengganti placeholder itu dalam bentuk shell hanya untuk [plugin hooks](#reference-scripts-by-path). Untuk hook yang didefinisikan dalam `settings.json`, gunakan bentuk `$env:` atau beralih ke [exec form](#exec-form-and-shell-form), di mana `${CLAUDE_PROJECT_DIR}` diganti di setiap elemen `args` terlepas dari di mana hook didefinisikan.

3312 

3313Contoh di bawah menunjukkan hook `settings.json` yang menjalankan skrip proyek dengan bentuk `$env:`:

3314 

3315```json theme={null}

3316{

3317 "type": "command",

3318 "shell": "powershell",

3319 "command": "& \"$env:CLAUDE_PROJECT_DIR\\.claude\\hooks\\check.ps1\""

3320}

3321```

3322 

3290<h2 id="debug-hooks">3323<h2 id="debug-hooks">

3291 Debug hooks3324 Debug hooks

3292</h2>3325</h2>

Details

249* Riwayat input direset ketika Anda menjalankan `/clear` untuk memulai sesi baru. Percakapan sesi sebelumnya disimpan dan dapat dilanjutkan.249* Riwayat input direset ketika Anda menjalankan `/clear` untuk memulai sesi baru. Percakapan sesi sebelumnya disimpan dan dapat dilanjutkan.

250* Mengirimkan prompt yang sama dua kali berturut-turut mencatat satu entri riwayat, jadi menekan Up melangkah ke prompt berbeda sebelumnya250* Mengirimkan prompt yang sama dua kali berturut-turut mencatat satu entri riwayat, jadi menekan Up melangkah ke prompt berbeda sebelumnya

251* Gunakan panah Up/Down untuk menavigasi (lihat pintasan keyboard di atas)251* Gunakan panah Up/Down untuk menavigasi (lihat pintasan keyboard di atas)

252* **Catatan**: ekspansi riwayat (`!`) dinonaktifkan secara default252* Ekspansi riwayat dengan `!` dinonaktifkan secara default

253 253 

254<h3 id="reverse-search-with-ctrl-r">254<h3 id="reverse-search-with-ctrl-r">

255 Pencarian terbalik dengan Ctrl+R255 Pencarian terbalik dengan Ctrl+R


271Pencarian memuat 100 prompt unik terbaru dalam cakupan yang dipilih, dengan duplikat yang disatukan ke kemunculan terbaru. Prompt yang cocok ditampilkan dengan istilah pencarian disorot, sehingga Anda dapat menemukan dan menggunakan kembali input sebelumnya.271Pencarian memuat 100 prompt unik terbaru dalam cakupan yang dipilih, dengan duplikat yang disatukan ke kemunculan terbaru. Prompt yang cocok ditampilkan dengan istilah pencarian disorot, sehingga Anda dapat menemukan dan menggunakan kembali input sebelumnya.

272 272 

273<h2 id="background-bash-commands">273<h2 id="background-bash-commands">

274 Perintah bash latar belakang274 Perintah Bash latar belakang

275</h2>275</h2>

276 276 

277Claude Code mendukung menjalankan perintah bash di latar belakang, memungkinkan Anda untuk terus bekerja sementara proses yang berjalan lama dieksekusi.277Claude Code mendukung menjalankan perintah Bash di latar belakang, memungkinkan Anda untuk terus bekerja sementara proses yang berjalan lama dieksekusi.

278 278 

279<h3 id="how-backgrounding-works">279<h3 id="how-backgrounding-works">

280 Cara backgrounding bekerja280 Cara backgrounding bekerja


285Untuk menjalankan perintah di latar belakang, Anda dapat:285Untuk menjalankan perintah di latar belakang, Anda dapat:

286 286 

287* Minta Claude Code untuk menjalankan perintah di latar belakang287* Minta Claude Code untuk menjalankan perintah di latar belakang

288* Tekan Ctrl+B untuk memindahkan invokasi alat Bash biasa ke latar belakang. (Pengguna Tmux harus menekan Ctrl+B dua kali karena kunci awalan tmux.)288* Tekan `Ctrl+B` untuk memindahkan invokasi alat Bash biasa ke latar belakang. Pengguna Tmux harus menekan `Ctrl+B` dua kali karena kunci awalan tmux.

289 289 

290**Fitur utama:**290**Fitur utama:**

291 291 

292* Output ditulis ke file dan Claude dapat mengambilnya menggunakan alat Read292* Output ditulis ke file dan Claude dapat mengambilnya menggunakan alat Read

293* Tugas latar belakang memiliki ID unik untuk pelacakan dan pengambilan output293* Tugas latar belakang memiliki ID unik untuk pelacakan dan pengambilan output

294* Tugas latar belakang dibersihkan secara otomatis ketika Claude Code keluar294* Tugas latar belakang dibersihkan secara otomatis ketika Claude Code keluar. Backgrounding sesi alih-alih keluar menyerahkannya ke sesi latar belakang, di mana mereka terus berjalan. Lihat [background a running session](/id/agent-view#from-inside-a-session)

295* Tugas latar belakang secara otomatis dihentikan jika output melebihi 5GB, dengan catatan di stderr yang menjelaskan alasannya295* Tugas latar belakang secara otomatis dihentikan jika output melebihi 5GB, dengan catatan di stderr yang menjelaskan alasannya

296* Sejak v2.1.193, di macOS dan Linux, tugas latar belakang yang sedang berjalan dihentikan ketika sistem operasi menandakan tekanan memori, asalkan sesi telah idle selama minimal 30 menit tanpa turn atau subagent yang berjalan. Atur [`CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP`](/id/env-vars) ke `1` untuk mematikannya

296 297 

297Untuk menonaktifkan semua fungsionalitas tugas latar belakang, atur variabel lingkungan `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` ke `1`. Lihat [Environment variables](/id/env-vars) untuk detail.298Untuk menonaktifkan semua fungsionalitas tugas latar belakang, atur variabel lingkungan `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` ke `1`. Lihat [Environment variables](/id/env-vars) untuk detail.

298 299 


322* Menampilkan kemajuan dan output secara real-time323* Menampilkan kemajuan dan output secara real-time

323* Mendukung backgrounding `Ctrl+B` yang sama untuk perintah yang berjalan lama324* Mendukung backgrounding `Ctrl+B` yang sama untuk perintah yang berjalan lama

324* Tidak memerlukan Claude untuk menginterpretasi atau menyetujui perintah325* Tidak memerlukan Claude untuk menginterpretasi atau menyetujui perintah

325* Mendukung pelengkapan otomatis berbasis riwayat: ketik perintah parsial dan tekan **Tab** untuk melengkapi dari perintah `!` sebelumnya dalam proyek saat ini326* Mendukung pelengkapan otomatis berbasis riwayat: ketik perintah parsial dan tekan `Tab` untuk melengkapi dari perintah `!` sebelumnya dalam proyek saat ini

327* Mendukung pelengkapan otomatis jalur file langsung sejak v2.1.193 di semua platform: ketik token yang berisi garis miring ke depan, seperti `./src/` atau `~/`, untuk melihat dropdown file dan direktori yang cocok, kemudian tekan `Tab` untuk menerima. Gunakan garis miring ke depan di Windows juga; dropdown dipicu oleh `/`, bukan `\`

326* Keluar dengan `Escape`, `Backspace`, atau `Ctrl+U` pada prompt kosong328* Keluar dengan `Escape`, `Backspace`, atau `Ctrl+U` pada prompt kosong

327* Menempel teks yang dimulai dengan `!` ke prompt kosong memasuki mode shell secara otomatis, sesuai dengan perilaku `!` yang diketik329* Menempel teks yang dimulai dengan `!` ke prompt kosong memasuki mode shell secara otomatis, sesuai dengan perilaku `!` yang diketik

328 330 


338 340 

339Setelah Claude merespons, saran terus muncul berdasarkan riwayat percakapan Anda, seperti langkah lanjutan dari permintaan multi-bagian atau kelanjutan alami dari alur kerja Anda.341Setelah Claude merespons, saran terus muncul berdasarkan riwayat percakapan Anda, seperti langkah lanjutan dari permintaan multi-bagian atau kelanjutan alami dari alur kerja Anda.

340 342 

341* Tekan **Tab** atau **Right arrow** untuk menempatkan saran di input prompt, kemudian **Enter** untuk mengirimkan343* Tekan `Tab` atau `Right arrow` untuk menempatkan saran di input prompt, kemudian `Enter` untuk mengirimkan

342* Mulai mengetik untuk menolaknya344* Mulai mengetik untuk menolaknya

343 345 

344Saran berjalan sebagai permintaan latar belakang yang menggunakan kembali cache prompt percakapan induk, sehingga biaya tambahan minimal. Claude Code melewati pembuatan saran ketika cache dingin untuk menghindari biaya yang tidak perlu.346Saran berjalan sebagai permintaan latar belakang yang menggunakan kembali cache prompt percakapan induk, sehingga biaya tambahan minimal. Claude Code melewati pembuatan saran ketika cache dingin untuk menghindari biaya yang tidak perlu.


368* **Respons tunggal**: tidak ada giliran lanjutan dalam overlay. Untuk melanjutkan utas, pisahkan ke dalam sesinya sendiri dengan `f`.370* **Respons tunggal**: tidak ada giliran lanjutan dalam overlay. Untuk melanjutkan utas, pisahkan ke dalam sesinya sendiri dengan `f`.

369* **Biaya rendah**: pertanyaan sampingan menggunakan kembali cache prompt percakapan induk, sehingga biaya tambahan minimal.371* **Biaya rendah**: pertanyaan sampingan menggunakan kembali cache prompt percakapan induk, sehingga biaya tambahan minimal.

370 372 

371Setelah jawaban muncul, overlay menerima kunci-kunci ini. Pertanyaan sampingan sebelumnya dari sesi yang sama muncul sebagai daftar yang redup di atas jawaban saat ini; mereka tetap keluar dari riwayat percakapan tetapi tetap terlihat dalam overlay sampai Anda menghapusnya.373Pertanyaan sampingan sebelumnya dari sesi yang sama muncul sebagai daftar yang redup di atas jawaban saat ini. Mereka tetap keluar dari riwayat percakapan tetapi tetap terlihat dalam overlay sampai Anda menghapusnya.

374 

375Setelah jawaban muncul, overlay menerima kunci-kunci ini.

372 376 

373| Kunci | Tindakan |377| Kunci | Tindakan |

374| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |378| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |


406 Status tinjauan PR410 Status tinjauan PR

407</h2>411</h2>

408 412 

409Ketika bekerja pada cabang dengan permintaan tarik terbuka, Claude Code menampilkan tautan PR yang dapat diklik di footer (misalnya, "PR #446"). Tautan memiliki garis bawah berwarna yang menunjukkan status tinjauan:413Ketika bekerja pada cabang dengan permintaan tarik terbuka, Claude Code menampilkan tautan PR yang dapat diklik di footer, seperti "PR #446". Tautan memiliki garis bawah berwarna yang menunjukkan status tinjauan:

410 414 

411* Hijau: disetujui415* Hijau: disetujui

412* Kuning: menunggu tinjauan416* Kuning: menunggu tinjauan

413* Merah: perubahan diminta417* Merah: perubahan diminta

414* Abu-abu: draft418* Abu-abu: draft

415 419 

416Lencana menghilang setelah permintaan tarik digabungkan atau ditutup. `Cmd+click` (Mac) atau `Ctrl+click` (Windows/Linux) tautan untuk membuka permintaan tarik di browser Anda. Status diperbarui setiap 60 detik, dan segera setelah perintah `gh pr` atau `git push` dijalankan dalam sesi.420Lencana menghilang setelah permintaan tarik digabungkan atau ditutup. `Cmd+click` (macOS) atau `Ctrl+click` (Windows/Linux) tautan untuk membuka permintaan tarik di browser Anda. Status diperbarui setiap 60 detik, dan segera setelah perintah `gh pr` atau `git push` dijalankan dalam sesi.

417 421 

418<Note>422<Note>

419 Status PR memerlukan CLI `gh` untuk diinstal dan diautentikasi (`gh auth login`).423 Status PR memerlukan CLI `gh` untuk diinstal dan diautentikasi (`gh auth login`).

jetbrains.md +1 −1

Details

233 Pertimbangan Keamanan233 Pertimbangan Keamanan

234</h2>234</h2>

235 235 

236Ketika Claude Code berjalan di JetBrains IDE dengan izin auto-edit diaktifkan, Claude Code mungkin dapat memodifikasi file konfigurasi IDE yang dapat dijalankan secara otomatis oleh IDE Anda. Ini dapat meningkatkan risiko menjalankan Claude Code dalam mode auto-edit dan memungkinkan melewati prompt izin Claude Code untuk eksekusi bash.236Ketika Claude Code berjalan di JetBrains IDE dalam mode izin [`acceptEdits`](/id/permission-modes#auto-approve-file-edits-with-acceptedits-mode), Claude Code mungkin dapat memodifikasi file konfigurasi IDE yang dapat dijalankan secara otomatis oleh IDE Anda. Ini dapat meningkatkan risiko menjalankan Claude Code dalam mode `acceptEdits` dan memungkinkan melewati prompt izin Claude Code untuk eksekusi bash.

237 237 

238Saat berjalan di JetBrains IDEs, pertimbangkan:238Saat berjalan di JetBrains IDEs, pertimbangkan:

239 239 

llm-gateway.md +0 −96 deleted

File Deleted View Diff

1> ## Documentation Index

2> 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.

4 

5# LLM gateway

6 

7> Arahkan Claude Code melalui LLM gateway untuk autentikasi terpusat, pelacakan penggunaan, dan kontrol biaya. Mencakup menghubungkan Claude Code ke gateway, meluncurkannya untuk organisasi Anda, apa yang Claude Code kirimkan ke gateway, dan bagaimana gateway berinteraksi dengan langganan claude.ai.

8 

9LLM gateway adalah proxy yang dijalankan organisasi Anda antara Claude Code dan penyedia model. Claude Code mengirimkan lalu lintas API ke gateway, dan gateway meneruskannya ke penyedia menggunakan kredensial yang dikendalikan organisasi Anda.

10 

11<Note>

12 * Jika Anda adalah pengembang yang terhubung ke gateway yang ada: [hubungkan Claude Code ke gateway Anda](/id/llm-gateway-connect)

13 * Jika Anda adalah admin yang meluncurkan gateway untuk organisasi Anda: [terapkan dan distribusikan gateway](/id/llm-gateway-rollout)

14 * Jika Anda mengonfigurasi produk gateway: [referensi protokol gateway](/id/llm-gateway-protocol)

15</Note>

16 

17<h2 id="what-a-gateway-provides">

18 Apa yang disediakan gateway

19</h2>

20 

21Gateway memberikan organisasi Anda satu tempat untuk mengelola:

22 

23* **Kredensial**: kunci penyedia tetap di sisi server; pengembang memegang kredensial gateway sebagai gantinya

24* **Pelacakan penggunaan**: atribusikan penggunaan berdasarkan pengembang atau tim, terlepas dari penyedia mana yang melayani permintaan

25* **Kontrol biaya**: terapkan anggaran dan batas laju di satu tempat

26* **Pencatatan audit**: catat setiap permintaan model untuk kepatuhan

27* **Peralihan penyedia**: ubah penyedia dalam konfigurasi gateway, tanpa menyentuh mesin pengembang

28 

29Semua ini kecuali peralihan penyedia berlaku apakah upstream adalah API Anthropic atau [penyedia cloud](/id/third-party-integrations).

30 

31Pertukaran adalah bahwa gateway menjadi infrastruktur yang dioperasikan organisasi Anda. Claude Code menambahkan kemampuan dengan setiap rilis, dan gateway yang tidak meneruskannya merusak fitur yang sesuai, jadi produk gateway perlu tetap diperbarui seiring Claude Code berkembang. [Referensi protokol gateway](/id/llm-gateway-protocol) mencakup apa yang harus diteruskan.

32 

33<h2 id="how-a-gateway-works">

34 Bagaimana gateway bekerja

35</h2>

36 

37Secara default, Claude Code mengirimkan permintaan langsung ke API Anthropic di `api.anthropic.com`. Untuk merutekan melalui gateway, atur `ANTHROPIC_BASE_URL` ke alamat gateway; Claude Code mengirimkan permintaan yang sama ke sana sebagai gantinya. Gateway mengautentikasi pengembang, melampirkan kredensial penyedia organisasi Anda, dan meneruskan setiap permintaan ke penyedia mana pun yang dikonfigurasinya.

38 

39`ANTHROPIC_BASE_URL` adalah variabel alamat untuk sebagian besar gateway. Gateway yang menghadap penyedia cloud tertentu, seperti Bedrock, Vertex, Foundry, atau Claude Platform di AWS, menggunakan variabel URL dasar penyedia itu sebagai gantinya; [Format API](/id/llm-gateway-protocol#api-formats) mencantumkan variabel mana yang cocok dengan setiap konfigurasi.

40 

41<Frame>

42 <img src="https://mintcdn.com/claude-code/-uq-4JE0W_JO5Er5/images/llm-gateway-flow.svg?fit=max&auto=format&n=-uq-4JE0W_JO5Er5&q=85&s=1c1a8dcc0cfcc3a58652cc8e28cd3e20" alt="Diagram menunjukkan Claude Code merutekan melalui LLM gateway. Di zona mesin pengembang, CLI Claude Code, ekstensi VS Code, dan klien SDK CI atau Agent mengirimkan permintaan ke gateway, dengan variabel URL dasar untuk format API gateway menunjuk ke sana dan setiap pengembang memegang kredensial per-pengembang, dan aplikasi desktop mencapai gateway yang sama melalui konfigurasi yang didistribusikan organisasi. Di zona berlabel infrastruktur Anda, LLM gateway menangani autentikasi, pelacakan penggunaan, anggaran, dan perutean, dan meneruskan permintaan dengan kredensial organisasi Anda. Di zona penyedia model, panah solid mengarah ke penyedia yang Anda konfigurasi, ditampilkan sebagai API Anthropic, dan panah putus-putus mengarah ke opsi penyedia lain, diilustrasikan dengan Amazon Bedrock, Google Vertex AI, dan Microsoft Foundry sebagai contoh." width="780" height="322" data-path="images/llm-gateway-flow.svg" />

43</Frame>

44 

45Dua jenis kredensial terlibat:

46 

47* **Kredensial pengembang**: setiap pengembang memegang miliknya sendiri, dikeluarkan oleh gateway. Ini mengautentikasi mereka ke gateway dan mengidentifikasi mereka dalam pelacakan penggunaan

48* **Kredensial penyedia**: gateway memegang satu kredensial untuk akun penyedia Anda, dibagikan oleh semua lalu lintas yang diteruskan. Anda tidak menyediakan kunci penyedia per pengembang

49 

50Gateway meneruskan setiap permintaan ke penyedia yang Anda konfigurasi, seperti API Anthropic, [Amazon Bedrock](/id/amazon-bedrock), [Google Vertex AI](/id/google-vertex-ai), [Microsoft Foundry](/id/microsoft-foundry), atau [Claude Platform di AWS](/id/claude-platform-on-aws). Karena Claude Code hanya berbicara dengan gateway, pilihan penyedia adalah konfigurasi gateway, bukan klien.

51 

52<h2 id="roll-out-a-gateway">

53 Luncurkan gateway

54</h2>

55 

56Ketika Anda siap meluncurkan LLM gateway ke organisasi Anda, urutannya sama terlepas dari produk gateway mana yang Anda pilih:

57 

581. Terapkan gateway dan berikan kredensial penyedia Anda, sehingga dapat mengautentikasi permintaan yang diteruskannya.

592. Keluarkan setiap pengembang kredensial gateway, sehingga penggunaan dikaitkan dengan pengembang dan offboarding mencabut satu kredensial.

603. Distribusikan konfigurasi melalui [file pengaturan terkelola](/id/settings#settings-files) dan alat rahasia Anda, sehingga setiap mesin menerima URL dasar dan kredensial. Ketika keduanya didistribusikan, pengembang tidak mengonfigurasi apa pun. Jika Anda tidak memiliki distribusi pengaturan, pengembang mengikuti [halaman koneksi](/id/llm-gateway-connect) untuk menetapkan variabel sendiri.

614. Minta setiap pengembang [memeriksa konfigurasi di Claude Code](/id/llm-gateway-connect#check-for-an-existing-configuration), sehingga masalah distribusi muncul sebelum mereka bergantung pada gateway.

62 

63[Luncurkan LLM gateway untuk organisasi Anda](/id/llm-gateway-rollout) menjelaskan setiap langkah dan menunjukkan file konfigurasi untuk didistribusikan di setiap langkah. Gateway adalah satu bagian dari pengaturan organisasi; untuk penegakan kebijakan, visibilitas penggunaan, dan keputusan penanganan data, lihat [Siapkan Claude Code untuk organisasi Anda](/id/admin-setup).

64 

65<h2 id="third-party-gateways">

66 Gateway pihak ketiga

67</h2>

68 

69Setiap gateway yang mengekspos [format API yang didukung](/id/llm-gateway-protocol#api-formats) berfungsi. Anthropic tidak mendukung, memelihara, atau mengaudit produk gateway pihak ketiga. Terapkan mengikuti dokumentasi mereka sendiri, kemudian selesaikan sisi Claude Code dari peluncuran dengan [langkah-langkah peluncuran](/id/llm-gateway-rollout).

70 

71<h2 id="subscriptions-and-gateways">

72 Langganan dan gateway

73</h2>

74 

75Sementara [variabel kredensial gateway](/id/llm-gateway-connect#set-the-credential-variable) atau `apiKeyHelper` aktif, langganan claude.ai pengembang tidak digunakan: kredensial menggantikan login langganan untuk sesi itu, dan batas penggunaan langganan tidak berlaku. Lalu lintas itu ditagih per token kepada siapa pun yang memiliki kredensial yang diteruskan gateway, seperti akun Anthropic Console organisasi Anda, atau akun Bedrock, Vertex, atau Foundry Anda ketika gateway merutekan ke sana.

76 

77Menetapkan hanya `ANTHROPIC_BASE_URL`, tanpa kredensial gateway, tidak menggantikan langganan. Permintaan masih merutekan melalui gateway, tetapi login claude.ai yang disimpan tetap menjadi kredensial aktif, sehingga batas penggunaan dan penagihan berlaku. Gateway yang meneruskan lalu lintas ini ke Anthropic harus meneruskan kemampuan OAuth di `anthropic-beta`; lihat [referensi header permintaan](/id/llm-gateway-protocol#request-headers).

78 

79<h2 id="configure-separately-from-the-gateway">

80 Konfigurasi secara terpisah dari gateway

81</h2>

82 

83Gateway menentukan di mana permintaan API model dikirim. Pemilihan model, sisa lalu lintas jaringan Claude Code, dan proxy korporat dikonfigurasi secara terpisah:

84 

85* **Pemilihan model**: URL dasar menentukan di mana permintaan pergi, bukan model mana yang menjawabnya. Pilih model dengan perintah `/model` atau variabel lingkungan model; lihat [cara mengatur model Anda](/id/model-config#setting-your-model)

86* **Lalu lintas sisi klien**: pemeriksaan versi dan telemetri klien opsional, keduanya dinonaktifkan dengan [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/id/env-vars), dan lalu lintas login ketika login claude.ai atau Console digunakan, pergi ke endpoint pembaruan dan autentikasi Anthropic daripada gateway. Lihat [persyaratan akses jaringan](/id/network-config#network-access-requirements) untuk domain

87* **Proxy korporat**: proxy yang ditetapkan dengan `HTTPS_PROXY` duduk di antara Claude Code dan setiap server yang dibicarakannya, termasuk gateway. Jika jaringan Anda memerlukan proxy, konfigurasi keduanya; lihat [konfigurasi proxy](/id/network-config#proxy-configuration)

88 

89<h2 id="related-pages">

90 Halaman terkait

91</h2>

92 

93* [Hubungkan Claude Code ke LLM gateway](/id/llm-gateway-connect): atur URL dasar dan kredensial di mesin Anda sendiri, dengan konfigurasi per-permukaan dan tabel pemecahan masalah

94* [Luncurkan LLM gateway untuk organisasi Anda](/id/llm-gateway-rollout): daftar periksa admin untuk menerapkan gateway, mengeluarkan kredensial pengembang, dan mendistribusikan pengaturan terkelola

95* [Referensi protokol gateway](/id/llm-gateway-protocol): apa yang Claude Code kirimkan ke gateway, untuk operator yang mengonfigurasi satu, mencakup endpoint, header untuk diteruskan, dan pass-through fitur

96* [Siapkan Claude Code untuk organisasi Anda](/id/admin-setup): keputusan peluncuran yang lebih luas yang merupakan bagian dari gateway, termasuk penegakan kebijakan dan visibilitas penggunaan

Details

231 anthropic_api_key: ${{ secrets.GATEWAY_API_KEY }}231 anthropic_api_key: ${{ secrets.GATEWAY_API_KEY }}

232```232```

233 233 

234Untuk gateway bearer-token, teruskan rahasia yang sama sebagai input `anthropic_api_key` dan `ANTHROPIC_AUTH_TOKEN` di blok `env` alur kerja. Tindakan memerlukan `anthropic_api_key`, `CLAUDE_CODE_OAUTH_TOKEN`, atau federasi identitas beban kerja sebelum meluncurkan Claude Code, dan tidak membaca `ANTHROPIC_AUTH_TOKEN`, jadi input memenuhi pemeriksaan peluncuran itu sementara variabel env menempatkan kunci di header `Authorization` yang dibaca gateway. Salinan di `x-api-key` diabaikan:234Untuk gateway bearer-token, teruskan rahasia yang sama dua kali: sebagai input `anthropic_api_key` dan sebagai `ANTHROPIC_AUTH_TOKEN` di blok `env` alur kerja. Tindakan memerlukan `anthropic_api_key`, `CLAUDE_CODE_OAUTH_TOKEN`, atau federasi identitas beban kerja sebelum meluncurkan Claude Code, dan tidak membaca `ANTHROPIC_AUTH_TOKEN`, jadi input hanya ada untuk memenuhi pemeriksaan peluncuran itu. Variabel env adalah yang menempatkan kunci di header `Authorization` yang dibaca gateway; salinan di `x-api-key` diabaikan:

235 235 

236```yaml theme={null}236```yaml theme={null}

237env:237env:


285 285 

286[Claude Code di Slack](/id/slack) dan [Claude Code di web](/id/claude-code-on-the-web) adalah produk yang dihosting Anthropic yang selalu menggunakan API Anthropic; mereka bukan bagian dari penerapan gateway. Variabel gateway yang diatur dalam konfigurasi lingkungan sesi cloud tidak diterapkan. Jika lalu lintas Anda harus tetap di gateway, jangan aktifkan permukaan ini untuk pengguna tersebut.286[Claude Code di Slack](/id/slack) dan [Claude Code di web](/id/claude-code-on-the-web) adalah produk yang dihosting Anthropic yang selalu menggunakan API Anthropic; mereka bukan bagian dari penerapan gateway. Variabel gateway yang diatur dalam konfigurasi lingkungan sesi cloud tidak diterapkan. Jika lalu lintas Anda harus tetap di gateway, jangan aktifkan permukaan ini untuk pengguna tersebut.

287 287 

288[Remote Control](/id/remote-control) dan [voice dictation](/id/voice-dictation) keduanya mengandalkan identitas claude.ai: Remote Control untuk memasangkan sesi langsung dengan akun Anda, dan voice dictation untuk menjangkau titik akhir transkripsi claude.ai. Mereka tidak tersedia sementara `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` aktif. Untuk menggunakan salah satu, batalkan pengaturan kredensial gateway dan masuk dengan claude.ai sebagai gantinya; `/doctor` menamai variabel untuk dibatalkan pengaturannya.288[Remote Control](/id/remote-control) dan [voice dictation](/id/voice-dictation) keduanya mengandalkan identitas claude.ai: Remote Control untuk memasangkan sesi langsung dengan akun Anda, dan voice dictation untuk menjangkau titik akhir transkripsi claude.ai. Mereka tidak tersedia sementara `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` aktif. {/* min-version: 2.1.196 */}Mulai dari v2.1.196, Remote Control juga dinonaktifkan sementara `ANTHROPIC_BASE_URL` menunjuk ke host non-Anthropic, jadi masuk dengan claude.ai saja tidak cukup.

289 

290Untuk mengembalikan salah satu fitur, masuk dengan claude.ai dan batalkan pengaturan variabel gateway yang diperiksa. `/doctor` menamai variabel kredensial untuk dibatalkan pengaturannya.

291 

292* Voice dictation: batalkan pengaturan kredensial gateway

293* Remote Control: batalkan pengaturan kredensial gateway dan `ANTHROPIC_BASE_URL`

289 294 

290<h2 id="additional-configuration">295<h2 id="additional-configuration">

291 Konfigurasi tambahan296 Konfigurasi tambahan


318```json theme={null}323```json theme={null}

319{324{

320 "env": {325 "env": {

321 "ANTHROPIC_CUSTOM_HEADERS": "X-Org-Route: prod\nX-Tenant: acme"326 "ANTHROPIC_CUSTOM_HEADERS": "X-Org-Route: prod\nX-Tenant: example"

322 }327 }

323}328}

324```329```


388 Rutekan ke penyedia cloud melalui gateway393 Rutekan ke penyedia cloud melalui gateway

389</h3>394</h3>

390 395 

391Konfigurasi ini menunjukkan Claude Code ke gateway melalui variabel URL dasar khusus penyedia sebagai pengganti `ANTHROPIC_BASE_URL`. Gateway Bedrock dan Vertex menerima format permintaan asli penyedia tersebut; gateway Foundry dan Claude Platform di AWS menerima format Anthropic Messages dan berbeda hanya dalam variabel URL dasar mana yang mencapainya.396Konfigurasi ini menunjukkan Claude Code ke gateway melalui variabel URL dasar khusus penyedia sebagai pengganti `ANTHROPIC_BASE_URL`. Gateway Bedrock dan Agent Platform menerima format permintaan asli penyedia tersebut; gateway Foundry dan Claude Platform di AWS menerima format Anthropic Messages dan berbeda hanya dalam variabel URL dasar mana yang mencapainya.

392 397 

393Gunakan satu hanya jika tim gateway Anda secara khusus menamai Bedrock, Vertex, Foundry, atau Claude Platform di AWS. Jika [permintaan verifikasi](#verify-the-connection) di atas mengembalikan JSON, Anda dapat melewati bagian ini.398Gunakan satu hanya jika tim gateway Anda secara khusus menamai Bedrock, Agent Platform, Foundry, atau Claude Platform di AWS. Jika [permintaan verifikasi](#verify-the-connection) di atas mengembalikan JSON, Anda dapat melewati bagian ini.

394 399 

395Atur blok untuk penyedia yang dinamai tim gateway Anda. Variabel skip-auth memberitahu Claude Code untuk tidak menandatangani permintaan dengan kredensial penyedia, karena gateway menyimpannya. Jika gateway memerlukan token sendiri, tambahkan `ANTHROPIC_AUTH_TOKEN` setelah blok, kecuali untuk Foundry, yang menggunakan `ANTHROPIC_FOUNDRY_API_KEY` seperti yang ditunjukkan.400Atur blok untuk penyedia yang dinamai tim gateway Anda. Variabel skip-auth memberitahu Claude Code untuk tidak menandatangani permintaan dengan kredensial penyedia, karena gateway menyimpannya. Jika gateway memerlukan token sendiri, tambahkan `ANTHROPIC_AUTH_TOKEN` setelah blok, kecuali untuk Foundry, yang menggunakan `ANTHROPIC_FOUNDRY_API_KEY` seperti yang ditunjukkan.

396 401 


416 </Tab>421 </Tab>

417</Tabs>422</Tabs>

418 423 

419<h4 id="google-vertex-ai">424<h4 id="google-cloud’s-agent-platform">

420 Google Vertex AI425 Google Cloud's Agent Platform

421</h4>426</h4>

422 427 

423<Tabs>428<Tabs>

Details

8 8 

9Halaman ini mendokumentasikan permintaan yang dikirim Claude Code ke gateway, termasuk endpoint yang dipanggilnya, header dan field body yang harus diteruskan gateway, dan fitur mana yang berhenti berfungsi ketika tidak ada. Halaman ini ditulis untuk operator yang mengonfigurasi produk gateway agar bekerja dengan Claude Code.9Halaman ini mendokumentasikan permintaan yang dikirim Claude Code ke gateway, termasuk endpoint yang dipanggilnya, header dan field body yang harus diteruskan gateway, dan fitur mana yang berhenti berfungsi ketika tidak ada. Halaman ini ditulis untuk operator yang mengonfigurasi produk gateway agar bekerja dengan Claude Code.

10 10 

11Gateway [Claude apps gateway](/id/claude-apps-gateway) yang berjalan melayani versi yang dapat dibaca mesin dari kontrak ini di `GET /protocol`, mencakup persyaratan penerusan yang sama ditambah endpoint spesifik Claude apps gateway untuk SSO sign-in, pengiriman managed-settings, dan telemetri. Claude apps gateway berjalan dari binary `claude` yang sama dengan CLI, jadi [Claude apps gateway quickstart](/id/claude-apps-gateway#quickstart) adalah jalur tercepat ke instance yang berjalan dari mana Anda dapat mengambil spesifikasinya.

12 

11<Note>13<Note>

12 * Untuk meluncurkan gateway yang sudah ada atau pihak ketiga untuk organisasi Anda, lihat [Meluncurkan gateway LLM](/id/llm-gateway-rollout)14 * Untuk meluncurkan gateway yang sudah ada atau pihak ketiga untuk organisasi Anda, lihat [Meluncurkan gateway LLM](/id/llm-gateway-rollout)

13 * Jika Anda adalah pengembang individual yang mengautentikasi Claude Code ke gateway dengan kredensial yang diberikan kepada Anda, lihat [Menghubungkan Claude Code ke gateway LLM](/id/llm-gateway-connect)15 * Jika Anda adalah pengembang individual yang mengautentikasi Claude Code ke gateway dengan kredensial yang diberikan kepada Anda, lihat [Menghubungkan Claude Code ke gateway LLM](/id/llm-gateway-connect)


32 Format API34 Format API

33</h2>35</h2>

34 36 

35Gateway harus mengekspos setidaknya satu dari format API berikut ke klien Claude Code. Format mana yang digunakan Claude Code ditentukan oleh konfigurasi klien: variabel di kolom Dipilih oleh tabel di bawah menunjukkan Claude Code ke gateway Anda dalam format tersebut.37Gateway harus mengekspos setidaknya satu dari format API berikut ke klien Claude Code. Format mana yang digunakan Claude Code ditentukan oleh konfigurasi klien: variabel di kolom Dipilih oleh tabel di bawah menunjukkan Claude Code ke gateway Anda dalam format tersebut. Agent Platform adalah endpoint Claude Google Cloud, sebelumnya Vertex AI; nama variabelnya tetap mempertahankan ejaan `VERTEX`.

36 38 

37| Format | Dipilih oleh | Endpoint | Teruskan tanpa perubahan |39| Format | Dipilih oleh | Endpoint | Teruskan tanpa perubahan |

38| :------------------ | :-------------------------------------------------------------- | :----------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------- |40| :------------------------ | :-------------------------------------------------------------- | :----------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------- |

39| Anthropic Messages | `ANTHROPIC_BASE_URL` | `/v1/messages`, `/v1/messages/count_tokens` (opsional) | header permintaan `anthropic-beta` dan `anthropic-version` |41| Anthropic Messages | `ANTHROPIC_BASE_URL` | `/v1/messages`, `/v1/messages/count_tokens` (opsional) | header permintaan `anthropic-beta` dan `anthropic-version` |

40| Bedrock InvokeModel | `ANTHROPIC_BEDROCK_BASE_URL` dengan `CLAUDE_CODE_USE_BEDROCK=1` | `/model/{model}/invoke`, `/model/{model}/invoke-with-response-stream` | field body permintaan `anthropic_beta` dan `anthropic_version` |42| Bedrock InvokeModel | `ANTHROPIC_BEDROCK_BASE_URL` dengan `CLAUDE_CODE_USE_BEDROCK=1` | `/model/{model}/invoke`, `/model/{model}/invoke-with-response-stream` | field body permintaan `anthropic_beta` dan `anthropic_version` |

41| Vertex rawPredict | `ANTHROPIC_VERTEX_BASE_URL` dengan `CLAUDE_CODE_USE_VERTEX=1` | `:rawPredict`, `:streamRawPredict`, `count-tokens:rawPredict` (opsional) | header permintaan `anthropic-beta` dan `anthropic-version`, dan field body permintaan `anthropic_version` |43| Agent Platform rawPredict | `ANTHROPIC_VERTEX_BASE_URL` dengan `CLAUDE_CODE_USE_VERTEX=1` | `:rawPredict`, `:streamRawPredict`, `count-tokens:rawPredict` (opsional) | header permintaan `anthropic-beta` dan `anthropic-version`, dan field body permintaan `anthropic_version` |

42 44 

43<h3 id="foundry-and-claude-platform-on-aws">45<h3 id="foundry-and-claude-platform-on-aws">

44 Foundry dan Claude Platform on AWS46 Foundry dan Claude Platform on AWS


50 Endpoint opsional dan lalu lintas startup52 Endpoint opsional dan lalu lintas startup

51</h3>53</h3>

52 54 

53Endpoint penghitungan token adalah satu-satunya yang opsional: ketika tidak ada, Claude Code memperkirakan penggunaan konteks secara lokal. Permintaan inferensi diposting ke `/v1/messages?beta=true`, jadi cocokkan pada path, bukan URL lengkap. Metode Vertex menambahkan sufiks ke path model penerbit, seperti dalam `/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict`.55Endpoint penghitungan token adalah satu-satunya yang opsional: ketika tidak ada, Claude Code memperkirakan penggunaan konteks secara lokal. Permintaan inferensi diposting ke `/v1/messages?beta=true`, jadi cocokkan pada path, bukan URL lengkap. Metode Agent Platform menambahkan sufiks ke path model penerbit, seperti dalam `/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:streamRawPredict`.

54 56 

55Gateway juga melihat lalu lintas startup upaya terbaik yang dapat ditolak tanpa merusak apa pun: probe konektivitas `HEAD /`, dan pada gateway format Bedrock permintaan `GET /inference-profiles?type=SYSTEM_DEFINED`.57Gateway juga melihat lalu lintas startup upaya terbaik yang dapat ditolak tanpa merusak apa pun: probe konektivitas `HEAD /`, dan pada gateway format Bedrock permintaan `GET /inference-profiles?type=SYSTEM_DEFINED`.

56 58 


66 68 

67Format mana yang digunakan klien menentukan apa yang diterima gateway Anda. Mode kegagalan umum adalah ketidakcocokan antara format yang dikirim klien ke gateway Anda dan format yang diterima penyedia upstream di belakangnya.69Format mana yang digunakan klien menentukan apa yang diterima gateway Anda. Mode kegagalan umum adalah ketidakcocokan antara format yang dikirim klien ke gateway Anda dan format yang diterima penyedia upstream di belakangnya.

68 70 

69* Ketika klien berbicara format Bedrock atau Vertex, Claude Code mengirim hanya subset dari set kemampuan penuhnya yang diterima penyedia tersebut71* Ketika klien berbicara format Bedrock atau Agent Platform, Claude Code mengirim hanya subset dari set kemampuan penuhnya yang diterima penyedia tersebut

70* Ketika klien berbicara format Anthropic Messages, Claude Code mengirim set lengkap, bahkan jika gateway Anda meneruskan ke upstream Bedrock atau Vertex72* Ketika klien berbicara format Anthropic Messages, Claude Code mengirim set lengkap, bahkan jika gateway Anda meneruskan ke upstream Bedrock atau Agent Platform

71 73 

72Menjembatani perbedaan itu adalah pekerjaan gateway Anda. [Penerusan fitur](#feature-pass-through) menjelaskan apa yang rusak ketika tidak ada.74Menjembatani perbedaan itu adalah pekerjaan gateway Anda. [Penerusan fitur](#feature-pass-through) menjelaskan apa yang rusak ketika tidak ada.

73 75 


80| Header | Deskripsi |82| Header | Deskripsi |

81| :------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |83| :------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

82| `Authorization`, `x-api-key` | Kredensial gateway pengembang, di satu atau kedua header tergantung pada [variabel kredensial](/id/llm-gateway-connect#set-the-credential-variable) yang mereka atur |84| `Authorization`, `x-api-key` | Kredensial gateway pengembang, di satu atau kedua header tergantung pada [variabel kredensial](/id/llm-gateway-connect#set-the-credential-variable) yang mereka atur |

83| `anthropic-version` | Versi API, saat ini `2023-06-01`. Permintaan format Bedrock dan Vertex juga membawa field body `anthropic_version`, yang nilainya adalah string dialek penyedia, bukan nilai header ini |85| `anthropic-version` | Versi API, saat ini `2023-06-01`. Permintaan format Bedrock dan Agent Platform juga membawa field body `anthropic_version`, yang nilainya adalah string dialek penyedia, bukan nilai header ini |

84| `anthropic-beta` | Nilai kemampuan yang dipisahkan koma untuk permintaan. Teruskan header secara verbatim; jangan allowlist nilai individual, karena set berubah dengan rilis Claude Code. Ketika pengembang mengautentikasi dengan login claude.ai, yang mungkin ketika `ANTHROPIC_BASE_URL` diatur tanpa variabel kredensial gateway, header ini juga membawa kemampuan OAuth yang diperlukan upstream, dan menghapusnya gagal permintaan tersebut dengan `401` |86| `anthropic-beta` | Nilai kemampuan yang dipisahkan koma untuk permintaan. Teruskan header secara verbatim; jangan allowlist nilai individual, karena set berubah dengan rilis Claude Code. Ketika pengembang mengautentikasi dengan login claude.ai, yang mungkin ketika `ANTHROPIC_BASE_URL` diatur tanpa variabel kredensial gateway, header ini juga membawa kemampuan OAuth yang diperlukan upstream, dan menghapusnya gagal permintaan tersebut dengan `401` |

85| `x-claude-code-session-id` | Pengidentifikasi unik untuk sesi Claude Code saat ini. Gunakan untuk mengagregasi semua permintaan dari satu sesi tanpa mengurai body permintaan |87| `x-claude-code-session-id` | Pengidentifikasi unik untuk sesi Claude Code saat ini. Gunakan untuk mengagregasi semua permintaan dari satu sesi tanpa mengurai body permintaan |

86| `x-claude-code-agent-id` | Pengidentifikasi [subagent](/id/sub-agents) yang mengeluarkan permintaan, hadir hanya pada permintaan dari agen yang Claude Code spawn di dalam sesi. Gunakan dengan ID sesi untuk mengatribusikan biaya ke agen paralel |88| `x-claude-code-agent-id` | Pengidentifikasi [subagent](/id/sub-agents) yang mengeluarkan permintaan, hadir hanya pada permintaan dari agen yang Claude Code spawn di dalam sesi. Gunakan dengan ID sesi untuk mengatribusikan biaya ke agen paralel |


98 100 

99Ketika meneruskan ke upstream format Anthropic, teruskan header permintaan `anthropic-*` dan field body permintaan melalui tanpa perubahan daripada allowlist yang Anda lihat hari ini. Gateway yang disematkan ke daftar yang diamati menghapus header atau field kemampuan berikutnya dan merusaknya pada rilis yang memperkenalkannya.101Ketika meneruskan ke upstream format Anthropic, teruskan header permintaan `anthropic-*` dan field body permintaan melalui tanpa perubahan daripada allowlist yang Anda lihat hari ini. Gateway yang disematkan ke daftar yang diamati menghapus header atau field kemampuan berikutnya dan merusaknya pada rilis yang memperkenalkannya.

100 102 

101Pengecualiannya adalah upstream non-Anthropic seperti Bedrock atau Vertex, di mana menjembatani perbedaan skema adalah pekerjaan gateway; lihat [penerusan fitur](#feature-pass-through).103Pengecualiannya adalah upstream non-Anthropic seperti Bedrock atau Agent Platform, di mana menjembatani perbedaan skema adalah pekerjaan gateway; lihat [penerusan fitur](#feature-pass-through).

102 104 

103<h2 id="system-prompt-attribution-block">105<h2 id="system-prompt-attribution-block">

104 Blok atribusi prompt sistem106 Blok atribusi prompt sistem


112 Penerusan fitur114 Penerusan fitur

113</h2>115</h2>

114 116 

115Claude Code memperlakukan gateway `ANTHROPIC_BASE_URL` sebagai endpoint format Anthropic dan mengirimkannya header beta dan field body permintaan yang dikirimkannya ke `api.anthropic.com`, kecuali set kecil diagnostik dan default yang disediakan untuk koneksi langsung.117Claude Code memperlakukan gateway `ANTHROPIC_BASE_URL` sebagai endpoint format Anthropic dan mengirimkannya header beta dan field body permintaan yang dikirimkannya ke `api.anthropic.com`, kecuali set kecil diagnostik dan default yang disediakan untuk koneksi langsung, seperti default streaming alat berbutir halus yang tercakup di bawah. Set tersebut bervariasi menurut rilis, jadi jangan bergantung pada isinya.

116 118 

117Kemampuan yang menambahkan field body memasangkannya dengan header beta, dan pasangan bepergian bersama. Gateway yang menghapus header sambil melewatkan body, atau meneruskan body format Anthropic ke upstream dengan skema berbeda, menghasilkan kesalahan `400` keras; hanya ketika kedua bagian tidak ada bersama-sama fitur mati diam-diam. Gateway yang menulis ulang atau menyunting body permintaan untuk inspeksi konten memecah pasangan dengan cara yang sama seperti penghapusan, jadi inspeksi tanpa memodifikasi. Tabel mencatat di mana fitur menyimpang dari pasangan.119Kemampuan yang menambahkan field body memasangkannya dengan header beta, dan pasangan bepergian bersama. Gateway yang menghapus header sambil melewatkan body, atau meneruskan body format Anthropic ke upstream dengan skema berbeda, menghasilkan kesalahan `400` keras; hanya ketika kedua bagian tidak ada bersama-sama fitur mati diam-diam. Gateway yang menulis ulang atau menyunting body permintaan untuk inspeksi konten memecah pasangan dengan cara yang sama seperti penghapusan, jadi inspeksi tanpa memodifikasi. Tabel mencatat di mana fitur menyimpang dari pasangan.

118 120 


124| [Manajemen konteks](https://platform.claude.com/docs/en/build-with-claude/context-management) | Header beta manajemen konteks berpasangan dengan field body `context_management` | `400` dengan `Extra inputs are not permitted`. Umum ketika gateway menerima permintaan format Anthropic tetapi meneruskannya ke Bedrock | Teruskan keduanya, atau [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/id/env-vars) |126| [Manajemen konteks](https://platform.claude.com/docs/en/build-with-claude/context-management) | Header beta manajemen konteks berpasangan dengan field body `context_management` | `400` dengan `Extra inputs are not permitted`. Umum ketika gateway menerima permintaan format Anthropic tetapi meneruskannya ke Bedrock | Teruskan keduanya, atau [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](/id/env-vars) |

125| [Konteks diperluas](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) dan [pemikiran interleaved](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | Hanya header beta, tidak ada field body | Diam-diam tidak tersedia ketika header dihapus; upstream tidak pernah melihat permintaan kemampuan | Teruskan `anthropic-beta` secara verbatim |127| [Konteks diperluas](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) dan [pemikiran interleaved](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | Hanya header beta, tidak ada field body | Diam-diam tidak tersedia ketika header dihapus; upstream tidak pernah melihat permintaan kemampuan | Teruskan `anthropic-beta` secara verbatim |

126| Beta [field alat](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) | Header beta terkait alat berpasangan dengan field skema alat seperti `strict` dan `defer_loading` | `400` penamaan field skema alat yang tidak dikenali ketika body melewati tanpa headernya | Teruskan keduanya, atau `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` |128| Beta [field alat](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) | Header beta terkait alat berpasangan dengan field skema alat seperti `strict` dan `defer_loading` | `400` penamaan field skema alat yang tidak dikenali ketika body melewati tanpa headernya | Teruskan keduanya, atau `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` |

127| [Upaya](https://platform.claude.com/docs/en/build-with-claude/effort) dan [output terstruktur](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | Field body `output_config` membawa upaya, format output terstruktur, dan pengaturan anggaran tugas; masing-masing berpasangan dengan header betanya sendiri | `400` penamaan `output_config`, sering `Extra inputs are not permitted`, pada upstream Bedrock dan Vertex | Teruskan field dan headernya bersama-sama |129| [Upaya](https://platform.claude.com/docs/en/build-with-claude/effort) dan [output terstruktur](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | Field body `output_config` membawa upaya, format output terstruktur, dan pengaturan anggaran tugas; masing-masing berpasangan dengan header betanya sendiri | `400` penamaan `output_config`, sering `Extra inputs are not permitted`, pada upstream Bedrock dan Agent Platform | Teruskan field dan headernya bersama-sama |

128| [Penghitungan token](https://platform.claude.com/docs/en/build-with-claude/token-counting) | Tidak ada pasangan beta; menggunakan endpoint `count_tokens` | Claude Code kembali ke estimasi penggunaan konteks secara lokal | Ekspos endpoint jika Anda menginginkan hitungan yang tepat |130| [Penghitungan token](https://platform.claude.com/docs/en/build-with-claude/token-counting) | Tidak ada pasangan beta; menggunakan endpoint `count_tokens` | Claude Code kembali ke estimasi penggunaan konteks secara lokal | Ekspos endpoint jika Anda menginginkan hitungan yang tepat |

129 131 

130Variabel `ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES` [](/id/model-config) mendeklarasikan kemampuan model hanya dalam konfigurasi penyedia: `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, dan [`CLAUDE_CODE_USE_MANTLE`](/id/amazon-bedrock#use-the-mantle-endpoint). Mereka tidak memiliki efek di belakang gateway `ANTHROPIC_BASE_URL`.132Variabel `ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES` [](/id/model-config) mendeklarasikan kemampuan model hanya dalam konfigurasi penyedia: `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, dan [`CLAUDE_CODE_USE_MANTLE`](/id/amazon-bedrock#use-the-mantle-endpoint). Mereka tidak memiliki efek di belakang gateway `ANTHROPIC_BASE_URL`.


182{184{

183 "data": [185 "data": [

184 { "id": "claude-sonnet-4-6", "display_name": "Claude Sonnet 4.6" },186 { "id": "claude-sonnet-4-6", "display_name": "Claude Sonnet 4.6" },

185 { "id": "claude-opus-4-7" }187 { "id": "claude-opus-4-8" }

186 ]188 ]

187}189}

188```190```


191 Entri pemilih dan caching193 Entri pemilih dan caching

192</h3>194</h3>

193 195 

194Pemilih adalah daftar model interaktif yang terbuka ketika pengembang menjalankan `/model` di Claude Code. Setiap entri yang ditemukan diberi label "Dari gateway" dan menggunakan `display_name` ketika disediakan. ID yang ditemukan dilewati hanya ketika cocok persis dengan baris yang sudah ada di pemilih, atau ketika ID yang ditemukan dan yang ada keduanya diselesaikan ke [Fable](/id/model-config#work-with-fable-5). Baris built-in dikunci pada alias seperti `sonnet`, jadi ID yang ditemukan seperti `claude-sonnet-4-6` menambahkan baris "Dari gateway" miliknya sendiri di samping entri built-in. Pengaturan terkelola [`availableModels`](/id/settings#available-settings) membatasi apa yang dapat ditambahkan penemuan.196Pemilih adalah daftar model interaktif yang terbuka ketika pengembang menjalankan `/model` di Claude Code. Setiap entri yang ditemukan diberi label "Dari gateway" dan menggunakan `display_name` ketika disediakan. Pengaturan terkelola [`availableModels`](/id/settings#available-settings) membatasi apa yang dapat ditambahkan penemuan.

197 

198ID yang ditemukan dilewati hanya ketika cocok persis dengan baris yang sudah ada di pemilih, atau ketika ID yang ditemukan dan yang ada keduanya diselesaikan ke [Fable](/id/model-config#work-with-fable-5). Baris built-in dikunci pada alias seperti `sonnet`, jadi ID yang ditemukan seperti `claude-sonnet-4-6` menambahkan baris "Dari gateway" miliknya sendiri di samping entri built-in daripada menggantinya.

195 199 

196Hasil di-cache ke `~/.claude/cache/gateway-models.json`, atau `%USERPROFILE%\.claude\cache\gateway-models.json` di Windows, dan disegarkan pada setiap startup. Jika permintaan gagal atau gateway tidak mengimplementasikan `/v1/models`, pemilih kembali ke daftar cache dari startup sebelumnya atau ke daftar model built-in. Jika gateway Anda melayani model Claude di bawah alias yang tidak cocok dengan filter penemuan, pengembang dapat menambahkan alias tersebut secara manual dengan variabel [konfigurasi model](/id/model-config).200Hasil di-cache ke `~/.claude/cache/gateway-models.json`, atau `%USERPROFILE%\.claude\cache\gateway-models.json` di Windows, dan disegarkan pada setiap startup. Jika permintaan gagal atau gateway tidak mengimplementasikan `/v1/models`, pemilih kembali ke daftar cache dari startup sebelumnya atau ke daftar model built-in. Jika gateway Anda melayani model Claude di bawah alias yang tidak cocok dengan filter penemuan, pengembang dapat menambahkan alias tersebut secara manual dengan variabel [konfigurasi model](/id/model-config).

197 201 


201 205 

202Untuk sisa set dokumentasi gateway dan referensi API yang mendasarinya:206Untuk sisa set dokumentasi gateway dan referensi API yang mendasarinya:

203 207 

204* [Ikhtisar gateway LLM](/id/llm-gateway): apa itu gateway dan bagaimana berinteraksi dengan langganan claude.ai208* [Ikhtisar gateway](/id/gateways): apa itu gateway dan cara memilih antara gateway aplikasi Claude dan produk lainnya

209* [Gateway LLM lainnya](/id/llm-gateway): cara meluncurkan gateway yang dijalankan organisasi Anda dan cara berinteraksinya dengan langganan claude.ai

205* [Meluncurkan gateway LLM untuk organisasi Anda](/id/llm-gateway-rollout): daftar periksa admin yang menggunakan kontrak ini210* [Meluncurkan gateway LLM untuk organisasi Anda](/id/llm-gateway-rollout): daftar periksa admin yang menggunakan kontrak ini

206* [Menghubungkan Claude Code ke gateway LLM](/id/llm-gateway-connect): konfigurasi per-pengembang dan tabel pemecahan masalah211* [Menghubungkan Claude Code ke gateway LLM](/id/llm-gateway-connect): konfigurasi per-pengembang dan tabel pemecahan masalah

207* [Referensi header beta](https://platform.claude.com/docs/en/api/beta-headers): set nilai `anthropic-beta` saat ini212* [Referensi header beta](https://platform.claude.com/docs/en/api/beta-headers): set nilai `anthropic-beta` saat ini

Details

22* Gateway yang diterapkan di infrastruktur Anda, melayani HTTPS di alamat yang tepat yang akan Anda distribusikan kepada pengembang, bukan alamat yang mengalihkannya, dan dikonfigurasi untuk merutekan nama model Claude ke penyedia Anda22* Gateway yang diterapkan di infrastruktur Anda, melayani HTTPS di alamat yang tepat yang akan Anda distribusikan kepada pengembang, bukan alamat yang mengalihkannya, dan dikonfigurasi untuk merutekan nama model Claude ke penyedia Anda

23* Kredensial penyedia untuk gateway yang akan diteruskan dengan:23* Kredensial penyedia untuk gateway yang akan diteruskan dengan:

24 * Untuk API Anthropic: kunci API dari [Konsol Claude](https://platform.claude.com/settings/keys)24 * Untuk API Anthropic: kunci API dari [Konsol Claude](https://platform.claude.com/settings/keys)

25 * Untuk penyedia cloud: kredensial cloud dengan akses model. Lihat prasyarat di halaman [Amazon Bedrock](/id/amazon-bedrock#prerequisites), [Google Vertex AI](/id/google-vertex-ai#prerequisites), atau [Microsoft Foundry](/id/microsoft-foundry#prerequisites)25 * Untuk penyedia cloud: kredensial cloud dengan akses model. Lihat prasyarat di halaman [Amazon Bedrock](/id/amazon-bedrock#prerequisites), [Google Cloud's Agent Platform](/id/google-vertex-ai#prerequisites), atau [Microsoft Foundry](/id/microsoft-foundry#prerequisites)

26* Cara untuk mengirimkan file pengaturan ke mesin pengembang, seperti MDM atau manajemen konfigurasi26* Cara untuk mengirimkan file pengaturan ke mesin pengembang, seperti MDM atau manajemen konfigurasi

27 * Jika Anda belum memilikinya, [bagaimana pengaturan mencapai perangkat](/id/admin-setup#decide-how-settings-reach-devices) membandingkan opsi27 * Jika Anda belum memilikinya, [bagaimana pengaturan mencapai perangkat](/id/admin-setup#decide-how-settings-reach-devices) membandingkan opsi

28 28 


180Set variabel yang sama berlaku jalur mana pun yang Anda pilih. Sebagian besar peluncuran hanya memerlukan `ANTHROPIC_BASE_URL` dan kredensial; sertakan baris bersyarat ketika pengaturan gateway Anda memanggilnya.180Set variabel yang sama berlaku jalur mana pun yang Anda pilih. Sebagian besar peluncuran hanya memerlukan `ANTHROPIC_BASE_URL` dan kredensial; sertakan baris bersyarat ketika pengaturan gateway Anda memanggilnya.

181 181 

182| Variabel atau pengaturan | Apa yang dilakukannya | Sertakan ketika |182| Variabel atau pengaturan | Apa yang dilakukannya | Sertakan ketika |

183| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |183| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

184| `ANTHROPIC_BASE_URL` | Mengirim permintaan API Claude Code ke gateway daripada `api.anthropic.com` | Selalu |184| `ANTHROPIC_BASE_URL` | Mengirim permintaan API Claude Code ke gateway daripada `api.anthropic.com` | Selalu |

185| `apiKeyHelper`, atau kredensial di `ANTHROPIC_AUTH_TOKEN` atau `ANTHROPIC_API_KEY` | Mengautentikasi setiap permintaan ke gateway. Helper menjalankan perintah untuk mengambil kunci; variabel menyimpan kunci statis, dikirim sebagai `Authorization: Bearer` dan `x-api-key` masing-masing | Selalu; salah satu dari tiga |185| `apiKeyHelper`, atau kredensial di `ANTHROPIC_AUTH_TOKEN` atau `ANTHROPIC_API_KEY` | Mengautentikasi setiap permintaan ke gateway. Helper menjalankan perintah untuk mengambil kunci; variabel menyimpan kunci statis, dikirim sebagai `Authorization: Bearer` dan `x-api-key` masing-masing | Selalu; salah satu dari tiga |

186| `ANTHROPIC_CUSTOM_HEADERS` | Menambahkan header HTTP ekstra ke setiap permintaan API | Gateway Anda memerlukan header penyewa atau perutean pada setiap permintaan |186| `ANTHROPIC_CUSTOM_HEADERS` | Menambahkan header HTTP ekstra ke setiap permintaan API | Gateway Anda memerlukan header penyewa atau perutean pada setiap permintaan |

187| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Menanyakan `/v1/models` gateway saat startup dan menambahkan nama yang dikembalikan ke pemilih `/model` | Gateway Anda melayani `/v1/models` dan Anda ingin pemilih pengembang diisi darinya |187| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Menanyakan `/v1/models` gateway saat startup dan menambahkan nama yang dikembalikan ke pemilih `/model` | Gateway Anda melayani `/v1/models` dan Anda ingin pemilih pengembang diisi darinya |

188| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Menghentikan Claude Code mengirim header dan bidang badan kemampuan pra-rilis | Gateway Anda meneruskan ke upstream Bedrock atau Vertex yang menolak bidang beta; lihat [Persyaratan gateway](#gateway-requirements) |188| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Menghentikan Claude Code mengirim header dan bidang badan kemampuan pra-rilis | Gateway Anda meneruskan ke upstream Bedrock atau Agent Platform yang menolak bidang beta; lihat [Persyaratan gateway](#gateway-requirements) |

189| `ANTHROPIC_MODEL` atau [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/id/model-config) | Tetapkan nama model mana yang diminta Claude Code untuk sesi utama dan lalu lintas latar belakang | Gateway Anda merutekan nama model yang tidak cocok dengan default Claude Code, atau Anda merutekan [fungsionalitas latar belakang](/id/costs#background-token-usage) ke model berbeda. Rutekan nama penggantian dan nama default Claude Code di gateway, karena beberapa sub-panggilan dapat meminta nama default terlepas dari penggantian |189| `ANTHROPIC_MODEL` atau [`ANTHROPIC_DEFAULT_HAIKU_MODEL`](/id/model-config) | Tetapkan nama model mana yang diminta Claude Code untuk sesi utama dan lalu lintas latar belakang | Gateway Anda merutekan nama model yang tidak cocok dengan default Claude Code, atau Anda merutekan [fungsionalitas latar belakang](/id/costs#background-token-usage) ke model berbeda. Rutekan nama penggantian dan nama default Claude Code di gateway, karena beberapa sub-panggilan dapat meminta nama default terlepas dari penggantian; [konfigurasi model](/id/model-config) mencakup model mana yang digunakan setiap bagian dari sesi |

190| `ANTHROPIC_BEDROCK_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, `ANTHROPIC_FOUNDRY_BASE_URL`, atau `ANTHROPIC_AWS_BASE_URL` dengan [variabel untuk penyedia itu](/id/llm-gateway-connect#route-to-a-cloud-provider-through-a-gateway) | Arahkan Claude Code ke gateway melalui URL dasar khusus penyedia. Bedrock dan Vertex juga beralih ke format permintaan asli penyedia | Gateway Anda di depan Bedrock, Vertex, Foundry, atau Platform Claude di AWS; lihat [Format API](/id/llm-gateway-protocol#api-formats) |190| `ANTHROPIC_BEDROCK_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, `ANTHROPIC_FOUNDRY_BASE_URL`, atau `ANTHROPIC_AWS_BASE_URL` dengan [variabel untuk penyedia itu](/id/llm-gateway-connect#route-to-a-cloud-provider-through-a-gateway) | Arahkan Claude Code ke gateway melalui URL dasar khusus penyedia. Bedrock dan Agent Platform juga beralih ke format permintaan asli penyedia | Gateway Anda di depan Bedrock, Agent Platform, Foundry, atau Platform Claude di AWS; lihat [Format API](/id/llm-gateway-protocol#api-formats) |

191 191 

192<h4 id="distribute-through-managed-settings">192<h4 id="distribute-through-managed-settings">

193 Distribusikan melalui pengaturan terkelola193 Distribusikan melalui pengaturan terkelola


206 206 

207Tambahkan variabel bersyarat dari tabel ke blok `env` yang sama. `ANTHROPIC_BASE_URL` yang dikelola diberlakukan dan tidak dapat ditimpa oleh ekspor shell pengembang, karena Claude Code menerapkannya di atas lingkungan proses dan pengaturan prioritas lebih rendah.207Tambahkan variabel bersyarat dari tabel ke blok `env` yang sama. `ANTHROPIC_BASE_URL` yang dikelola diberlakukan dan tidak dapat ditimpa oleh ekspor shell pengembang, karena Claude Code menerapkannya di atas lingkungan proses dan pengaturan prioritas lebih rendah.

208 208 

209Jangan sertakan `forceLoginMethod` atau `forceLoginOrgUUID` dalam pengaturan terkelola bersama kredensial gateway. Pada Claude Code v2.1.146 dan yang lebih baru, salah satu kunci memblokir `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, dan `apiKeyHelper` saat startup, sehingga pengembang melihat `This machine's managed settings require a first-party login` dan tidak dapat melanjutkan. {/* min-version: 2.1.146 */}209Jangan sertakan `forceLoginMethod` atau `forceLoginOrgUUID` dalam pengaturan terkelola bersama kredensial gateway. Pada Claude Code v2.1.146 dan yang lebih baru, salah satu kunci, dengan nilai apa pun, memblokir `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, dan `apiKeyHelper` saat startup, sehingga pengembang melihat `This machine's managed settings require a first-party login` dan tidak dapat melanjutkan. {/* min-version: 2.1.146 */}

210 210 

211Pengiriman [pengaturan terkelola server](/id/server-managed-settings#platform-availability) memerlukan koneksi langsung ke `api.anthropic.com`, sehingga tidak mencapai sesi yang dirutekan gateway. Penerapan gateway menggunakan jalur pengaturan terkelola berbasis file ini, yang memberlakukan kunci yang sama.211Pengiriman [pengaturan terkelola server](/id/server-managed-settings#platform-availability) memerlukan koneksi langsung ke `api.anthropic.com`, sehingga tidak mencapai sesi yang dirutekan gateway. Penerapan gateway menggunakan jalur pengaturan terkelola berbasis file ini, yang memberlakukan kunci yang sama.

212 212 

mcp.md +60 −28

Details

111 111 

112Server stdio berjalan sebagai proses lokal di mesin Anda. Mereka ideal untuk alat yang memerlukan akses sistem langsung atau skrip khusus.112Server stdio berjalan sebagai proses lokal di mesin Anda. Mereka ideal untuk alat yang memerlukan akses sistem langsung atau skrip khusus.

113 113 

114Claude Code menetapkan `CLAUDE_PROJECT_DIR` di lingkungan server yang dihasilkan ke akar proyek, sehingga server Anda dapat menyelesaikan jalur relatif proyek tanpa bergantung pada direktori kerja. Ini adalah direktori yang sama yang diterima hooks dalam variabel `CLAUDE_PROJECT_DIR` mereka. Bacalah dari dalam proses server Anda, misalnya `process.env.CLAUDE_PROJECT_DIR` di Node atau `os.environ["CLAUDE_PROJECT_DIR"]` di Python. Server Anda juga dapat memanggil permintaan MCP `roots/list`, yang mengembalikan direktori tempat Claude Code diluncurkan.114Claude Code menetapkan `CLAUDE_PROJECT_DIR` di lingkungan server yang dihasilkan ke akar proyek, sehingga server Anda dapat menyelesaikan jalur relatif proyek tanpa bergantung pada direktori kerja. Ini adalah direktori yang sama yang diterima hooks dalam variabel `CLAUDE_PROJECT_DIR` mereka. Bacalah dari dalam proses server Anda, misalnya `process.env.CLAUDE_PROJECT_DIR` di Node atau `os.environ["CLAUDE_PROJECT_DIR"]` di Python.

115 

116Server Anda juga dapat memanggil permintaan MCP `roots/list`, yang mengembalikan direktori tempat Claude Code diluncurkan.

115 117 

116Variabel ini ditetapkan di lingkungan server, bukan di lingkungan Claude Code itu sendiri, jadi mereferensikannya melalui ekspansi `${VAR}` dalam `.mcp.json` yang bersifat proyek atau pengguna `command` atau `args` memerlukan default seperti `${CLAUDE_PROJECT_DIR:-.}`. Konfigurasi MCP yang disediakan plugin mengganti `${CLAUDE_PROJECT_DIR}` secara langsung dan tidak memerlukan default.118Variabel ini ditetapkan di lingkungan server, bukan di lingkungan Claude Code itu sendiri, jadi mereferensikannya melalui ekspansi `${VAR}` dalam `.mcp.json` yang bersifat proyek atau pengguna `command` atau `args` memerlukan default seperti `${CLAUDE_PROJECT_DIR:-.}`. Konfigurasi MCP yang disediakan plugin mengganti `${CLAUDE_PROJECT_DIR}` secara langsung dan tidak memerlukan default.

117 119 


176 178 

177Server yang bersifat proyek dari `.mcp.json` yang menunggu persetujuan Anda muncul dalam `claude mcp list` sebagai `⏸ Pending approval`. Jalankan `claude` secara interaktif untuk meninjau dan menyetujui mereka. `claude mcp get <name>` menampilkan server yang tertunda sebagai `⏸ Pending approval` dan server yang ditolak sebagai `✗ Rejected`.179Server yang bersifat proyek dari `.mcp.json` yang menunggu persetujuan Anda muncul dalam `claude mcp list` sebagai `⏸ Pending approval`. Jalankan `claude` secara interaktif untuk meninjau dan menyetujui mereka. `claude mcp get <name>` menampilkan server yang tertunda sebagai `⏸ Pending approval` dan server yang ditolak sebagai `✗ Rejected`.

178 180 

181Mulai dari v2.1.196, `claude mcp list` dan `claude mcp get` membaca persetujuan `.mcp.json` hanya dari file pengaturan yang tidak dimasukkan ke dalam repositori sampai Anda mempercayai workspace dengan menjalankan `claude` di dalamnya dan menerima dialog kepercayaan workspace. Repositori yang diklon tidak dapat menyetujui server-nya sendiri: [`enableAllProjectMcpServers` atau `enabledMcpjsonServers`](/id/settings#available-settings) yang dikomitkan ke `.claude/settings.json` proyek diabaikan dalam folder yang tidak dipercaya, dan server tetap di `⏸ Pending approval` alih-alih terhubung dan diperiksa kesehatannya.

182 

183Persetujuan dari sumber-sumber ini masih berlaku dalam folder yang tidak dipercaya:

184 

185* `~/.claude/settings.json` pengguna Anda

186* pengaturan yang dikelola

187* pengaturan yang diteruskan dengan `--settings`

188* `.claude/settings.local.json`, selama git tidak melacaknya

189 

190Entri `disabledMcpjsonServers` dalam file pengaturan apa pun masih menolak server.

191 

179Panel `/mcp` menampilkan jumlah alat di sebelah setiap server yang terhubung dan menandai server yang mengiklankan kemampuan alat tetapi tidak mengekspos alat apa pun.192Panel `/mcp` menampilkan jumlah alat di sebelah setiap server yang terhubung dan menandai server yang mengiklankan kemampuan alat tetapi tidak mengekspos alat apa pun.

180 193 

181Jika permintaan Anda memerlukan alat dari server yang masih terhubung di latar belakang, Claude menunggu server tersebut sebelum melanjutkan. Dengan [pencarian alat](#scale-with-mcp-tool-search) diaktifkan, yang merupakan default, penantian terjadi di dalam panggilan `ToolSearch`. Dalam konfigurasi tanpa pencarian alat, seperti Vertex AI, `ANTHROPIC_BASE_URL` khusus, atau `ENABLE_TOOL_SEARCH=false`, Claude menggunakan alat `WaitForMcpServers` sebagai gantinya.194Jika permintaan Anda memerlukan alat dari server yang masih terhubung di latar belakang, Claude menunggu server tersebut sebelum melanjutkan. Dengan [pencarian alat](#scale-with-mcp-tool-search) diaktifkan, yang merupakan default, penantian terjadi di dalam panggilan `ToolSearch`. Dalam konfigurasi tanpa pencarian alat, seperti Vertex AI, `ANTHROPIC_BASE_URL` khusus, atau `ENABLE_TOOL_SEARCH=false`, Claude menggunakan alat `WaitForMcpServers` sebagai gantinya.


208 Tips:221 Tips:

209 222 

210 * Gunakan flag `--scope` untuk menentukan di mana konfigurasi disimpan:223 * Gunakan flag `--scope` untuk menentukan di mana konfigurasi disimpan:

211 * `local` (default): Hanya tersedia untuk Anda di proyek saat ini (disebut `project` di versi yang lebih lama)224 * `local` (default): Hanya tersedia untuk Anda di proyek saat ini. Versi yang lebih lama menyebut cakupan ini `project`

212 * `project`: Dibagikan dengan semua orang di proyek melalui file `.mcp.json`225 * `project`: Dibagikan dengan semua orang di proyek melalui file `.mcp.json`

213 * `user`: Tersedia untuk Anda di semua proyek (disebut `global` di versi yang lebih lama)226 * `user`: Tersedia untuk Anda di semua proyek. Versi yang lebih lama menyebut cakupan ini `global`

214 * Atur variabel lingkungan dengan flag `--env` (misalnya, `--env KEY=value`)227 * Atur variabel lingkungan dengan flag `--env` (misalnya, `--env KEY=value`)

215 * Konfigurasi waktu tunggu startup server MCP menggunakan variabel lingkungan MCP\_TIMEOUT (misalnya, `MCP_TIMEOUT=10000 claude` menetapkan waktu tunggu 10 detik)228 * Konfigurasi waktu tunggu startup server MCP menggunakan variabel lingkungan `MCP_TIMEOUT` (misalnya, `MCP_TIMEOUT=10000 claude` menetapkan waktu tunggu 10 detik)

216 * Atur waktu tunggu eksekusi alat per-server dengan menambahkan bidang `timeout` dalam milidetik ke entri `.mcp.json` server tersebut, misalnya `"timeout": 600000` untuk sepuluh menit. Ini menggantikan variabel lingkungan `MCP_TOOL_TIMEOUT` hanya untuk server tersebut229 * Atur waktu tunggu eksekusi alat per-server dengan menambahkan bidang `timeout` dalam milidetik ke entri `.mcp.json` server tersebut, misalnya `"timeout": 600000` untuk sepuluh menit. Ini menggantikan variabel lingkungan `MCP_TOOL_TIMEOUT` hanya untuk server tersebut

217 * Claude Code akan menampilkan peringatan ketika output alat MCP melebihi 10.000 token. Untuk meningkatkan batas ini, atur variabel lingkungan `MAX_MCP_OUTPUT_TOKENS` (misalnya, `MAX_MCP_OUTPUT_TOKENS=50000`)230 * Claude Code menampilkan peringatan ketika output alat MCP melebihi 10.000 token. Untuk meningkatkan batas ini, atur variabel lingkungan `MAX_MCP_OUTPUT_TOKENS` (misalnya, `MAX_MCP_OUTPUT_TOKENS=50000`)

218 * Gunakan `/mcp` untuk autentikasi dengan server jarak jauh yang memerlukan autentikasi OAuth 2.0231 * Gunakan `/mcp` untuk autentikasi dengan server jarak jauh yang memerlukan autentikasi OAuth 2.0

219</Tip>232</Tip>

220 233 

221Waktu tunggu per-server `timeout` adalah batas dinding jam yang keras per panggilan alat, dan notifikasi kemajuan dari server tidak memperpanjangnya. Nilai di bawah 1000 diabaikan dan jatuh melalui `MCP_TOOL_TIMEOUT`, atau ke default-nya sekitar 28 jam ketika variabel tersebut tidak diatur. {/* min-version: 2.1.162 */}Sebelum v2.1.162, nilai di bawah 1000 dibulatkan ke satu detik sebagai gantinya. Untuk server HTTP dan SSE, anggaran first-byte fetch per-permintaan memiliki minimum 60 detik.234Waktu tunggu per-server `timeout` adalah batas dinding jam yang keras per panggilan alat, dan notifikasi kemajuan dari server tidak memperpanjangnya. Nilai di bawah 1000 diabaikan dan jatuh melalui `MCP_TOOL_TIMEOUT`, atau ke default-nya sekitar 28 jam ketika variabel tersebut tidak diatur. {/* min-version: 2.1.162 */}Sebelum v2.1.162, nilai di bawah 1000 dibulatkan ke satu detik sebagai gantinya.

235 

236Untuk server HTTP dan SSE, anggaran first-byte fetch per-permintaan memiliki minimum 60 detik.

222 237 

223Mulai dari v2.1.187, panggilan alat ke server HTTP, SSE, WebSocket, atau [konektor claude.ai](#use-mcp-servers-from-claude-ai) jarak jauh yang tidak mengirim respons dan tidak ada notifikasi kemajuan selama 5 menit akan dibatalkan dengan kesalahan alih-alih menunggu batas dinding jam. Atur variabel lingkungan [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/id/env-vars) dalam milidetik untuk mengubah jendela idle, atau atur ke `0` untuk menonaktifkan pemeriksaan. Server stdio adalah proses lokal dan tidak tunduk pada timeout idle.238Mulai dari v2.1.187, panggilan alat ke server HTTP, SSE, WebSocket, atau [konektor claude.ai](#use-mcp-servers-from-claude-ai) jarak jauh yang tidak mengirim respons dan tidak ada notifikasi kemajuan selama 5 menit akan dibatalkan dengan kesalahan alih-alih menunggu batas dinding jam. Atur variabel lingkungan [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/id/env-vars) dalam milidetik untuk mengubah jendela idle, atau atur ke `0` untuk menonaktifkan pemeriksaan. Server stdio adalah proses lokal dan tidak tunduk pada timeout idle.

224 239 


233* Plugin menentukan server MCP dalam `.mcp.json` di root plugin atau inline dalam `plugin.json`248* Plugin menentukan server MCP dalam `.mcp.json` di root plugin atau inline dalam `plugin.json`

234* Ketika plugin diaktifkan, server MCP-nya dimulai secara otomatis249* Ketika plugin diaktifkan, server MCP-nya dimulai secara otomatis

235* Alat MCP plugin muncul bersama alat MCP yang dikonfigurasi secara manual250* Alat MCP plugin muncul bersama alat MCP yang dikonfigurasi secara manual

236* Server plugin dikelola melalui instalasi plugin (bukan perintah `/mcp`)251* Server plugin dikelola melalui instalasi plugin, bukan perintah `/mcp`

237 252 

238**Contoh konfigurasi MCP plugin**:253**Contoh konfigurasi MCP plugin**:

239 254 


272* **Siklus hidup otomatis**: Pada startup sesi, server untuk plugin yang diaktifkan terhubung secara otomatis. Jika Anda mengaktifkan atau menonaktifkan plugin selama sesi, jalankan `/reload-plugins` untuk menghubungkan atau memutuskan server MCP-nya287* **Siklus hidup otomatis**: Pada startup sesi, server untuk plugin yang diaktifkan terhubung secara otomatis. Jika Anda mengaktifkan atau menonaktifkan plugin selama sesi, jalankan `/reload-plugins` untuk menghubungkan atau memutuskan server MCP-nya

273* **Variabel lingkungan**: gunakan `${CLAUDE_PLUGIN_ROOT}` untuk file plugin bundel, `${CLAUDE_PLUGIN_DATA}` untuk [status persisten](/id/plugins-reference#persistent-data-directory) yang bertahan pembaruan plugin, dan `${CLAUDE_PROJECT_DIR}` untuk akar proyek yang stabil288* **Variabel lingkungan**: gunakan `${CLAUDE_PLUGIN_ROOT}` untuk file plugin bundel, `${CLAUDE_PLUGIN_DATA}` untuk [status persisten](/id/plugins-reference#persistent-data-directory) yang bertahan pembaruan plugin, dan `${CLAUDE_PROJECT_DIR}` untuk akar proyek yang stabil

274* **Akses lingkungan pengguna**: Akses ke variabel lingkungan yang sama seperti server yang dikonfigurasi secara manual289* **Akses lingkungan pengguna**: Akses ke variabel lingkungan yang sama seperti server yang dikonfigurasi secara manual

275* **Jenis transport berganda**: Dukungan transport stdio, SSE, HTTP, dan WebSocket (dukungan transport dapat bervariasi menurut server)290* **Jenis transport berganda**: Dukungan transport stdio, SSE, HTTP, dan WebSocket, meskipun dukungan transport dapat bervariasi menurut server

276 291 

277**Melihat server MCP plugin**:292**Melihat server MCP plugin**:

278 293 


408 423 

409**Sintaks yang didukung:**424**Sintaks yang didukung:**

410 425 

411* `${VAR}` - Berkembang menjadi nilai variabel lingkungan `VAR`426* `${VAR}`: berkembang menjadi nilai variabel lingkungan `VAR`

412* `${VAR:-default}` - Berkembang menjadi `VAR` jika diatur, jika tidak menggunakan `default`427* `${VAR:-default}`: berkembang menjadi `VAR` jika diatur, jika tidak menggunakan `default`

413 428 

414**Lokasi ekspansi:**429**Lokasi ekspansi:**

415Variabel lingkungan dapat berkembang dalam:430Variabel lingkungan dapat berkembang dalam:

416 431 

417* `command` - Jalur executable server432* `command`: jalur executable server

418* `args` - Argumen baris perintah433* `args`: argumen baris perintah

419* `env` - Variabel lingkungan yang diteruskan ke server434* `env`: variabel lingkungan yang diteruskan ke server

420* `url` - Untuk jenis server HTTP435* `url`: untuk jenis server HTTP

421* `headers` - Untuk autentikasi server HTTP436* `headers`: untuk autentikasi server HTTP

422 437 

423**Contoh dengan ekspansi variabel:**438**Contoh dengan ekspansi variabel:**

424 439 


524 539 

525Banyak server MCP berbasis cloud memerlukan autentikasi. Claude Code mendukung OAuth 2.0 untuk koneksi yang aman.540Banyak server MCP berbasis cloud memerlukan autentikasi. Claude Code mendukung OAuth 2.0 untuk koneksi yang aman.

526 541 

527Claude Code menandai server jarak jauh sebagai memerlukan autentikasi ketika server merespons dengan `401 Unauthorized` atau `403 Forbidden`. Salah satu kode status ini menandai server di `/mcp` sehingga Anda dapat menyelesaikan alur OAuth. Server kustom yang mengembalikan header `WWW-Authenticate` yang menunjuk ke server otorisasinya mendapatkan penemuan otomatis yang sama seperti server jarak jauh lainnya.542Claude Code menandai server jarak jauh sebagai memerlukan autentikasi ketika server merespons dengan `401 Unauthorized` atau `403 Forbidden`. Salah satu kode status ini menandai server di `/mcp` sehingga Anda dapat menyelesaikan alur OAuth.

543 

544Mulai dari v2.1.195, ketika penyegaran token gagal karena server menolak token penyegaran yang disimpan, Claude Code segera menampilkan pemberitahuan yang menunjuk ke `/mcp`. Menu server yang terhubung di sana menawarkan Re-authenticate, sehingga Anda dapat masuk lagi sebelum panggilan alat berikutnya gagal.

545 

546Server kustom yang mengembalikan header `WWW-Authenticate` yang menunjuk ke server otorisasinya mendapatkan penemuan otomatis yang sama seperti server jarak jauh lainnya.

547 

548Mulai dari v2.1.193, Claude Code juga menampilkan pemberitahuan startup ketika satu atau lebih server yang dikonfigurasi memerlukan autentikasi, sehingga Anda tidak perlu membuka `/mcp` untuk menemukan server mana yang memerlukan sign-in.

549 

550Dalam mode non-interaktif tidak ada panel `/mcp`, jadi Claude Code tidak dapat menjalankan alur OAuth untuk Anda. Mulai dari v2.1.196, ketika server yang dikonfigurasi memerlukan autentikasi selama `claude -p` atau jalankan Agent SDK dengan [pencarian alat](#scale-with-mcp-tool-search) diaktifkan, yang merupakan default, Claude Code memberi tahu Claude bahwa alat server tidak tersedia sampai Anda mengotorisasinya. Claude kemudian dapat menyebutkan server yang memerlukan sign-in alih-alih merespons seolah-olah server tidak dikonfigurasi. Selesaikan sign-in dari sesi interaktif dengan `/mcp` atau `claude mcp login <name>`.

528 551 

529Jika Anda mengonfigurasi `headers.Authorization` untuk server dan server menolak header tersebut, Claude Code melaporkan koneksi sebagai gagal alih-alih kembali ke OAuth. Periksa bahwa token valid untuk endpoint MCP, atau hapus header untuk menggunakan alur OAuth.552Jika Anda mengonfigurasi `headers.Authorization` untuk server dan server menolak header tersebut, Claude Code melaporkan koneksi sebagai gagal alih-alih kembali ke OAuth. Periksa bahwa token valid untuk endpoint MCP, atau hapus header untuk menggunakan alur OAuth.

530 553 


710 733 

711`oauth.scopes` mengambil prioritas atas `authServerMetadataUrl` dan cakupan yang ditemukan server di `/.well-known`. Biarkan tidak diatur untuk membiarkan server MCP menentukan set cakupan yang diminta.734`oauth.scopes` mengambil prioritas atas `authServerMetadataUrl` dan cakupan yang ditemukan server di `/.well-known`. Biarkan tidak diatur untuk membiarkan server MCP menentukan set cakupan yang diminta.

712 735 

736Mulai dari v2.1.196, ketika `oauth.scopes` tidak diatur, Claude Code meminta cakupan yang disediakan oleh header `WWW-Authenticate` server atau metadata sumber daya terlindungnya, dan tidak mengirim parameter `scope` ketika tidak ada yang menyediakannya. Itu tidak lagi meminta katalog `scopes_supported` lengkap dari metadata server otorisasi yang ditemukan secara otomatis. Meminta katalog itu membuat penyedia identitas yang mengiklankan cakupan khusus admin atau template menolak permintaan otorisasi dengan kesalahan `invalid_scope`. Metadata yang diambil dari `authServerMetadataUrl` yang dikonfigurasi masih menyediakan `scopes_supported` sebagai cakupan yang diminta.

737 

713Jika server otorisasi mengiklankan `offline_access` dalam `scopes_supported`, Claude Code menambahkannya ke cakupan yang disematkan sehingga token akses dapat disegarkan tanpa login browser baru.738Jika server otorisasi mengiklankan `offline_access` dalam `scopes_supported`, Claude Code menambahkannya ke cakupan yang disematkan sehingga token akses dapat disegarkan tanpa login browser baru.

714 739 

715Jika server kemudian mengembalikan 403 `insufficient_scope` untuk panggilan alat, Claude Code melakukan autentikasi ulang dengan cakupan yang disematkan yang sama. Perluas `oauth.scopes` ketika alat yang Anda butuhkan memerlukan cakupan di luar pin.740Jika server kemudian mengembalikan 403 `insufficient_scope` untuk panggilan alat, Claude Code melakukan autentikasi ulang dengan cakupan yang disematkan yang sama. Perluas `oauth.scopes` ketika alat yang Anda butuhkan memerlukan cakupan di luar set yang disematkan.

716 741 

717<h3 id="use-dynamic-headers-for-custom-authentication">742<h3 id="use-dynamic-headers-for-custom-authentication">

718 Gunakan header dinamis untuk autentikasi khusus743 Gunakan header dinamis untuk autentikasi khusus

719</h3>744</h3>

720 745 

721Jika server MCP Anda menggunakan skema autentikasi selain OAuth (seperti Kerberos, token berumur pendek, atau SSO internal), gunakan `headersHelper` untuk menghasilkan header permintaan pada waktu koneksi. Claude Code menjalankan perintah dan menggabungkan outputnya ke dalam header koneksi.746Jika server MCP Anda menggunakan skema autentikasi selain OAuth, seperti Kerberos, token berumur pendek, atau SSO internal, gunakan `headersHelper` untuk menghasilkan header permintaan pada waktu koneksi. Claude Code menjalankan perintah dan menggabungkan outputnya ke dalam header koneksi.

722 747 

723```json theme={null}748```json theme={null}

724{749{


752* Perintah berjalan dalam shell dengan waktu tunggu 10 detik777* Perintah berjalan dalam shell dengan waktu tunggu 10 detik

753* Header dinamis mengganti `headers` statis apa pun dengan nama yang sama778* Header dinamis mengganti `headers` statis apa pun dengan nama yang sama

754 779 

755Helper berjalan segar pada setiap koneksi (pada startup sesi dan pada reconnect). Tidak ada caching, jadi skrip Anda bertanggung jawab untuk penggunaan kembali token apa pun.780Helper berjalan segar pada setiap koneksi, pada startup sesi dan pada reconnect. Tidak ada caching, jadi skrip Anda bertanggung jawab untuk penggunaan kembali token apa pun.

781 

782Mulai dari v2.1.193, jika panggilan alat mengembalikan `401 Unauthorized` atau `403 Forbidden`, Claude Code secara otomatis menjalankan kembali helper, terhubung kembali dengan header segar, dan mencoba panggilan sekali lagi. Claude Code menandai server sebagai memerlukan autentikasi di `/mcp` hanya jika percobaan ulang itu juga gagal.

756 783 

757Claude Code menetapkan variabel lingkungan ini saat menjalankan helper:784Claude Code menetapkan variabel lingkungan ini saat menjalankan helper:

758 785 

759| Variabel | Nilai |786| Variabel | Nilai |

760| :---------------------------- | :-------------- |787| :---------------------------- | :-------------------------------------------------------------------------------------------------------- |

761| `CLAUDE_CODE_MCP_SERVER_NAME` | nama server MCP |788| `CLAUDE_CODE_MCP_SERVER_NAME` | nama server MCP |

762| `CLAUDE_CODE_MCP_SERVER_URL` | URL server MCP |789| `CLAUDE_CODE_MCP_SERVER_URL` | URL server MCP |

790| `CLAUDE_PLUGIN_ROOT` | direktori root plugin. Diatur hanya ketika [plugin](/id/plugins-reference#mcp-servers) menyediakan server |

763 791 

764Gunakan ini untuk menulis satu skrip helper yang melayani beberapa server MCP.792Gunakan ini untuk menulis satu skrip helper yang melayani beberapa server MCP.

765 793 

794Untuk server yang disediakan plugin, helper juga berjalan dengan direktori kerjanya diatur ke root plugin, sehingga jalur `headersHelper` relatif diselesaikan di dalam direktori plugin daripada terhadap direktori kerja sesi. Memerlukan Claude Code v2.1.195 atau lebih baru.

795 

766<Note>796<Note>

767 `headersHelper` mengeksekusi perintah shell arbitrer. Ketika ditentukan pada cakupan proyek atau lokal, itu hanya berjalan setelah Anda menerima dialog kepercayaan ruang kerja.797 `headersHelper` mengeksekusi perintah shell arbitrer. Ketika ditentukan pada cakupan proyek atau lokal, itu hanya berjalan setelah Anda menerima dialog kepercayaan ruang kerja.

768</Note>798</Note>


841</Tip>871</Tip>

842 872 

843<h2 id="use-mcp-servers-from-claude-ai">873<h2 id="use-mcp-servers-from-claude-ai">

844 Gunakan server MCP dari Claude.ai874 Gunakan server MCP dari claude.ai

845</h2>875</h2>

846 876 

847Jika Anda telah masuk ke Claude Code dengan akun [Claude.ai](https://claude.ai), server MCP yang telah Anda tambahkan di Claude.ai secara otomatis tersedia di Claude Code:877Jika Anda telah masuk ke Claude Code dengan akun [claude.ai](https://claude.ai), server MCP yang telah Anda tambahkan di claude.ai secara otomatis tersedia di Claude Code:

848 878 

849<Steps>879<Steps>

850 <Step title="Konfigurasi server MCP di Claude.ai">880 <Step title="Konfigurasi server MCP di claude.ai">

851 Tambahkan server di [claude.ai/customize/connectors](https://claude.ai/customize/connectors). Pada paket Tim dan Enterprise, hanya admin yang dapat menambahkan server.881 Tambahkan server di [claude.ai/customize/connectors](https://claude.ai/customize/connectors). Pada paket Tim dan Enterprise, hanya admin yang dapat menambahkan server.

852 </Step>882 </Step>

853 883 

854 <Step title="Autentikasi server MCP">884 <Step title="Autentikasi server MCP">

855 Selesaikan langkah autentikasi yang diperlukan di Claude.ai.885 Selesaikan langkah autentikasi yang diperlukan di claude.ai.

856 </Step>886 </Step>

857 887 

858 <Step title="Lihat dan kelola server di Claude Code">888 <Step title="Lihat dan kelola server di Claude Code">


862 /mcp892 /mcp

863 ```893 ```

864 894 

865 Server Claude.ai muncul dalam daftar dengan indikator yang menunjukkan mereka berasal dari Claude.ai.895 Server dari claude.ai muncul dalam daftar dengan indikator yang menunjukkan mereka berasal dari claude.ai.

866 </Step>896 </Step>

867</Steps>897</Steps>

868 898 

869Mulai dari v2.1.161, konektor yang belum pernah Anda masuki disembunyikan di balik baris `Show unused connectors` di akhir bagian claude.ai, sehingga daftar yang disediakan organisasi tidak mengisi panel. Pilih baris untuk memperluas mereka. Konektor yang Anda masuki sebelumnya tetap terlihat bahkan ketika saat ini memerlukan autentikasi ulang.899Mulai dari v2.1.161, konektor yang belum pernah Anda masuki disembunyikan di balik baris `Show unused connectors` di akhir bagian claude.ai, sehingga daftar yang disediakan organisasi tidak mengisi panel. Pilih baris untuk memperluas mereka. Konektor yang Anda masuki sebelumnya tetap terlihat bahkan ketika saat ini memerlukan autentikasi ulang.

870 900 

871Konektor Claude.ai diambil hanya ketika [metode autentikasi](/id/authentication#authentication-precedence) aktif Anda adalah langganan Claude.ai Anda. Mereka tidak dimuat ketika `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, `apiKeyHelper`, atau penyedia pihak ketiga seperti Bedrock atau Vertex aktif, bahkan jika Anda sebelumnya menjalankan `/login`. Jika `/mcp` tidak mencantumkan konektor yang Anda tambahkan, jalankan `/status` untuk mengonfirmasi metode autentikasi mana yang aktif, hapus variabel lingkungan tersebut atau hapus pengaturan `apiKeyHelper`, kemudian jalankan `/login` untuk memilih akun Claude.ai Anda.901Konektor dari claude.ai diambil hanya ketika [metode autentikasi](/id/authentication#authentication-precedence) aktif Anda adalah langganan claude.ai Anda. Mereka tidak dimuat ketika `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, `apiKeyHelper`, atau penyedia pihak ketiga seperti Bedrock atau Vertex aktif, bahkan jika Anda sebelumnya menjalankan `/login`.

902 

903Jika `/mcp` tidak mencantumkan konektor yang Anda tambahkan, jalankan `/status` untuk mengonfirmasi metode autentikasi mana yang aktif, hapus variabel lingkungan tersebut atau hapus pengaturan `apiKeyHelper`, kemudian jalankan `/login` untuk memilih akun claude.ai Anda.

872 904 

873Server yang telah Anda tambahkan di Claude Code mengambil [prioritas](#scope-hierarchy-and-precedence) atas konektor claude.ai yang menunjuk ke URL yang sama. Ketika ini terjadi, `/mcp` mencantumkan konektor sebagai tersembunyi dan menunjukkan cara menghapus duplikat jika Anda lebih suka menggunakan konektor.905Server yang telah Anda tambahkan di Claude Code mengambil [prioritas](#scope-hierarchy-and-precedence) atas konektor claude.ai yang menunjuk ke URL yang sama. Ketika ini terjadi, `/mcp` mencantumkan konektor sebagai tersembunyi dan menunjukkan cara menghapus duplikat jika Anda lebih suka menggunakan konektor.

874 906 


958 990 

959 * Server menyediakan akses ke alat Claude seperti View, Edit, LS, dll.991 * Server menyediakan akses ke alat Claude seperti View, Edit, LS, dll.

960 * Di Claude Desktop, coba minta Claude untuk membaca file di direktori, membuat edit, dan lainnya.992 * Di Claude Desktop, coba minta Claude untuk membaca file di direktori, membuat edit, dan lainnya.

961 * Perhatikan bahwa server MCP ini hanya mengekspos alat Claude Code ke klien MCP Anda, jadi klien Anda sendiri bertanggung jawab untuk menerapkan konfirmasi pengguna untuk panggilan alat individual.993 * Server MCP ini hanya mengekspos alat Claude Code ke klien MCP Anda, jadi klien Anda sendiri bertanggung jawab untuk menerapkan konfirmasi pengguna untuk panggilan alat individual.

962</Tip>994</Tip>

963 995 

964<h2 id="mcp-output-limits-and-warnings">996<h2 id="mcp-output-limits-and-warnings">


1199 * Prompt MCP ditemukan secara dinamis dari server yang terhubung1231 * Prompt MCP ditemukan secara dinamis dari server yang terhubung

1200 * Argumen diurai berdasarkan parameter yang ditentukan prompt1232 * Argumen diurai berdasarkan parameter yang ditentukan prompt

1201 * Hasil prompt disuntikkan langsung ke dalam percakapan1233 * Hasil prompt disuntikkan langsung ke dalam percakapan

1202 * Nama server dan prompt dinormalisasi (spasi menjadi garis bawah)1234 * Nama server dan prompt dinormalisasi, dengan spasi dikonversi menjadi garis bawah

1203</Tip>1235</Tip>

1204 1236 

1205<h2 id="managed-mcp-configuration">1237<h2 id="managed-mcp-configuration">

Details

171 171 

172```bash theme={null}172```bash theme={null}

173export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'173export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8'

174export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'174export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-5'

175export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5'175export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5'

176```176```

177 177 

model-config.md +45 −32

Details

30Alias model menyediakan cara yang nyaman untuk memilih pengaturan model tanpa perlu mengingat nomor versi yang tepat:30Alias model menyediakan cara yang nyaman untuk memilih pengaturan model tanpa perlu mengingat nomor versi yang tepat:

31 31 

32| Alias model | Perilaku |32| Alias model | Perilaku |

33| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |33| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

34| **`default`** | Nilai khusus yang menghapus penggantian model apa pun dan kembali ke model yang direkomendasikan untuk jenis akun Anda. Bukan sendiri alias model |34| **`default`** | Nilai khusus yang menghapus penggantian model apa pun dan kembali ke model yang direkomendasikan untuk jenis akun Anda. Bukan sendiri alias model |

35| **`best`** | Menggunakan Fable 5 di mana organisasi Anda memiliki akses ke dalamnya, jika tidak maka model Opus terbaru |35| **`best`** | Menggunakan Fable 5 di mana organisasi Anda memiliki akses ke dalamnya, jika tidak maka model Opus terbaru |

36| **`fable`** | Menggunakan Claude Fable 5 untuk tugas-tugas tersulit dan paling lama Anda |36| **`fable`** | Menggunakan Claude Fable 5 untuk tugas-tugas tersulit dan paling lama Anda |

37| **`sonnet`** | Menggunakan model Sonnet terbaru untuk tugas coding sehari-hari |37| **`sonnet`** | Menggunakan model Sonnet terbaru untuk tugas coding sehari-hari |

38| **`opus`** | Menggunakan model Opus terbaru untuk tugas penalaran kompleks |38| **`opus`** | Menggunakan model Opus terbaru untuk tugas penalaran kompleks |

39| **`haiku`** | Menggunakan model Haiku yang cepat dan efisien untuk tugas sederhana |39| **`haiku`** | Menggunakan model Haiku yang cepat dan efisien untuk tugas sederhana |

40| **`sonnet[1m]`** | Menggunakan Sonnet dengan [jendela konteks 1 juta token](https://platform.claude.com/docs/id/build-with-claude/context-windows#1m-token-context-window) untuk sesi panjang |40| **`sonnet[1m]`** | Menggunakan Sonnet dengan [jendela konteks 1 juta token](https://platform.claude.com/docs/id/build-with-claude/context-windows#1m-token-context-window) untuk sesi panjang. Tidak berpengaruh ketika `sonnet` sudah diselesaikan ke Sonnet 5 dengan jendela 1M bawaannya; di belakang [gateway LLM](/id/llm-gateway), memilih jendela 1M untuk Sonnet 5 |

41| **`opus[1m]`** | Menggunakan Opus dengan [jendela konteks 1 juta token](https://platform.claude.com/docs/id/build-with-claude/context-windows#1m-token-context-window) untuk sesi panjang |41| **`opus[1m]`** | Menggunakan Opus dengan [jendela konteks 1 juta token](https://platform.claude.com/docs/id/build-with-claude/context-windows#1m-token-context-window) untuk sesi panjang |

42| **`opusplan`** | Mode khusus yang menggunakan `opus` selama Plan Mode, kemudian beralih ke `sonnet` untuk eksekusi |42| **`opusplan`** | Mode khusus yang menggunakan `opus` selama Plan Mode, kemudian beralih ke `sonnet` untuk eksekusi |

43 43 

44Di Anthropic API, `opus` diselesaikan ke Opus 4.8 dan `sonnet` diselesaikan ke Sonnet 4.6. Di [Claude Platform on AWS](/id/claude-platform-on-aws), `opus` diselesaikan ke Opus 4.7 dan `sonnet` diselesaikan ke Sonnet 4.6. Di Bedrock, Vertex, dan Foundry, `opus` diselesaikan ke Opus 4.6 dan `sonnet` diselesaikan ke Sonnet 4.5; model yang lebih baru tersedia di penyedia tersebut dengan memilih nama model lengkap secara eksplisit atau mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` atau `ANTHROPIC_DEFAULT_SONNET_MODEL`.44Di Anthropic API, `opus` diselesaikan ke Opus 4.8 dan `sonnet` diselesaikan ke Sonnet 5. Di [Claude Platform on AWS](/id/claude-platform-on-aws), `opus` diselesaikan ke Opus 4.7 dan `sonnet` diselesaikan ke Sonnet 4.6. Di Bedrock, Vertex, dan Foundry, `opus` diselesaikan ke Opus 4.6 dan `sonnet` diselesaikan ke Sonnet 4.5; model yang lebih baru tersedia di penyedia tersebut dengan memilih nama model lengkap secara eksplisit atau mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` atau `ANTHROPIC_DEFAULT_SONNET_MODEL`.

45 45 

46Alias menunjuk ke versi yang direkomendasikan untuk penyedia Anda dan diperbarui seiring waktu. Untuk menetapkan versi tertentu, gunakan nama model lengkap (misalnya, `claude-opus-4-8`) atau atur variabel lingkungan yang sesuai seperti `ANTHROPIC_DEFAULT_OPUS_MODEL`.46Alias menunjuk ke versi yang direkomendasikan untuk penyedia Anda dan diperbarui seiring waktu. Untuk menetapkan versi tertentu, gunakan nama model lengkap, misalnya `claude-opus-4-8`, atau atur variabel lingkungan yang sesuai seperti `ANTHROPIC_DEFAULT_OPUS_MODEL`.

47 47 

48<Note>48<Note>

49 Opus 4.8 memerlukan Claude Code v2.1.154 atau lebih baru. Jalankan `claude update` untuk meningkatkan.49 Sonnet 5 memerlukan Claude Code v2.1.197 atau lebih baru. Opus 4.8 memerlukan v2.1.154 atau lebih baru. Jalankan `claude update` untuk meningkatkan.

50</Note>50</Note>

51 51 

52<h3 id="work-with-fable-5">52<h3 id="work-with-fable-5">


74 74 

75Anda dapat mengonfigurasi model Anda dengan beberapa cara, yang tercantum dalam urutan prioritas:75Anda dapat mengonfigurasi model Anda dengan beberapa cara, yang tercantum dalam urutan prioritas:

76 76 

771. **Selama sesi** - Gunakan `/model <alias|name>` untuk beralih segera, atau jalankan `/model` tanpa argumen untuk membuka pemilih. Pemilih meminta konfirmasi ketika percakapan memiliki output sebelumnya, karena respons berikutnya membaca ulang riwayat lengkap tanpa konteks cache771. **Selama sesi**: gunakan `/model <alias|name>` untuk beralih segera, atau jalankan `/model` tanpa argumen untuk membuka pemilih. Pemilih meminta konfirmasi ketika percakapan memiliki output sebelumnya, karena respons berikutnya membaca ulang riwayat lengkap tanpa konteks cache

782. **Saat startup** - Luncurkan dengan `claude --model <alias|name>`782. **Saat startup**: luncurkan dengan `claude --model <alias|name>`

793. **Variabel lingkungan** - Atur `ANTHROPIC_MODEL=<alias|name>`793. **Variabel lingkungan**: atur `ANTHROPIC_MODEL=<alias|name>`

804. **Pengaturan** - Konfigurasi secara permanen di file pengaturan Anda menggunakan bidang `model`.804. **Pengaturan**: konfigurasi secara permanen di file pengaturan Anda menggunakan bidang `model`

81 81 

82Mulai dari v2.1.153, `/model` menyimpan pilihan Anda sebagai default untuk sesi baru dengan menulis bidang `model` di pengaturan pengguna Anda. Di pemilih:82Mulai dari v2.1.153, `/model` menyimpan pilihan Anda sebagai default untuk sesi baru dengan menulis bidang `model` di pengaturan pengguna Anda. Di pemilih:

83 83 


92 92 

93Sesi yang dilanjutkan dimulai dengan `claude --resume`, `--continue`, atau pemilih `/resume` menyimpan model yang mereka gunakan ketika transkrip disimpan, terlepas dari pengaturan `model` saat ini. Jika model tersebut telah pensiun atau dikecualikan oleh [`availableModels`](#restrict-model-selection), sesi jatuh melalui urutan prioritas normal. Ini mencegah pilihan `/model` sesi lain dari mengubah model saat dilanjutkan.93Sesi yang dilanjutkan dimulai dengan `claude --resume`, `--continue`, atau pemilih `/resume` menyimpan model yang mereka gunakan ketika transkrip disimpan, terlepas dari pengaturan `model` saat ini. Jika model tersebut telah pensiun atau dikecualikan oleh [`availableModels`](#restrict-model-selection), sesi jatuh melalui urutan prioritas normal. Ini mencegah pilihan `/model` sesi lain dari mengubah model saat dilanjutkan.

94 94 

95Model yang Anda pilih untuk peluncuran baru dengan `--model` atau `ANTHROPIC_MODEL` masih memiliki prioritas lebih tinggi daripada model yang dipulihkan. {/* min-version: 2.1.195 */}Mulai dari v2.1.195, demikian juga variabel keluarga [`ANTHROPIC_DEFAULT_OPUS_MODEL`](#environment-variables).

96 

95Ketika model aktif saat startup berasal dari pengaturan proyek atau yang dikelola daripada pilihan Anda sendiri, header startup menunjukkan file pengaturan mana yang menetapkannya. Jalankan `/model` untuk mengganti; pengaturan proyek atau yang dikelola diterapkan kembali pada peluncuran berikutnya.97Ketika model aktif saat startup berasal dari pengaturan proyek atau yang dikelola daripada pilihan Anda sendiri, header startup menunjukkan file pengaturan mana yang menetapkannya. Jalankan `/model` untuk mengganti; pengaturan proyek atau yang dikelola diterapkan kembali pada peluncuran berikutnya.

96 98 

97Ketika model yang diminta memiliki tanggal pensiun yang dijadwalkan atau secara otomatis dipetakan ulang ke versi yang lebih baru, Claude Code menampilkan peringatan yang menyebutkan model yang diminta. Sesi interaktif menampilkannya sebagai pemberitahuan startup. Dari v2.1.182, peringatan yang sama ditulis ke stderr dalam [mode non-interaktif](/id/headless) ketika menggunakan format output teks default. Pemeriksaan juga mencakup `model` yang ditetapkan dalam [frontmatter subagent](/id/sub-agents). Peringatan stderr ditekan untuk `--output-format json` dan `stream-json`; baca model aktual dari bidang `modelUsage` dari [pesan hasil](/id/headless#get-structured-output) sebagai gantinya.99Ketika model yang diminta memiliki tanggal pensiun yang dijadwalkan atau secara otomatis dipetakan ulang ke versi yang lebih baru, Claude Code menampilkan peringatan yang menyebutkan model yang diminta. Sesi interaktif menampilkannya sebagai pemberitahuan startup. Dari v2.1.182, peringatan yang sama ditulis ke stderr dalam [mode non-interaktif](/id/headless) ketika menggunakan format output teks default. Pemeriksaan juga mencakup `model` yang ditetapkan dalam [frontmatter subagent](/id/sub-agents). Peringatan stderr ditekan untuk `--output-format json` dan `stream-json`; baca model aktual dari bidang `modelUsage` dari [pesan hasil](/id/headless#get-structured-output) sebagai gantinya.


220 Perilaku penggabungan222 Perilaku penggabungan

221</h3>223</h3>

222 224 

223Ketika [sumber pengaturan terkelola dengan prioritas tertinggi](/id/server-managed-settings#settings-precedence) mendefinisikan `availableModels`, hanya daftar itu yang berlaku: entri dalam pengaturan pengguna, proyek, atau lokal tidak dapat memperluas daftar, dan sumber terkelola yang diterapkan admin tidak menggabung satu sama lain, jadi daftar yang diterapkan dalam file pengaturan terkelola diabaikan ketika pengaturan terkelola server mengirimkan kunci apa pun. Jika tidak, daftar dari pengaturan pengguna, proyek, dan lokal [digabungkan dan dideduplikasi](/id/settings#settings-precedence) seperti pengaturan array lainnya. {/* min-version: 2.1.175 */}Mulai dari Claude Code v2.1.175, daftar terkelola menggantikan entri prioritas lebih rendah; versi sebelumnya menggabungkan mereka.225Ketika [sumber pengaturan terkelola dengan prioritas tertinggi](/id/settings#settings-precedence) mendefinisikan `availableModels`, hanya daftar itu yang berlaku: entri dalam pengaturan pengguna, proyek, atau lokal tidak dapat memperluas daftar, dan sumber terkelola yang diterapkan admin tidak menggabung satu sama lain, jadi daftar yang diterapkan dalam file pengaturan terkelola diabaikan ketika pengaturan terkelola server mengirimkan kunci apa pun. Jika tidak, daftar dari pengaturan pengguna, proyek, dan lokal [digabungkan dan dideduplikasi](/id/settings#settings-precedence) seperti pengaturan array lainnya. {/* min-version: 2.1.175 */}Mulai dari Claude Code v2.1.175, daftar terkelola menggantikan entri prioritas lebih rendah; versi sebelumnya menggabungkan mereka.

224 226 

225Dalam daftar yang efektif, entri yang menamai model tertentu dalam keluarga, baik awalan versi atau ID model lengkap, menonaktifkan entri wildcard keluarga itu: `["sonnet", "claude-sonnet-4-5"]` hanya memungkinkan versi Sonnet 4.5, bukan setiap model Sonnet.227Dalam daftar yang efektif, entri yang menamai model tertentu dalam keluarga, baik awalan versi atau ID model lengkap, menonaktifkan entri wildcard keluarga itu: `["sonnet", "claude-sonnet-4-5"]` hanya memungkinkan versi Sonnet 4.5, bukan setiap model Sonnet.

226 228 


234 Pembatasan model organisasi236 Pembatasan model organisasi

235</h3>237</h3>

236 238 

237Gunakan toggle Konsol alih-alih `availableModels` ketika anggota Anda mengautentikasi melalui API Anthropic dan Anda menginginkan satu sakelar di seluruh organisasi tanpa menerapkan file pengaturan. Admin organisasi membatasi model mana yang dapat dijalankan anggota dengan menonaktifkan model individual di Konsol Claude. Pembatasan ini dikirimkan dengan hak akses akun ketika Claude Code mengautentikasi, terpisah dari daftar `availableModels` apa pun dalam pengaturan, dan server memberlakukan pembatasan yang sama secara independen ketika sesi dibuat. Memerlukan Claude Code v2.1.187 atau lebih baru.239Admin organisasi membatasi model mana yang dapat dijalankan anggota dengan menonaktifkan model individual di Konsol Claude. Gunakan toggle Konsol alih-alih `availableModels` ketika anggota Anda mengautentikasi melalui API Anthropic dan Anda menginginkan satu sakelar di seluruh organisasi tanpa menerapkan file pengaturan. Pembatasan ini dikirimkan dengan hak akses akun ketika Claude Code mengautentikasi, terpisah dari daftar `availableModels` apa pun dalam pengaturan, dan server memberlakukan pembatasan yang sama secara independen ketika sesi dibuat. Memerlukan Claude Code v2.1.187 atau lebih baru.

238 240 

239Model yang dibatasi disembunyikan dari pemilih `/model`. Memilihnya berdasarkan nama dengan `--model`, variabel lingkungan `ANTHROPIC_MODEL`, atau pengaturan `model` menunjukkan pemberitahuan `Model "<name>" is restricted by your organization's settings. Using <model> instead.` dan sesi dimulai pada model yang diizinkan. Mengetik `/model <name>` untuk model yang dibatasi ditolak dengan `Model '<name>' is restricted by your organization's settings. Run /model to choose a different model.` dan sesi mempertahankan model saat ini.241Model yang dibatasi disembunyikan dari pemilih `/model`. Memilihnya berdasarkan nama dengan `--model`, variabel lingkungan `ANTHROPIC_MODEL`, atau pengaturan `model` menunjukkan pemberitahuan `Model "<name>" is restricted by your organization's settings. Using <model> instead.` dan sesi dimulai pada model yang diizinkan. Mengetik `/model <name>` untuk model yang dibatasi ditolak dengan `Model '<name>' is restricted by your organization's settings. Run /model to choose a different model.` dan sesi mempertahankan model saat ini.

240 242 

241Dua mekanisme tersusun: model dapat dipilih hanya ketika diizinkan oleh `availableModels` dan tidak dibatasi oleh organisasi. Pembatasan organisasi dikirimkan ke sesi di API Anthropic dan penyebaran [LLM gateway](/id/llm-gateway). Sesi di Bedrock, Vertex AI, Foundry, dan Claude Platform di AWS tidak menerimanya, jadi gunakan `availableModels` di penyedia tersebut.243Dua pembatasan berlaku bersama: model dapat dipilih hanya ketika diizinkan oleh `availableModels` dan tidak dibatasi oleh organisasi. Pembatasan organisasi dikirimkan ke sesi di API Anthropic dan penyebaran [LLM gateway](/id/llm-gateway). Sesi di Bedrock, Vertex AI, Foundry, dan Claude Platform di AWS tidak menerimanya, jadi gunakan `availableModels` di penyedia tersebut.

242 244 

243<h2 id="special-model-behavior">245<h2 id="special-model-behavior">

244 Perilaku model khusus246 Perilaku model khusus


252 254 

253* **Max, Team Premium, Enterprise pay-as-you-go, dan Anthropic API**: default ke Opus 4.8255* **Max, Team Premium, Enterprise pay-as-you-go, dan Anthropic API**: default ke Opus 4.8

254* **Claude Platform di AWS**: default ke Opus 4.7256* **Claude Platform di AWS**: default ke Opus 4.7

255* **Pro, Team Standard, dan kursi langganan Enterprise**: default ke Sonnet 4.6257* **Pro, Team Standard, dan kursi langganan Enterprise**: default ke Sonnet 5

256* **Bedrock, Vertex, dan Foundry**: default ke Sonnet 4.5258* **Bedrock, Vertex, dan Foundry**: default ke Sonnet 4.5

257 259 

258Enterprise pay-as-you-go berarti organisasi Enterprise yang ditagihkan berdasarkan penggunaan daripada kursi langganan.260Enterprise pay-as-you-go berarti organisasi Enterprise yang ditagihkan berdasarkan penggunaan daripada kursi langganan.


267 269 

268Alias model `opusplan` menyediakan pendekatan hibrida otomatis:270Alias model `opusplan` menyediakan pendekatan hibrida otomatis:

269 271 

270* **Dalam plan mode** - Menggunakan `opus` untuk penalaran kompleks dan keputusan arsitektur272* **Dalam plan mode**: menggunakan `opus` untuk penalaran kompleks dan keputusan arsitektur

271* **Dalam execution mode** - Secara otomatis beralih ke `sonnet` untuk pembuatan kode dan implementasi273* **Dalam execution mode**: secara otomatis beralih ke `sonnet` untuk pembuatan kode dan implementasi

272 274 

273Ini memberi Anda yang terbaik dari kedua dunia: penalaran superior Opus untuk perencanaan, dan efisiensi Sonnet untuk eksekusi.275Ini menggabungkan penalaran Opus untuk perencanaan dengan efisiensi Sonnet untuk eksekusi.

274 276 

275Fase Opus dalam plan mode menggunakan jendela konteks yang sama dengan pengaturan model `opus`. Pada tingkat langganan di mana Opus [secara otomatis ditingkatkan ke konteks 1M](#extended-context), `opusplan` menerima peningkatan dalam plan mode juga. Untuk memaksa konteks 1M untuk kedua fase ketika Anda tidak berada di tingkat auto-upgrade, atur model ke `opusplan[1m]`.277Fase Opus dalam plan mode menggunakan jendela konteks yang sama dengan pengaturan model `opus`. Pada tingkat langganan di mana Opus [secara otomatis ditingkatkan ke konteks 1M](#extended-context), `opusplan` menerima peningkatan dalam plan mode juga. Untuk memaksa konteks 1M untuk kedua fase ketika Anda tidak berada di tingkat auto-upgrade, atur model ke `opusplan[1m]`.

276 278 


296 298 

297```json theme={null}299```json theme={null}

298{300{

299 "fallbackModel": ["claude-sonnet-4-6", "claude-haiku-4-5"]301 "fallbackModel": ["claude-sonnet-5", "claude-haiku-4-5"]

300}302}

301```303```

302 304 


368Tingkat usaha yang tersedia tergantung pada model. Model yang tidak tercantum di sini tidak mendukung usaha:370Tingkat usaha yang tersedia tergantung pada model. Model yang tidak tercantum di sini tidak mendukung usaha:

369 371 

370| Model | Levels |372| Model | Levels |

371| :---------------------- | :-------------------------------------- |373| :------------------------------- | :-------------------------------------- |

372| Fable 5 | `low`, `medium`, `high`, `xhigh`, `max` |374| Fable 5 | `low`, `medium`, `high`, `xhigh`, `max` |

373| Opus 4.8 dan Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |375| Sonnet 5, Opus 4.8, dan Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |

374| Opus 4.6 dan Sonnet 4.6 | `low`, `medium`, `high`, `max` |376| Opus 4.6 dan Sonnet 4.6 | `low`, `medium`, `high`, `max` |

375 377 

376Jika Anda menetapkan tingkat yang tidak didukung model aktif, Claude Code kembali ke tingkat tertinggi yang didukung pada atau di bawah tingkat yang Anda tetapkan. Misalnya, `xhigh` berjalan sebagai `high` pada Opus 4.6.378Jika Anda menetapkan tingkat yang tidak didukung model aktif, Claude Code kembali ke tingkat tertinggi yang didukung pada atau di bawah tingkat yang Anda tetapkan. Misalnya, `xhigh` berjalan sebagai `high` pada Opus 4.6.

377 379 

378Usaha default adalah `high` pada Fable 5, Opus 4.8, Opus 4.6, dan Sonnet 4.6, dan `xhigh` pada Opus 4.7.380Usaha default adalah `high` pada Fable 5, Sonnet 5, Opus 4.8, Opus 4.6, dan Sonnet 4.6, dan `xhigh` pada Opus 4.7.

379 381 

380Ketika Anda pertama kali menjalankan Fable 5, Opus 4.8, atau Opus 4.7, Claude Code menerapkan usaha default model itu bahkan jika Anda sebelumnya menetapkan tingkat yang berbeda untuk model lain: `high` pada Fable 5 dan Opus 4.8, dan `xhigh` pada Opus 4.7. Jalankan `/effort` lagi untuk memilih tingkat yang berbeda setelah beralih.382Ketika Anda pertama kali menjalankan Fable 5, Opus 4.8, atau Opus 4.7, Claude Code menerapkan usaha default model itu bahkan jika Anda sebelumnya menetapkan tingkat yang berbeda untuk model lain: `high` pada Fable 5 dan Opus 4.8, dan `xhigh` pada Opus 4.7. Jalankan `/effort` lagi untuk memilih tingkat yang berbeda setelah beralih.

381 383 


393| :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |395| :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

394| `low` | Cadangkan untuk tugas pendek, terbatas, sensitif latensi yang tidak sensitif intelijen |396| `low` | Cadangkan untuk tugas pendek, terbatas, sensitif latensi yang tidak sensitif intelijen |

395| `medium` | Mengurangi penggunaan token untuk pekerjaan sensitif biaya yang dapat menukar beberapa intelijen |397| `medium` | Mengurangi penggunaan token untuk pekerjaan sensitif biaya yang dapat menukar beberapa intelijen |

396| `high` | Menyeimbangkan penggunaan token dan intelijen. Default pada Fable 5, Opus 4.8, Opus 4.6, dan Sonnet 4.6 |398| `high` | Menyeimbangkan penggunaan token dan intelijen. Default pada Fable 5, Sonnet 5, Opus 4.8, Opus 4.6, dan Sonnet 4.6 |

397| `xhigh` | Penalaran lebih dalam dengan pengeluaran token lebih tinggi. Default pada Opus 4.7 |399| `xhigh` | Penalaran lebih dalam dengan pengeluaran token lebih tinggi. Default pada Opus 4.7 |

398| `max` | Dapat meningkatkan kinerja pada tugas yang menuntut tetapi mungkin menunjukkan hasil yang berkurang dan rentan terhadap overthinking. Uji sebelum mengadopsi secara luas |400| `max` | Dapat meningkatkan kinerja pada tugas yang menuntut tetapi mungkin menunjukkan hasil yang berkurang dan rentan terhadap overthinking. Uji sebelum mengadopsi secara luas |

399| `ultracode` | Pengaturan Claude Code yang merencanakan [alur kerja dinamis](/id/workflows) untuk setiap tugas substansial dengan penalaran `xhigh` per-pesan. Hanya sesi |401| `ultracode` | Pengaturan Claude Code yang merencanakan [alur kerja dinamis](/id/workflows) untuk setiap tugas substansial dengan penalaran `xhigh` per-pesan. Hanya sesi |


429 431 

430Penalaran adaptif membuat pemikiran opsional pada setiap langkah, jadi Claude dapat merespons lebih cepat ke prompt rutin dan menyisihkan pemikiran lebih dalam untuk langkah yang mendapat manfaat darinya. Jika Anda ingin Claude berpikir lebih atau kurang sering daripada tingkat saat ini menghasilkan, Anda dapat mengatakan demikian secara langsung dalam prompt Anda atau dalam `CLAUDE.md`; model merespons panduan itu dalam pengaturan usahanya.432Penalaran adaptif membuat pemikiran opsional pada setiap langkah, jadi Claude dapat merespons lebih cepat ke prompt rutin dan menyisihkan pemikiran lebih dalam untuk langkah yang mendapat manfaat darinya. Jika Anda ingin Claude berpikir lebih atau kurang sering daripada tingkat saat ini menghasilkan, Anda dapat mengatakan demikian secara langsung dalam prompt Anda atau dalam `CLAUDE.md`; model merespons panduan itu dalam pengaturan usahanya.

431 433 

432Opus 4.7 dan yang lebih baru selalu menggunakan penalaran adaptif, seperti halnya Fable 5. Mode anggaran pemikiran tetap dan `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` tidak berlaku untuk mereka.434Fable 5, Sonnet 5, dan Opus 4.7 dan yang lebih baru selalu menggunakan penalaran adaptif. Mode anggaran pemikiran tetap dan `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` tidak berlaku untuk mereka.

433 435 

434Di Opus 4.6 dan Sonnet 4.6, Anda dapat mengatur `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` untuk kembali ke anggaran pemikiran tetap sebelumnya yang dikendalikan oleh `MAX_THINKING_TOKENS`. Lihat [variabel lingkungan](/id/env-vars).436Di Opus 4.6 dan Sonnet 4.6, Anda dapat mengatur `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` untuk kembali ke anggaran pemikiran tetap sebelumnya yang dikendalikan oleh `MAX_THINKING_TOKENS`. Lihat [variabel lingkungan](/id/env-vars).

435 437 


453 Extended context455 Extended context

454</h3>456</h3>

455 457 

456Fable 5, Opus 4.6 dan yang lebih baru, dan Sonnet 4.6 mendukung [jendela konteks 1 juta token](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) untuk sesi panjang dengan basis kode besar.458Fable 5, Sonnet 5, Opus 4.6 dan yang lebih baru, dan Sonnet 4.6 mendukung [jendela konteks 1 juta token](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) untuk sesi panjang dengan basis kode besar.

457 459 

458Ketersediaan bervariasi menurut model dan paket. Di paket Max, Team, dan Enterprise, Opus secara otomatis ditingkatkan ke konteks 1M tanpa konfigurasi tambahan. Ini berlaku untuk kedua kursi Team Standard dan Team Premium. Pada Anthropic API, Fable 5, Opus 4.8, dan Opus 4.7 selalu berjalan dengan jendela 1M. Sonnet dengan konteks 1M bukan bagian dari peningkatan otomatis dan memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) di setiap paket langganan, termasuk Max.460Ketersediaan bervariasi menurut model dan paket. Pada Anthropic API, Fable 5, Sonnet 5, Opus 4.8, dan Opus 4.7 selalu berjalan dengan jendela 1M. Di paket Max, Team, dan Enterprise, Opus secara otomatis ditingkatkan ke konteks 1M tanpa konfigurasi tambahan. Ini berlaku untuk kedua kursi Team Standard dan Team Premium. Sonnet 4.6 dengan konteks 1M bukan bagian dari peningkatan otomatis dan memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) di setiap paket langganan, termasuk Max.

459 461 

460| Plan | Opus dengan konteks 1M | Sonnet dengan konteks 1M |462| Plan | Opus dengan konteks 1M | Sonnet 4.6 dengan konteks 1M |

461| ------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |463| ------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |

462| Max, Team, dan Enterprise | Disertakan dengan langganan | Memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |464| Max, Team, dan Enterprise | Disertakan dengan langganan | Memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

463| Pro | Memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) | Memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |465| Pro | Memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) | Memerlukan [penggunaan tambahan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |


480/model claude-opus-4-8[1m]482/model claude-opus-4-8[1m]

481```483```

482 484 

485<h4 id="sonnet-5-context-window">

486 Jendela konteks Sonnet 5

487</h4>

488 

489Pada Anthropic API, Sonnet 5 selalu berjalan dengan jendela konteks 1M. Tidak ada varian 200K, tidak ada akhiran `[1m]` untuk dipilih, dan tidak ada penggunaan tambahan yang diperlukan di paket apa pun. Sesi melakukan auto-compact sebelum jendela penuh, sekitar 967K token secara default; atur [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/id/env-vars) untuk memilih ambang batas yang berbeda.

490 

491Dua konfigurasi menganggarkan jendela pada 200K sebagai gantinya dan melakukan auto-compact pada batas itu:

492 

493* **LLM gateway**: ketika `ANTHROPIC_BASE_URL` mengarah ke [gateway](/id/llm-gateway), Claude Code tidak dapat memverifikasi dukungan 1M. Untuk menggunakan jendela penuh, pilih Sonnet 5 (1M context) di pemilih model, yang dipetakan ke `sonnet[1m]`.

494* **`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`**: memperlakukan sesi Sonnet 5 sebagai memiliki jendela 200K, untuk penyebaran yang perlu membatasi konteks.

495 

483<h2 id="checking-your-current-model">496<h2 id="checking-your-current-model">

484 Memeriksa model Anda saat ini497 Memeriksa model Anda saat ini

485</h2>498</h2>

486 499 

487Anda dapat melihat model mana yang sedang Anda gunakan dengan beberapa cara:500Anda dapat melihat model mana yang sedang Anda gunakan di dua tempat:

488 501 

4891. Dalam [status line](/id/statusline) (jika dikonfigurasi)502* Dalam [status line](/id/statusline), jika Anda memiliki satu yang dikonfigurasi

4902. Dalam `/status`, yang juga menampilkan informasi akun Anda.503* Dalam `/status`, yang juga menampilkan informasi akun Anda

491 504 

492<h2 id="add-a-custom-model-option">505<h2 id="add-a-custom-model-option">

493 Tambahkan opsi model kustom506 Tambahkan opsi model kustom


498Contoh ini menetapkan ketiga variabel untuk membuat deployment Opus yang dirutekan gateway dapat dipilih:511Contoh ini menetapkan ketiga variabel untuk membuat deployment Opus yang dirutekan gateway dapat dipilih:

499 512 

500```bash theme={null}513```bash theme={null}

501export ANTHROPIC_CUSTOM_MODEL_OPTION="my-gateway/claude-opus-4-7"514export ANTHROPIC_CUSTOM_MODEL_OPTION="my-gateway/claude-opus-4-8"

502export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="Opus via Gateway"515export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="Opus via Gateway"

503export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="Custom deployment routed through the internal LLM gateway"516export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="Custom deployment routed through the internal LLM gateway"

504```517```

505 518 

506Entri kustom muncul di bagian bawah pemilih `/model`. `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` dan `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` bersifat opsional. Jika dihilangkan, ID model digunakan sebagai nama dan deskripsi default ke `Custom model (<model-id>)`.519Entri kustom muncul di bagian bawah pemilih `/model`. `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` dan `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` bersifat opsional. Jika dihilangkan, ID model digunakan sebagai nama dan deskripsi default ke `Custom model (<model-id>)`.

507 520 

508Claude Code melewati validasi untuk ID model yang ditetapkan dalam `ANTHROPIC_CUSTOM_MODEL_OPTION`, sehingga Anda dapat menggunakan string apa pun yang diterima endpoint API Anda. Ketika [`availableModels`](#restrict-model-selection) diatur, sertakan ID model kustom dalam daftar izin juga: entri kustom disaring dari pemilih dan pemilihan `--model` darinya ditolak seperti model yang dikecualikan lainnya. ID kustom yang menyematkan nama keluarga, seperti `my-gateway/claude-opus-4-7`, dihitung sebagai entri spesifik untuk keluarga itu dan menonaktifkan wildcard-nya, jadi juga daftarkan versi yang ingin Anda pertahankan dapat dipilih. Lihat [perilaku penggabungan](#merge-behavior).521Claude Code melewati validasi untuk ID model yang ditetapkan dalam `ANTHROPIC_CUSTOM_MODEL_OPTION`, sehingga Anda dapat menggunakan string apa pun yang diterima endpoint API Anda. Ketika [`availableModels`](#restrict-model-selection) diatur, sertakan ID model kustom dalam daftar izin juga: entri kustom disaring dari pemilih dan pemilihan `--model` darinya ditolak seperti model yang dikecualikan lainnya. ID kustom yang menyematkan nama keluarga, seperti `my-gateway/claude-opus-4-8`, dihitung sebagai entri spesifik untuk keluarga itu dan menonaktifkan wildcard-nya, jadi juga daftarkan versi yang ingin Anda pertahankan dapat dipilih. Lihat [perilaku penggabungan](#merge-behavior).

509 522 

510<h2 id="environment-variables">523<h2 id="environment-variables">

511 Variabel lingkungan524 Variabel lingkungan

512</h2>525</h2>

513 526 

514Anda dapat menggunakan variabel lingkungan berikut, yang harus berupa **nama model** lengkap (atau setara untuk penyedia API Anda), untuk mengontrol nama model yang dipetakan alias.527Anda dapat menggunakan variabel lingkungan berikut untuk mengontrol nama model yang dipetakan alias. Setiap nilai harus berupa nama model lengkap, atau pengenal setara untuk penyedia API Anda.

515 528 

516| Variabel lingkungan | Deskripsi |529| Variabel lingkungan | Deskripsi |

517| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |530| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


555 568 

556* Claude Code menghapus akhiran sebelum mengirim ID model ke penyedia Anda.569* Claude Code menghapus akhiran sebelum mengirim ID model ke penyedia Anda.

557* Hanya tambahkan `[1m]` ketika model yang mendasar [mendukung konteks 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window).570* Hanya tambahkan `[1m]` ketika model yang mendasar [mendukung konteks 1M](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window).

558* Akhiran dibaca per variabel, bukan per model. Di Bedrock, Vertex, dan Foundry, ID model tanpa `[1m]` dalam satu variabel menggunakan konteks 200K bahkan jika variabel lain menetapkan model yang sama dengan akhiran.571* Akhiran dibaca per variabel, bukan per model. Di Bedrock, Vertex, dan Foundry, ID model tanpa `[1m]` dalam satu variabel menggunakan konteks 200K bahkan jika variabel lain menetapkan model yang sama dengan akhiran. Sonnet 5 selalu berjalan dengan jendela 1M pada penyedia ini dan tidak pernah memerlukan akhiran.

559 572 

560<Note>573<Note>

561 Allowlist `availableModels` yang dikirimkan melalui [MDM atau file pengaturan terkelola](/id/settings#settings-files) masih berlaku saat menggunakan penyedia pihak ketiga; [pengaturan yang dikelola server tidak dikirimkan di sana](/id/server-managed-settings#platform-availability). Penyaringan cocok pada alias model seperti `opus`, awalan versi seperti `claude-opus-4-8`, atau ID model lengkap bentuk penyedia. Awalan spesifik penyedia seperti `us.anthropic.` tidak dilepas, jadi untuk memungkinkan model tertentu, daftarkan ID bentuk penyedia yang sama yang ditampilkan pemilih, atau petakan melalui [`modelOverrides`](#override-model-ids-per-version). Akhiran `[1m]` apa pun dilepas dari entri allowlist dan model yang diminta sebelum pencocokan.574 Allowlist `availableModels` yang dikirimkan melalui [MDM atau file pengaturan terkelola](/id/settings#settings-files) masih berlaku saat menggunakan penyedia pihak ketiga; [pengaturan yang dikelola server tidak dikirimkan di sana](/id/server-managed-settings#platform-availability). Penyaringan cocok pada alias model seperti `opus`, awalan versi seperti `claude-opus-4-8`, atau ID model lengkap bentuk penyedia. Awalan spesifik penyedia seperti `us.anthropic.` tidak dilepas, jadi untuk memungkinkan model tertentu, daftarkan ID bentuk penyedia yang sama yang ditampilkan pemilih, atau petakan melalui [`modelOverrides`](#override-model-ids-per-version). Akhiran `[1m]` apa pun dilepas dari entri allowlist dan model yang diminta sebelum pencocokan.

Details

93| `OTEL_METRIC_EXPORT_INTERVAL` | Interval ekspor dalam milidetik (default: 60000) | `5000`, `60000` |93| `OTEL_METRIC_EXPORT_INTERVAL` | Interval ekspor dalam milidetik (default: 60000) | `5000`, `60000` |

94| `OTEL_LOGS_EXPORT_INTERVAL` | Interval ekspor log dalam milidetik (default: 5000) | `1000`, `10000` |94| `OTEL_LOGS_EXPORT_INTERVAL` | Interval ekspor log dalam milidetik (default: 5000) | `1000`, `10000` |

95| `OTEL_LOG_USER_PROMPTS` | Aktifkan pencatatan konten prompt pengguna (default: dinonaktifkan) | `1` untuk mengaktifkan |95| `OTEL_LOG_USER_PROMPTS` | Aktifkan pencatatan konten prompt pengguna (default: dinonaktifkan) | `1` untuk mengaktifkan |

96| `OTEL_LOG_ASSISTANT_RESPONSES` | Aktifkan pencatatan teks respons asisten pada acara `assistant_response` (default: dinonaktifkan). Saat tidak diatur, kembali ke nilai `OTEL_LOG_USER_PROMPTS`. {/* min-version: 2.1.193 */}Memerlukan Claude Code v2.1.193 atau lebih baru | `1` untuk mengaktifkan, `0` untuk tetap disunting |

96| `OTEL_LOG_TOOL_DETAILS` | Aktifkan pencatatan parameter alat dan argumen input dalam acara alat dan atribut span trace: perintah Bash, nama server MCP dan alat, nama skill, dan input alat. Juga mengaktifkan nama perintah custom, plugin, dan MCP pada acara `user_prompt` (default: dinonaktifkan) | `1` untuk mengaktifkan |97| `OTEL_LOG_TOOL_DETAILS` | Aktifkan pencatatan parameter alat dan argumen input dalam acara alat dan atribut span trace: perintah Bash, nama server MCP dan alat, nama skill, dan input alat. Juga mengaktifkan nama perintah custom, plugin, dan MCP pada acara `user_prompt` (default: dinonaktifkan) | `1` untuk mengaktifkan |

97| `OTEL_LOG_TOOL_CONTENT` | Aktifkan pencatatan konten input dan output alat dalam acara span (default: dinonaktifkan). Memerlukan [tracing](#traces-beta). Konten dipotong pada 60 KB | `1` untuk mengaktifkan |98| `OTEL_LOG_TOOL_CONTENT` | Aktifkan pencatatan konten input dan output alat dalam acara span (default: dinonaktifkan). Memerlukan [tracing](#traces-beta). Konten dipotong pada 60 KB | `1` untuk mengaktifkan |

98| `OTEL_LOG_RAW_API_BODIES` | Emit badan permintaan dan respons JSON API Anthropic Messages lengkap sebagai acara log `api_request_body` / `api_response_body` (default: dinonaktifkan). Badan mencakup seluruh riwayat percakapan. Mengaktifkan ini menyiratkan persetujuan untuk semua yang akan diungkapkan oleh `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS`, dan `OTEL_LOG_TOOL_CONTENT` | `1` untuk badan inline dipotong pada 60 KB, atau `file:<dir>` untuk badan tidak dipotong di disk dengan pointer `body_ref` dalam acara |99| `OTEL_LOG_RAW_API_BODIES` | Emit badan permintaan dan respons JSON API Anthropic Messages lengkap sebagai acara log `api_request_body` / `api_response_body` (default: dinonaktifkan). Badan mencakup seluruh riwayat percakapan. Mengaktifkan ini menyiratkan persetujuan untuk semua yang akan diungkapkan oleh `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_DETAILS`, dan `OTEL_LOG_TOOL_CONTENT` | `1` untuk badan inline dipotong pada 60 KB, atau `file:<dir>` untuk badan tidak dipotong di disk dengan pointer `body_ref` dalam acara |


341Setiap kunci khusus menjadi label pada setiap deret metrik, jadi nilai kardinalitas tinggi meningkatkan biaya penyimpanan di backend metrik Anda. Untuk mengirim atribut khusus dalam blok sumber daya saja dan menghilangkannya dari label titik data, atur `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false`. Lihat [Kontrol kardinalitas metrik](#metrics-cardinality-control).342Setiap kunci khusus menjadi label pada setiap deret metrik, jadi nilai kardinalitas tinggi meningkatkan biaya penyimpanan di backend metrik Anda. Untuk mengirim atribut khusus dalam blok sumber daya saja dan menghilangkannya dari label titik data, atur `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false`. Lihat [Kontrol kardinalitas metrik](#metrics-cardinality-control).

342 343 

343<Warning>344<Warning>

344 **Persyaratan pemformatan penting untuk OTEL\_RESOURCE\_ATTRIBUTES:**

345 

346 Variabel lingkungan `OTEL_RESOURCE_ATTRIBUTES` menggunakan pasangan kunci=nilai yang dipisahkan koma dengan persyaratan pemformatan yang ketat:345 Variabel lingkungan `OTEL_RESOURCE_ATTRIBUTES` menggunakan pasangan kunci=nilai yang dipisahkan koma dengan persyaratan pemformatan yang ketat:

347 346 

348 * **Tidak ada spasi yang diizinkan**: Nilai tidak dapat berisi spasi. Misalnya, `user.organizationName=My Company` tidak valid347 * **Tidak ada spasi yang diizinkan**: nilai tidak dapat berisi spasi. Misalnya, `user.organizationName=My Company` tidak valid

349 * **Format**: Harus berupa pasangan kunci=nilai yang dipisahkan koma: `key1=value1,key2=value2`348 * **Format**: harus berupa pasangan kunci=nilai yang dipisahkan koma: `key1=value1,key2=value2`

350 * **Karakter yang diizinkan**: Hanya karakter US-ASCII yang tidak termasuk karakter kontrol, spasi, tanda kutip ganda, koma, titik koma, dan garis miring terbalik349 * **Karakter yang diizinkan**: hanya karakter US-ASCII yang tidak termasuk karakter kontrol, spasi, tanda kutip ganda, koma, titik koma, dan garis miring terbalik

351 * **Karakter khusus**: Karakter di luar rentang yang diizinkan harus dikodekan persen350 * **Karakter khusus**: karakter di luar rentang yang diizinkan harus dikodekan persen

352 351 

353 **Contoh:**352 Untuk nilai yang memerlukan spasi, gunakan garis bawah atau camelCase sebagai gantinya. Contoh berikut menetapkan `org.name` dengan setiap bentuk:

354 353 

355 ```bash theme={null}354 ```bash theme={null}

356 # ❌ Tidak valid - berisi spasi

357 export OTEL_RESOURCE_ATTRIBUTES="org.name=John's Organization"

358 

359 # ✅ Valid - gunakan garis bawah atau camelCase sebagai gantinya

360 export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"355 export OTEL_RESOURCE_ATTRIBUTES="org.name=Johns_Organization"

361 export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"356 export OTEL_RESOURCE_ATTRIBUTES="org.name=JohnsOrganization"

357 ```

362 358 

363 # ✅ Valid - kodekan persen karakter khusus jika diperlukan359 Anda dapat mengkodekan persen karakter apa pun, bukan hanya yang dikecualikan. Contoh ini mengkodekan spasi dan apostrof:

360 

361 ```bash theme={null}

364 export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"362 export OTEL_RESOURCE_ATTRIBUTES="org.name=John%27s%20Organization"

365 ```363 ```

366 364 

367 Catatan: membungkus nilai dalam tanda kutip tidak menghindari spasi. Misalnya, `org.name="My Company"` menghasilkan nilai literal `"My Company"` (dengan tanda kutip disertakan), bukan `My Company`.365 Membungkus nilai dalam tanda kutip tidak menghindari spasi. Misalnya, `org.name="My Company"` menghasilkan nilai literal `"My Company"` dengan tanda kutip disertakan, bukan `My Company`.

368</Warning>366</Warning>

369 367 

370<h3 id="example-configurations">368<h3 id="example-configurations">


439| `terminal.type` | Jenis terminal, seperti `iTerm.app`, `vscode`, `cursor`, atau `tmux` | Selalu disertakan saat terdeteksi |437| `terminal.type` | Jenis terminal, seperti `iTerm.app`, `vscode`, `cursor`, atau `tmux` | Selalu disertakan saat terdeteksi |

440| Kunci dari `OTEL_RESOURCE_ATTRIBUTES` | Atribut khusus yang Anda atur, seperti `department` atau `team.id`. Lihat [Dukungan organisasi multi-tim](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (default: true) |438| Kunci dari `OTEL_RESOURCE_ATTRIBUTES` | Atribut khusus yang Anda atur, seperti `department` atau `team.id`. Lihat [Dukungan organisasi multi-tim](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (default: true) |

441 439 

440Saat Claude Code masuk ke [gateway aplikasi Claude](/id/claude-apps-gateway), CLI memberi stempel ekspor dengan identitas yang diautentikasi dari sesi gateway: `user.id` adalah subjek IdP daripada pengidentifikasi instalasi anonim, `user.email` adalah email yang masuk, dan `user.groups` membawa keanggotaan grup IdP sebagai string yang dipisahkan koma. Setiap ekspor juga membawa `identity.source: gateway-oidc`. Identitas gateway diterapkan terakhir, jadi kunci `user.*` dan `identity.*` yang diatur melalui `OTEL_RESOURCE_ATTRIBUTES` diabaikan pada sesi gateway.

441 

442Acara juga menyertakan atribut berikut. Ini tidak pernah dilampirkan pada metrik karena akan menyebabkan kardinalitas tak terbatas:442Acara juga menyertakan atribut berikut. Ini tidak pernah dilampirkan pada metrik karena akan menyebabkan kardinalitas tak terbatas:

443 443 

444* `prompt.id`: UUID yang menghubungkan prompt pengguna dengan semua acara berikutnya hingga prompt berikutnya. Lihat [Atribut korelasi acara](#event-correlation-attributes).444* `prompt.id`: UUID yang menghubungkan prompt pengguna dengan semua acara berikutnya hingga prompt berikutnya. Lihat [Atribut korelasi acara](#event-correlation-attributes).


488 488 

489* Semua [atribut standar](#standard-attributes)489* Semua [atribut standar](#standard-attributes)

490* `type`: (`"added"`, `"removed"`)490* `type`: (`"added"`, `"removed"`)

491* `model`: Pengidentifikasi model untuk model yang membuat perubahan (misalnya, "claude-sonnet-4-6"). Memerlukan Claude Code v2.1.172 atau lebih baru491* `model`: Pengidentifikasi model untuk model yang membuat perubahan (misalnya, "claude-sonnet-5")

492 492 

493<h4 id="pull-request-counter">493<h4 id="pull-request-counter">

494 Penghitung permintaan tarik494 Penghitung permintaan tarik


519**Atribut**:519**Atribut**:

520 520 

521* Semua [atribut standar](#standard-attributes)521* Semua [atribut standar](#standard-attributes)

522* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-4-6")522* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-5")

523* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`523* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`

524* `speed`: `"fast"` saat permintaan menggunakan mode cepat. Tidak ada sebaliknya524* `speed`: `"fast"` saat permintaan menggunakan mode cepat. Tidak ada sebaliknya

525* `effort`: [Tingkat effort](/id/model-config#adjust-effort-level) yang diterapkan pada permintaan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Tidak ada saat model tidak mendukung effort.525* `effort`: [Tingkat effort](/id/model-config#adjust-effort-level) yang diterapkan pada permintaan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Tidak ada saat model tidak mendukung effort.


540 540 

541* Semua [atribut standar](#standard-attributes)541* Semua [atribut standar](#standard-attributes)

542* `type`: (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)542* `type`: (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)

543* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-4-6")543* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-5")

544* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`544* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`

545* `speed`: `"fast"` saat permintaan menggunakan mode cepat. Tidak ada sebaliknya545* `speed`: `"fast"` saat permintaan menggunakan mode cepat. Tidak ada sebaliknya

546* `effort`: [Tingkat effort](/id/model-config#adjust-effort-level) yang diterapkan pada permintaan. Lihat [Penghitung biaya](#cost-counter) untuk detail.546* `effort`: [Tingkat effort](/id/model-config#adjust-effort-level) yang diterapkan pada permintaan. Lihat [Penghitung biaya](#cost-counter) untuk detail.


564 Penghitung waktu aktif564 Penghitung waktu aktif

565</h4>565</h4>

566 566 

567Melacak waktu aktual yang dihabiskan secara aktif menggunakan Claude Code, tidak termasuk waktu idle. Metrik ini ditingkatkan selama interaksi pengguna (mengetik, membaca respons) dan selama pemrosesan CLI (eksekusi alat, pembuatan respons AI).567Melacak waktu aktual yang dihabiskan secara aktif menggunakan Claude Code, tidak termasuk waktu idle. Metrik ini ditingkatkan selama interaksi pengguna, seperti mengetik dan membaca respons, dan selama pemrosesan CLI, seperti eksekusi alat dan pembuatan respons AI.

568 568 

569**Atribut**:569**Atribut**:

570 570 


608* `event.timestamp`: Stempel waktu ISO 8601608* `event.timestamp`: Stempel waktu ISO 8601

609* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi609* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi

610* `prompt_length`: Panjang prompt610* `prompt_length`: Panjang prompt

611* `prompt`: Konten prompt (diredaksi secara default, aktifkan dengan `OTEL_LOG_USER_PROMPTS=1`)611* `prompt`: Konten prompt. Diredaksi secara default. Atur `OTEL_LOG_USER_PROMPTS=1` untuk menyertakannya

612* `command_name`: Nama perintah saat prompt memanggil satu. Nama perintah built-in dan bundled seperti `compact` atau `debug` dipancarkan apa adanya; alias seperti `reset` dipancarkan sebagai yang diketik daripada nama kanonik. Nama perintah custom, plugin, dan MCP runtuh menjadi `custom` atau `mcp` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur612* `command_name`: Nama perintah saat prompt memanggil satu. Nama perintah built-in dan bundled seperti `compact` atau `debug` dipancarkan apa adanya; alias seperti `reset` dipancarkan sebagai yang diketik daripada nama kanonik. Nama perintah custom, plugin, dan MCP runtuh menjadi `custom` atau `mcp` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur

613* `command_source`: Asal perintah saat ada: `builtin`, `custom`, atau `mcp`. Perintah yang disediakan plugin melaporkan sebagai `custom`613* `command_source`: Asal perintah saat ada: `builtin`, `custom`, atau `mcp`. Perintah yang disediakan plugin melaporkan sebagai `custom`

614 614 

615<h4 id="assistant-response-event">

616 Acara respons asisten

617</h4>

618 

619Dicatat setelah setiap permintaan API yang mengembalikan konten teks dari model. Hanya blok teks respons yang disertakan; blok thinking dan blok tool-use dikecualikan. Memerlukan Claude Code v2.1.193 atau lebih baru.

620 

621**Nama Acara**: `claude_code.assistant_response`

622 

623**Atribut**:

624 

625* Semua [atribut standar](#standard-attributes)

626* `event.name`: `"assistant_response"`

627* `event.timestamp`: Stempel waktu ISO 8601

628* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi

629* `response_length`: Panjang teks respons dalam karakter

630* `response`: Teks respons, dipotong pada 60 KB. Diredaksi menjadi `<REDACTED>` secara default. Atur `OTEL_LOG_ASSISTANT_RESPONSES=1` untuk menyertakannya. Saat `OTEL_LOG_ASSISTANT_RESPONSES` tidak diatur, `OTEL_LOG_USER_PROMPTS` mengontrolnya sebagai gantinya, jadi atur `OTEL_LOG_ASSISTANT_RESPONSES=0` untuk menjaga respons diredaksi saat logging prompt aktif

631* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-4-6")

632* `request_id`: ID permintaan API Anthropic dari header `request-id` respons. Hadir hanya saat API mengembalikan satu

633* `query_source`: Subsistem yang mengeluarkan permintaan, seperti `"repl_main_thread"`, `"compact"`, atau nama subagent

634 

615<h4 id="tool-result-event">635<h4 id="tool-result-event">

616 Acara hasil alat636 Acara hasil alat

617</h4>637</h4>


632* `duration_ms`: Waktu eksekusi dalam milidetik652* `duration_ms`: Waktu eksekusi dalam milidetik

633* `error_type`: String kategori kesalahan saat alat gagal, seperti `"Error:ENOENT"` atau `"ShellError"`653* `error_type`: String kategori kesalahan saat alat gagal, seperti `"Error:ENOENT"` atau `"ShellError"`

634* `error` (saat `OTEL_LOG_TOOL_DETAILS=1`): Pesan kesalahan lengkap saat alat gagal654* `error` (saat `OTEL_LOG_TOOL_DETAILS=1`): Pesan kesalahan lengkap saat alat gagal

635* `decision_type`: Selalu `"accept"`, karena acara ini hanya dipancarkan setelah alat berjalan (panggilan yang ditolak tidak menghasilkan hasil alat)655* `decision_type`: Selalu `"accept"`, karena acara ini hanya dipancarkan setelah alat berjalan. Panggilan yang ditolak tidak menghasilkan hasil alat

636* `decision_source`: Sumber keputusan izin. Salah satu dari `"config"`, `"hook"`, `"user_permanent"`, atau `"user_temporary"`. Lihat [Acara keputusan alat](#tool-decision-event) untuk mengetahui apa arti setiap nilai. Sumber hanya-tolak `"user_abort"` dan `"user_reject"` tidak pernah muncul pada acara ini.656* `decision_source`: Sumber keputusan izin. Salah satu dari `"config"`, `"hook"`, `"user_permanent"`, atau `"user_temporary"`. Lihat [Acara keputusan alat](#tool-decision-event) untuk mengetahui apa arti setiap nilai. Sumber hanya-tolak `"user_abort"` dan `"user_reject"` tidak pernah muncul pada acara ini.

637* `tool_input_size_bytes`: Ukuran input alat yang diserialisasi JSON dalam byte657* `tool_input_size_bytes`: Ukuran input alat yang diserialisasi JSON dalam byte

638* `tool_result_size_bytes`: Ukuran hasil alat dalam byte658* `tool_result_size_bytes`: Ukuran hasil alat dalam byte


659* `event.name`: `"api_request"`679* `event.name`: `"api_request"`

660* `event.timestamp`: Stempel waktu ISO 8601680* `event.timestamp`: Stempel waktu ISO 8601

661* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi681* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi

662* `model`: Model yang digunakan (misalnya, "claude-sonnet-4-6")682* `model`: Model yang digunakan (misalnya, "claude-sonnet-5")

663* `cost_usd`: Biaya perkiraan dalam USD683* `cost_usd`: Biaya perkiraan dalam USD

664* `duration_ms`: Durasi permintaan dalam milidetik684* `duration_ms`: Durasi permintaan dalam milidetik

665* `input_tokens`: Jumlah token input685* `input_tokens`: Jumlah token input


686* `event.name`: `"api_error"`706* `event.name`: `"api_error"`

687* `event.timestamp`: Stempel waktu ISO 8601707* `event.timestamp`: Stempel waktu ISO 8601

688* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi708* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi

689* `model`: Model yang digunakan (misalnya, "claude-sonnet-4-6")709* `model`: Model yang digunakan (misalnya, "claude-sonnet-5")

690* `error`: Pesan kesalahan710* `error`: Pesan kesalahan

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

692* `duration_ms`: Durasi permintaan dalam milidetik712* `duration_ms`: Durasi permintaan dalam milidetik


1156* Konsumsi token yang tidak biasa1176* Konsumsi token yang tidak biasa

1157* Volume sesi tinggi dari pengguna tertentu1177* Volume sesi tinggi dari pengguna tertentu

1158 1178 

1159Semua metrik dapat disegmentasikan berdasarkan [atribut standar](#standard-attributes). Atribut `model` tersedia pada `claude_code.token.usage`, `claude_code.cost.usage`, dan {/* min-version: 2.1.172 */}dari v2.1.172, `claude_code.lines_of_code.count`. Rincian per-model dari commit hanya dapat didekati dengan menggabungkan terhadap metrik token atau biaya pada `session.id`, karena satu sesi dapat mencakup beberapa model. Filter sisi token atau biaya ke baris di mana `query_source` adalah `"main"` sehingga permintaan auxiliary dan subagent tidak mengatribusikan commit sesi ke model yang tidak membuatnya.1179Semua metrik dapat disegmentasikan berdasarkan [atribut standar](#standard-attributes). Atribut `model` tersedia pada `claude_code.token.usage`, `claude_code.cost.usage`, dan {/* min-version: 2.1.172 */}dari v2.1.172, `claude_code.lines_of_code.count`.

1180 

1181Rincian per-model dari commit hanya dapat didekati dengan menggabungkan terhadap metrik token atau biaya pada `session.id`, karena satu sesi dapat mencakup beberapa model. Filter sisi token atau biaya ke baris di mana `query_source` adalah `"main"` sehingga permintaan auxiliary dan subagent tidak mengatribusikan commit sesi ke model yang tidak membuatnya.

1160 1182 

1161<h3 id="detect-retry-exhaustion">1183<h3 id="detect-retry-exhaustion">

1162 Deteksi kelelahan retry1184 Deteksi kelelahan retry


1187 Audit acara keamanan1209 Audit acara keamanan

1188</h2>1210</h2>

1189 1211 

1190Acara OpenTelemetry adalah sumber data audit untuk aktivitas Claude Code. Setiap acara membawa atribut identitas yang menghubungkan panggilan alat, aktivitas MCP, dan keputusan izin kembali ke pengguna yang memicunya, dan pengekspor log OTLP dapat mengirimkan acara ini ke platform Security Information and Event Management (SIEM) apa pun dengan penerima OTLP atau ke OpenTelemetry Collector yang meneruskan ke SIEM Anda.1212Acara OpenTelemetry adalah sumber data audit untuk aktivitas Claude Code. Setiap acara membawa atribut identitas yang menghubungkan panggilan alat, aktivitas MCP, dan keputusan izin kembali ke pengguna yang memicunya. Pengekspor log OTLP dapat mengirimkan acara ini ke platform Security Information and Event Management (SIEM) apa pun dengan penerima OTLP, atau ke OpenTelemetry Collector yang meneruskan ke SIEM Anda.

1191 1213 

1192<h3 id="attribute-actions-to-users">1214<h3 id="attribute-actions-to-users">

1193 Atribut tindakan untuk pengguna1215 Atribut tindakan untuk pengguna

1194</h3>1216</h3>

1195 1217 

1196[Atribut standar](#standard-attributes) pada setiap acara mencakup identitas pengguna yang diautentikasi: `user.email`, `user.account_uuid`, `user.account_id`, dan `organization.id` saat masuk dengan akun Claude, ditambah `user.id` berskop instalasi dan `session.id` per-sesi.1218[Atribut standar](#standard-attributes) pada setiap acara mencakup identitas pengguna yang diautentikasi: `user.email`, `user.account_uuid`, `user.account_id`, dan `organization.id` saat masuk dengan akun Claude, ditambah `user.id` dan `session.id` per-sesi. `user.id` adalah pengidentifikasi berskop instalasi, kecuali pada sesi [Claude apps gateway](/id/claude-apps-gateway), di mana ini adalah subjek IdP dari token yang dikeluarkan gateway.

1197 1219 

1198Panggilan alat MCP, perintah Bash, dan pengeditan file oleh karena itu dikaitkan dengan pengembang yang memulai sesi. Claude Code tidak bertindak di bawah akun layanan terpisah; identitas yang dicatat pada setiap acara adalah akun Claude pengembang itu sendiri.1220Panggilan alat MCP, perintah Bash, dan pengeditan file oleh karena itu dikaitkan dengan pengembang yang memulai sesi. Claude Code tidak bertindak di bawah akun layanan terpisah; identitas yang dicatat pada setiap acara adalah akun Claude pengembang itu sendiri, atau identitas IdP pengembang pada sesi [Claude apps gateway](/id/claude-apps-gateway).

1199 1221 

1200Saat Claude Code diautentikasi dengan kunci API langsung, atau terhadap Bedrock, Vertex AI, atau Microsoft Foundry, tidak ada akun Claude dalam sesi dan hanya `user.id` dan `session.id` yang diisi. Dalam penerapan ini, lampirkan identitas pengguna sendiri dengan `OTEL_RESOURCE_ATTRIBUTES`, atur per pengguna melalui file [pengaturan terkelola](#administrator-configuration) atau pembungkus peluncuran:1222Saat Claude Code diautentikasi dengan kunci API langsung, atau terhadap Bedrock, Vertex AI, atau Microsoft Foundry, tidak ada akun Claude dalam sesi dan hanya `user.id` dan `session.id` yang diisi. Dalam penerapan ini, lampirkan identitas pengguna sendiri dengan `OTEL_RESOURCE_ATTRIBUTES`, atur per pengguna melalui file [pengaturan terkelola](#administrator-configuration) atau pembungkus peluncuran. Sesi Claude apps gateway tidak memerlukan apa pun dari ini: CLI mencap identitas IdP secara otomatis, seperti yang dijelaskan dalam [Atribut standar](#standard-attributes).

1201 1223 

1202```bash theme={null}1224```bash theme={null}

1203export OTEL_RESOURCE_ATTRIBUTES="enduser.id=jdoe@example.com,enduser.directory_id=S-1-5-21-..."1225export OTEL_RESOURCE_ATTRIBUTES="enduser.id=jdoe@example.com,enduser.directory_id=S-1-5-21-..."


1319* Konten file mentah dan cuplikan kode tidak disertakan dalam metrik atau acara. Trace spans adalah jalur data terpisah: lihat poin `OTEL_LOG_TOOL_CONTENT` di bawah1341* Konten file mentah dan cuplikan kode tidak disertakan dalam metrik atau acara. Trace spans adalah jalur data terpisah: lihat poin `OTEL_LOG_TOOL_CONTENT` di bawah

1320* Saat diautentikasi melalui OAuth, `user.email` disertakan dalam atribut telemetri. Jika ini menjadi perhatian bagi organisasi Anda, bekerja dengan backend telemetri Anda untuk memfilter atau menyunting bidang ini1342* Saat diautentikasi melalui OAuth, `user.email` disertakan dalam atribut telemetri. Jika ini menjadi perhatian bagi organisasi Anda, bekerja dengan backend telemetri Anda untuk memfilter atau menyunting bidang ini

1321* Konten prompt pengguna tidak dikumpulkan secara default. Hanya panjang prompt yang dicatat. Untuk menyertakan konten prompt, atur `OTEL_LOG_USER_PROMPTS=1`1343* Konten prompt pengguna tidak dikumpulkan secara default. Hanya panjang prompt yang dicatat. Untuk menyertakan konten prompt, atur `OTEL_LOG_USER_PROMPTS=1`

1344* Teks respons asisten tidak dikumpulkan secara default. Hanya panjang respons yang dicatat. Untuk menyertakan teks respons, atur `OTEL_LOG_ASSISTANT_RESPONSES=1`. Seperti semua data OpenTelemetry dari Claude Code, teks respons dikirim hanya ke titik akhir OTel yang Anda konfigurasikan, tidak pernah ke Anthropic. Ketika variabel ini tidak diatur, `OTEL_LOG_USER_PROMPTS` digunakan sebagai fallback, jadi atur `OTEL_LOG_ASSISTANT_RESPONSES=0` jika Anda menginginkan konten prompt tanpa konten respons

1322* Argumen input alat dan parameter tidak dicatat secara default. Untuk menyertakannya, atur `OTEL_LOG_TOOL_DETAILS=1`. Data ini dikirim hanya ke titik akhir OTEL yang Anda konfigurasikan, tidak pernah ke Anthropic. Argumen mungkin masih berisi nilai sensitif, jadi konfigurasikan backend telemetri Anda untuk memfilter atau menyunting atribut ini sesuai kebutuhan. Saat diaktifkan:1345* Argumen input alat dan parameter tidak dicatat secara default. Untuk menyertakannya, atur `OTEL_LOG_TOOL_DETAILS=1`. Data ini dikirim hanya ke titik akhir OTEL yang Anda konfigurasikan, tidak pernah ke Anthropic. Argumen mungkin masih berisi nilai sensitif, jadi konfigurasikan backend telemetri Anda untuk memfilter atau menyunting atribut ini sesuai kebutuhan. Saat diaktifkan:

1323 * Acara `tool_result` dan `tool_decision` menyertakan atribut `tool_parameters` dengan perintah Bash, nama server MCP dan alat, dan nama skill. Bidang seperti `full_command` dipancarkan tanpa pemotongan1346 * Acara `tool_result` dan `tool_decision` menyertakan atribut `tool_parameters` dengan perintah Bash, nama server MCP dan alat, dan nama skill. Bidang seperti `full_command` dipancarkan tanpa pemotongan

1324 * Acara `tool_result` juga menyertakan atribut `tool_input` dengan jalur file, URL, pola pencarian, dan argumen lainnya. Nilai individual di atas 512 karakter dipotong dan total dibatasi hingga \~4 K karakter1347 * Acara `tool_result` juga menyertakan atribut `tool_input` dengan jalur file, URL, pola pencarian, dan argumen lainnya. Nilai individual di atas 512 karakter dipotong dan total dibatasi hingga \~4 K karakter

Details

63 Penyimpanan sertifikat CA63 Penyimpanan sertifikat CA

64</h2>64</h2>

65 65 

66Secara default, Claude Code mempercayai baik sertifikat CA Mozilla yang disertakan maupun penyimpanan sertifikat sistem operasi Anda. Proxy inspeksi TLS enterprise seperti CrowdStrike Falcon dan Zscaler bekerja tanpa konfigurasi tambahan ketika sertifikat akar mereka diinstal di penyimpanan kepercayaan OS.66Secara default, Claude Code mempercayai baik sertifikat CA Mozilla yang disertakan maupun penyimpanan sertifikat sistem operasi Anda. Membaca penyimpanan OS memerlukan runtime dengan `tls.getCACertificates`: installer native selalu memilikinya, dan instalasi npm memerlukan Node 22.15 atau lebih baru. Pada versi Node yang lebih lama, hanya set yang disertakan dan `NODE_EXTRA_CA_CERTS` yang berlaku. Proxy inspeksi TLS enterprise seperti CrowdStrike Falcon dan Zscaler bekerja tanpa konfigurasi tambahan ketika sertifikat akar mereka diinstal di penyimpanan kepercayaan OS dan runtime dapat membacanya.

67 67 

68`CLAUDE_CODE_CERT_STORE` menerima daftar sumber yang dipisahkan koma. Nilai yang dikenali adalah `bundled` untuk set CA Mozilla yang dikirimkan dengan Claude Code dan `system` untuk penyimpanan kepercayaan sistem operasi. Default adalah `bundled,system`.68`CLAUDE_CODE_CERT_STORE` menerima daftar sumber yang dipisahkan koma. Nilai yang dikenali adalah `bundled` untuk set CA Mozilla yang dikirimkan dengan Claude Code dan `system` untuk penyimpanan kepercayaan sistem operasi. Default adalah `bundled,system`.

69 69 


131 131 

132Claude Code juga mengirimkan telemetri operasional opsional secara default, yang dapat Anda nonaktifkan dengan variabel lingkungan. Lihat [Layanan telemetri](/id/data-usage#telemetry-services) untuk cara menonaktifkannya sebelum menyelesaikan daftar izin Anda.132Claude Code juga mengirimkan telemetri operasional opsional secara default, yang dapat Anda nonaktifkan dengan variabel lingkungan. Lihat [Layanan telemetri](/id/data-usage#telemetry-services) untuk cara menonaktifkannya sebelum menyelesaikan daftar izin Anda.

133 133 

134Saat menggunakan [Amazon Bedrock](/id/amazon-bedrock), [Google Vertex AI](/id/google-vertex-ai), atau [Microsoft Foundry](/id/microsoft-foundry), lalu lintas model dan autentikasi menuju penyedia Anda alih-alih `api.anthropic.com`, `claude.ai`, atau `platform.claude.com`. Alat WebFetch masih memanggil `api.anthropic.com` untuk [pemeriksaan keamanan domainnya](/id/data-usage#webfetch-domain-safety-check) kecuali Anda menetapkan `skipWebFetchPreflight: true` di [pengaturan](/id/settings).134Saat menggunakan [Amazon Bedrock](/id/amazon-bedrock), [Google Vertex AI](/id/google-vertex-ai), [Microsoft Foundry](/id/microsoft-foundry), atau sesi [gateway aplikasi Claude](/id/claude-apps-gateway) yang sudah masuk, lalu lintas model dan autentikasi menuju penyedia atau gateway Anda alih-alih `api.anthropic.com`, `claude.ai`, atau `platform.claude.com`. Alat WebFetch masih memanggil `api.anthropic.com` untuk [pemeriksaan keamanan domainnya](/id/data-usage#webfetch-domain-safety-check) kecuali Anda menetapkan `skipWebFetchPreflight: true` di [pengaturan](/id/settings).

135 135 

136[Claude Code di web](/id/claude-code-on-the-web) dan [Code Review](/id/code-review) terhubung ke repositori Anda dari infrastruktur yang dikelola Anthropic. Jika organisasi GitHub Enterprise Cloud Anda membatasi akses berdasarkan alamat IP, aktifkan [pewarisan daftar izin IP untuk GitHub Apps yang diinstal](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#allowing-access-by-github-apps). Claude GitHub App mendaftarkan rentang IP-nya, jadi mengaktifkan pengaturan ini memungkinkan akses tanpa konfigurasi manual. Untuk [menambahkan rentang ke daftar izin Anda secara manual](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#adding-an-allowed-ip-address) sebagai gantinya, atau untuk mengonfigurasi firewall lainnya, lihat [Alamat IP API Anthropic](https://platform.claude.com/docs/en/api/ip-addresses).136[Claude Code di web](/id/claude-code-on-the-web) dan [Code Review](/id/code-review) terhubung ke repositori Anda dari infrastruktur yang dikelola Anthropic. Jika organisasi GitHub Enterprise Cloud Anda membatasi akses berdasarkan alamat IP, aktifkan [pewarisan daftar izin IP untuk GitHub Apps yang diinstal](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#allowing-access-by-github-apps). Claude GitHub App mendaftarkan rentang IP-nya, jadi mengaktifkan pengaturan ini memungkinkan akses tanpa konfigurasi manual. Untuk [menambahkan rentang ke daftar izin Anda secara manual](https://docs.github.com/en/enterprise-cloud@latest/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization#adding-an-allowed-ip-address) sebagai gantinya, atau untuk mengonfigurasi firewall lainnya, lihat [Alamat IP API Anthropic](https://platform.claude.com/docs/en/api/ip-addresses).

137 137 

Details

37 <Tab title="CLI">37 <Tab title="CLI">

38 **Selama sesi**: tekan `Shift+Tab` untuk siklus `default` → `acceptEdits` → `plan`. Mode saat ini muncul di bilah status. Tidak setiap mode ada dalam siklus default:38 **Selama sesi**: tekan `Shift+Tab` untuk siklus `default` → `acceptEdits` → `plan`. Mode saat ini muncul di bilah status. Tidak setiap mode ada dalam siklus default:

39 39 

40 * `auto`: muncul ketika akun Anda memenuhi [persyaratan mode auto](#eliminate-prompts-with-auto-mode); bersiklus ke auto menampilkan prompt opt-in sampai Anda menerimanya, atau pilih **Tidak, jangan tanya lagi** untuk menghapus auto dari siklus40 * `auto`: muncul ketika akun Anda memenuhi [persyaratan mode auto](#eliminate-prompts-with-auto-mode); bersiklus ke dalamnya menampilkan prompt konfirmasi tanpa

41 * `bypassPermissions`: muncul setelah Anda memulai dengan `--permission-mode bypassPermissions`, `--dangerously-skip-permissions`, atau `--allow-dangerously-skip-permissions`; varian `--allow-` menambahkan mode ke siklus tanpa mengaktifkannya41 * `bypassPermissions`: muncul setelah Anda memulai dengan `--permission-mode bypassPermissions`, `--dangerously-skip-permissions`, atau `--allow-dangerously-skip-permissions`; varian `--allow-` menambahkan mode ke siklus tanpa mengaktifkannya

42 * `dontAsk`: tidak pernah muncul dalam siklus; atur dengan `--permission-mode dontAsk`42 * `dontAsk`: tidak pernah muncul dalam siklus; atur dengan `--permission-mode dontAsk`

43 43 


188 188 

189* **Rencana**: Semua rencana.189* **Rencana**: Semua rencana.

190* **Pemilik**: di Team dan Enterprise, Pemilik harus mengaktifkannya di [pengaturan admin Claude Code](https://claude.ai/admin-settings/claude-code) sebelum pengguna dapat mengaktifkannya. Administrator juga dapat menguncinya dengan mengatur `permissions.disableAutoMode` ke `"disable"` di [pengaturan terkelola](/id/permissions#managed-settings).190* **Pemilik**: di Team dan Enterprise, Pemilik harus mengaktifkannya di [pengaturan admin Claude Code](https://claude.ai/admin-settings/claude-code) sebelum pengguna dapat mengaktifkannya. Administrator juga dapat menguncinya dengan mengatur `permissions.disableAutoMode` ke `"disable"` di [pengaturan terkelola](/id/permissions#managed-settings).

191* **Model**: di API Anthropic, Claude Opus 4.6 atau lebih baru, atau Sonnet 4.6. Di Amazon Bedrock, Google Cloud Vertex AI, dan Microsoft Foundry, hanya Claude Opus 4.7 dan Opus 4.8. Model yang lebih lama, termasuk Sonnet 4.5, Opus 4.5, Haiku, dan model claude-3, tidak didukung di penyedia mana pun.191* **Model**: di API Anthropic, Claude Opus 4.6 atau lebih baru, atau Sonnet 4.6 atau lebih baru. Di Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry, dan sesi [Claude apps gateway](/id/claude-apps-gateway) yang masuk, hanya Claude Sonnet 5, Opus 4.7, dan Opus 4.8. Model yang lebih lama, termasuk Sonnet 4.5, Opus 4.5, Haiku, dan model claude-3, tidak didukung di penyedia mana pun.

192* **Penyedia**: tersedia secara default di API Anthropic. Di Amazon Bedrock, Google Cloud Vertex AI, dan Microsoft Foundry, mode otomatis mati sampai Anda [mengatur `CLAUDE_CODE_ENABLE_AUTO_MODE`](#enable-auto-mode-on-bedrock-vertex-ai-or-foundry).192* **Penyedia**: tersedia secara default di API Anthropic. Di Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry, dan sesi Claude apps gateway yang masuk, mode otomatis mati sampai Anda [mengatur `CLAUDE_CODE_ENABLE_AUTO_MODE`](#enable-auto-mode-on-bedrock-vertex-ai-or-foundry).

193 193 

194Jika Claude Code melaporkan mode otomatis sebagai tidak tersedia, salah satu persyaratan ini tidak terpenuhi; ini bukan pemadaman sementara. Pesan terpisah yang menyebutkan model dan mengatakan mode otomatis "tidak dapat menentukan keamanan" tindakan adalah pemadaman pengklasifikasi sementara; lihat [referensi kesalahan](/id/errors#auto-mode-cannot-determine-the-safety-of-an-action).194Jika Claude Code melaporkan mode otomatis sebagai tidak tersedia, salah satu persyaratan ini tidak terpenuhi; ini bukan pemadaman sementara. Pesan terpisah yang menyebutkan model dan mengatakan mode otomatis "tidak dapat menentukan keamanan" tindakan adalah pemadaman pengklasifikasi sementara; lihat [referensi kesalahan](/id/errors#auto-mode-cannot-determine-the-safety-of-an-action).

195 195 


199 Aktifkan mode otomatis di Bedrock, Vertex AI, atau Foundry199 Aktifkan mode otomatis di Bedrock, Vertex AI, atau Foundry

200</h3>200</h3>

201 201 

202Di [Amazon Bedrock](/id/amazon-bedrock), [Google Cloud Vertex AI](/id/google-vertex-ai), dan [Microsoft Foundry](/id/microsoft-foundry), mode otomatis tidak muncul dalam siklus `Shift+Tab` sampai `CLAUDE_CODE_ENABLE_AUTO_MODE` diatur ke `1`. Variabel bekerja di Claude Code v2.1.158 dan lebih baru. Hanya Claude Opus 4.7 dan Opus 4.8 yang didukung di penyedia ini.202Di [Amazon Bedrock](/id/amazon-bedrock), [Google Cloud Vertex AI](/id/google-vertex-ai), [Microsoft Foundry](/id/microsoft-foundry), dan sesi [Claude apps gateway](/id/claude-apps-gateway) yang masuk, mode otomatis tidak muncul dalam siklus `Shift+Tab` sampai `CLAUDE_CODE_ENABLE_AUTO_MODE` diatur ke `1`. Variabel bekerja di Claude Code v2.1.158 dan lebih baru. Hanya Claude Sonnet 5, Opus 4.7, dan Opus 4.8 yang didukung di penyedia ini.

203 203 

204Untuk mengaktifkannya untuk satu pengembang, tambahkan variabel ke blok `env` di `~/.claude/settings.json`:204Untuk mengaktifkannya untuk satu pengembang, tambahkan variabel ke blok `env` di `~/.claude/settings.json`:

205 205 


217 217 

218Untuk mencegah pengembang mengaktifkan mode otomatis, atur `disableAutoMode` ke `"disable"` di pengaturan terkelola. Ini menimpa variabel enable.218Untuk mencegah pengembang mengaktifkan mode otomatis, atur `disableAutoMode` ke `"disable"` di pengaturan terkelola. Ini menimpa variabel enable.

219 219 

220Jika Anda terhubung melalui [gateway LLM](/id/llm-gateway) yang dikonfigurasi dengan `ANTHROPIC_BASE_URL`, mode otomatis mungkin sudah dapat dijangkau tanpa variabel enable, karena gateway merutekan permintaan melalui API Anthropic. Pengaturan `disableAutoMode` berlaku dengan cara yang sama dalam konfigurasi itu.220Jika Anda terhubung melalui [gateway LLM](/id/llm-gateway) yang dikonfigurasi dengan `ANTHROPIC_BASE_URL`, mode otomatis mungkin sudah dapat dijangkau tanpa variabel enable, karena gateway merutekan permintaan melalui API Anthropic. Ini tidak berlaku untuk sesi [Claude apps gateway](/id/claude-apps-gateway) yang masuk, yang merupakan kelas penyedia tersendiri dan memerlukan variabel enable. Pengaturan `disableAutoMode` berlaku dengan cara yang sama dalam konfigurasi apa pun.

221 221 

222<h3 id="what-the-classifier-blocks-by-default">222<h3 id="what-the-classifier-blocks-by-default">

223 Apa yang diblokir pengklasifikasi secara default223 Apa yang diblokir pengklasifikasi secara default


239* `git commit --amend` ketika commit di HEAD tidak dibuat dalam sesi ini239* `git commit --amend` ketika commit di HEAD tidak dibuat dalam sesi ini

240* `terraform destroy`, `pulumi destroy`, `cdk destroy`, atau `terragrunt destroy`, dan menerapkan rencana yang menghancurkan sumber daya240* `terraform destroy`, `pulumi destroy`, `cdk destroy`, atau `terragrunt destroy`, dan menerapkan rencana yang menghancurkan sumber daya

241 241 

242Claude Code v2.1.195 dan lebih baru memblokir lebih banyak kategori secara default. Beberapa bergantung pada entri [lingkungan](/id/auto-mode-config#define-trusted-infrastructure), seperti target jarak jauh sensitif dan cakupan IaC yang dilindungi, yang dapat Anda persempit ke nama konkret.

243 

244* Menulis ke manajer rahasia, atau mengubah catatan DNS atau sertifikat TLS

245* Menggabungkan permintaan tarik yang belum disetujui manusia, menyetujui permintaan tarik Claude sendiri, atau menonaktifkan pemeriksaan CI

246* Memposting komentar yang merupakan perintah untuk otomasi, seperti `atlantis apply` atau `/deploy` atau `/merge` bot

247* Mengalihkan, meningkatkan, atau menghapus bendera fitur produksi

248* Menerapkan perubahan infrastruktur ke cakupan IaC yang dilindungi, atau mengalirkan dan menghapus node cluster

249* Penulisan ke cluster komputasi bersama yang melampaui sumber daya yang Anda beri nama, seperti pemilih label atau `--all` yang menangkap pekerjaan pengguna lain

250* Membuat sumber daya Kubernetes yang berjalan di setiap node atau mencegat lalu lintas cluster, seperti DaemonSets dan webhook penerimaan

251* Shell interaktif atau port-forward ke target jarak jauh sensitif

252* Membuka terowongan atau shell terbalik yang membuat layanan lokal dapat dijangkau dari internet publik

253* Mencetak kredensial atau token langsung ke transkrip atau file

254* Mengakses lokasi PII atau data yang diatur, atau menyalin data keluar dari satu

255* Merutekan instalasi paket di sekitar registri paket internal Anda ke registri publik

256* Menjalankan perintah dengan bendera yang melucuti penjaga keselamatan, seperti `--insecure`

257* Tindakan browser [Claude di Chrome](/id/chrome) yang dapat mengirim konten halaman, cookie, atau kredensial off-origin

258 

242**Diizinkan secara default**:259**Diizinkan secara default**:

243 260 

244* Operasi file lokal di direktori kerja Anda261* Operasi file lokal di direktori kerja Anda


247* Permintaan HTTP read-only264* Permintaan HTTP read-only

248* Push ke cabang yang Anda mulai atau yang dibuat Claude265* Push ke cabang yang Anda mulai atau yang dibuat Claude

249 266 

267Claude Code v2.1.195 dan lebih baru juga memungkinkan ini secara default:

268 

269* Menghapus pekerjaan yang tepat yang dibuat Claude sebelumnya dalam sesi yang sama

270* Membaca, meninjau, atau menulis kode, konfigurasi, dan model ancaman terkait keamanan sebagai bagian dari tugas Anda

271* Pesan antara agen yang bekerja bersama dalam sesi multi-agen yang sama

272* Mengirim data ke domain terpercaya, bucket, dan layanan yang Anda daftarkan di [`environment`](/id/auto-mode-config#define-trusted-infrastructure). Ini mencakup aliran data saja, bukan operasi destruktif atau kredensial pada infrastruktur yang sama

273* Navigasi [Claude di Chrome](/id/chrome) ke domain internal terpercaya, localhost, atau URL yang Anda beri nama

274 

250Permintaan akses jaringan sandbox dirutekan melalui pengklasifikasi daripada diizinkan secara default. Jalankan `claude auto-mode defaults` untuk melihat daftar aturan lengkap. Jika tindakan rutin diblokir, administrator dapat menambahkan repo terpercaya, bucket, dan layanan melalui pengaturan `autoMode.environment`: lihat [Konfigurasi mode otomatis](/id/auto-mode-config).275Permintaan akses jaringan sandbox dirutekan melalui pengklasifikasi daripada diizinkan secara default. Jalankan `claude auto-mode defaults` untuk melihat daftar aturan lengkap. Jika tindakan rutin diblokir, administrator dapat menambahkan repo terpercaya, bucket, dan layanan melalui pengaturan `autoMode.environment`: lihat [Konfigurasi mode otomatis](/id/auto-mode-config).

251 276 

252<h3 id="boundaries-you-state-in-conversation">277<h3 id="boundaries-you-state-in-conversation">

permissions.md +26 −21

Details

24 Kelola izin24 Kelola izin

25</h2>25</h2>

26 26 

27Anda dapat melihat dan mengelola izin alat Claude Code dengan `/permissions`. UI ini mencantumkan semua aturan izin dan file settings.json tempat mereka bersumber.27Anda dapat melihat dan mengelola izin alat Claude Code dengan `/permissions`. UI ini mencantumkan semua aturan izin dan file `settings.json` tempat mereka bersumber.

28 28 

29* Aturan **Allow** memungkinkan Claude Code menggunakan alat yang ditentukan tanpa persetujuan manual.29* Aturan **Allow** memungkinkan Claude Code menggunakan alat yang ditentukan tanpa persetujuan manual.

30* Aturan **Ask** meminta konfirmasi setiap kali Claude Code mencoba menggunakan alat yang ditentukan.30* Aturan **Ask** meminta konfirmasi setiap kali Claude Code mencoba menggunakan alat yang ditentukan.

31* Aturan **Deny** mencegah Claude Code menggunakan alat yang ditentukan.31* Aturan **Deny** mencegah Claude Code menggunakan alat yang ditentukan.

32 32 

33Aturan dievaluasi secara berurutan: deny, kemudian ask, kemudian allow. Kecocokan pertama dalam urutan tersebut menentukan hasilnya, dan spesifisitas aturan tidak mengubah urutan. Aturan deny yang luas seperti `Bash(aws *)` memblokir setiap panggilan yang cocok, termasuk panggilan yang juga cocok dengan aturan allow yang lebih sempit seperti `Bash(aws s3 ls)`, jadi aturan deny tidak dapat membawa pengecualian daftar izin. Prioritas yang sama berlaku antara ask dan allow: aturan ask yang cocok meminta konfirmasi bahkan ketika aturan allow yang lebih spesifik juga cocok dengan panggilan yang sama.33Aturan dievaluasi secara berurutan: deny, kemudian ask, kemudian allow. Kecocokan pertama dalam urutan tersebut menentukan hasilnya, dan spesifisitas aturan tidak mengubah urutan.

34 

35Aturan deny yang luas seperti `Bash(aws *)` memblokir setiap panggilan yang cocok, termasuk panggilan yang juga cocok dengan aturan allow yang lebih sempit seperti `Bash(aws s3 ls)`, jadi aturan deny tidak dapat membawa pengecualian daftar izin. Prioritas yang sama berlaku antara ask dan allow: aturan ask yang cocok meminta konfirmasi bahkan ketika aturan allow yang lebih spesifik juga cocok dengan panggilan yang sama.

34 36 

35Aturan deny berperilaku berbeda tergantung pada apakah mereka menamai alat atau membatasi pola dalam satu alat. Nama alat biasa seperti `Bash` menghapus alat dari konteks Claude sepenuhnya, jadi Claude tidak pernah melihatnya. Aturan yang dibatasi seperti `Bash(rm *)` membiarkan alat tersedia dan memblokir panggilan yang cocok ketika Claude mencoba menggunakannya.37Aturan deny berperilaku berbeda tergantung pada apakah mereka menamai alat atau membatasi pola dalam satu alat. Nama alat biasa seperti `Bash` menghapus alat dari konteks Claude sepenuhnya, jadi Claude tidak pernah melihatnya. Aturan yang dibatasi seperti `Bash(rm *)` membiarkan alat tersedia dan memblokir panggilan yang cocok ketika Claude mencoba menggunakannya.

36 38 


47| Mode | Deskripsi |49| Mode | Deskripsi |

48| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |50| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

49| `default` | Perilaku standar: meminta izin pada penggunaan pertama setiap alat |51| `default` | Perilaku standar: meminta izin pada penggunaan pertama setiap alat |

50| `acceptEdits` | Secara otomatis menerima edit file dan perintah sistem file umum (`mkdir`, `touch`, `mv`, `cp`, dll.) untuk jalur di direktori kerja atau `additionalDirectories` |52| `acceptEdits` | Secara otomatis menerima edit file dan perintah sistem file umum seperti `mkdir`, `touch`, `mv`, dan `cp` untuk jalur di direktori kerja atau `additionalDirectories` |

51| `plan` | Plan Mode: Claude membaca file dan menjalankan perintah shell hanya-baca untuk menjelajahi tetapi tidak mengedit file sumber Anda |53| `plan` | Plan Mode: Claude membaca file dan menjalankan perintah shell hanya-baca untuk menjelajahi tetapi tidak mengedit file sumber Anda |

52| `auto` | Secara otomatis menyetujui panggilan alat dengan pemeriksaan keamanan latar belakang yang memverifikasi tindakan selaras dengan permintaan Anda. Saat ini pratinjau penelitian |54| `auto` | Secara otomatis menyetujui panggilan alat dengan pemeriksaan keamanan latar belakang yang memverifikasi tindakan selaras dengan permintaan Anda. Saat ini pratinjau penelitian |

53| `dontAsk` | Secara otomatis menolak alat kecuali pra-disetujui melalui `/permissions` atau aturan `permissions.allow` |55| `dontAsk` | Secara otomatis menolak alat kecuali pra-disetujui melalui `/permissions` atau aturan `permissions.allow` |

54| `bypassPermissions` | Melewati prompt izin, kecuali yang dipaksa oleh aturan `ask` eksplisit. Penghapusan direktori root dan home seperti `rm -rf /` juga masih meminta sebagai circuit breaker |56| `bypassPermissions` | Melewati prompt izin, kecuali yang dipaksa oleh aturan `ask` eksplisit. Penghapusan direktori root dan home seperti `rm -rf /` juga masih meminta sebagai circuit breaker |

55 57 

56<Warning>58<Warning>

57 Mode `bypassPermissions` melewati prompt izin, termasuk untuk penulisan ke `.git`, `.config/git`, `.claude`, `.vscode`, `.idea`, `.husky`, `.cargo`, `.devcontainer`, `.yarn`, dan `.mvn`. Aturan `ask` eksplisit masih memaksa prompt, dan penghapusan yang menargetkan akar sistem file atau direktori home, seperti `rm -rf /` dan `rm -rf ~`, masih meminta sebagai circuit breaker terhadap kesalahan model. Hanya gunakan mode ini di lingkungan terisolasi seperti kontainer atau VM tempat Claude Code tidak dapat menyebabkan kerusakan. Administrator dapat mencegah mode ini dengan mengatur `permissions.disableBypassPermissionsMode` ke `"disable"` dalam [pengaturan terkelola](#managed-settings).59 Mode `bypassPermissions` melewati prompt izin, termasuk untuk penulisan ke `.git`, `.config/git`, `.claude`, `.vscode`, `.idea`, `.husky`, `.cargo`, `.devcontainer`, `.yarn`, dan `.mvn`. Aturan `ask` eksplisit masih memaksa prompt, dan penghapusan yang menargetkan akar sistem file atau direktori home, seperti `rm -rf /` dan `rm -rf ~`, masih meminta sebagai circuit breaker terhadap kesalahan model. Hanya gunakan mode ini di lingkungan terisolasi seperti kontainer atau VM tempat Claude Code tidak dapat menyebabkan kerusakan.

58</Warning>60</Warning>

59 61 

60Untuk mencegah mode `bypassPermissions` atau `auto` digunakan, atur `permissions.disableBypassPermissionsMode` atau `permissions.disableAutoMode` ke `"disable"` dalam [file pengaturan](/id/settings#settings-files) apa pun. Ini paling berguna dalam [pengaturan terkelola](#managed-settings) di mana mereka tidak dapat ditimpa.62Untuk mencegah mode `bypassPermissions` atau `auto` digunakan, atur `permissions.disableBypassPermissionsMode` atau `permissions.disableAutoMode` ke `"disable"` dalam [file pengaturan](/id/settings#settings-files) apa pun. Ini paling berguna dalam [pengaturan terkelola](#managed-settings) di mana mereka tidak dapat ditimpa.


95 Cocokkan berdasarkan parameter input97 Cocokkan berdasarkan parameter input

96</h3>98</h3>

97 99 

98Aturan penolakan dan tanya dapat mencocokkan parameter input tingkat atas pada alat apa pun dengan `Tool(param:value)`. Aturan cocok ketika Claude memanggil alat dengan parameter tersebut diatur ke nilai yang tepat. Sintaks ini untuk aturan penolakan dan tanya; aturan izin untuk satu nilai parameter tidak akan menetapkan bahwa panggilan aman secara keseluruhan, jadi aturan izin terus menggunakan sintaks specifier masing-masing alat. Ini berfungsi untuk parameter skalar apa pun yang diterima alat:100Aturan penolakan dan tanya dapat mencocokkan parameter input tingkat atas pada alat apa pun dengan `Tool(param:value)`. Aturan cocok ketika Claude memanggil alat dengan parameter tersebut diatur ke nilai yang tepat. Aturan izin untuk satu nilai parameter tidak akan menetapkan bahwa panggilan aman secara keseluruhan, jadi aturan izin terus menggunakan sintaks specifier masing-masing alat. Ini berfungsi untuk parameter skalar apa pun yang diterima alat:

99 101 

100| Aturan | Cocok |102| Aturan | Cocok |

101| :----------------------------- | :---------------------------------------------- |103| :----------------------------- | :---------------------------------------------- |


220 222 

221 * Opsi sebelum URL: `curl -X GET http://github.com/...`223 * Opsi sebelum URL: `curl -X GET http://github.com/...`

222 * Protokol berbeda: `curl https://github.com/...`224 * Protokol berbeda: `curl https://github.com/...`

223 * Pengalihan: `curl -L http://bit.ly/xyz` (pengalihan ke github)225 * Pengalihan: `curl -L http://bit.ly/xyz`, yang mengalihkan ke GitHub

224 * Variabel: `URL=http://github.com && curl $URL`226 * Variabel: `URL=http://github.com && curl $URL`

225 * Spasi ekstra: `curl http://github.com`227 * Spasi ekstra: `curl http://github.com`

226 228 


270Aturan Read dan Edit keduanya mengikuti spesifikasi [gitignore](https://git-scm.com/docs/gitignore) dengan empat jenis pola yang berbeda:272Aturan Read dan Edit keduanya mengikuti spesifikasi [gitignore](https://git-scm.com/docs/gitignore) dengan empat jenis pola yang berbeda:

271 273 

272| Pola | Arti | Contoh | Cocok |274| Pola | Arti | Contoh | Cocok |

273| -------------------- | --------------------------------------------- | -------------------------------- | ------------------------------ |275| -------------------- | ----------------------------------------- | -------------------------------- | ------------------------------ |

274| `//path` | Jalur **absolut** dari akar sistem file | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |276| `//path` | Jalur absolut dari akar sistem file | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |

275| `~/path` | Jalur dari direktori **home** | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |277| `~/path` | Jalur dari direktori home | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |

276| `/path` | Jalur **relatif terhadap akar proyek** | `Edit(/src/**/*.ts)` | `<project root>/src/**/*.ts` |278| `/path` | Jalur relatif terhadap akar proyek | `Edit(/src/**/*.ts)` | `<project root>/src/**/*.ts` |

277| `path` atau `./path` | Jalur **relatif terhadap direktori saat ini** | `Read(*.env)` | `<cwd>/*.env` |279| `path` atau `./path` | Jalur relatif terhadap direktori saat ini | `Read(*.env)` | `<cwd>/*.env` |

278 280 

279<Warning>281<Warning>

280 Pola seperti `/Users/alice/file` BUKAN jalur absolut. Ini relatif terhadap akar proyek. Gunakan `//Users/alice/file` untuk jalur absolut.282 Pola seperti `/Users/alice/file` bukan jalur absolut. Ini relatif terhadap akar proyek. Gunakan `//Users/alice/file` untuk jalur absolut.

281</Warning>283</Warning>

282 284 

283Di Windows, jalur dinormalisasi ke bentuk POSIX sebelum pencocokan. `C:\Users\alice` menjadi `/c/Users/alice`, jadi gunakan `//c/**/.env` untuk mencocokkan file `.env` di mana pun di drive itu. Untuk mencocokkan di semua drive, gunakan `//**/.env`.285Di Windows, jalur dinormalisasi ke bentuk POSIX sebelum pencocokan. `C:\Users\alice` menjadi `/c/Users/alice`, jadi gunakan `//c/**/.env` untuk mencocokkan file `.env` di mana pun di drive itu. Untuk mencocokkan di semua drive, gunakan `//**/.env`.

284 286 

285Contoh:287Contoh:

286 288 

287* `Edit(/docs/**)`: edit di `<project>/docs/` (BUKAN `/docs/` dan BUKAN `<project>/.claude/docs/`)289* `Edit(/docs/**)`: edit di `<project>/docs/`, bukan `/docs/` atau `<project>/.claude/docs/`

288* `Read(~/.zshrc)`: membaca `.zshrc` direktori home Anda290* `Read(~/.zshrc)`: membaca `.zshrc` direktori home Anda

289* `Edit(//tmp/scratch.txt)`: edit jalur absolut `/tmp/scratch.txt`291* `Edit(//tmp/scratch.txt)`: edit jalur absolut `/tmp/scratch.txt`

290* `Read(src/**)`: membaca dari `<current-directory>/src/`292* `Read(src/**)`: membaca dari `<current-directory>/src/`


323 MCP325 MCP

324</h3>326</h3>

325 327 

326* `mcp__puppeteer` mencocokkan alat apa pun yang disediakan oleh server `puppeteer` (nama dikonfigurasi di Claude Code)328Aturan MCP menggunakan nama server seperti yang dikonfigurasi di Claude Code, secara opsional diikuti oleh nama alat dari server itu.

327* `mcp__puppeteer__*` sintaks wildcard yang juga mencocokkan semua alat dari server `puppeteer`329 

330* `mcp__puppeteer` mencocokkan alat apa pun yang disediakan oleh server `puppeteer`

331* `mcp__puppeteer__*` menggunakan sintaks wildcard dan juga mencocokkan semua alat dari server `puppeteer`

328* `mcp__puppeteer__puppeteer_navigate` mencocokkan alat `puppeteer_navigate` yang disediakan oleh server `puppeteer`332* `mcp__puppeteer__puppeteer_navigate` mencocokkan alat `puppeteer_navigate` yang disediakan oleh server `puppeteer`

329 333 

330<h3 id="agent-subagents">334<h3 id="agent-subagents">


418 422 

419Izin dan [sandboxing](/id/sandboxing) adalah lapisan keamanan pelengkap:423Izin dan [sandboxing](/id/sandboxing) adalah lapisan keamanan pelengkap:

420 424 

421* **Izin** mengontrol alat mana yang dapat digunakan Claude Code dan file atau domain mana yang dapat diaksesnya. Mereka berlaku untuk semua alat (Bash, Read, Edit, WebFetch, MCP, dan lainnya).425* **Izin** mengontrol alat mana yang dapat digunakan Claude Code dan file atau domain mana yang dapat diaksesnya. Mereka berlaku untuk semua alat, termasuk Bash, Read, Edit, WebFetch, dan MCP.

422* **Sandboxing** menyediakan penegakan tingkat OS yang membatasi akses sistem file dan jaringan alat Bash. Ini hanya berlaku untuk perintah Bash dan proses anak mereka.426* **Sandboxing** menyediakan penegakan tingkat OS yang membatasi akses sistem file dan jaringan alat Bash. Ini hanya berlaku untuk perintah Bash dan proses anak mereka.

423 427 

424Gunakan keduanya untuk pertahanan berlapis:428Gunakan keduanya untuk pertahanan berlapis:


434 Pengaturan terkelola438 Pengaturan terkelola

435</h2>439</h2>

436 440 

437Untuk organisasi yang memerlukan kontrol terpusat atas konfigurasi Claude Code, administrator dapat menerapkan pengaturan terkelola yang tidak dapat ditimpa oleh pengaturan pengguna atau proyek. Pengaturan kebijakan ini mengikuti format yang sama dengan file pengaturan reguler dan dapat dikirimkan melalui kebijakan MDM/tingkat OS, file pengaturan terkelola, atau [pengaturan yang dikelola server](/id/server-managed-settings). Lihat [file pengaturan](/id/settings#settings-files) untuk mekanisme pengiriman dan lokasi file.441Untuk organisasi yang memerlukan kontrol terpusat atas konfigurasi Claude Code, administrator dapat menerapkan pengaturan terkelola yang tidak dapat ditimpa oleh pengaturan pengguna atau proyek. Pengaturan kebijakan ini mengikuti format yang sama dengan file pengaturan reguler dan dapat dikirimkan melalui kebijakan MDM/tingkat OS, file pengaturan terkelola, [pengaturan yang dikelola server](/id/server-managed-settings), atau [gateway aplikasi Claude](/id/claude-apps-gateway) yang di-host sendiri. Lihat [file pengaturan](/id/settings#settings-files) untuk mekanisme pengiriman dan lokasi file.

438 442 

439<h3 id="managed-only-settings">443<h3 id="managed-only-settings">

440 Pengaturan khusus terkelola444 Pengaturan khusus terkelola


443Pengaturan berikut hanya dibaca dari pengaturan terkelola. Menempatkan mereka dalam file pengaturan pengguna atau proyek tidak memiliki efek.447Pengaturan berikut hanya dibaca dari pengaturan terkelola. Menempatkan mereka dalam file pengaturan pengguna atau proyek tidak memiliki efek.

444 448 

445| Pengaturan | Deskripsi |449| Pengaturan | Deskripsi |

446| :--------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |450| :--------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

447| `allowAllClaudeAiMcps` | Ketika `true`, konektor claude.ai dimuat bersama `managed-mcp.json` yang diterapkan alih-alih ditekan oleh kontrol eksklusifnya. Lihat [Managed MCP configuration](/id/managed-mcp) |451| `allowAllClaudeAiMcps` | Ketika `true`, konektor claude.ai dimuat bersama `managed-mcp.json` yang diterapkan alih-alih ditekan oleh kontrol eksklusifnya. Lihat [Managed MCP configuration](/id/managed-mcp) |

448| `allowedChannelPlugins` | Daftar izin plugin saluran yang dapat mendorong pesan. Menggantikan daftar izin Anthropic default saat diatur. Memerlukan `channelsEnabled: true`. Lihat [Restrict which channel plugins can run](/id/channels#restrict-which-channel-plugins-can-run) |452| `allowedChannelPlugins` | Daftar izin plugin saluran yang dapat mendorong pesan. Menggantikan daftar izin Anthropic default saat diatur. Memerlukan `channelsEnabled: true`. Lihat [Restrict which channel plugins can run](/id/channels#restrict-which-channel-plugins-can-run) |

449| `allowManagedHooksOnly` | Ketika `true`, hanya hook terkelola, hook SDK, dan hook dari plugin yang dipaksa-aktifkan dalam pengaturan terkelola `enabledPlugins` yang dimuat. Hook pengguna, proyek, dan semua plugin lainnya diblokir |453| `allowManagedHooksOnly` | Ketika `true`, hanya hook terkelola, hook SDK, dan hook dari plugin yang dipaksa-aktifkan dalam pengaturan terkelola `enabledPlugins` yang dimuat. Hook pengguna, proyek, dan semua plugin lainnya diblokir |


451| `allowManagedPermissionRulesOnly` | Ketika `true`, mencegah pengaturan pengguna dan proyek dari mendefinisikan aturan izin `allow`, `ask`, atau `deny`. Hanya aturan dalam pengaturan terkelola yang berlaku. Tidak mempengaruhi daftar izin server MCP; untuk itu, atur `allowManagedMcpServersOnly` |455| `allowManagedPermissionRulesOnly` | Ketika `true`, mencegah pengaturan pengguna dan proyek dari mendefinisikan aturan izin `allow`, `ask`, atau `deny`. Hanya aturan dalam pengaturan terkelola yang berlaku. Tidak mempengaruhi daftar izin server MCP; untuk itu, atur `allowManagedMcpServersOnly` |

452| `blockedMarketplaces` | Daftar blokir sumber marketplace. Sumber yang diblokir diperiksa sebelum mengunduh, jadi mereka tidak pernah menyentuh sistem file. Lihat [managed marketplace restrictions](/id/plugin-marketplaces#managed-marketplace-restrictions) |456| `blockedMarketplaces` | Daftar blokir sumber marketplace. Sumber yang diblokir diperiksa sebelum mengunduh, jadi mereka tidak pernah menyentuh sistem file. Lihat [managed marketplace restrictions](/id/plugin-marketplaces#managed-marketplace-restrictions) |

453| `channelsEnabled` | Izinkan [channels](/id/channels) untuk organisasi. Lihat [enterprise controls](/id/channels#enterprise-controls) untuk default pada setiap paket |457| `channelsEnabled` | Izinkan [channels](/id/channels) untuk organisasi. Lihat [enterprise controls](/id/channels#enterprise-controls) untuk default pada setiap paket |

458| `disableSideloadFlags` | {/* min-version: 2.1.193 */}Tolak flag CLI `--plugin-dir`, `--plugin-url`, `--agents`, dan `--mcp-config` saat startup. Tanpa ini, pengguna dapat melewati `strictKnownMarketplaces` untuk satu kali berjalan dengan melewatkan flag ini. Lihat [`disableSideloadFlags`](/id/settings#available-settings). Memerlukan Claude Code v2.1.193 atau lebih baru |

454| `forceRemoteSettingsRefresh` | Ketika `true`, memblokir startup CLI hingga pengaturan terkelola jarak jauh segar diambil dan keluar jika pengambilan gagal. Lihat [fail-closed enforcement](/id/server-managed-settings#enforce-fail-closed-startup) |459| `forceRemoteSettingsRefresh` | Ketika `true`, memblokir startup CLI hingga pengaturan terkelola jarak jauh segar diambil dan keluar jika pengambilan gagal. Lihat [fail-closed enforcement](/id/server-managed-settings#enforce-fail-closed-startup) |

455| `pluginTrustMessage` | Pesan kustom ditambahkan ke peringatan kepercayaan plugin yang ditampilkan sebelum instalasi |460| `pluginTrustMessage` | Pesan kustom ditambahkan ke peringatan kepercayaan plugin yang ditampilkan sebelum instalasi |

456| `sandbox.filesystem.allowManagedReadPathsOnly` | Ketika `true`, hanya jalur `filesystem.allowRead` dari pengaturan terkelola yang dihormati. `denyRead` masih digabung dari semua sumber |461| `sandbox.filesystem.allowManagedReadPathsOnly` | Ketika `true`, hanya jalur `filesystem.allowRead` dari pengaturan terkelola yang dihormati. `denyRead` masih digabung dari semua sumber |


462`disableBypassPermissionsMode` biasanya ditempatkan dalam pengaturan terkelola untuk memberlakukan kebijakan organisasi, tetapi berfungsi dari cakupan apa pun. Pengguna dapat mengaturnya dalam pengaturan mereka sendiri untuk mengunci diri mereka sendiri dari mode bypass.467`disableBypassPermissionsMode` biasanya ditempatkan dalam pengaturan terkelola untuk memberlakukan kebijakan organisasi, tetapi berfungsi dari cakupan apa pun. Pengguna dapat mengaturnya dalam pengaturan mereka sendiri untuk mengunci diri mereka sendiri dari mode bypass.

463 468 

464<Note>469<Note>

465 Pada paket Team dan Enterprise, Owner mengaktifkan atau menonaktifkan [Remote Control](/id/remote-control) dan [sesi web](/id/claude-code-on-the-web) di seluruh organisasi dalam [pengaturan admin Claude Code](https://claude.ai/admin-settings/claude-code). Remote Control dapat secara tambahan dinonaktifkan per perangkat dengan pengaturan terkelola [`disableRemoteControl`](/id/settings#available-settings). Sesi web tidak memiliki kunci pengaturan terkelola per perangkat.470 Pada paket Team dan Enterprise, Owner mengaktifkan atau menonaktifkan [Remote Control](/id/remote-control) dan [sesi web](/id/claude-code-on-the-web) di seluruh organisasi dalam [pengaturan admin Claude Code](https://claude.ai/admin-settings/claude-code). Remote Control dapat secara tambahan dinonaktifkan per perangkat dengan pengaturan [`disableRemoteControl`](/id/settings#available-settings). Sesi web tidak memiliki kunci pengaturan terkelola per perangkat.

466</Note>471</Note>

467 472 

468<h2 id="settings-precedence">473<h2 id="settings-precedence">


479 484 

480Jika alat ditolak di tingkat mana pun, tidak ada tingkat lain yang dapat mengizinkannya. Misalnya, penolakan pengaturan terkelola tidak dapat ditimpa oleh `--allowedTools`, dan `--disallowedTools` dapat menambahkan pembatasan di luar apa yang ditentukan pengaturan terkelola.485Jika alat ditolak di tingkat mana pun, tidak ada tingkat lain yang dapat mengizinkannya. Misalnya, penolakan pengaturan terkelola tidak dapat ditimpa oleh `--allowedTools`, dan `--disallowedTools` dapat menambahkan pembatasan di luar apa yang ditentukan pengaturan terkelola.

481 486 

482Host penyematan dapat menyediakan kebijakan terkelola tambahan melalui opsi SDK `managedSettings` ketika [`parentSettingsBehavior`](/id/settings#settings-precedence) diatur ke `"merge"`; nilai penyemat dapat memperketat kebijakan tetapi tidak dapat melonggarkannya.487Hal yang sama berlaku di seluruh cakupan pengaturan: jika pengaturan pengguna mengizinkan izin dan pengaturan proyek menolaknya, aturan penolakan memblokir izin tersebut. Kebalikannya juga benar: penolakan tingkat pengguna memblokir izin tingkat proyek, karena aturan penolakan dari cakupan apa pun dievaluasi sebelum aturan izin.

483 488 

484Sebagai contoh, jika pengaturan pengguna mengizinkan izin dan pengaturan proyek menolaknya, aturan penolakan memblokir izin tersebut. Kebalikannya juga benar: penolakan tingkat pengguna memblokir izin tingkat proyek, karena aturan penolakan dari cakupan apa pun dievaluasi sebelum aturan izin.489Host penyematan dapat menyediakan kebijakan terkelola tambahan melalui opsi SDK `managedSettings` ketika [`parentSettingsBehavior`](/id/settings#settings-precedence) diatur ke `"merge"`; nilai penyemat dapat memperketat kebijakan tetapi tidak dapat melonggarkannya.

485 490 

486<h2 id="example-configurations">491<h2 id="example-configurations">

487 Contoh konfigurasi492 Contoh konfigurasi

Details

102 102 

103Ketika Anda menginstal plugin yang mendeklarasikan `{ "name": "secrets-vault", "version": "~2.1.0" }`, Claude Code mencantumkan tag marketplace, memfilter ke yang dimulai dengan `secrets-vault--v`, dan mengambil versi tertinggi yang memenuhi `~2.1.0`. Jika tidak ada tag yang cocok, plugin dependen dinonaktifkan dengan kesalahan yang mencantumkan versi yang tersedia.103Ketika Anda menginstal plugin yang mendeklarasikan `{ "name": "secrets-vault", "version": "~2.1.0" }`, Claude Code mencantumkan tag marketplace, memfilter ke yang dimulai dengan `secrets-vault--v`, dan mengambil versi tertinggi yang memenuhi `~2.1.0`. Jika tidak ada tag yang cocok, plugin dependen dinonaktifkan dengan kesalahan yang mencantumkan versi yang tersedia.

104 104 

105Marketplace yang ditambahkan sebagai jalur folder lokal menyelesaikan tag dengan cara yang sama ketika folder adalah repositori git. Ini memerlukan Claude Code v2.1.196 atau lebih baru. Dalam dua kasus Claude Code menginstal dependensi dari konten folder saat ini:

106 

107* Versi sebelumnya tidak membaca tag dari marketplace folder lokal, jadi dependensi yang dibatasi hanya dimuat jika salinan tersebut memenuhi rentang.

108* Folder lokal yang bukan repositori git tidak memiliki tag, terlepas dari versi.

109 

105Semver tag yang diselesaikan dicatat secara terpisah dari `version` milik `plugin.json`, sehingga pemeriksaan batasan menggunakan tag yang benar-benar diambil bahkan jika `plugin.json` pada commit tersebut memiliki nilai yang ketinggalan zaman. Nama direktori cache untuk instalasi yang diselesaikan tag mencakup akhiran SHA commit 12 karakter, sehingga jika pengelola memaksa memindahkan tag ke commit yang berbeda, instalasi berikutnya mendapatkan direktori cache segar alih-alih menggunakan kembali konten yang ketinggalan zaman.110Semver tag yang diselesaikan dicatat secara terpisah dari `version` milik `plugin.json`, sehingga pemeriksaan batasan menggunakan tag yang benar-benar diambil bahkan jika `plugin.json` pada commit tersebut memiliki nilai yang ketinggalan zaman. Nama direktori cache untuk instalasi yang diselesaikan tag mencakup akhiran SHA commit 12 karakter, sehingga jika pengelola memaksa memindahkan tag ke commit yang berbeda, instalasi berikutnya mendapatkan direktori cache segar alih-alih menggunakan kembali konten yang ketinggalan zaman.

106 111 

107<Note>112<Note>

Details

6 6 

7> Bangun dan host marketplace plugin untuk mendistribusikan ekstensi Claude Code di seluruh tim dan komunitas.7> Bangun dan host marketplace plugin untuk mendistribusikan ekstensi Claude Code di seluruh tim dan komunitas.

8 8 

9Sebuah **marketplace plugin** adalah katalog yang memungkinkan Anda mendistribusikan plugin kepada orang lain. Marketplace menyediakan penemuan terpusat, pelacakan versi, pembaruan otomatis, dan dukungan untuk berbagai jenis sumber (repositori git, jalur lokal, dan lainnya). Panduan ini menunjukkan cara membuat marketplace Anda sendiri untuk berbagi plugin dengan tim atau komunitas Anda.9Sebuah **marketplace plugin** adalah katalog yang memungkinkan Anda mendistribusikan plugin kepada orang lain. Marketplace menyediakan penemuan terpusat, pelacakan versi, pembaruan otomatis, dan dukungan untuk berbagai jenis sumber, termasuk repositori git dan jalur lokal. Panduan ini menunjukkan cara membuat marketplace Anda sendiri untuk berbagi plugin dengan tim atau komunitas Anda.

10 10 

11Mencari cara memasang plugin dari marketplace yang sudah ada? Lihat [Temukan dan pasang plugin yang sudah dibuat](/id/discover-plugins).11Mencari cara memasang plugin dari marketplace yang sudah ada? Lihat [Temukan dan pasang plugin yang sudah dibuat](/id/discover-plugins).

12 12 


17Membuat dan mendistribusikan marketplace melibatkan:17Membuat dan mendistribusikan marketplace melibatkan:

18 18 

191. **Membuat plugin**: bangun satu atau lebih plugin dengan skills, agents, hooks, MCP servers, atau LSP servers. Panduan ini mengasumsikan Anda sudah memiliki plugin untuk didistribusikan; lihat [Buat plugin](/id/plugins) untuk detail tentang cara membuat plugin.191. **Membuat plugin**: bangun satu atau lebih plugin dengan skills, agents, hooks, MCP servers, atau LSP servers. Panduan ini mengasumsikan Anda sudah memiliki plugin untuk didistribusikan; lihat [Buat plugin](/id/plugins) untuk detail tentang cara membuat plugin.

202. **Membuat file marketplace**: tentukan `marketplace.json` yang mencantumkan plugin Anda dan di mana menemukannya (lihat [Buat file marketplace](#create-the-marketplace-file)).202. **Membuat file marketplace**: tentukan `marketplace.json` yang mencantumkan plugin Anda dan di mana menemukannya. Lihat [Buat file marketplace](#create-the-marketplace-file).

213. **Host marketplace**: dorong ke GitHub, GitLab, atau host git lainnya (lihat [Host dan distribusikan marketplace](#host-and-distribute-marketplaces)).213. **Host marketplace**: dorong ke GitHub, GitLab, atau host git lainnya. Lihat [Host dan distribusikan marketplace](#host-and-distribute-marketplaces).

224. **Bagikan dengan pengguna**: pengguna menambahkan marketplace Anda dengan `/plugin marketplace add` dan memasang plugin individual (lihat [Temukan dan pasang plugin](/id/discover-plugins)).224. **Bagikan dengan pengguna**: pengguna menambahkan marketplace Anda dengan `/plugin marketplace add` dan memasang plugin individual. Lihat [Temukan dan pasang plugin](/id/discover-plugins).

23 23 

24Setelah marketplace Anda aktif, Anda dapat memperbaruinya dengan mendorong perubahan ke repositori Anda. Pengguna menyegarkan salinan lokal mereka dengan `/plugin marketplace update`.24Setelah marketplace Anda aktif, Anda dapat memperbaruinya dengan mendorong perubahan ke repositori Anda. Pengguna menyegarkan salinan lokal mereka dengan `/plugin marketplace update`.

25 25 


44 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}44 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}

45 ---45 ---

46 description: Review code for bugs, security, and performance46 description: Review code for bugs, security, and performance

47 disable-model-invocation: true

48 ---47 ---

49 48 

50 Review the code I've selected or the recent changes for:49 Review the code I've selected or the recent changes for:


125 124 

126Buat `.claude-plugin/marketplace.json` di root repositori Anda. File ini mendefinisikan nama marketplace Anda, informasi pemilik, dan daftar plugin dengan sumbernya.125Buat `.claude-plugin/marketplace.json` di root repositori Anda. File ini mendefinisikan nama marketplace Anda, informasi pemilik, dan daftar plugin dengan sumbernya.

127 126 

128Setiap entri plugin memerlukan minimal `name` dan `source` (di mana mengambilnya). Lihat [skema lengkap](#marketplace-schema) di bawah untuk semua field yang tersedia.127Setiap entri plugin memerlukan minimal `name` dan `source` yang memberitahu Claude Code di mana mengambilnya. Lihat [skema lengkap](#marketplace-schema) di bawah untuk semua field yang tersedia.

129 128 

130```json theme={null}129```json theme={null}

131{130{


188</h3>187</h3>

189 188 

190| Field | Type | Deskripsi |189| Field | Type | Deskripsi |

191| :------------------------------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |190| :------------------------------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

192| `$schema` | string | URL JSON Schema untuk autocomplete dan validasi editor. Claude Code mengabaikan field ini saat waktu muat. |191| `$schema` | string | URL JSON Schema untuk autocomplete dan validasi editor. Claude Code mengabaikan field ini saat waktu muat. |

193| `description` | string | Deskripsi marketplace singkat |192| `description` | string | Deskripsi marketplace singkat |

194| `version` | string | Versi manifest marketplace |193| `version` | string | Versi manifest marketplace |

195| `metadata.pluginRoot` | string | Direktori dasar yang ditambahkan ke jalur sumber plugin relatif (misalnya, `"./plugins"` memungkinkan Anda menulis `"source": "formatter"` alih-alih `"source": "./plugins/formatter"`) |194| `metadata.pluginRoot` | string | Direktori dasar yang ditambahkan ke jalur sumber plugin relatif (misalnya, `"./plugins"` memungkinkan Anda menulis `"source": "formatter"` alih-alih `"source": "./plugins/formatter"`) |

196| `allowCrossMarketplaceDependenciesOn` | array | Marketplace lain yang plugin di marketplace ini dapat bergantung padanya. Dependensi dari marketplace yang tidak tercantum di sini diblokir saat instalasi. Lihat [Bergantung pada plugin dari marketplace lain](/id/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |195| `allowCrossMarketplaceDependenciesOn` | array | Marketplace lain yang plugin di marketplace ini dapat bergantung padanya. Dependensi dari marketplace yang tidak tercantum di sini diblokir saat instalasi. Lihat [Bergantung pada plugin dari marketplace lain](/id/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |

196| `renames` | object | {/* min-version: 2.1.193 */}Peta dari nama plugin `name` sebelumnya ke nama saat ini, atau ke `null` jika plugin dihapus. Memungkinkan pengguna yang ada untuk bermigrasi secara otomatis saat Anda mengganti nama atau menghapus entri di `plugins`. Lihat [Mengganti nama atau menghapus plugin](#rename-or-remove-a-plugin). Memerlukan Claude Code v2.1.193 atau lebih baru. |

197 197 

198`description` dan `version` juga diterima di bawah `metadata` untuk kompatibilitas mundur.198`description` dan `version` juga diterima di bawah `metadata` untuk kompatibilitas mundur.

199 199 


201 Entri plugin201 Entri plugin

202</h2>202</h2>

203 203 

204Setiap entri plugin dalam array `plugins` mendeskripsikan plugin dan di mana menemukannya. Anda dapat menyertakan field apa pun dari [skema manifest plugin](/id/plugins-reference#plugin-manifest-schema) (seperti `description`, `version`, `author`, `commands`, `hooks`, dll.), ditambah field khusus marketplace ini: `source`, `category`, `tags`, `strict`, dan `relevance`.204Setiap entri plugin dalam array `plugins` mendeskripsikan plugin dan di mana menemukannya. Anda dapat menyertakan field apa pun dari [skema manifest plugin](/id/plugins-reference#plugin-manifest-schema), seperti `description`, `version`, `author`, `commands`, dan `hooks`, ditambah field khusus marketplace ini: `source`, `category`, `tags`, `strict`, dan `relevance`.

205 205 

206<h3 id="required-fields-1">206<h3 id="required-fields-1">

207 Field yang diperlukan207 Field yang diperlukan


251 251 

252Plugin sources memberitahu Claude Code di mana mengambil setiap plugin individual yang tercantum di marketplace Anda. Ini diatur dalam field `source` dari setiap entri plugin di `marketplace.json`.252Plugin sources memberitahu Claude Code di mana mengambil setiap plugin individual yang tercantum di marketplace Anda. Ini diatur dalam field `source` dari setiap entri plugin di `marketplace.json`.

253 253 

254Setelah plugin diklon atau disalin ke mesin lokal, plugin disalin ke cache plugin lokal yang diversi di `~/.claude/plugins/cache`.254Setelah Claude Code mengklon atau mengunduh plugin ke mesin lokal, plugin disalin ke cache plugin lokal yang tersimpan di `~/.claude/plugins/cache`.

255 255 

256| Source | Type | Fields | Catatan |256| Source | Type | Fields | Catatan |

257| ------------- | ----------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |257| ------------- | ----------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |


264<Note>264<Note>

265 **Marketplace sources vs plugin sources**: Ini adalah konsep berbeda yang mengontrol hal berbeda.265 **Marketplace sources vs plugin sources**: Ini adalah konsep berbeda yang mengontrol hal berbeda.

266 266 

267 * **Marketplace source** di mana mengambil katalog `marketplace.json` itu sendiri. Diatur ketika pengguna menjalankan `/plugin marketplace add` atau dalam pengaturan `extraKnownMarketplaces`. Mendukung `ref` (branch/tag) tetapi bukan `sha`.267 * **Marketplace source**: di mana mengambil katalog `marketplace.json` itu sendiri. Diatur ketika pengguna menjalankan `/plugin marketplace add` atau dalam pengaturan `extraKnownMarketplaces`. Mendukung `ref` (branch/tag) tetapi bukan `sha`.

268 * **Plugin source** di mana mengambil plugin individual yang tercantum di marketplace. Diatur dalam field `source` dari setiap entri plugin di dalam `marketplace.json`. Mendukung baik `ref` (branch/tag) maupun `sha` (commit yang tepat).268 * **Plugin source**: di mana mengambil plugin individual yang tercantum di marketplace. Diatur dalam field `source` dari setiap entri plugin di dalam `marketplace.json`. Mendukung baik `ref` (branch/tag) maupun `sha` (commit yang tepat).

269 269 

270 Misalnya, marketplace yang dihosting di `acme-corp/plugin-catalog` (marketplace source) dapat mencantumkan plugin yang diambil dari `acme-corp/code-formatter` (plugin source). Marketplace source dan plugin source menunjuk ke repositori berbeda dan disematkan secara independen.270 Misalnya, marketplace yang dihosting di `acme-corp/plugin-catalog` (marketplace source) dapat mencantumkan plugin yang diambil dari `acme-corp/code-formatter` (plugin source). Marketplace source dan plugin source menunjuk ke repositori berbeda dan disematkan secara independen.

271</Note>271</Note>

272 272 

273Jenis sumber berbasis git di bawah ini adalah `github`, `url`, dan `git-subdir`. Ketika baik `ref` maupun `sha` diatur pada salah satu dari mereka, `sha` adalah pin yang efektif. Claude Code mengambil dan melakukan checkout pada commit yang disematkan secara langsung. Pada sebagian besar host git, termasuk GitHub, GitLab, dan Bitbucket, ini berarti instalasi berhasil bahkan jika branch atau tag yang dinamai oleh `ref` telah dihapus upstream, selama commit masih dapat dijangkau dari repositori. Beberapa server, seperti AWS CodeCommit, tidak mendukung pengambilan commit berdasarkan SHA. Di server tersebut `ref` masih harus ada dan commit yang disematkan harus dapat dijangkau darinya.273Jenis sumber berbasis git di bawah ini adalah `github`, `url`, dan `git-subdir`. Ketika baik `ref` maupun `sha` diatur pada salah satu dari mereka, `sha` adalah pin yang efektif. Claude Code mengambil dan melakukan checkout pada commit yang disematkan secara langsung.

274 

275Pada sebagian besar host git, termasuk GitHub, GitLab, dan Bitbucket, ini berarti instalasi berhasil bahkan jika branch atau tag yang dinamai oleh `ref` telah dihapus upstream, selama commit masih dapat dijangkau dari repositori. Beberapa server, seperti AWS CodeCommit, tidak mendukung pengambilan commit berdasarkan SHA. Di server tersebut `ref` masih harus ada dan commit yang disematkan harus dapat dijangkau darinya.

274 276 

275<h3 id="relative-paths">277<h3 id="relative-paths">

276 Jalur relatif278 Jalur relatif


288Jalur diselesaikan relatif terhadap root marketplace, yang merupakan direktori yang berisi `.claude-plugin/`. Dalam contoh di atas, `./plugins/my-plugin` menunjuk ke `<repo>/plugins/my-plugin`, meskipun `marketplace.json` berada di `<repo>/.claude-plugin/marketplace.json`. Jangan gunakan `../` untuk mereferensikan jalur di luar root marketplace.290Jalur diselesaikan relatif terhadap root marketplace, yang merupakan direktori yang berisi `.claude-plugin/`. Dalam contoh di atas, `./plugins/my-plugin` menunjuk ke `<repo>/plugins/my-plugin`, meskipun `marketplace.json` berada di `<repo>/.claude-plugin/marketplace.json`. Jangan gunakan `../` untuk mereferensikan jalur di luar root marketplace.

289 291 

290<Note>292<Note>

291 Jalur relatif hanya berfungsi ketika pengguna menambahkan marketplace Anda melalui Git (GitHub, GitLab, atau URL git). Jika pengguna menambahkan marketplace Anda melalui URL langsung ke file `marketplace.json`, jalur relatif tidak akan terselesaikan dengan benar. Untuk distribusi berbasis URL, gunakan sumber GitHub, npm, atau URL git sebagai gantinya. Lihat [Troubleshooting](#plugins-with-relative-paths-fail-in-url-based-marketplaces) untuk detail.293 Jalur relatif diselesaikan terhadap salinan lokal marketplace, jadi mereka berfungsi ketika pengguna menambahkan marketplace Anda dari sumber git atau direktori lokal. Jika pengguna menambahkan marketplace Anda melalui URL langsung ke file `marketplace.json`, jalur relatif tidak akan diselesaikan, karena hanya file itu yang diunduh. Untuk distribusi berbasis URL, gunakan sumber GitHub, npm, atau URL git sebagai gantinya. Lihat [Troubleshooting](#plugins-with-relative-paths-fail-in-url-based-marketplaces) untuk detail.

292</Note>294</Note>

293 295 

294<h3 id="github-repositories">296<h3 id="github-repositories">


547 Host di GitHub (direkomendasikan)549 Host di GitHub (direkomendasikan)

548</h3>550</h3>

549 551 

550GitHub menyediakan metode distribusi paling mudah:552GitHub adalah cara yang direkomendasikan untuk host dan distribusikan marketplace:

551 553 

5521. **Buat repositori**: Siapkan repositori baru untuk marketplace Anda5541. **Buat repositori**: siapkan repositori baru untuk marketplace Anda

5532. **Tambahkan file marketplace**: Buat `.claude-plugin/marketplace.json` dengan definisi plugin Anda5552. **Tambahkan file marketplace**: buat `.claude-plugin/marketplace.json` dengan definisi plugin Anda

5543. **Bagikan dengan tim**: Pengguna menambahkan marketplace Anda dengan `/plugin marketplace add owner/repo`5563. **Bagikan dengan tim**: pengguna menambahkan marketplace Anda dengan `/plugin marketplace add owner/repo`

555 557 

556**Manfaat**: Kontrol versi bawaan, pelacakan masalah, dan fitur kolaborasi tim.558**Manfaat**: kontrol versi bawaan, pelacakan masalah, dan fitur kolaborasi tim.

557 559 

558<h3 id="host-on-other-git-services">560<h3 id="host-on-other-git-services">

559 Host di layanan git lainnya561 Host di layanan git lainnya


596Uji marketplace Anda secara lokal sebelum berbagi:598Uji marketplace Anda secara lokal sebelum berbagi:

597 599 

598```shell theme={null}600```shell theme={null}

599/plugin marketplace add ./my-local-marketplace601/plugin marketplace add ./my-marketplace

600/plugin install test-plugin@my-local-marketplace602/plugin install quality-review-plugin@my-plugins

601```603```

602 604 

603Untuk rangkaian lengkap perintah add (GitHub, URL Git, jalur lokal, URL jarak jauh), lihat [Tambahkan marketplace](/id/discover-plugins#add-marketplaces).605Untuk rangkaian lengkap perintah add (GitHub, URL Git, jalur lokal, URL jarak jauh), lihat [Tambahkan marketplace](/id/discover-plugins#add-marketplaces).


644 646 

645Untuk image container dan lingkungan CI, Anda dapat pra-isi direktori plugin saat waktu build sehingga Claude Code dimulai dengan marketplace dan plugin yang sudah tersedia, tanpa mengklon apa pun saat runtime. Atur variabel lingkungan `CLAUDE_CODE_PLUGIN_SEED_DIR` untuk menunjuk ke direktori ini.647Untuk image container dan lingkungan CI, Anda dapat pra-isi direktori plugin saat waktu build sehingga Claude Code dimulai dengan marketplace dan plugin yang sudah tersedia, tanpa mengklon apa pun saat runtime. Atur variabel lingkungan `CLAUDE_CODE_PLUGIN_SEED_DIR` untuk menunjuk ke direktori ini.

646 648 

647Untuk melapisi beberapa direktori seed, pisahkan jalur dengan `:` di Unix atau `;` di Windows. Claude Code mencari setiap direktori secara berurutan, dan seed pertama yang berisi marketplace atau cache plugin yang diberikan menang.649Untuk melapisi beberapa direktori seed, pisahkan jalur dengan `:` di Unix atau `;` di Windows. Claude Code mencari setiap direktori secara berurutan dan menggunakan seed pertama yang berisi marketplace atau cache plugin yang diberikan.

648 650 

649Direktori seed mencerminkan struktur `~/.claude/plugins`:651Direktori seed mencerminkan struktur `~/.claude/plugins`:

650 652 


680 Pembatasan marketplace yang dikelola682 Pembatasan marketplace yang dikelola

681</h3>683</h3>

682 684 

683Untuk organisasi yang memerlukan kontrol ketat atas sumber plugin, administrator dapat membatasi marketplace plugin mana yang diizinkan pengguna untuk tambahkan menggunakan pengaturan [`strictKnownMarketplaces`](/id/settings#strictknownmarketplaces) dalam pengaturan yang dikelola.685Untuk organisasi yang memerlukan kontrol ketat atas sumber plugin, administrator dapat membatasi marketplace plugin mana yang diizinkan pengguna untuk tambahkan menggunakan pengaturan [`strictKnownMarketplaces`](/id/settings#strictknownmarketplaces) dalam pengaturan yang dikelola. Untuk juga menolak flag CLI yang sideload plugin, agen, dan server MCP untuk satu kali jalankan, pasangkan dengan [`disableSideloadFlags`](/id/settings#available-settings).

684 686 

685Ketika `strictKnownMarketplaces` dikonfigurasi dalam pengaturan yang dikelola, perilaku pembatasan tergantung pada nilainya:687Ketika `strictKnownMarketplaces` dikonfigurasi dalam pengaturan yang dikelola, perilaku pembatasan tergantung pada nilainya:

686 688 


881 883 

882Plugin dapat membatasi dependensinya ke rentang semver sehingga pembaruan dependensi tidak merusak plugin yang bergantung. Lihat [Batasi versi dependensi plugin](/id/plugin-dependencies) untuk konvensi git-tag `{plugin-name}--v{version}`, sintaks rentang, dan bagaimana beberapa batasan pada dependensi yang sama digabungkan.884Plugin dapat membatasi dependensinya ke rentang semver sehingga pembaruan dependensi tidak merusak plugin yang bergantung. Lihat [Batasi versi dependensi plugin](/id/plugin-dependencies) untuk konvensi git-tag `{plugin-name}--v{version}`, sintaks rentang, dan bagaimana beberapa batasan pada dependensi yang sama digabungkan.

883 885 

886<h3 id="rename-or-remove-a-plugin">

887 Ubah nama atau hapus plugin

888</h3>

889 

890`name` plugin adalah pengidentifikasi stabilnya. Pengguna mereferensikannya dalam `enabledPlugins`, `pluginConfigs`, dan perintah `/plugin install`, jadi mengubahnya merusak setiap instalasi yang ada. Untuk mengubah label yang ditampilkan di UI tanpa merusak instalasi, atur [`displayName`](#optional-plugin-fields) dan jaga `name` tetap tidak berubah.

891 

892Jika Anda harus mengubah `name` plugin, atau Anda menghapus plugin dari array `plugins`, tambahkan entri `renames` tingkat atas sehingga pengguna yang ada bermigrasi alih-alih melihat kesalahan `plugin-not-found`. Migrasi otomatis memerlukan Claude Code v2.1.193 atau lebih baru. Petakan setiap nama lama ke nama barunya, atau ke `null` jika plugin tidak lagi ada. Contoh berikut mengubah nama `formatter` menjadi `code-formatter` dan mencatat bahwa `legacy-linter` dihapus:

893 

894```json theme={null}

895{

896 "name": "acme-tools",

897 "owner": { "name": "Acme" },

898 "plugins": [

899 { "name": "code-formatter", "source": "./plugins/code-formatter" }

900 ],

901 "renames": {

902 "formatter": "code-formatter",

903 "legacy-linter": null

904 }

905}

906```

907 

908Ketika pengguna memulai Claude Code dengan nama lama masih dalam pengaturan mereka, Claude Code mengikuti peta `renames`:

909 

910* Jika entri menunjuk ke nama baru, Claude Code memuat plugin dengan nama barunya dan menampilkan pemberitahuan satu baris seperti `Renamed to "code-formatter" in the "acme-tools" marketplace`. Kemudian menulis ulang kunci lama ke kunci baru dalam cakupan pengaturan pengguna, proyek, dan lokal untuk kedua `enabledPlugins` dan `pluginConfigs`, sehingga pemberitahuan muncul sekali.

911* Untuk entri `null`, Claude Code menghapus kunci lama dan pemberitahuan melaporkan bahwa plugin dihapus dari marketplace.

912* Jika plugin yang diubah nama menggunakan sumber jarak jauh seperti `github` atau `npm`, Claude Code melaporkan `plugin-cache-miss` setelah pengubahan nama dan pengguna harus menjalankan `/plugin install` sekali untuk mengambilnya dengan nama baru.

913 

914Perlakukan `renames` sebagai riwayat append-only: jaga entri lama tetap ada bahkan setelah Anda mengharapkan setiap pengguna untuk bermigrasi. Claude Code mengikuti rantai, jadi jika Anda kemudian mengubah nama `code-formatter` menjadi `formatter-pro`, tambahkan entri kedua daripada mengedit yang pertama. Pengguna yang masih memiliki `formatter` asli yang diaktifkan kemudian diselesaikan melalui kedua entri ke `formatter-pro`.

915 

916Jalankan `claude plugin validate .` setelah mengedit peta; itu menolak entri apa pun yang rantainya membentuk siklus atau tidak berakhir di `null` atau nama yang terdaftar dalam `plugins`.

917 

918<Note>

919 Pengaturan yang dikelola dan kebijakan adalah read-only untuk Claude Code, jadi plugin yang diaktifkan di sana tidak dapat ditulis ulang secara otomatis. Plugin yang diubah nama masih dimuat setiap sesi, tetapi pemberitahuan pengubahan nama berulang sampai administrator memperbarui `enabledPlugins` dalam file pengaturan yang dikelola untuk menggunakan nama baru. Hal yang sama berlaku untuk plugin yang diaktifkan melalui sumber read-only lainnya seperti `--add-dir`.

920</Note>

921 

922Versi Claude Code sebelumnya mengabaikan field `renames` dan melaporkan `plugin-not-found` untuk nama lama.

923 

884<h2 id="validation-and-testing">924<h2 id="validation-and-testing">

885 Validasi dan pengujian925 Validasi dan pengujian

886</h2>926</h2>


933 973 

934* `<source>`: Shorthand GitHub `owner/repo`, URL git, URL jarak jauh ke file `marketplace.json`, atau jalur direktori lokal. Untuk menyematkan ke branch atau tag, tambahkan `@ref` ke shorthand GitHub atau `#ref` ke URL git974* `<source>`: Shorthand GitHub `owner/repo`, URL git, URL jarak jauh ke file `marketplace.json`, atau jalur direktori lokal. Untuk menyematkan ke branch atau tag, tambahkan `@ref` ke shorthand GitHub atau `#ref` ke URL git

935 975 

976URL harus menyertakan skemanya. Mulai dari Claude Code v2.1.196, host yang diketik tanpa skema, seperti `gitlab.example.com/team/plugins`, ditolak sebagai shorthand `owner/repo` yang tidak valid dan kesalahan memberi tahu Anda untuk menambahkan `https://` atau menggunakan `./` untuk jalur lokal. Versi sebelumnya salah membacanya sebagai jalur repositori GitHub dan gagal saat clone dengan kesalahan GitHub not-found.

977 

936**Opsi:**978**Opsi:**

937 979 

938| Opsi | Deskripsi | Default |980| Opsi | Deskripsi | Default |


1061 Kesalahan validasi marketplace1103 Kesalahan validasi marketplace

1062</h3>1104</h3>

1063 1105 

1064Jalankan `claude plugin validate .` atau `/plugin validate .` dari direktori marketplace Anda untuk memeriksa masalah. Ketika ditunjukkan ke direktori marketplace, validator memeriksa `marketplace.json` saja: skema, nama plugin duplikat, traversal jalur sumber, dan ketidaksesuaian versi terhadap setiap `plugin.json` yang direferensikan.1106Jalankan `claude plugin validate .` atau `/plugin validate .` dari direktori marketplace Anda untuk memeriksa masalah. Ketika ditunjukkan ke direktori marketplace, validator memeriksa `marketplace.json` untuk kesalahan skema, nama plugin duplikat, dan traversal jalur sumber. Untuk setiap entri yang `source`-nya adalah jalur lokal, validator juga memvalidasi `plugin.json` plugin tersebut dan memberikan peringatan ketika `version` entri tidak cocok dengan yang ada di `plugin.json`. Masalah yang ditemukan dalam `plugin.json` plugin diawali dengan indeks entri, dalam bentuk `plugins[2] plugin.json →`.

1107 

1108Mulai dari Claude Code v2.1.196, pass per-entri juga:

1109 

1110* mencakup plugin yang `source`-nya adalah `.`

1111* berjalan ketika `marketplace.json` berada di luar direktori `.claude-plugin`, menyelesaikan sumber terhadap direktori file itu sendiri

1112* melaporkan masalah setiap entri bahkan ketika bagian lain dari file memiliki kesalahan skema

1113 

1114Versi sebelumnya melewati plugin di root marketplace dan hanya turun dari `.claude-plugin/marketplace.json`.

1065 1115 

1066Untuk memvalidasi `plugin.json` plugin individual dan file skill, agent, command, dan hook-nya, jalankan perintah terhadap direktori plugin itu sendiri, misalnya `claude plugin validate ./plugins/my-plugin`. Kesalahan umum:1116Untuk memvalidasi `plugin.json` plugin individual dan file skill, agent, command, dan hook-nya, jalankan perintah terhadap direktori plugin itu sendiri, misalnya `claude plugin validate ./plugins/my-plugin`. Kesalahan umum:

1067 1117 


1078 1128 

1079* `Marketplace has no plugins defined`: tambahkan setidaknya satu plugin ke array `plugins`1129* `Marketplace has no plugins defined`: tambahkan setidaknya satu plugin ke array `plugins`

1080* `No marketplace description provided`: tambahkan `description` tingkat atas untuk membantu pengguna memahami marketplace Anda1130* `No marketplace description provided`: tambahkan `description` tingkat atas untuk membantu pengguna memahami marketplace Anda

1081* `Plugin name "x" is not kebab-case`: nama plugin berisi huruf besar, spasi, atau karakter khusus. Ubah nama menjadi huruf kecil, digit, dan tanda hubung saja (misalnya, `my-plugin`). Claude Code menerima bentuk lain, tetapi sinkronisasi marketplace Claude.ai menolaknya.1131* `Plugin name "x" is not kebab-case`: nama plugin berisi huruf besar, spasi, atau karakter khusus. Ubah nama menjadi huruf kecil, digit, dan tanda hubung saja (misalnya, `my-plugin`). Claude Code menerima bentuk lain, tetapi sinkronisasi marketplace claude.ai menolaknya.

1082 1132 

1083<h3 id="plugin-installation-failures">1133<h3 id="plugin-installation-failures">

1084 Kegagalan instalasi plugin1134 Kegagalan instalasi plugin

Details

477Jika Anda menyertakan manifest, `name` adalah satu-satunya field yang diperlukan.477Jika Anda menyertakan manifest, `name` adalah satu-satunya field yang diperlukan.

478 478 

479| Field | Tipe | Deskripsi | Contoh |479| Field | Tipe | Deskripsi | Contoh |

480| :----- | :----- | :-------------------------------------- | :------------------- |480| :----- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

481| `name` | string | Pengenal unik (kebab-case, tanpa spasi) | `"deployment-tools"` |481| `name` | string | Pengenal unik (kebab-case, tanpa spasi). Saat [entri marketplace](/id/plugin-marketplaces#plugin-entries) mencantumkan plugin dengan nama berbeda, nama entri marketplace adalah yang digunakan oleh kunci `enabledPlugins` dan `/plugin` | `"deployment-tools"` |

482 482 

483Nama ini digunakan untuk namespacing komponen. Misalnya, di UI, agent `agent-creator` untuk plugin dengan nama `plugin-dev` akan muncul sebagai `plugin-dev:agent-creator`.483Nama ini digunakan untuk namespacing komponen. Misalnya, di UI, agent `agent-creator` untuk plugin dengan nama `plugin-dev` akan muncul sebagai `plugin-dev:agent-creator`.

484 484 

quickstart.md +1 −0

Details

106* [Claude Pro, Max, Team, atau Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (direkomendasikan)106* [Claude Pro, Max, Team, atau Enterprise](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=quickstart_login) (direkomendasikan)

107* [Claude Console](https://console.anthropic.com/) (akses API dengan kredit prabayar). Pada login pertama, ruang kerja "Claude Code" secara otomatis dibuat di Console untuk pelacakan biaya terpusat.107* [Claude Console](https://console.anthropic.com/) (akses API dengan kredit prabayar). Pada login pertama, ruang kerja "Claude Code" secara otomatis dibuat di Console untuk pelacakan biaya terpusat.

108* [Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry](/id/third-party-integrations) (penyedia cloud enterprise)108* [Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry](/id/third-party-integrations) (penyedia cloud enterprise)

109* Gateway [Claude apps](/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 perusahaan

109 110 

110Setelah masuk, kredensial Anda disimpan dan Anda tidak perlu masuk lagi.111Setelah masuk, kredensial Anda disimpan dan Anda tidak perlu masuk lagi.

111 112 

Details

34 34 

35* **Langganan**: tersedia di paket Pro, Max, Tim, dan Enterprise. Kunci API tidak didukung. Di Tim dan Enterprise, seorang Pemilik harus terlebih dahulu mengaktifkan toggle Remote Control di [pengaturan admin Claude Code](https://claude.ai/admin-settings/claude-code).35* **Langganan**: tersedia di paket Pro, Max, Tim, dan Enterprise. Kunci API tidak didukung. Di Tim dan Enterprise, seorang Pemilik harus terlebih dahulu mengaktifkan toggle Remote Control di [pengaturan admin Claude Code](https://claude.ai/admin-settings/claude-code).

36* **Autentikasi**: jalankan `claude` dan gunakan `/login` untuk masuk melalui claude.ai jika Anda belum melakukannya.36* **Autentikasi**: jalankan `claude` dan gunakan `/login` untuk masuk melalui claude.ai jika Anda belum melakukannya.

37* **Titik akhir API**: tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry. {/* min-version: 2.1.196 */}Mulai dari v2.1.196, Remote Control juga dinonaktifkan ketika [`ANTHROPIC_BASE_URL`](/id/env-vars) menunjuk ke host selain `api.anthropic.com`, seperti [gateway LLM](/id/llm-gateway) atau proxy. Batalkan pengaturan variabel untuk menggunakan Remote Control.

37* **Kepercayaan ruang kerja**: jalankan `claude` di direktori proyek Anda setidaknya sekali untuk menerima dialog kepercayaan ruang kerja.38* **Kepercayaan ruang kerja**: jalankan `claude` di direktori proyek Anda setidaknya sekali untuk menerima dialog kepercayaan ruang kerja.

38 39 

39<h2 id="start-a-remote-control-session">40<h2 id="start-a-remote-control-session">


148 Aktifkan Remote Control untuk semua sesi149 Aktifkan Remote Control untuk semua sesi

149</h3>150</h3>

150 151 

151Secara default, Remote Control hanya diaktifkan ketika Anda secara eksplisit menjalankan `claude remote-control`, `claude --remote-control`, atau `/remote-control`. Untuk mengaktifkannya secara otomatis untuk setiap sesi interaktif, jalankan `/config` di dalam Claude Code dan atur **Enable Remote Control for all sessions** ke `true`. Atur kembali ke `false` untuk menonaktifkan. Di aplikasi Desktop, Anda juga dapat mengalihkan ini dari **Settings → Claude Code → Enable remote control by default**.152Remote Control hanya diaktifkan ketika Anda secara eksplisit menjalankan `claude remote-control`, `claude --remote-control`, atau `/remote-control`, kecuali auto-connect diaktifkan. Untuk mengaktifkannya secara otomatis untuk setiap sesi interaktif, jalankan `/config` di dalam Claude Code dan atur **Enable Remote Control for all sessions** ke `true`. Atur ke `false` untuk tidak pernah auto-connect, atau biarkan tidak diatur untuk mengikuti default organisasi Anda. Di aplikasi Desktop, Anda juga dapat mengalihkan ini dari **Settings → Claude Code → Enable remote control by default**.

152 153 

153Dengan pengaturan ini aktif, setiap proses Claude Code interaktif mendaftarkan satu sesi jarak jauh. Jika Anda menjalankan beberapa instance, masing-masing mendapatkan lingkungan dan sesi sendiri. Untuk menjalankan beberapa sesi bersamaan dari satu proses, gunakan [mode server](#start-a-remote-control-session) sebagai gantinya.154Dengan pengaturan ini aktif, setiap proses Claude Code interaktif mendaftarkan satu sesi jarak jauh. Jika Anda menjalankan beberapa instance, masing-masing mendapatkan lingkungan dan sesi sendiri. Untuk menjalankan beberapa sesi bersamaan dari satu proses, gunakan [mode server](#start-a-remote-control-session) sebagai gantinya.

154 155 


318 319 

319Claude Code tidak dapat menjangkau layanan feature-flag untuk memeriksa apakah Remote Control diaktifkan untuk akun Anda, biasanya karena Anda offline atau proxy memblokir permintaan. Coba lagi setelah Anda memiliki akses jaringan, atau jalankan `claude doctor` untuk detail. Pesan terkait "Tidak dapat memverifikasi kebijakan Remote Control organisasi Anda" memiliki penyebab yang sama dan perbaikan yang sama. Kedua pesan ditambahkan di v2.1.178.320Claude Code tidak dapat menjangkau layanan feature-flag untuk memeriksa apakah Remote Control diaktifkan untuk akun Anda, biasanya karena Anda offline atau proxy memblokir permintaan. Coba lagi setelah Anda memiliki akses jaringan, atau jalankan `claude doctor` untuk detail. Pesan terkait "Tidak dapat memverifikasi kebijakan Remote Control organisasi Anda" memiliki penyebab yang sama dan perbaikan yang sama. Kedua pesan ditambahkan di v2.1.178.

320 321 

322<h3 id="remote-control-is-only-available-when-using-claude-via-api-anthropic-com">

323 "Remote Control hanya tersedia saat menggunakan Claude melalui api.anthropic.com"

324</h3>

325 

326Sesi tidak berbicara langsung ke API Anthropic, jadi tidak ada backend claude.ai untuk dipasangkan. Ini terjadi di Amazon Bedrock, Google Vertex AI, dan Microsoft Foundry. {/* min-version: 2.1.196 */}Mulai dari v2.1.196, ini juga terjadi ketika [`ANTHROPIC_BASE_URL`](/id/env-vars) menunjuk ke host selain `api.anthropic.com`, seperti [gateway LLM](/id/llm-gateway) atau proxy, bahkan jika Anda masuk dengan claude.ai. Batalkan pengaturan `ANTHROPIC_BASE_URL` dan mulai ulang sesi untuk menggunakan Remote Control.

327 

321<h3 id="remote-control-is-disabled-by-your-organization’s-policy">328<h3 id="remote-control-is-disabled-by-your-organization’s-policy">

322 "Remote Control dinonaktifkan oleh kebijakan organisasi Anda"329 "Remote Control dinonaktifkan oleh kebijakan organisasi Anda"

323</h3>330</h3>

Details

48| Hanya prompt | `/loop check the deploy` | Prompt Anda berjalan pada [interval yang dipilih Claude](#let-claude-choose-the-interval) setiap iterasi |48| Hanya prompt | `/loop check the deploy` | Prompt Anda berjalan pada [interval yang dipilih Claude](#let-claude-choose-the-interval) setiap iterasi |

49| Hanya interval, atau tidak ada apa-apa | `/loop` | [Prompt pemeliharaan bawaan](#run-the-built-in-maintenance-prompt) berjalan, atau `loop.md` Anda jika ada |49| Hanya interval, atau tidak ada apa-apa | `/loop` | [Prompt pemeliharaan bawaan](#run-the-built-in-maintenance-prompt) berjalan, atau `loop.md` Anda jika ada |

50 50 

51Anda juga dapat melewatkan perintah lain sebagai prompt, misalnya `/loop 20m /review-pr 1234`, untuk menjalankan kembali skill yang disimpan atau perintah setiap iterasi.51Anda juga dapat melewatkan skill sebagai prompt, misalnya `/loop 20m /review-pr 1234`, untuk menjalankan kembali skill tersebut setiap iterasi. {/* min-version: 2.1.196 */}Mulai dari v2.1.196, penjadwalan yang terpicu hanya menjalankan skill yang Claude [diizinkan untuk memanggil sendiri](/id/skills#control-who-invokes-a-skill). Berikut ini mencapai Claude sebagai teks biasa daripada dieksekusi:

52 

53* perintah bawaan seperti `/permissions`, `/model`, atau `/clear`

54* skill yang ditandai [`disable-model-invocation: true`](/id/skills#frontmatter-reference)

55* skill yang ditahan dari Claude oleh pengaturan [`skillOverrides`](/id/skills#override-skill-visibility-from-settings) atau aturan [deny](/id/skills#restrict-claude’s-skill-access) `Skill`

56* [MCP prompts](/id/mcp#use-mcp-prompts-as-commands) seperti `/mcp__github__list_prs`; skill yang server MCP paparkan masih berjalan

52 57 

53<h3 id="run-on-a-fixed-interval">58<h3 id="run-on-a-fixed-interval">

54 Jalankan pada interval tetap59 Jalankan pada interval tetap


238 243 

239Penjadwalan session-scoped memiliki batasan yang melekat:244Penjadwalan session-scoped memiliki batasan yang melekat:

240 245 

241* Tugas hanya berjalan saat Claude Code berjalan dan idle. Menutup terminal atau membiarkan sesi keluar menghentikan semuanya.246* Tugas hanya berjalan saat Claude Code berjalan dan idle. Menutup terminal atau membiarkan sesi keluar menghentikan semuanya. [Backgrounding sesi](/id/agent-view#from-inside-a-session) membawa tugas `/loop` ke sesi latar belakang, yang terus berjalan tanpa terminal.

242* Tidak ada catch-up untuk fire yang terlewat. Jika waktu terjadwal tugas berlalu saat Claude sibuk dengan permintaan yang berjalan lama, itu berjalan sekali saat Claude menjadi idle, bukan sekali per interval yang terlewat.247* Tidak ada catch-up untuk fire yang terlewat. Jika waktu terjadwal tugas berlalu saat Claude sibuk dengan permintaan yang berjalan lama, itu berjalan sekali saat Claude menjadi idle, bukan sekali per interval yang terlewat.

243* Memulai percakapan baru menghapus semua tugas session-scoped. Melanjutkan dengan `claude --resume` atau `claude --continue` memulihkan tugas yang belum kedaluwarsa: tugas berulang dalam tujuh hari pembuatan, dan tugas sekali jalan yang waktu terjadwalnya belum berlalu. Tugas Bash latar belakang dan monitor tidak pernah dipulihkan pada resume.248* Memulai percakapan baru menghapus semua tugas session-scoped. Melanjutkan dengan `claude --resume` atau `claude --continue` memulihkan tugas yang belum kedaluwarsa: tugas berulang dalam tujuh hari pembuatan, dan tugas sekali jalan yang waktu terjadwalnya belum berlalu. Tugas Bash latar belakang dan monitor tidak pernah dipulihkan pada resume.

244 249 

Details

153 153 

154Pengaturan yang dikelola server dan [pengaturan yang dikelola endpoint](/id/settings#settings-files) keduanya menempati tingkat tertinggi dalam [hierarki pengaturan](/id/settings#settings-precedence) Claude Code. Tidak ada tingkat pengaturan lain yang dapat menggantinya, termasuk argumen baris perintah.154Pengaturan yang dikelola server dan [pengaturan yang dikelola endpoint](/id/settings#settings-files) keduanya menempati tingkat tertinggi dalam [hierarki pengaturan](/id/settings#settings-precedence) Claude Code. Tidak ada tingkat pengaturan lain yang dapat menggantinya, termasuk argumen baris perintah.

155 155 

156Dalam tingkat terkelola, sumber pertama yang mengirimkan konfigurasi non-kosong menang. Pengaturan yang dikelola server diperiksa terlebih dahulu, kemudian pengaturan yang dikelola endpoint. Sumber tidak digabungkan: jika pengaturan yang dikelola server mengirimkan kunci apa pun, pengaturan yang dikelola endpoint sepenuhnya diabaikan. Jika pengaturan yang dikelola server tidak mengirimkan apa pun, pengaturan yang dikelola endpoint berlaku.156Dalam tingkat terkelola, `policyHelper` yang dikonfigurasi mendahului setiap sumber terkelola lainnya, termasuk pengaturan yang dikelola server: outputnya menjadi satu-satunya konfigurasi terkelola untuk jalankan. Jika tidak, sumber pertama yang mengirimkan konfigurasi non-kosong menang. Pengaturan yang dikelola server diperiksa terlebih dahulu, kemudian pengaturan yang dikelola endpoint. Sumber tidak digabungkan: jika pengaturan yang dikelola server mengirimkan kunci apa pun, pengaturan yang dikelola endpoint lainnya diabaikan sepenuhnya. Satu pengecualian berlaku: serangkaian kecil [kunci kunci lintas sumber](/id/settings#settings-precedence), seperti kunci daftar pasir sandbox, dihormati ketika sumber terkelola yang dikendalikan admin apa pun menetapkannya; tingkat registri HKCU yang dapat ditulis pengguna dikecualikan. Jika pengaturan yang dikelola server tidak mengirimkan apa pun, pengaturan yang dikelola endpoint berlaku.

157 157 

158Jika Anda menghapus konfigurasi pengaturan yang dikelola server di konsol admin dengan tujuan untuk kembali ke plist yang dikelola endpoint atau kebijakan registri, perhatikan bahwa [pengaturan yang di-cache](#fetch-and-caching-behavior) bertahan pada mesin klien hingga pengambilan berikutnya yang berhasil. Jalankan `/status` untuk melihat sumber terkelola mana yang aktif.158Jika Anda menghapus konfigurasi pengaturan yang dikelola server di konsol admin dengan tujuan untuk kembali ke plist yang dikelola endpoint atau kebijakan registri, perhatikan bahwa [pengaturan yang di-cache](#fetch-and-caching-behavior) bertahan pada mesin klien hingga pengambilan berikutnya yang berhasil. Jalankan `/status` untuk melihat sumber terkelola mana yang aktif.

159 159 


222* **Pengaturan perintah shell**: pengaturan yang menjalankan perintah shell222* **Pengaturan perintah shell**: pengaturan yang menjalankan perintah shell

223* **Variabel lingkungan kustom**: variabel yang tidak ada dalam daftar aman yang diketahui223* **Variabel lingkungan kustom**: variabel yang tidak ada dalam daftar aman yang diketahui

224* **Konfigurasi hook**: definisi hook apa pun224* **Konfigurasi hook**: definisi hook apa pun

225* **Konten CLAUDE.md yang dikelola**: nilai `claudeMd` yang dikirimkan melalui pengaturan terkelola

225 226 

226Ketika pengaturan ini ada, pengguna melihat dialog keamanan yang menjelaskan apa yang sedang dikonfigurasi. Pengguna harus menyetujui untuk melanjutkan. Jika pengguna menolak pengaturan, Claude Code keluar.227Ketika pengaturan ini ada, pengguna melihat dialog keamanan yang menjelaskan apa yang sedang dikonfigurasi. Pengguna harus menyetujui untuk melanjutkan. Jika pengguna menolak pengaturan, Claude Code keluar.

227 228 


239* Google Vertex AI240* Google Vertex AI

240* Microsoft Foundry241* Microsoft Foundry

241* [Claude Platform on AWS](/id/claude-platform-on-aws)242* [Claude Platform on AWS](/id/claude-platform-on-aws)

242* Endpoint API kustom melalui `ANTHROPIC_BASE_URL` atau [gateway LLM](/id/llm-gateway)243* Endpoint API kustom melalui `ANTHROPIC_BASE_URL` atau gateway [LLM pihak ketiga](/id/llm-gateway)

244 

245Untuk penyebaran Bedrock, Vertex AI, dan Foundry, gateway [aplikasi Claude](/id/claude-apps-gateway) yang di-host sendiri menyediakan pengiriman pengaturan yang dikelola jarak jauh yang setara: klien yang masuk ke gateway mengambil pengaturan yang dikelola dari gateway alih-alih `api.anthropic.com`. Semantik kegagalan berbeda saat startup: klien gateway yang tidak dapat menjangkau gateway keluar dengan kesalahan alih-alih kembali ke pengaturan yang di-cache, sementara penyegaran latar belakang per jam adalah fail-open di kedua saluran.

243 246 

244<h2 id="audit-logging">247<h2 id="audit-logging">

245 Audit logging248 Audit logging


253 Pertimbangan keamanan256 Pertimbangan keamanan

254</h2>257</h2>

255 258 

256Pengaturan yang dikelola server menyediakan penegakan kebijakan terpusat, tetapi mereka beroperasi sebagai kontrol sisi klien. Pada perangkat yang tidak dikelola, pengguna dengan akses admin atau sudo dapat memodifikasi biner Claude Code, sistem file, atau konfigurasi jaringan.259Pengaturan yang dikelola server menyediakan penegakan kebijakan terpusat, tetapi mereka beroperasi sebagai kontrol sisi klien, bukan batas keamanan. Pada perangkat yang tidak dikelola, pengguna tidak perlu akses admin atau sudo untuk melewatinya.

257 260 

258| Skenario | Perilaku |261| Skenario | Perilaku |

259| :---------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |262| :---------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

260| Pengguna mengedit file pengaturan yang di-cache | File yang dirusak berlaku pada startup, tetapi pengaturan yang benar dipulihkan pada pengambilan server berikutnya |263| Pengguna mengedit file pengaturan yang di-cache | File yang dirusak berlaku pada startup, tetapi pengaturan yang benar dipulihkan pada pengambilan server berikutnya |

261| Pengguna menghapus file pengaturan yang di-cache | Perilaku peluncuran pertama terjadi: pengaturan mengambil secara asinkron dengan jendela yang tidak diterapkan singkat |264| Pengguna menghapus file pengaturan yang di-cache | Perilaku peluncuran pertama terjadi: pengaturan mengambil secara asinkron dengan jendela yang tidak diterapkan singkat |

265| Pengguna menjalankan biner Claude Code yang dimodifikasi | Pengguna yang dapat menjalankan klien yang dimodifikasi dapat melewati kontrol sisi klien apa pun |

266| Pengguna menjalankan versi Claude Code yang lebih lama | Versi yang mendahului pengaturan yang dikelola server tidak mengambil atau menerapkannya |

262| API tidak tersedia | Pengaturan yang di-cache berlaku jika tersedia, jika tidak pengaturan terkelola tidak diterapkan sampai pengambilan yang berhasil berikutnya. Dengan `forceRemoteSettingsRefresh: true`, CLI keluar sebagai gantinya melanjutkan, kecuali untuk [subperintah `claude auth`](#enforce-fail-closed-startup) |267| API tidak tersedia | Pengaturan yang di-cache berlaku jika tersedia, jika tidak pengaturan terkelola tidak diterapkan sampai pengambilan yang berhasil berikutnya. Dengan `forceRemoteSettingsRefresh: true`, CLI keluar sebagai gantinya melanjutkan, kecuali untuk [subperintah `claude auth`](#enforce-fail-closed-startup) |

263| Pengguna melakukan autentikasi dengan organisasi yang berbeda | Pengaturan tidak dikirimkan untuk akun di luar organisasi yang dikelola |268| Pengguna melakukan autentikasi dengan organisasi yang berbeda | Pengaturan tidak dikirimkan untuk akun di luar organisasi yang dikelola |

264| Pengguna mengonfigurasi [penyedia model pihak ketiga](#platform-availability) | Pengaturan yang dikelola server dilewati. Ini termasuk pengaturan `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_MANTLE`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, `CLAUDE_CODE_USE_ANTHROPIC_AWS`, atau `ANTHROPIC_BASE_URL` non-default |269| Pengguna mengonfigurasi [penyedia model pihak ketiga](#platform-availability) | Pengaturan yang dikelola server dilewati. Ini termasuk pengaturan `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_MANTLE`, `CLAUDE_CODE_USE_VERTEX`, `CLAUDE_CODE_USE_FOUNDRY`, `CLAUDE_CODE_USE_ANTHROPIC_AWS`, atau `ANTHROPIC_BASE_URL` non-default |

270| Lalu lintas jaringan dicegat atau dialihkan | Validasi TLS yang dinonaktifkan atau lalu lintas yang dicegat dapat mengubah pengaturan yang diterima klien |

265 271 

266Untuk mendeteksi perubahan konfigurasi runtime, gunakan [hook `ConfigChange`](/id/hooks#configchange) untuk mencatat modifikasi atau memblokir perubahan yang tidak sah sebelum berlaku.272Untuk mendeteksi perubahan konfigurasi runtime, gunakan [hook `ConfigChange`](/id/hooks#configchange) untuk mencatat modifikasi atau memblokir perubahan yang tidak sah sebelum berlaku.

267 273 

268Untuk jaminan penegakan yang lebih kuat, gunakan [pengaturan yang dikelola endpoint](/id/settings#settings-files) pada perangkat yang terdaftar dalam solusi MDM.274Untuk membatasi organisasi mana yang dapat diakses pengguna Anda dengan kredensial yang disediakan klien, lihat [Enforce network-level access control with Tenant Restrictions](https://support.claude.com/en/articles/13198485-enforce-network-level-access-control-with-tenant-restrictions) di Claude Help Center. Untuk jaminan penegakan yang lebih kuat, gunakan [pengaturan yang dikelola endpoint](/id/settings#settings-files) pada perangkat yang terdaftar dalam solusi MDM.

269 275 

270<h2 id="see-also">276<h2 id="see-also">

271 Lihat juga277 Lihat juga

sessions.md +8 −2

Details

30 Tempat pemilih sesi mencari30 Tempat pemilih sesi mencari

31</h3>31</h3>

32 32 

33Sesi disimpan per direktori proyek. Secara default, pemilih sesi menampilkan sesi interaktif dari worktree saat ini, ditambah sesi yang dimulai di tempat lain yang menambahkan direktori saat ini dengan `/add-dir`. Dari v2.1.169, memindahkan sesi dengan [`/cd`](/id/commands) memindahkannya ke penyimpanan proyek direktori baru, sehingga muncul di pemilih direktori tersebut setelahnya. Gunakan `Ctrl+W` untuk memperluas ke semua worktree repositori atau `Ctrl+A` untuk memperluas ke setiap proyek di mesin ini.33Sesi disimpan per direktori proyek. Secara default, pemilih sesi menampilkan sesi interaktif dari worktree saat ini, ditambah sesi yang dimulai di tempat lain yang menambahkan direktori saat ini dengan `/add-dir`. Gunakan `Ctrl+W` untuk memperluas ke semua worktree repositori atau `Ctrl+A` untuk memperluas ke setiap proyek di mesin ini.

34 

35Dari v2.1.169, memindahkan sesi dengan [`/cd`](/id/commands) memindahkannya ke penyimpanan proyek direktori baru, sehingga muncul di pemilih direktori tersebut setelahnya. Sejak v2.1.196, sesi yang dipindahkan tetap keluar dari pemilih direktori lama bahkan setelah kerusakan atau keluar paksa. Pada versi sebelumnya, sesi juga dapat muncul kembali di daftar direktori lama setelah keluar yang tidak bersih ketika jalur lama berisi karakter khusus seperti garis bawah.

34 36 

35Memilih sesi dari worktree lain dari repositori yang sama melanjutkannya di tempat. Memilih sesi dari proyek yang tidak terkait menyalin perintah `cd` dan resume ke clipboard Anda.37Memilih sesi dari worktree lain dari repositori yang sama melanjutkannya di tempat. Memilih sesi dari proyek yang tidak terkait menyalin perintah `cd` dan resume ke clipboard Anda.

36 38 


56 58 

57Setelah sesi diberi nama, kembali ke sesi dengan `claude --resume <name>` atau `/resume <name>`. Lihat [Lanjutkan sesi](#resume-a-session) untuk cara resolusi nama berperilaku di seluruh worktrees.59Setelah sesi diberi nama, kembali ke sesi dengan `claude --resume <name>` atau `/resume <name>`. Lihat [Lanjutkan sesi](#resume-a-session) untuk cara resolusi nama berperilaku di seluruh worktrees.

58 60 

61{/* min-version: 2.1.196 */}Sesi interaktif yang tidak pernah Anda beri nama masih mendapatkan nama tampilan default saat dimulai. Memerlukan Claude Code v2.1.196 atau lebih baru. Default menggabungkan nama direktori kerja dengan akhiran dua karakter, misalnya `my-app-3f`, dan mengidentifikasi sesi dalam daftar sesi yang sedang berjalan, seperti [tampilan agen](/id/agent-view) dan output `claude agents --json`.

62 

63Default bukan pegangan resume: `claude --resume <name>`, `/resume <name>`, dan pemilih sesi hanya cocok dengan nama yang Anda tetapkan. Memberi nama sesi menggantikan default.

64 

59<h2 id="use-the-session-picker">65<h2 id="use-the-session-picker">

60 Gunakan pemilih sesi66 Gunakan pemilih sesi

61</h2>67</h2>


117 Ekspor dan temukan data sesi123 Ekspor dan temukan data sesi

118</h2>124</h2>

119 125 

120Jalankan `/export` untuk menyalin percakapan saat ini ke clipboard Anda atau simpan sebagai file teks biasa, dengan pesan dan output alat dirender sebagai teks yang dapat dibaca. Teruskan nama file untuk menulis langsung ke file tersebut.126Jalankan `/export` untuk membuka menu yang memungkinkan Anda menyalin percakapan saat ini ke clipboard atau menyimpannya sebagai file teks biasa, dengan pesan dan output alat dirender sebagai teks yang dapat dibaca. Teruskan nama file untuk melewati menu dan menulis langsung ke file tersebut.

121 127 

122<h3 id="access-conversations-from-scripts">128<h3 id="access-conversations-from-scripts">

123 Akses percakapan dari skrip129 Akses percakapan dari skrip

settings.md +41 −35

Details

12 Cakupan konfigurasi12 Cakupan konfigurasi

13</h2>13</h2>

14 14 

15Claude Code menggunakan **sistem cakupan** untuk menentukan di mana konfigurasi berlaku dan siapa yang membagikannya. Memahami cakupan membantu Anda memutuskan cara mengonfigurasi Claude Code untuk penggunaan pribadi, kolaborasi tim, atau penyebaran perusahaan.15Claude Code menggunakan sistem cakupan untuk menentukan di mana konfigurasi berlaku dan siapa yang membagikannya. Memahami cakupan membantu Anda memutuskan cara mengonfigurasi Claude Code untuk penggunaan pribadi, kolaborasi tim, atau penyebaran perusahaan.

16 16 

17<h3 id="available-scopes">17<h3 id="available-scopes">

18 Cakupan yang tersedia18 Cakupan yang tersedia


59 59 

60Ketika pengaturan yang sama muncul dalam beberapa cakupan, Claude Code menerapkannya dalam urutan prioritas:60Ketika pengaturan yang sama muncul dalam beberapa cakupan, Claude Code menerapkannya dalam urutan prioritas:

61 61 

621. **Managed** (tertinggi) - tidak dapat ditimpa oleh apa pun621. **Managed** (tertinggi): tidak dapat ditimpa oleh apa pun

632. **Argumen baris perintah** - penggantian sesi sementara632. **Argumen baris perintah**: penggantian sesi sementara

643. **Local** - menimpa pengaturan proyek dan pengguna643. **Local**: menimpa pengaturan proyek dan pengguna

654. **Project** - menimpa pengaturan pengguna654. **Project**: menimpa pengaturan pengguna

665. **User** (terendah) - berlaku ketika tidak ada yang menentukan pengaturan665. **User** (terendah): berlaku ketika tidak ada yang menentukan pengaturan

67 67 

68Misalnya, jika pengaturan pengguna Anda menetapkan `spinnerTipsEnabled` ke `true` dan pengaturan proyek menetapkannya ke `false`, nilai proyek berlaku. Aturan izin berperilaku berbeda karena mereka menggabungkan di seluruh cakupan daripada menimpa. Lihat [Preseden pengaturan](#settings-precedence).68Misalnya, jika pengaturan pengguna Anda menetapkan `spinnerTipsEnabled` ke `true` dan pengaturan proyek menetapkannya ke `false`, nilai proyek berlaku. Aturan izin berperilaku berbeda karena mereka menggabungkan di seluruh cakupan daripada menimpa. Lihat [Preseden pengaturan](#settings-precedence).

69 69 


97 * `.claude/settings.local.json` untuk pengaturan yang tidak diperiksa, berguna untuk preferensi pribadi dan eksperimen. Ketika Claude Code membuat `.claude/settings.local.json`, Claude Code mengonfigurasi git untuk mengabaikan file tersebut. Jika Anda membuat file sendiri, tambahkan ke gitignore secara manual.97 * `.claude/settings.local.json` untuk pengaturan yang tidak diperiksa, berguna untuk preferensi pribadi dan eksperimen. Ketika Claude Code membuat `.claude/settings.local.json`, Claude Code mengonfigurasi git untuk mengabaikan file tersebut. Jika Anda membuat file sendiri, tambahkan ke gitignore secara manual.

98* **Pengaturan Managed**: Untuk organisasi yang memerlukan kontrol terpusat, Claude Code mendukung beberapa mekanisme pengiriman untuk pengaturan yang dikelola. Semua menggunakan format JSON yang sama dan tidak dapat ditimpa oleh pengaturan pengguna atau proyek:98* **Pengaturan Managed**: Untuk organisasi yang memerlukan kontrol terpusat, Claude Code mendukung beberapa mekanisme pengiriman untuk pengaturan yang dikelola. Semua menggunakan format JSON yang sama dan tidak dapat ditimpa oleh pengaturan pengguna atau proyek:

99 99 

100 * **Pengaturan yang dikelola server**: dikirimkan dari server Anthropic melalui konsol admin Claude.ai. Lihat [pengaturan yang dikelola server](/id/server-managed-settings).100 * **Pengaturan yang dikelola server**: dikirimkan dari jarak jauh saat sign-in, baik dari server Anthropic melalui konsol admin claude.ai atau dari [Claude apps gateway](/id/claude-apps-gateway) yang di-host sendiri. Lihat [pengaturan yang dikelola server](/id/server-managed-settings).

101 * **Kebijakan tingkat MDM/OS**: dikirimkan melalui manajemen perangkat asli di macOS dan Windows:101 * **Kebijakan tingkat MDM/OS**: dikirimkan melalui manajemen perangkat asli di macOS dan Windows:

102 * macOS: domain preferensi terkelola `com.anthropic.claudecode`. Kunci tingkat atas plist mencerminkan `managed-settings.json`, dengan pengaturan bersarang sebagai kamus dan array sebagai array plist. Terapkan melalui profil konfigurasi di Jamf, Iru (Kandji), atau alat MDM serupa.102 * macOS: domain preferensi terkelola `com.anthropic.claudecode`. Kunci tingkat atas plist mencerminkan `managed-settings.json`, dengan pengaturan bersarang sebagai kamus dan array sebagai array plist. Terapkan melalui profil konfigurasi di Jamf, Iru (Kandji), atau alat MDM serupa.

103 * Windows: kunci registry `HKLM\SOFTWARE\Policies\ClaudeCode` dengan nilai `Settings` (REG\_SZ atau REG\_EXPAND\_SZ) berisi JSON (digunakan melalui Group Policy atau Intune)103 * Windows: kunci registry `HKLM\SOFTWARE\Policies\ClaudeCode` dengan nilai `Settings` (REG\_SZ atau REG\_EXPAND\_SZ) berisi JSON (digunakan melalui Group Policy atau Intune)


120 120 

121 Lihat [pengaturan yang dikelola](/id/permissions#managed-only-settings) dan [Konfigurasi MCP yang Dikelola](/id/managed-mcp) untuk detail.121 Lihat [pengaturan yang dikelola](/id/permissions#managed-only-settings) dan [Konfigurasi MCP yang Dikelola](/id/managed-mcp) untuk detail.

122 122 

123 Repositori [ini](https://github.com/anthropics/claude-code/tree/main/examples/mdm) mencakup template penyebaran pemula untuk Jamf, Iru (Kandji), Intune, dan Group Policy. Gunakan ini sebagai titik awal dan sesuaikan dengan kebutuhan Anda.123 [Repositori](https://github.com/anthropics/claude-code/tree/main/examples/mdm) ini mencakup template penyebaran pemula untuk Jamf, Iru (Kandji), Intune, dan Group Policy. Gunakan ini sebagai titik awal dan sesuaikan dengan kebutuhan Anda.

124 124 

125 <Note>125 <Note>

126 Penyebaran yang dikelola juga dapat membatasi **penambahan marketplace plugin** menggunakan `strictKnownMarketplaces`. Untuk informasi lebih lanjut, lihat [Pembatasan marketplace yang dikelola](/id/plugin-marketplaces#managed-marketplace-restrictions).126 Penyebaran yang dikelola juga dapat membatasi **penambahan marketplace plugin** menggunakan `strictKnownMarketplaces`. Untuk informasi lebih lanjut, lihat [Pembatasan marketplace yang dikelola](/id/plugin-marketplaces#managed-marketplace-restrictions).


229| `autoMemoryDirectory` | Direktori khusus untuk penyimpanan [memori otomatis](/id/memory#storage-location). Menerima jalur absolut atau jalur dengan awalan `~/`. Dari pengaturan proyek atau lokal, ini dihormati hanya setelah Anda menerima dialog kepercayaan workspace, karena repositori yang diklon dapat menyediakan file ini | `"~/my-memory-dir"` |229| `autoMemoryDirectory` | Direktori khusus untuk penyimpanan [memori otomatis](/id/memory#storage-location). Menerima jalur absolut atau jalur dengan awalan `~/`. Dari pengaturan proyek atau lokal, ini dihormati hanya setelah Anda menerima dialog kepercayaan workspace, karena repositori yang diklon dapat menyediakan file ini | `"~/my-memory-dir"` |

230| `autoMemoryEnabled` | **Default**: `true`. Aktifkan [memori otomatis](/id/memory#enable-or-disable-auto-memory). Saat `false`, Claude tidak membaca dari atau menulis ke direktori memori otomatis. Anda juga dapat mengalihkan ini dengan `/memory` selama sesi. Untuk menonaktifkan melalui variabel lingkungan, atur [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](/id/env-vars) dalam `env` | `false` |230| `autoMemoryEnabled` | **Default**: `true`. Aktifkan [memori otomatis](/id/memory#enable-or-disable-auto-memory). Saat `false`, Claude tidak membaca dari atau menulis ke direktori memori otomatis. Anda juga dapat mengalihkan ini dengan `/memory` selama sesi. Untuk menonaktifkan melalui variabel lingkungan, atur [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](/id/env-vars) dalam `env` | `false` |

231| `autoMode` | Sesuaikan apa yang diblokir dan diizinkan oleh pengklasifikasi [mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode). Berisi array aturan prosa `environment`, `allow`, `soft_deny`, dan `hard_deny`. Sertakan string literal `"$defaults"` dalam array untuk mewarisi aturan bawaan pada posisi tersebut. Lihat [Konfigurasikan mode otomatis](/id/auto-mode-config). Tidak dibaca dari pengaturan proyek bersama | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |231| `autoMode` | Sesuaikan apa yang diblokir dan diizinkan oleh pengklasifikasi [mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode). Berisi array aturan prosa `environment`, `allow`, `soft_deny`, dan `hard_deny`. Sertakan string literal `"$defaults"` dalam array untuk mewarisi aturan bawaan pada posisi tersebut. Lihat [Konfigurasikan mode otomatis](/id/auto-mode-config). Tidak dibaca dari pengaturan proyek bersama | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |

232| `autoMode.classifyAllShell` | {/* min-version: 2.1.193 */}**Default**: `false`. Saat `true`, menangguhkan setiap aturan allow Bash dan PowerShell saat mode otomatis aktif sehingga semua perintah shell merutekan melalui pengklasifikasi, bukan hanya aturan yang cocok dengan pola eksekusi kode arbitrer. Lihat [Rutekan semua perintah shell melalui pengklasifikasi](/id/auto-mode-config#route-all-shell-commands-through-the-classifier). Memerlukan Claude Code v2.1.193 atau lebih baru | `true` |

232| `autoScrollEnabled` | **Default**: `true`. Dalam [rendering fullscreen](/id/fullscreen), ikuti output baru ke bagian bawah percakapan. Muncul di `/config` sebagai **Auto-scroll**. Prompt izin masih bergulir ke tampilan saat ini dimatikan | `false` |233| `autoScrollEnabled` | **Default**: `true`. Dalam [rendering fullscreen](/id/fullscreen), ikuti output baru ke bagian bawah percakapan. Muncul di `/config` sebagai **Auto-scroll**. Prompt izin masih bergulir ke tampilan saat ini dimatikan | `false` |

233| `autoUpdatesChannel` | **Default**: `"latest"`. Saluran rilis untuk diikuti untuk pembaruan. Gunakan `"stable"` untuk versi yang biasanya sekitar satu minggu lama dan melewati versi dengan regresi besar, atau `"latest"` untuk rilis terbaru. Untuk menonaktifkan auto-updates sepenuhnya, atur [`DISABLE_AUTOUPDATER`](/id/setup#disable-auto-updates) dalam `env` | `"stable"` |234| `autoUpdatesChannel` | **Default**: `"latest"`. Saluran rilis untuk diikuti untuk pembaruan. Gunakan `"stable"` untuk versi yang biasanya sekitar satu minggu lama dan melewati versi dengan regresi besar, atau `"latest"` untuk rilis terbaru. Untuk menonaktifkan auto-updates sepenuhnya, atur [`DISABLE_AUTOUPDATER`](/id/setup#disable-auto-updates) dalam `env` | `"stable"` |

234| `availableModels` | Batasi model mana yang dapat dipilih pengguna untuk sesi utama, [subagents](/id/sub-agents), [skills](/id/skills), dan [advisor](/id/advisor). Tidak mempengaruhi opsi Default kecuali `enforceAvailableModels` juga diatur. Lihat [Batasi pemilihan model](/id/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |235| `availableModels` | Batasi model mana yang dapat dipilih pengguna untuk sesi utama, [subagents](/id/sub-agents), [skills](/id/skills), dan [advisor](/id/advisor). Tidak mempengaruhi opsi Default kecuali `enforceAvailableModels` juga diatur. Lihat [Batasi pemilihan model](/id/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |


253| `disableDeepLinkRegistration` | Atur ke `"disable"` untuk mencegah Claude Code mendaftarkan penanganan protokol `claude-cli://` dengan sistem operasi saat startup. [Deep links](/id/deep-links) memungkinkan tools eksternal membuka sesi Claude Code dengan prompt yang sudah diisi sebelumnya. Berguna di lingkungan di mana pendaftaran penanganan protokol dibatasi atau dikelola secara terpisah | `"disable"` |254| `disableDeepLinkRegistration` | Atur ke `"disable"` untuk mencegah Claude Code mendaftarkan penanganan protokol `claude-cli://` dengan sistem operasi saat startup. [Deep links](/id/deep-links) memungkinkan tools eksternal membuka sesi Claude Code dengan prompt yang sudah diisi sebelumnya. Berguna di lingkungan di mana pendaftaran penanganan protokol dibatasi atau dikelola secara terpisah | `"disable"` |

254| `disabledMcpjsonServers` | Daftar MCP servers spesifik dari file `.mcp.json` untuk menolak | `["filesystem"]` |255| `disabledMcpjsonServers` | Daftar MCP servers spesifik dari file `.mcp.json` untuk menolak | `["filesystem"]` |

255| `disableRemoteControl` | {/* min-version: 2.1.128 */}Nonaktifkan [Remote Control](/id/remote-control): memblokir `claude remote-control`, flag `--remote-control`, auto-start, dan toggle dalam sesi. Biasanya ditempatkan dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk penegakan MDM per-perangkat, tetapi berfungsi dari cakupan apa pun. Memerlukan Claude Code v2.1.128 atau lebih baru | `true` |256| `disableRemoteControl` | {/* min-version: 2.1.128 */}Nonaktifkan [Remote Control](/id/remote-control): memblokir `claude remote-control`, flag `--remote-control`, auto-start, dan toggle dalam sesi. Biasanya ditempatkan dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk penegakan MDM per-perangkat, tetapi berfungsi dari cakupan apa pun. Memerlukan Claude Code v2.1.128 atau lebih baru | `true` |

257| `disableSideloadFlags` | {/* min-version: 2.1.193 */}(Pengaturan yang dikelola saja) Tolak flag CLI `--plugin-dir`, `--plugin-url`, `--agents`, dan `--mcp-config` saat startup, yang pengguna dapat lewatkan untuk melewati [`strictKnownMarketplaces`](#strictknownmarketplaces) untuk satu run. Juga menolak flag ini dari permukaan apa pun yang meluncurkan CLI dengan mereka secara internal, saat ini [Cowork](/id/desktop) sesi lokal di aplikasi desktop. `--mcp-config` yang servers-nya semuanya entri `type: "sdk"` dalam proses masih diterima, jadi Agent SDK dan ekstensi VS Code tetap bekerja. Tidak memblokir `claude mcp add`, `.mcp.json`, atau SDK `setMcpServers()`; pasangkan dengan [`allowedMcpServers`](/id/managed-mcp) untuk kontrol MCP per-server. Memerlukan Claude Code v2.1.193 atau lebih baru | `true` |

256| `disableSkillShellExecution` | Nonaktifkan eksekusi shell inline untuk blok `` !`...` `` dan ` ```! ` dalam [skills](/id/skills) dan perintah khusus dari sumber pengguna, proyek, plugin, atau direktori tambahan. Perintah diganti dengan `[shell command execution disabled by policy]` daripada dijalankan. Skills bundel dan yang dikelola tidak terpengaruh. Paling berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) di mana pengguna tidak dapat menimpanya | `true` |258| `disableSkillShellExecution` | Nonaktifkan eksekusi shell inline untuk blok `` !`...` `` dan ` ```! ` dalam [skills](/id/skills) dan perintah khusus dari sumber pengguna, proyek, plugin, atau direktori tambahan. Perintah diganti dengan `[shell command execution disabled by policy]` daripada dijalankan. Skills bundel dan yang dikelola tidak terpengaruh. Paling berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) di mana pengguna tidak dapat menimpanya | `true` |

257| `disableWorkflows` | **Default**: `false`. Nonaktifkan [dynamic workflows](/id/workflows#turn-workflows-off) dan perintah workflow bundel. Setara dengan pengaturan `CLAUDE_CODE_DISABLE_WORKFLOWS` ke `1` | `true` |259| `disableWorkflows` | **Default**: `false`. Nonaktifkan [dynamic workflows](/id/workflows#turn-workflows-off) dan perintah workflow bundel. Setara dengan pengaturan `CLAUDE_CODE_DISABLE_WORKFLOWS` ke `1` | `true` |

258| `editorMode` | **Default**: `"normal"`. Mode binding kunci untuk prompt input: `"normal"` atau `"vim"`. Muncul di `/config` sebagai **Editor mode** | `"vim"` |260| `editorMode` | **Default**: `"normal"`. Mode binding kunci untuk prompt input: `"normal"` atau `"vim"`. Muncul di `/config` sebagai **Editor mode** | `"vim"` |

259| `effortLevel` | Pertahankan [tingkat usaha](/id/model-config#adjust-effort-level) di seluruh sesi. Menerima `"low"`, `"medium"`, `"high"`, atau `"xhigh"`. Ditulis secara otomatis saat Anda menjalankan `/effort` dengan salah satu nilai tersebut. `--effort` dan [`CLAUDE_CODE_EFFORT_LEVEL`](/id/env-vars) menimpa ini untuk satu sesi. Lihat [Sesuaikan tingkat usaha](/id/model-config#adjust-effort-level) untuk model yang didukung | `"xhigh"` |261| `effortLevel` | Pertahankan [tingkat usaha](/id/model-config#adjust-effort-level) di seluruh sesi. Menerima `"low"`, `"medium"`, `"high"`, atau `"xhigh"`. Ditulis secara otomatis saat Anda menjalankan `/effort` dengan salah satu nilai tersebut. `--effort` dan [`CLAUDE_CODE_EFFORT_LEVEL`](/id/env-vars) menimpa ini untuk satu sesi. Lihat [Sesuaikan tingkat usaha](/id/model-config#adjust-effort-level) untuk model yang didukung | `"xhigh"` |

260| `enableAllProjectMcpServers` | Secara otomatis menyetujui semua MCP servers yang ditentukan dalam file `.mcp.json` proyek | `true` |262| `enableAllProjectMcpServers` | Secara otomatis menyetujui semua MCP servers yang ditentukan dalam file `.mcp.json` proyek. {/* min-version: 2.1.196 */}Sejak v2.1.196, `claude mcp list` dan `claude mcp get` menghormati kunci ini dalam folder yang tidak terpercaya hanya dari [file pengaturan yang tidak diperiksa ke dalam repositori](/id/mcp#managing-your-servers) | `true` |

261| `enabledMcpjsonServers` | Daftar MCP servers spesifik dari file `.mcp.json` untuk menyetujui | `["memory", "github"]` |263| `enableArtifact` | {/* min-version: 2.1.196 */}Aktifkan atau nonaktifkan tool [Artifact](/id/artifacts) untuk pengguna ini. Saat tidak diatur, default mengikuti [ketersediaan](/id/artifacts#availability) fitur untuk akun Anda. Baris **Artifacts** di `/config` menulis kunci ini. `disableArtifact` yang dikelola dan [pengaturan admin](/id/artifacts#manage-artifacts-for-your-organization) organisasi Anda memiliki prioritas, dan kunci diabaikan dalam pengaturan proyek dan lokal (`.claude/settings.json`, `.claude/settings.local.json`), yang repositori dapat diperiksa. Memerlukan Claude Code v2.1.196 atau lebih baru | `true` |

262| `enforceAvailableModels` | {/* min-version: 2.1.175 */}Perluas daftar putih `availableModels` ke model Default. Saat `true` dalam pengaturan yang dikelola dan `availableModels` adalah array non-kosong, opsi Default kembali ke entri yang diizinkan pertama yang tersedia. Tidak berpengaruh saat `availableModels` tidak diatur atau kosong. Lihat [Paksakan daftar putih untuk model Default](/id/model-config#enforce-the-allowlist-for-the-default-model). Memerlukan Claude Code v2.1.175 atau lebih baru | `true` |264| `enabledMcpjsonServers` | Daftar MCP servers spesifik dari file `.mcp.json` untuk menyetujui. {/* min-version: 2.1.196 */}Sejak v2.1.196, `claude mcp list` dan `claude mcp get` menghormati kunci ini dalam folder yang tidak terpercaya hanya dari [file pengaturan yang tidak diperiksa ke dalam repositori](/id/mcp#managing-your-servers) | `["memory", "github"]` |

263| `env` | Variabel lingkungan yang diterapkan ke setiap sesi dan ke subprocess yang Claude Code luncurkan darinya. {/* min-version: 2.1.143 */}Sejak v2.1.143, `NO_COLOR` dan `FORCE_COLOR` yang diatur di sini dilewatkan ke subprocess tetapi tidak mengubah warna antarmuka Claude Code sendiri. Atur ini di shell Anda sebelum meluncurkan `claude` untuk mengubah warna antarmuka | `{"FOO": "bar"}` |265| `enforceAvailableModels` | {/* min-version: 2.1.175 */}Perluas daftar putih `availableModels` ke model Default. Saat `true` dalam pengaturan yang dikelola dan `availableModels` adalah array non-kosong, opsi Default kembali ke entri yang diizinkan pertama yang tersedia, tetapi hanya ketika model default untuk tipe akun pengguna tidak ada dalam daftar putih; default yang diizinkan disimpan sebagainya. Tidak berpengaruh saat `availableModels` tidak diatur atau kosong. Lihat [Paksakan daftar putih untuk model Default](/id/model-config#enforce-the-allowlist-for-the-default-model). Memerlukan Claude Code v2.1.175 atau lebih baru | `true` |

264| `fallbackModel` | Model fallback untuk dicoba secara berurutan ketika model utama kelebihan beban atau tidak tersedia. Claude Code beralih ke model berikutnya yang tersedia dalam rantai untuk sisa giliran dan menampilkan pemberitahuan. `"default"` berkembang menjadi model default. Rantai dibatasi pada tiga model; entri ekstra diabaikan. Tidak seperti sebagian besar pengaturan array, kunci ini tidak digabungkan di seluruh file pengaturan: file dengan prioritas tertinggi yang mendefinisikannya memasok seluruh rantai. Flag [`--fallback-model`](/id/cli-reference#cli-flags) menimpa ini untuk satu sesi. Lihat [Fallback model chains](/id/model-config#fallback-model-chains) | `["claude-sonnet-4-6", "claude-haiku-4-5"]` |266| `env` | Variabel lingkungan yang diterapkan ke setiap sesi dan ke subprocess yang Claude Code luncurkan darinya. {/* min-version: 2.1.143 */}Sejak v2.1.143, `NO_COLOR` dan `FORCE_COLOR` yang diatur di sini dilewatkan ke subprocess tetapi tidak mengubah warna antarmuka Claude Code sendiri. Atur ini di shell Anda sebelum meluncurkan `claude` untuk mengubah warna antarmuka. {/* min-version: 2.1.195 */}Sejak v2.1.195, variabel identitas yang lingkungan hosting Claude Code atur, misalnya `CLAUDE_CODE_REMOTE` dan `CLAUDE_CODE_ACCOUNT_UUID`, diabaikan saat diatur di sini | `{"FOO": "bar"}` |

267| `fallbackModel` | Model fallback untuk dicoba secara berurutan ketika model utama kelebihan beban atau tidak tersedia. Claude Code beralih ke model berikutnya yang tersedia dalam rantai untuk sisa giliran dan menampilkan pemberitahuan. `"default"` berkembang menjadi model default. Rantai dibatasi pada tiga model; entri ekstra diabaikan. Tidak seperti sebagian besar pengaturan array, kunci ini tidak digabungkan di seluruh file pengaturan: file dengan prioritas tertinggi yang mendefinisikannya memasok seluruh rantai. Flag [`--fallback-model`](/id/cli-reference#cli-flags) menimpa ini untuk satu sesi. Lihat [Fallback model chains](/id/model-config#fallback-model-chains) | `["claude-sonnet-5", "claude-haiku-4-5"]` |

265| `fastModePerSessionOptIn` | Saat `true`, mode cepat tidak bertahan di seluruh sesi. Setiap sesi dimulai dengan mode cepat mati, memerlukan pengguna untuk mengaktifkannya dengan `/fast`. Preferensi mode cepat pengguna masih disimpan. Lihat [Memerlukan opt-in per sesi](/id/fast-mode#require-per-session-opt-in) | `true` |268| `fastModePerSessionOptIn` | Saat `true`, mode cepat tidak bertahan di seluruh sesi. Setiap sesi dimulai dengan mode cepat mati, memerlukan pengguna untuk mengaktifkannya dengan `/fast`. Preferensi mode cepat pengguna masih disimpan. Lihat [Memerlukan opt-in per sesi](/id/fast-mode#require-per-session-opt-in) | `true` |

266| `feedbackSurveyRate` | Probabilitas (0–1) bahwa [survei kualitas sesi](/id/data-usage#session-quality-surveys) muncul saat memenuhi syarat. Atur ke `0` untuk menekan sepenuhnya, atau atur [`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY`](/id/env-vars) dalam `env`. Berguna saat menggunakan Bedrock, Vertex, atau Foundry di mana tingkat sampel default tidak berlaku | `0.05` |269| `feedbackSurveyRate` | Probabilitas (0–1) bahwa [survei kualitas sesi](/id/data-usage#session-quality-surveys) muncul saat memenuhi syarat. Atur ke `0` untuk menekan sepenuhnya, atau atur [`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY`](/id/env-vars) dalam `env`. Berguna saat menggunakan Bedrock, Vertex, atau Foundry di mana tingkat sampel default tidak berlaku | `0.05` |

267| `fileCheckpointingEnabled` | {/* min-version: 2.1.119 */}**Default**: `true`. Snapshot file sebelum setiap edit sehingga [`/rewind`](/id/checkpointing) dapat memulihkannya. Muncul di `/config` sebagai **Rewind code (checkpoints)**. Untuk menonaktifkan melalui variabel lingkungan, atur [`CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING`](/id/env-vars) dalam `env` | `false` |270| `fileCheckpointingEnabled` | {/* min-version: 2.1.119 */}**Default**: `true`. Snapshot file sebelum setiap edit sehingga [`/rewind`](/id/checkpointing) dapat memulihkannya. Muncul di `/config` sebagai **Rewind code (checkpoints)**. Untuk menonaktifkan melalui variabel lingkungan, atur [`CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING`](/id/env-vars) dalam `env` | `false` |

268| `fileSuggestion` | Konfigurasikan skrip khusus untuk pelengkapan otomatis file `@`. Lihat [Pengaturan saran file](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |271| `fileSuggestion` | Konfigurasikan skrip khusus untuk pelengkapan otomatis file `@`. Lihat [Pengaturan saran file](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |

269| `footerLinksRegexes` | {/* min-version: 2.1.176 */}Render lencana yang dapat diklik tambahan di footer saat regex cocok dengan output giliran. Setiap entri memiliki `pattern`, template `url` dengan placeholder `{name}` yang diisi dari grup penangkapan bernama, dan `label` opsional. Dibaca dari pengaturan pengguna, flag `--settings`, dan pengaturan yang dikelola saja. Lihat [Footer link badges](#footer-link-badges) untuk batasan URL, daftar skema yang diizinkan, dan batas. Memerlukan Claude Code v2.1.176 atau lebih baru | `[{"type": "regex", "pattern": "\\b(?<key>PROJ-\\d+)\\b", "url": "https://issues.example.com/browse/{key}", "label": "{key}"}]` |272| `footerLinksRegexes` | {/* min-version: 2.1.176 */}Render lencana yang dapat diklik tambahan di footer saat regex cocok dengan output giliran. Setiap entri memiliki `pattern`, template `url` dengan placeholder `{name}` yang diisi dari grup penangkapan bernama, dan `label` opsional. Dibaca dari pengaturan pengguna, flag `--settings`, dan pengaturan yang dikelola saja. Lihat [Footer link badges](#footer-link-badges) untuk batasan URL, daftar skema yang diizinkan, dan batas. Memerlukan Claude Code v2.1.176 atau lebih baru | `[{"type": "regex", "pattern": "\\b(?<key>PROJ-\\d+)\\b", "url": "https://issues.example.com/browse/{key}", "label": "{key}"}]` |

270| `forceLoginMethod` | Gunakan `claudeai` untuk membatasi login ke akun Claude.ai, `console` untuk membatasi login ke akun Claude Console. Saat diatur dalam pengaturan yang dikelola, sesi yang diautentikasi oleh `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` diblokir saat startup, karena tidak ada nilai yang dapat dipenuhi tanpa OAuth pihak pertama. Sesi penyedia pihak ketiga seperti Bedrock, Vertex, dan Foundry tidak diblokir: mereka mengautentikasi terhadap penyedia cloud Anda daripada Anthropic | `claudeai` |273| `forceLoginMethod` | Gunakan `claudeai` untuk membatasi login ke akun Claude.ai, `console` untuk membatasi login ke akun Claude Console, atau `gateway` untuk membatasi login ke cloud gateway; lihat [Claude apps gateway](/id/claude-apps-gateway). Saat diatur dalam pengaturan yang dikelola, sesi yang diautentikasi oleh `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` diblokir saat startup, karena kredensial lingkungan tidak dapat memenuhi metode login yang diperlukan. Sesi penyedia pihak ketiga seperti Bedrock, Vertex, dan Foundry tidak diblokir: mereka mengautentikasi terhadap penyedia cloud Anda daripada Anthropic | `claudeai` |

274| `forceLoginGatewayUrl` | Pra-isi dan kunci URL gateway pada layar Cloud gateway `/login`. Baik kunci ini atau `forceLoginMethod: "gateway"` menampilkan layar itu; atur keduanya sehingga URL diisi. Dihormati hanya di tingkat kebijakan yang dikelola; diabaikan dalam pengaturan pengguna dan proyek. Lihat [Claude apps gateway](/id/claude-apps-gateway#set-the-gateway-url) | `"https://claude-gateway.example.com"` |

271| `forceLoginOrgUUID` | Memerlukan login untuk milik organisasi Anthropic tertentu. Menerima string UUID tunggal, yang juga pra-memilih organisasi tersebut selama login, atau array UUID di mana organisasi yang terdaftar apa pun diterima tanpa pra-pemilihan. Saat diatur dalam pengaturan yang dikelola, login gagal jika akun yang diautentikasi tidak milik organisasi yang terdaftar, dan sesi yang diautentikasi oleh `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` diblokir saat startup karena keanggotaan organisasi tidak dapat diverifikasi untuk mereka. Sesi penyedia pihak ketiga seperti Bedrock, Vertex, dan Foundry tidak diblokir: gunakan IAM cloud Anda untuk membatasi akun cloud mana yang dapat digunakan. Array kosong gagal tertutup dan memblokir login dengan pesan salah konfigurasi | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` atau `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |275| `forceLoginOrgUUID` | Memerlukan login untuk milik organisasi Anthropic tertentu. Menerima string UUID tunggal, yang juga pra-memilih organisasi tersebut selama login, atau array UUID di mana organisasi yang terdaftar apa pun diterima tanpa pra-pemilihan. Saat diatur dalam pengaturan yang dikelola, login gagal jika akun yang diautentikasi tidak milik organisasi yang terdaftar, dan sesi yang diautentikasi oleh `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` diblokir saat startup karena keanggotaan organisasi tidak dapat diverifikasi untuk mereka. Sesi penyedia pihak ketiga seperti Bedrock, Vertex, dan Foundry tidak diblokir: gunakan IAM cloud Anda untuk membatasi akun cloud mana yang dapat digunakan. Array kosong gagal tertutup dan memblokir login dengan pesan salah konfigurasi | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` atau `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |

272| `forceRemoteSettingsRefresh` | (Pengaturan yang dikelola saja) Blokir startup CLI sampai pengaturan yang dikelola jarak jauh segar diambil dari server. Jika pengambilan gagal, CLI keluar daripada melanjutkan dengan pengaturan yang di-cache atau tidak ada. Saat tidak diatur, startup berlanjut tanpa menunggu pengaturan jarak jauh. Lihat [penegakan fail-closed](/id/server-managed-settings#enforce-fail-closed-startup) | `true` |276| `forceRemoteSettingsRefresh` | (Pengaturan yang dikelola saja) Blokir startup CLI sampai pengaturan yang dikelola jarak jauh segar diambil dari server. Jika pengambilan gagal, CLI keluar daripada melanjutkan dengan pengaturan yang di-cache atau tidak ada. Saat tidak diatur, startup berlanjut tanpa menunggu pengaturan jarak jauh. Lihat [penegakan fail-closed](/id/server-managed-settings#enforce-fail-closed-startup) | `true` |

273| `gcpAuthRefresh` | Skrip khusus yang menyegarkan GCP Application Default Credentials saat kedaluwarsa atau tidak dapat dimuat. Lihat [konfigurasi kredensial lanjutan](/id/google-vertex-ai#advanced-credential-configuration) | `gcloud auth application-default login` |277| `gcpAuthRefresh` | Skrip khusus yang menyegarkan GCP Application Default Credentials saat kedaluwarsa atau tidak dapat dimuat. Lihat [konfigurasi kredensial lanjutan](/id/google-vertex-ai#advanced-credential-configuration) | `gcloud auth application-default login` |


276| `includeGitInstructions` | **Default**: `true`. Sertakan instruksi alur kerja komit dan PR bawaan dan snapshot status git dalam prompt sistem Claude. Atur ke `false` untuk menghapus keduanya, misalnya saat menggunakan skills alur kerja git Anda sendiri. Variabel lingkungan `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` memiliki prioritas atas pengaturan ini saat diatur | `false` |280| `includeGitInstructions` | **Default**: `true`. Sertakan instruksi alur kerja komit dan PR bawaan dan snapshot status git dalam prompt sistem Claude. Atur ke `false` untuk menghapus keduanya, misalnya saat menggunakan skills alur kerja git Anda sendiri. Variabel lingkungan `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` memiliki prioritas atas pengaturan ini saat diatur | `false` |

277| `inputNeededNotifEnabled` | {/* min-version: 2.1.119 */}**Default**: `false`. Ketika [Remote Control](/id/remote-control) terhubung, kirim notifikasi push ke ponsel Anda ketika prompt izin atau pertanyaan menunggu input Anda. Muncul di `/config` sebagai **Push when actions required**. Lihat [Mobile push notifications](/id/remote-control#mobile-push-notifications). Memerlukan Claude Code v2.1.119 atau lebih baru | `true` |281| `inputNeededNotifEnabled` | {/* min-version: 2.1.119 */}**Default**: `false`. Ketika [Remote Control](/id/remote-control) terhubung, kirim notifikasi push ke ponsel Anda ketika prompt izin atau pertanyaan menunggu input Anda. Muncul di `/config` sebagai **Push when actions required**. Lihat [Mobile push notifications](/id/remote-control#mobile-push-notifications). Memerlukan Claude Code v2.1.119 atau lebih baru | `true` |

278| `language` | Konfigurasikan bahasa respons pilihan Claude (misalnya, `"japanese"`, `"spanish"`, `"french"`). Claude akan merespons dalam bahasa ini secara default. Juga menetapkan bahasa [voice dictation](/id/voice-dictation#change-the-dictation-language) dan judul sesi yang dibuat secara otomatis. {/* min-version: 2.1.176 */}Sejak v2.1.176, saat tidak diatur, judul sesi cocok dengan bahasa percakapan Anda | `"japanese"` |282| `language` | Konfigurasikan bahasa respons pilihan Claude (misalnya, `"japanese"`, `"spanish"`, `"french"`). Claude akan merespons dalam bahasa ini secara default. Juga menetapkan bahasa [voice dictation](/id/voice-dictation#change-the-dictation-language) dan judul sesi yang dibuat secara otomatis. {/* min-version: 2.1.176 */}Sejak v2.1.176, saat tidak diatur, judul sesi cocok dengan bahasa percakapan Anda | `"japanese"` |

279| `maxSkillDescriptionChars` | {/* min-version: 2.1.105 */}**Default**: `1536`. Batas karakter per-skill pada teks `description` dan `when_to_use` gabungan dalam [skill listing](/id/skills#skill-descriptions-are-cut-short) yang Claude lihat setiap giliran. Teks yang lebih panjang dari ini dipotong. Naikkan untuk menjaga deskripsi panjang tetap utuh dengan biaya lebih banyak konteks per giliran; turunkan untuk menyesuaikan lebih banyak skills di bawah [`skillListingBudgetFraction`](#available-settings). Memerlukan Claude Code v2.1.105 atau lebih baru | `2048` |

280| `minimumVersion` | Lantai yang mencegah auto-updates latar belakang dan `claude update` dari menginstal versi di bawah ini. Beralih dari saluran `"latest"` ke `"stable"` melalui `/config` meminta Anda untuk tetap pada versi saat ini atau memungkinkan downgrade. Memilih untuk tetap menetapkan nilai ini. Juga berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk menyematkan minimum di seluruh organisasi. Untuk lantai keras yang memblokir startup sepenuhnya, lihat `requiredMinimumVersion` | `"2.1.100"` |283| `minimumVersion` | Lantai yang mencegah auto-updates latar belakang dan `claude update` dari menginstal versi di bawah ini. Beralih dari saluran `"latest"` ke `"stable"` melalui `/config` meminta Anda untuk tetap pada versi saat ini atau memungkinkan downgrade. Memilih untuk tetap menetapkan nilai ini. Juga berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk menyematkan minimum di seluruh organisasi. Untuk lantai keras yang memblokir startup sepenuhnya, lihat `requiredMinimumVersion` | `"2.1.100"` |

281| `model` | Timpa model default untuk digunakan untuk Claude Code. `--model` dan [`ANTHROPIC_MODEL`](/id/model-config#environment-variables) menimpa ini untuk satu sesi | `"claude-sonnet-4-6"` |284| `model` | Timpa model default untuk digunakan untuk Claude Code. `--model` dan [`ANTHROPIC_MODEL`](/id/model-config#environment-variables) menimpa ini untuk satu sesi | `"claude-sonnet-5"` |

282| `modelOverrides` | Peta ID model Anthropic ke ID model spesifik penyedia seperti ARN profil inferensi Bedrock. Setiap entri pemilih model menggunakan nilai yang dipetakan saat memanggil API penyedia. Lihat [Timpa ID model per versi](/id/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |285| `modelOverrides` | Peta ID model Anthropic ke ID model spesifik penyedia seperti ARN profil inferensi Bedrock. Setiap entri pemilih model menggunakan nilai yang dipetakan saat memanggil API penyedia. Lihat [Timpa ID model per versi](/id/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |

283| `otelHeadersHelper` | Skrip untuk menghasilkan header OpenTelemetry dinamis. Berjalan saat startup dan secara berkala. Atur interval penyegaran dengan [`CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`](/id/env-vars). Lihat [Header dinamis](/id/monitoring-usage#dynamic-headers) | `/bin/generate_otel_headers.sh` |286| `otelHeadersHelper` | Skrip untuk menghasilkan header OpenTelemetry dinamis. Berjalan saat startup dan secara berkala. Atur interval penyegaran dengan [`CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`](/id/env-vars). Lihat [Header dinamis](/id/monitoring-usage#dynamic-headers) | `/bin/generate_otel_headers.sh` |

284| `outputStyle` | Konfigurasikan gaya output untuk menyesuaikan prompt sistem. Lihat [dokumentasi gaya output](/id/output-styles) | `"Explanatory"` |287| `outputStyle` | Konfigurasikan gaya output untuk menyesuaikan prompt sistem. Lihat [dokumentasi gaya output](/id/output-styles) | `"Explanatory"` |


292| `prefersReducedMotion` | Kurangi atau nonaktifkan animasi UI (spinners, shimmer, efek flash) untuk aksesibilitas | `true` |295| `prefersReducedMotion` | Kurangi atau nonaktifkan animasi UI (spinners, shimmer, efek flash) untuk aksesibilitas | `true` |

293| `prUrlTemplate` | Template URL untuk lencana PR yang ditampilkan di footer dan dalam ringkasan hasil tool. Mengganti `{host}`, `{owner}`, `{repo}`, `{number}`, dan `{url}` dari URL PR yang dilaporkan `gh`. Gunakan untuk mengarahkan tautan PR ke alat review kode internal daripada `github.com`. Tidak mempengaruhi autolinks `#123` dalam prosa Claude | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |296| `prUrlTemplate` | Template URL untuk lencana PR yang ditampilkan di footer dan dalam ringkasan hasil tool. Mengganti `{host}`, `{owner}`, `{repo}`, `{number}`, dan `{url}` dari URL PR yang dilaporkan `gh`. Gunakan untuk mengarahkan tautan PR ke alat review kode internal daripada `github.com`. Tidak mempengaruhi autolinks `#123` dalam prosa Claude | `"https://reviews.example.com/{owner}/{repo}/pull/{number}"` |

294| `remoteControlAtStartup` | {/* min-version: 2.1.119 */}Hubungkan [Remote Control](/id/remote-control) secara otomatis saat setiap sesi interaktif dimulai, daripada menunggu `/remote-control`. Atur ke `true` untuk selalu auto-connect, `false` untuk tidak pernah auto-connect, atau biarkan tidak diatur untuk mengikuti default organisasi Anda. Muncul di `/config` sebagai **Enable Remote Control for all sessions**. Lihat [Enable Remote Control for all sessions](/id/remote-control#enable-remote-control-for-all-sessions) | `false` |297| `remoteControlAtStartup` | {/* min-version: 2.1.119 */}Hubungkan [Remote Control](/id/remote-control) secara otomatis saat setiap sesi interaktif dimulai, daripada menunggu `/remote-control`. Atur ke `true` untuk selalu auto-connect, `false` untuk tidak pernah auto-connect, atau biarkan tidak diatur untuk mengikuti default organisasi Anda. Muncul di `/config` sebagai **Enable Remote Control for all sessions**. Lihat [Enable Remote Control for all sessions](/id/remote-control#enable-remote-control-for-all-sessions) | `false` |

295| `respondToBashCommands` | {/* min-version: 2.1.186 */}Apakah Claude merespons setelah perintah shell input-box `!` berjalan. Atur ke `false` untuk menambahkan output perintah ke konteks tanpa respons. Default: `true`. Lihat [Shell mode with `!` prefix](/id/interactive-mode#shell-mode-with-prefix). Memerlukan Claude Code v2.1.186 atau lebih baru | `false` |

296| `requiredMaximumVersion` | Pengaturan yang dikelola saja. Versi Claude Code maksimum yang diizinkan untuk memulai. Jika versi yang sedang berjalan lebih baru, Claude Code keluar saat startup dan menginstruksikan pengguna untuk menginstal versi yang disetujui melalui metode yang disetujui organisasi; `claude install <version>` juga dapat berfungsi. Auto-updates latar belakang dan `claude update` melewati versi di atas batas, jadi instalasi dalam jangkauan tetap dalam jangkauan. `claude update`, `claude install`, dan `claude doctor` terus bekerja di atas batas sehingga pengguna dapat pulih. Versi yang mendahului pengaturan ini mengabaikannya | `"2.1.150"` |298| `requiredMaximumVersion` | Pengaturan yang dikelola saja. Versi Claude Code maksimum yang diizinkan untuk memulai. Jika versi yang sedang berjalan lebih baru, Claude Code keluar saat startup dan menginstruksikan pengguna untuk menginstal versi yang disetujui melalui metode yang disetujui organisasi; `claude install <version>` juga dapat berfungsi. Auto-updates latar belakang dan `claude update` melewati versi di atas batas, jadi instalasi dalam jangkauan tetap dalam jangkauan. `claude update`, `claude install`, dan `claude doctor` terus bekerja di atas batas sehingga pengguna dapat pulih. Versi yang mendahului pengaturan ini mengabaikannya | `"2.1.150"` |

299| `requiredMinimumVersion` | Pengaturan yang dikelola saja. Versi Claude Code minimum yang diperlukan untuk memulai. Jika versi yang sedang berjalan lebih lama, Claude Code keluar saat startup dan menginstruksikan pengguna untuk memperbarui melalui metode yang disetujui organisasi. `claude update`, `claude install`, dan `claude doctor` terus bekerja di bawah lantai sehingga pengguna dapat pulih. Berbeda dari `minimumVersion`, yang mencegah downgrade tetapi tidak pernah memblokir startup. Versi yang mendahului pengaturan ini mengabaikannya | `"2.1.150"` |

297| `respectGitignore` | **Default**: `true`. Kontrol apakah pemilih file `@` menghormati pola `.gitignore`. Saat `true`, file yang cocok dengan pola `.gitignore` dikecualikan dari saran | `false` |300| `respectGitignore` | **Default**: `true`. Kontrol apakah pemilih file `@` menghormati pola `.gitignore`. Saat `true`, file yang cocok dengan pola `.gitignore` dikecualikan dari saran | `false` |

298| `respondToBashCommands` | {/* min-version: 2.1.186 */}**Default**: `true`. Apakah Claude merespons setelah perintah shell input-box `!` berjalan. Atur ke `false` untuk menambahkan output perintah ke konteks tanpa respons. Lihat [Shell mode with `!` prefix](/id/interactive-mode#shell-mode-with-prefix). Memerlukan Claude Code v2.1.186 atau lebih baru | `false` |301| `respondToBashCommands` | {/* min-version: 2.1.186 */}**Default**: `true`. Apakah Claude merespons setelah perintah shell input-box `!` berjalan. Atur ke `false` untuk menambahkan output perintah ke konteks tanpa respons. Lihat [Shell mode with `!` prefix](/id/interactive-mode#shell-mode-with-prefix). Memerlukan Claude Code v2.1.186 atau lebih baru | `false` |

299| `showClearContextOnPlanAccept` | **Default**: `false`. Tampilkan opsi "clear context" pada layar penerimaan rencana. Atur ke `true` untuk mengembalikan opsi | `true` |302| `showClearContextOnPlanAccept` | **Default**: `false`. Tampilkan opsi "clear context" pada layar penerimaan rencana. Atur ke `true` untuk mengembalikan opsi | `true` |

300| `showThinkingSummaries` | **Default**: `false`. Tampilkan ringkasan [pemikiran yang diperluas](/id/model-config#extended-thinking) dalam sesi interaktif. Saat tidak diatur atau `false`, blok pemikiran diredaksi oleh API dan ditampilkan sebagai stub yang runtuh. Redaksi hanya mengubah apa yang Anda lihat, bukan apa yang dihasilkan model: untuk mengurangi pengeluaran pemikiran, [turunkan anggaran atau nonaktifkan pemikiran](/id/model-config#extended-thinking) sebagai gantinya. Pengaturan ini tidak berpengaruh dalam mode non-interaktif (`-p`), Agent SDK, atau ekstensi IDE seperti VS Code | `true` |303| `showThinkingSummaries` | **Default**: `false`. Tampilkan ringkasan [pemikiran yang diperluas](/id/model-config#extended-thinking) dalam sesi interaktif. Saat tidak diatur atau `false`, blok pemikiran diredaksi oleh API dan ditampilkan sebagai stub yang runtuh. Redaksi hanya mengubah apa yang Anda lihat, bukan apa yang dihasilkan model: untuk mengurangi pengeluaran pemikiran, [turunkan anggaran atau nonaktifkan pemikiran](/id/model-config#extended-thinking) sebagai gantinya. Pengaturan ini tidak berpengaruh dalam mode non-interaktif (`-p`), Agent SDK, atau ekstensi IDE seperti VS Code | `true` |

301| `showTurnDuration` | **Default**: `true`. Tampilkan pesan durasi giliran setelah respons, misalnya "Cooked for 1m 6s". Muncul di `/config` sebagai **Show turn duration** | `false` |304| `showTurnDuration` | **Default**: `true`. Tampilkan pesan durasi giliran setelah respons, misalnya "Cooked for 1m 6s". Muncul di `/config` sebagai **Show turn duration** | `false` |

302| `skillListingBudgetFraction` | {/* min-version: 2.1.105 */}**Default**: `0.01` (1%). Fraksi jendela konteks model yang dicadangkan untuk [skill listing](/id/skills#skill-descriptions-are-cut-short) yang Claude lihat setiap giliran. Saat listing melebihi anggaran, deskripsi untuk skills yang paling jarang digunakan runtuh menjadi nama telanjang sehingga Claude masih dapat menginvokasinya tetapi tidak akan melihat mengapa. Naikkan untuk menjaga lebih banyak deskripsi terlihat dengan biaya lebih banyak konteks per giliran. `/doctor` menunjukkan jumlah pemotongan saat ini dan skills mana yang terpengaruh. Memerlukan Claude Code v2.1.105 atau lebih baru | `0.02` |305| `skillListingBudgetFraction` | {/* min-version: 2.1.105 */}**Default**: `0.01` (1%). Fraksi jendela konteks model yang dicadangkan untuk [skill listing](/id/skills#skill-descriptions-are-cut-short) yang Claude lihat setiap giliran. Saat listing melebihi anggaran, deskripsi untuk skills yang paling jarang digunakan runtuh menjadi nama telanjang sehingga Claude masih dapat menginvokasinya tetapi tidak akan melihat mengapa. Naikkan untuk menjaga lebih banyak deskripsi terlihat dengan biaya lebih banyak konteks per giliran. `/doctor` menunjukkan jumlah pemotongan saat ini dan skills mana yang terpengaruh. Memerlukan Claude Code v2.1.105 atau lebih baru | `0.02` |

306| `skillListingMaxDescChars` | {/* min-version: 2.1.105 */}**Default**: `1536`. Batas karakter per-skill pada teks `description` dan `when_to_use` gabungan dalam [skill listing](/id/skills#skill-descriptions-are-cut-short) yang Claude lihat setiap giliran. Teks yang lebih panjang dari ini dipotong. Naikkan untuk menjaga deskripsi panjang tetap utuh dengan biaya lebih banyak konteks per giliran; turunkan untuk menyesuaikan lebih banyak skills di bawah [`skillListingBudgetFraction`](#available-settings). Memerlukan Claude Code v2.1.105 atau lebih baru | `2048` |

303| `skillOverrides` | {/* min-version: 2.1.129 */}Penggantian visibilitas per-skill yang dikunci berdasarkan nama skill. Nilai adalah `"on"`, `"name-only"`, `"user-invocable-only"`, atau `"off"`. Memungkinkan Anda menyembunyikan atau menciutkan skill tanpa mengedit SKILL.md-nya. Tidak berlaku untuk plugin skills, yang dikelola melalui `/plugin`. Menu `/skills` menulis ini ke `.claude/settings.local.json`. Lihat [Timpa visibilitas skill dari pengaturan](/id/skills#override-skill-visibility-from-settings). Memerlukan Claude Code v2.1.129 atau lebih baru | `{"legacy-context": "name-only", "deploy": "off"}` |307| `skillOverrides` | {/* min-version: 2.1.129 */}Penggantian visibilitas per-skill yang dikunci berdasarkan nama skill. Nilai adalah `"on"`, `"name-only"`, `"user-invocable-only"`, atau `"off"`. Memungkinkan Anda menyembunyikan atau menciutkan skill tanpa mengedit SKILL.md-nya. Tidak berlaku untuk plugin skills, yang dikelola melalui `/plugin`. Menu `/skills` menulis ini ke `.claude/settings.local.json`. Lihat [Timpa visibilitas skill dari pengaturan](/id/skills#override-skill-visibility-from-settings). Memerlukan Claude Code v2.1.129 atau lebih baru | `{"legacy-context": "name-only", "deploy": "off"}` |

304| `skipWebFetchPreflight` | Lewati [pemeriksaan keamanan domain WebFetch](/id/data-usage#webfetch-domain-safety-check) yang mengirim setiap nama host yang diminta ke `api.anthropic.com` sebelum mengambil. Atur ke `true` di lingkungan yang memblokir lalu lintas ke Anthropic, seperti penyebaran Bedrock, Vertex AI, atau Foundry dengan egress yang ketat. Saat dilewati, WebFetch mencoba URL apa pun tanpa berkonsultasi dengan daftar blokir | `true` |308| `skipWebFetchPreflight` | Lewati [pemeriksaan keamanan domain WebFetch](/id/data-usage#webfetch-domain-safety-check) yang mengirim setiap nama host yang diminta ke `api.anthropic.com` sebelum mengambil. Atur ke `true` di lingkungan yang memblokir lalu lintas ke Anthropic, seperti penyebaran Bedrock, Vertex AI, atau Foundry dengan egress yang ketat. Saat dilewati, WebFetch mencoba URL apa pun tanpa berkonsultasi dengan daftar blokir | `true` |

305| `spinnerTipsEnabled` | **Default**: `true`. Tampilkan tips dalam spinner saat Claude bekerja. Atur ke `false` untuk menonaktifkan tips | `false` |309| `spinnerTipsEnabled` | **Default**: `true`. Tampilkan tips dalam spinner saat Claude bekerja. Atur ke `false` untuk menonaktifkan tips | `false` |

306| `spinnerTipsOverride` | Timpa tips spinner dengan string khusus. `tips`: array string tip. `excludeDefault`: jika `true`, hanya tampilkan tips khusus; jika `false` atau tidak ada, tips khusus digabungkan dengan tips bawaan | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |310| `spinnerTipsOverride` | Timpa tips spinner dengan string khusus. `tips`: array string tip. `excludeDefault`: jika `true`, hanya tampilkan tips khusus; jika `false` atau tidak ada, tips khusus digabungkan dengan tips bawaan | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |

307| `spinnerVerbs` | Sesuaikan kata kerja aksi yang ditampilkan saat giliran sedang berlangsung. Atur `mode` ke `"replace"` untuk menggunakan hanya kata kerja Anda, atau `"append"` untuk menambahkannya ke default | `{"mode": "append", "verbs": ["Pondering", "Crafting"]}` |311| `spinnerVerbs` | Sesuaikan kata kerja aksi yang ditampilkan saat giliran sedang berlangsung. Atur `mode` ke `"replace"` untuk menggunakan hanya kata kerja Anda, atau `"append"` untuk menambahkannya ke default | `{"mode": "append", "verbs": ["Pondering", "Crafting"]}` |

308| `sshConfigs` | Koneksi SSH untuk ditampilkan dalam dropdown lingkungan [Desktop](/id/desktop#pre-configure-ssh-connections-for-your-team). Setiap entri memerlukan `id`, `name`, dan `sshHost`; `sshPort`, `sshIdentityFile`, dan `startDirectory` bersifat opsional. Saat diatur dalam pengaturan yang dikelola, koneksi bersifat read-only untuk pengguna. Dibaca dari pengaturan yang dikelola dan pengguna saja | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |312| `sshConfigs` | Koneksi SSH untuk ditampilkan dalam dropdown lingkungan [Desktop](/id/desktop#pre-configure-ssh-connections-for-your-team). Setiap entri memerlukan `id`, `name`, dan `sshHost`; `sshPort`, `sshIdentityFile`, dan `startDirectory` bersifat opsional. Saat diatur dalam pengaturan yang dikelola, koneksi bersifat read-only untuk pengguna. Dibaca dari pengaturan yang dikelola dan pengguna saja | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |

309| `statusLine` | Konfigurasikan status line khusus untuk menampilkan konteks. Lihat [dokumentasi `statusLine`](/id/statusline) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |313| `statusLine` | Konfigurasikan status line khusus untuk menampilkan konteks. Bidang opsional objek `padding`, `refreshInterval`, dan `hideVimModeIndicator` mengontrol spasi, re-run berkala, dan apakah indikator mode vim bawaan di bawah prompt disembunyikan. Lihat [dokumentasi `statusLine`](/id/statusline#manually-configure-a-status-line) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |

310| `strictKnownMarketplaces` | (Pengaturan yang dikelola saja) Daftar putih sumber marketplace plugin. Tidak terdefinisi = tidak ada pembatasan, array kosong = lockdown. Diterapkan pada penambahan marketplace dan instalasi plugin, pembaruan, penyegaran, dan auto-update, jadi marketplace yang ditambahkan sebelum kebijakan ditetapkan tidak dapat digunakan untuk mengambil plugin. Lihat [Pembatasan marketplace yang dikelola](/id/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |314| `strictKnownMarketplaces` | (Pengaturan yang dikelola saja) Daftar putih sumber marketplace plugin. Tidak terdefinisi = tidak ada pembatasan, array kosong = lockdown. Diterapkan pada penambahan marketplace dan instalasi plugin, pembaruan, penyegaran, dan auto-update, jadi marketplace yang ditambahkan sebelum kebijakan ditetapkan tidak dapat digunakan untuk mengambil plugin. Lihat [Pembatasan marketplace yang dikelola](/id/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |

311| `strictPluginOnlyCustomization` | (Pengaturan yang dikelola saja) Blokir skills, agents, hooks, dan MCP servers dari sumber pengguna dan proyek, sehingga mereka hanya dapat berasal dari plugins atau pengaturan yang dikelola. `true` mengunci keempat permukaan; array mengunci hanya yang dinamai. Lihat [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | `["skills", "hooks"]` |315| `strictPluginOnlyCustomization` | (Pengaturan yang dikelola saja) Blokir skills, agents, hooks, dan MCP servers dari sumber pengguna dan proyek, sehingga mereka hanya dapat berasal dari plugins atau pengaturan yang dikelola. `true` mengunci keempat permukaan; array mengunci hanya yang dinamai. Lihat [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | `["skills", "hooks"]` |

312| `syntaxHighlightingDisabled` | Nonaktifkan syntax highlighting dalam diffs, code blocks, dan file previews | `true` |316| `syntaxHighlightingDisabled` | Nonaktifkan syntax highlighting dalam diffs, code blocks, dan file previews | `true` |


483**Atribusi komit default:**487**Atribusi komit default:**

484 488 

485```text theme={null}489```text theme={null}

486Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>490Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

487```491```

488 492 

489Nama model dalam trailer mencerminkan model aktif untuk sesi.493Nama model dalam trailer mencerminkan model aktif untuk sesi.


6561. **Pengaturan yang dikelola** ([yang dikelola server](/id/server-managed-settings), [kebijakan tingkat MDM/OS](#configuration-scopes), atau [pengaturan yang dikelola](/id/settings#settings-files))6601. **Pengaturan yang dikelola** ([yang dikelola server](/id/server-managed-settings), [kebijakan tingkat MDM/OS](#configuration-scopes), atau [pengaturan yang dikelola](/id/settings#settings-files))

657 * Kebijakan yang digunakan oleh IT melalui pengiriman server, profil konfigurasi MDM, kebijakan registry, atau file pengaturan yang dikelola661 * Kebijakan yang digunakan oleh IT melalui pengiriman server, profil konfigurasi MDM, kebijakan registry, atau file pengaturan yang dikelola

658 * Tidak dapat ditimpa oleh tingkat apa pun, termasuk argumen baris perintah662 * Tidak dapat ditimpa oleh tingkat apa pun, termasuk argumen baris perintah

659 * Dalam tingkat yang dikelola, prioritas adalah: yang dikelola server > kebijakan tingkat MDM/OS > file-based (`managed-settings.d/*.json` + `managed-settings.json`) > registry HKCU (Windows saja). Hanya satu sumber yang dikelola yang digunakan; sumber tidak digabungkan di seluruh tingkat. Dalam tingkat berbasis file, file drop-in dan file dasar digabungkan bersama.663 * Dalam tingkat yang dikelola, prioritas adalah: output [`policyHelper`](#compute-managed-settings-with-a-policy-helper), yang ketika dikonfigurasi adalah satu-satunya sumber yang dikelola yang digunakan > remote (pengaturan yang dikelola server claude.ai atau kebijakan yang dikirimkan [Claude apps gateway](/id/claude-apps-gateway)) > kebijakan tingkat MDM/OS > berbasis file (`managed-settings.d/*.json` + `managed-settings.json`) > registry HKCU (Windows saja). Hanya satu sumber yang dikelola yang digunakan; sumber tidak digabungkan di seluruh tingkat, dengan satu pengecualian: kunci sandbox lock `sandbox.network.allowManagedDomainsOnly` dan `sandbox.filesystem.allowManagedReadPathsOnly`, dengan daftar putih terkait mereka, `allowAllClaudeAiMcps`, dan jalur binary sandbox `sandbox.bwrapPath` dan `sandbox.socatPath` dihormati ketika sumber yang dikelola yang dikontrol admin apa pun menetapkannya; tingkat HKCU yang dapat ditulis pengguna dikecualikan. Dalam tingkat berbasis file, file drop-in dan file dasar digabungkan bersama.

660 * Host penyematan seperti Claude Desktop dapat memasok kebijakan melalui opsi SDK `managedSettings`. Secara default ini diabaikan saat ada tingkat yang dikelola apa pun. Administrator dapat memilih dengan menetapkan [`parentSettingsBehavior`](#available-settings) ke `"merge"`. Nilai embedder disaring sehingga mereka dapat mengencangkan kebijakan yang dikelola tetapi tidak melonggarkannya.664 * Host penyematan seperti Claude Desktop dapat memasok kebijakan melalui opsi SDK `managedSettings`. Secara default ini diabaikan ketika ada sumber yang dikelola yang digunakan admin: pengaturan yang dikelola server, kebijakan MDM atau OS-level, atau file pengaturan yang dikelola. Fallback registry HKCU yang dapat ditulis pengguna tidak dihitung sebagai sumber yang dikelola yang digunakan admin. Administrator dapat memilih dengan menetapkan [`parentSettingsBehavior`](#available-settings) ke `"merge"`. Nilai embedder disaring sehingga mereka dapat mengencangkan kebijakan yang dikelola tetapi tidak melonggarkannya.

661 665 

6622. **Argumen baris perintah**6662. **Argumen baris perintah**

663 * Penggantian sementara untuk sesi tertentu. JSON yang dilewatkan melalui `--settings <file-or-json>` digabungkan dengan pengaturan berbasis file menggunakan aturan yang sama seperti lapisan lainnya: kunci yang diatur di sini menimpa kunci yang sama dalam pengaturan lokal, proyek, atau pengguna, dan menghilangkan kunci membiarkan nilai lapisan lebih rendah tetap ada667 * Penggantian sementara untuk sesi tertentu. JSON yang dilewatkan melalui `--settings <file-or-json>` digabungkan dengan pengaturan berbasis file menggunakan aturan yang sama seperti lapisan lainnya: kunci yang diatur di sini menimpa kunci yang sama dalam pengaturan lokal, proyek, atau pengguna, dan menghilangkan kunci membiarkan nilai lapisan lebih rendah tetap ada


711 715 

712Prompt sistem internal Claude Code tidak dipublikasikan. Untuk menambahkan instruksi khusus, gunakan file `CLAUDE.md` atau flag `--append-system-prompt`.716Prompt sistem internal Claude Code tidak dipublikasikan. Untuk menambahkan instruksi khusus, gunakan file `CLAUDE.md` atau flag `--append-system-prompt`.

713 717 

714<h3 id="excluding-sensitive-files">718<h3 id="exclude-sensitive-files">

715 Mengecualikan file sensitif719 Mengecualikan file sensitif

716</h3>720</h3>

717 721 


739 743 

740Claude Code mendukung subagents AI khusus yang dapat dikonfigurasi di tingkat pengguna dan proyek. Subagents ini disimpan sebagai file Markdown dengan frontmatter YAML:744Claude Code mendukung subagents AI khusus yang dapat dikonfigurasi di tingkat pengguna dan proyek. Subagents ini disimpan sebagai file Markdown dengan frontmatter YAML:

741 745 

742* **Subagents pengguna**: `~/.claude/agents/` - Tersedia di semua proyek Anda746* **Subagents pengguna**: `~/.claude/agents/`, tersedia di semua proyek Anda

743* **Subagents proyek**: `.claude/agents/` - Spesifik untuk proyek Anda dan dapat dibagikan dengan tim Anda747* **Subagents proyek**: `.claude/agents/`, spesifik untuk proyek Anda dan dapat dibagikan dengan tim Anda

744 748 

745File subagent mendefinisikan asisten AI khusus dengan prompt khusus dan izin tool. Pelajari lebih lanjut tentang membuat dan menggunakan subagents dalam [dokumentasi subagents](/id/sub-agents).749File subagent mendefinisikan asisten AI khusus dengan prompt khusus dan izin tool. Pelajari lebih lanjut tentang membuat dan menggunakan subagents dalam [dokumentasi subagents](/id/sub-agents).

746 750 


791 Pengaturan proyek memiliki prioritas lebih tinggi daripada pengaturan pengguna, jadi mengatur plugin ke `false` dalam `~/.claude/settings.json` tidak menonaktifkan plugin yang diaktifkan oleh `.claude/settings.json` proyek. Untuk menolak plugin yang diaktifkan proyek di mesin Anda, atur ke `false` dalam `.claude/settings.local.json` sebagai gantinya.795 Pengaturan proyek memiliki prioritas lebih tinggi daripada pengaturan pengguna, jadi mengatur plugin ke `false` dalam `~/.claude/settings.json` tidak menonaktifkan plugin yang diaktifkan oleh `.claude/settings.json` proyek. Untuk menolak plugin yang diaktifkan proyek di mesin Anda, atur ke `false` dalam `.claude/settings.local.json` sebagai gantinya.

792 796 

793 Plugin yang dipaksa diaktifkan oleh pengaturan yang dikelola tidak dapat dinonaktifkan dengan cara ini, karena pengaturan yang dikelola menggantikan pengaturan lokal.797 Plugin yang dipaksa diaktifkan oleh pengaturan yang dikelola tidak dapat dinonaktifkan dengan cara ini, karena pengaturan yang dikelola menggantikan pengaturan lokal.

798 

799 Mengaktifkan plugin dari sumber eksternal seperti repositori GitHub atau paket npm dalam `.claude/settings.json` proyek tidak menginstalnya untuk orang lain. Mulai dari Claude Code v2.1.195, setiap jalur yang memuat plugin meminta setiap pengguna untuk [menginstal dan mempercayai plugin](/id/discover-plugins#configure-team-marketplaces) sebelum dijalankan.

794</Note>800</Note>

795 801 

796**Contoh**:802**Contoh**:


893 899 

894* Hanya tersedia dalam pengaturan yang dikelola (`managed-settings.json`)900* Hanya tersedia dalam pengaturan yang dikelola (`managed-settings.json`)

895* Tidak dapat ditimpa oleh pengaturan pengguna atau proyek (prioritas tertinggi)901* Tidak dapat ditimpa oleh pengaturan pengguna atau proyek (prioritas tertinggi)

896* Diterapkan SEBELUM operasi jaringan/sistem file (sumber yang diblokir tidak pernah dieksekusi)902* Diterapkan sebelum operasi jaringan dan sistem file, sehingga sumber yang diblokir tidak pernah dijalankan

897* Menggunakan pencocokan tepat untuk spesifikasi sumber (termasuk `ref`, `path` untuk sumber git), kecuali `hostPattern` dan `pathPattern`, yang menggunakan pencocokan regex903* Menggunakan pencocokan tepat untuk spesifikasi sumber (termasuk `ref`, `path` untuk sumber git), kecuali `hostPattern` dan `pathPattern`, yang menggunakan pencocokan regex

898 904 

899**Perilaku daftar putih**:905**Perilaku daftar putih**:

900 906 

901* `undefined` (default): Tidak ada pembatasan - pengguna dapat menambahkan marketplace apa pun907* `undefined` (default): tidak ada pembatasan, sehingga pengguna dapat menambahkan marketplace apa pun

902* Array kosong `[]`: Lockdown lengkap - pengguna tidak dapat menambahkan marketplace baru apa pun908* Array kosong `[]`: lockdown lengkap, sehingga pengguna tidak dapat menambahkan marketplace baru apa pun

903* Daftar sumber: Pengguna hanya dapat menambahkan marketplace yang cocok dengan tepat909* Daftar sumber: pengguna hanya dapat menambahkan marketplace yang cocok dengan tepat

904 910 

905**Semua jenis sumber yang didukung**:911**Semua jenis sumber yang didukung**:

906 912 


914{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }920{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }

915```921```

916 922 

917Bidang: `repo` (diperlukan), `ref` (opsional: cabang/tag/SHA), `path` (opsional: subdirektori)923Bidang: `repo` (diperlukan), `ref` (opsional: cabang atau tag), `path` (opsional: subdirektori)

918 924 

9192. **Repositori Git**:9252. **Repositori Git**:

920 926 


924{ "source": "git", "url": "ssh://git@git.example.com/plugins.git", "ref": "v3.1", "path": "approved" }930{ "source": "git", "url": "ssh://git@git.example.com/plugins.git", "ref": "v3.1", "path": "approved" }

925```931```

926 932 

927Bidang: `url` (diperlukan), `ref` (opsional: cabang/tag/SHA), `path` (opsional: subdirektori)933Bidang: `url` (diperlukan), `ref` (opsional: cabang atau tag), `path` (opsional: subdirektori)

928 934 

9293. **Marketplace berbasis URL**:9353. **Marketplace berbasis URL**:

930 936 


1023}1029}

1024```1030```

1025 1031 

1026Contoh - Nonaktifkan semua penambahan marketplace:1032Contoh: nonaktifkan semua penambahan marketplace:

1027 1033 

1028```json theme={null}1034```json theme={null}

1029{1035{


1046 1052 

1047**Persyaratan pencocokan tepat**:1053**Persyaratan pencocokan tepat**:

1048 1054 

1049Sumber marketplace harus cocok **dengan tepat** agar penambahan pengguna diizinkan. Untuk sumber berbasis git (`github` dan `git`), ini termasuk semua bidang opsional:1055Sumber marketplace harus cocok dengan tepat agar penambahan pengguna diizinkan. Untuk sumber berbasis git (`github` dan `git`), ini termasuk semua bidang opsional:

1050 1056 

1051* `repo` atau `url` harus cocok dengan tepat1057* `repo` atau `url` harus cocok dengan tepat

1052* Bidang `ref` harus cocok dengan tepat (atau keduanya tidak terdefinisi)1058* Bidang `ref` harus cocok dengan tepat (atau keduanya tidak terdefinisi)

1053* Bidang `path` harus cocok dengan tepat (atau keduanya tidak terdefinisi)1059* Bidang `path` harus cocok dengan tepat (atau keduanya tidak terdefinisi)

1054 1060 

1055Contoh sumber yang **TIDAK cocok**:1061Contoh sumber yang tidak cocok:

1056 1062 

1057```json theme={null}1063```json theme={null}

1058// Ini adalah sumber BERBEDA:1064// Ini adalah sumber BERBEDA:


1121 1127 

1122**Catatan penting**:1128**Catatan penting**:

1123 1129 

1124* Pembatasan diperiksa SEBELUM permintaan jaringan atau operasi sistem file apa pun1130* Pembatasan diperiksa sebelum permintaan jaringan atau operasi sistem file apa pun

1125* Saat diblokir, pengguna melihat pesan kesalahan yang jelas menunjukkan sumber diblokir oleh kebijakan yang dikelola1131* Saat diblokir, pengguna melihat pesan kesalahan yang jelas menunjukkan sumber diblokir oleh kebijakan yang dikelola

1126* Pembatasan diterapkan pada penambahan marketplace dan pada instalasi plugin, pembaruan, penyegaran, dan pembaruan otomatis. Marketplace yang ditambahkan sebelum kebijakan ditetapkan tidak dapat digunakan untuk menginstal atau memperbarui plugin setelah sumbernya tidak lagi cocok dengan daftar putih1132* Pembatasan diterapkan pada penambahan marketplace dan pada instalasi plugin, pembaruan, penyegaran, dan pembaruan otomatis. Marketplace yang ditambahkan sebelum kebijakan ditetapkan tidak dapat digunakan untuk menginstal atau memperbarui plugin setelah sumbernya tidak lagi cocok dengan daftar putih

1127* Pengaturan yang dikelola memiliki prioritas tertinggi dan tidak dapat ditimpa1133* Pengaturan yang dikelola memiliki prioritas tertinggi dan tidak dapat ditimpa


1157 1163 

1158Nama permukaan yang tidak dikenali oleh versi Claude Code diabaikan daripada gagal file pengaturan, jadi Anda dapat menambahkan nama permukaan baru sebelum semua klien diperbarui.1164Nama permukaan yang tidak dikenali oleh versi Claude Code diabaikan daripada gagal file pengaturan, jadi Anda dapat menambahkan nama permukaan baru sebelum semua klien diperbarui.

1159 1165 

1160<h3 id="managing-plugins">1166<h3 id="manage-plugins">

1161 Mengelola plugin1167 Mengelola plugin

1162</h3>1168</h3>

1163 1169 

setup.md +1 −1

Details

36</h2>36</h2>

37 37 

38<Tip>38<Tip>

39 Lebih suka antarmuka grafis? [Aplikasi Desktop](/id/desktop-quickstart) memungkinkan Anda menggunakan Claude Code tanpa terminal. Unduh untuk [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) atau [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs).39 Lebih suka antarmuka grafis? [Aplikasi Desktop](/id/desktop-quickstart) memungkinkan Anda menggunakan Claude Code tanpa terminal. Unduh untuk [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs), [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs), atau [Linux](https://claude.com/download?utm_source=claude_code\&utm_medium=docs).

40 40 

41 Baru mengenal terminal? Lihat [panduan terminal](/id/terminal-guide) untuk instruksi langkah demi langkah.41 Baru mengenal terminal? Lihat [panduan terminal](/id/terminal-guide) untuk instruksi langkah demi langkah.

42</Tip>42</Tip>

skills.md +8 −3

Details

251| `when_to_use` | Tidak | Konteks tambahan untuk kapan Claude harus menginvokasinya skill, seperti frasa pemicu atau permintaan contoh. Ditambahkan ke `description` dalam daftar skill dan dihitung terhadap batas 1.536 karakter. |251| `when_to_use` | Tidak | Konteks tambahan untuk kapan Claude harus menginvokasinya skill, seperti frasa pemicu atau permintaan contoh. Ditambahkan ke `description` dalam daftar skill dan dihitung terhadap batas 1.536 karakter. |

252| `argument-hint` | Tidak | Petunjuk yang ditampilkan selama autocomplete untuk menunjukkan argumen yang diharapkan. Contoh: `[issue-number]` atau `[filename] [format]`. |252| `argument-hint` | Tidak | Petunjuk yang ditampilkan selama autocomplete untuk menunjukkan argumen yang diharapkan. Contoh: `[issue-number]` atau `[filename] [format]`. |

253| `arguments` | Tidak | Argumen posisional bernama untuk [substitusi `$name`](#available-string-substitutions) dalam konten skill. Menerima string yang dipisahkan spasi atau daftar YAML. Nama memetakan ke posisi argumen secara berurutan. |253| `arguments` | Tidak | Argumen posisional bernama untuk [substitusi `$name`](#available-string-substitutions) dalam konten skill. Menerima string yang dipisahkan spasi atau daftar YAML. Nama memetakan ke posisi argumen secara berurutan. |

254| `disable-model-invocation` | Tidak | Atur ke `true` untuk mencegah Claude memuat skill ini secara otomatis. Gunakan untuk workflow yang ingin Anda picu secara manual dengan `/name`. Juga mencegah skill dari [dimuat sebelumnya ke dalam subagents](/id/sub-agents#preload-skills-into-subagents). Default: `false`. |254| `disable-model-invocation` | Tidak | Atur ke `true` untuk mencegah Claude memuat skill ini secara otomatis. Gunakan untuk workflow yang ingin Anda picu secara manual dengan `/name`. Juga mencegah skill dari [dimuat sebelumnya ke dalam subagents](/id/sub-agents#preload-skills-into-subagents). Mulai dari v2.1.196, juga mencegah skill berjalan saat [tugas terjadwal](/id/scheduled-tasks) dijalankan dengan skill sebagai promptnya. Default: `false`. |

255| `user-invocable` | Tidak | Atur ke `false` untuk menyembunyikan dari menu `/`. Gunakan untuk pengetahuan latar belakang yang tidak boleh diinvokasinya pengguna secara langsung. Default: `true`. |255| `user-invocable` | Tidak | Atur ke `false` untuk menyembunyikan dari menu `/`. Gunakan untuk pengetahuan latar belakang yang tidak boleh diinvokasinya pengguna secara langsung. Default: `true`. |

256| `allowed-tools` | Tidak | Tools yang dapat digunakan Claude tanpa meminta izin saat skill ini aktif. Menerima string yang dipisahkan spasi atau koma, atau daftar YAML. |256| `allowed-tools` | Tidak | Tools yang dapat digunakan Claude tanpa meminta izin saat skill ini aktif. Menerima string yang dipisahkan spasi atau koma, atau daftar YAML. |

257| `disallowed-tools` | Tidak | Tools yang dihapus dari kumpulan tools yang tersedia Claude saat skill ini aktif. Gunakan untuk skills otonom yang tidak boleh memanggil tools tertentu, seperti `AskUserQuestion` untuk loop latar belakang. Menerima string yang dipisahkan spasi atau koma, atau daftar YAML. Pembatasan dihapus saat Anda mengirim pesan berikutnya. |257| `disallowed-tools` | Tidak | Tools yang dihapus dari kumpulan tools yang tersedia Claude saat skill ini aktif. Gunakan untuk skills otonom yang tidak boleh memanggil tools tertentu, seperti `AskUserQuestion` untuk loop latar belakang. Menerima string yang dipisahkan spasi atau koma, atau daftar YAML. Pembatasan dihapus saat Anda mengirim pesan berikutnya. |


288Skills mendukung substitusi string untuk nilai dinamis dalam konten skill:288Skills mendukung substitusi string untuk nilai dinamis dalam konten skill:

289 289 

290| Variabel | Deskripsi |290| Variabel | Deskripsi |

291| :--------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |291| :---------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

292| `$ARGUMENTS` | Semua argumen yang dilewatkan saat menginvokasinya skill. Jika `$ARGUMENTS` tidak ada dalam konten, argumen ditambahkan sebagai `ARGUMENTS: <value>`. |292| `$ARGUMENTS` | Semua argumen yang dilewatkan saat menginvokasinya skill. Jika `$ARGUMENTS` tidak ada dalam konten, argumen ditambahkan sebagai `ARGUMENTS: <value>`. |

293| `$ARGUMENTS[N]` | Akses argumen spesifik berdasarkan indeks berbasis 0, seperti `$ARGUMENTS[0]` untuk argumen pertama. |293| `$ARGUMENTS[N]` | Akses argumen spesifik berdasarkan indeks berbasis 0, seperti `$ARGUMENTS[0]` untuk argumen pertama. |

294| `$N` | Singkat untuk `$ARGUMENTS[N]`, seperti `$0` untuk argumen pertama atau `$1` untuk argumen kedua. |294| `$N` | Singkat untuk `$ARGUMENTS[N]`, seperti `$0` untuk argumen pertama atau `$1` untuk argumen kedua. |


296| `${CLAUDE_SESSION_ID}` | ID sesi saat ini. Berguna untuk logging, membuat file khusus sesi, atau mengkorelasikan output skill dengan sesi. |296| `${CLAUDE_SESSION_ID}` | ID sesi saat ini. Berguna untuk logging, membuat file khusus sesi, atau mengkorelasikan output skill dengan sesi. |

297| `${CLAUDE_EFFORT}` | Effort level saat ini: `low`, `medium`, `high`, `xhigh`, atau `max`. Ultracode bukan level yang berbeda dan dilaporkan sebagai `xhigh`. Gunakan ini untuk menyesuaikan instruksi skill dengan pengaturan effort aktif. |297| `${CLAUDE_EFFORT}` | Effort level saat ini: `low`, `medium`, `high`, `xhigh`, atau `max`. Ultracode bukan level yang berbeda dan dilaporkan sebagai `xhigh`. Gunakan ini untuk menyesuaikan instruksi skill dengan pengaturan effort aktif. |

298| `${CLAUDE_SKILL_DIR}` | Direktori yang berisi file `SKILL.md` skill. Untuk skills plugin, ini adalah subdirektori skill dalam plugin, bukan root plugin. Gunakan ini dalam perintah injeksi bash untuk mereferensikan script atau file yang dikemas dengan skill, terlepas dari direktori kerja saat ini. |298| `${CLAUDE_SKILL_DIR}` | Direktori yang berisi file `SKILL.md` skill. Untuk skills plugin, ini adalah subdirektori skill dalam plugin, bukan root plugin. Gunakan ini dalam perintah injeksi bash untuk mereferensikan script atau file yang dikemas dengan skill, terlepas dari direktori kerja saat ini. |

299| `${CLAUDE_PROJECT_DIR}` | Direktori root proyek. Ini adalah path yang sama yang diterima [hooks](/id/hooks#reference-scripts-by-path) dan server MCP sebagai `CLAUDE_PROJECT_DIR`. Gunakan ini untuk mereferensikan script atau file lokal proyek, seperti `${CLAUDE_PROJECT_DIR}/.claude/hooks/helper.sh`, independen dari tempat skill diinstal. |

300 

301Substitusi `${CLAUDE_PROJECT_DIR}` memerlukan Claude Code v2.1.196 atau lebih baru. Ini berlaku untuk body skill dan frontmatter [`allowed-tools`](#frontmatter-reference), jadi aturan izin seperti `Bash(${CLAUDE_PROJECT_DIR}/scripts/lint.sh *)` diselesaikan ke path yang sama yang digunakan body skill.

299 302 

300Argumen yang diindeks menggunakan quoting gaya shell, jadi bungkus nilai multi-kata dalam tanda kutip untuk meneruskannya sebagai argumen tunggal. Misalnya, `/my-skill "hello world" second` membuat `$0` berkembang menjadi `hello world` dan `$1` menjadi `second`. Placeholder `$ARGUMENTS` selalu berkembang menjadi string argumen lengkap seperti yang diketik.303Argumen yang diindeks menggunakan quoting gaya shell, jadi bungkus nilai multi-kata dalam tanda kutip untuk meneruskannya sebagai argumen tunggal. Misalnya, `/my-skill "hello world" second` membuat `$0` berkembang menjadi `hello world` dan `$1` menjadi `second`. Placeholder `$ARGUMENTS` selalu berkembang menjadi string argumen lengkap seperti yang diketik.

301 304 


899 902 

900Deskripsi skill dimuat ke dalam konteks sehingga Claude tahu apa yang tersedia. Semua nama skill selalu disertakan, tetapi jika Anda memiliki banyak skills, deskripsi diperpendek agar sesuai dengan anggaran karakter, yang dapat menghilangkan kata kunci yang dibutuhkan Claude untuk mencocokkan permintaan Anda. Anggaran diskalakan pada 1% dari jendela konteks model. Ketika meluap, deskripsi untuk skills yang Anda invokasinya paling sedikit dijatuhkan terlebih dahulu, sehingga skills yang benar-benar Anda gunakan tetap mempertahankan teks lengkapnya. Jalankan `/doctor` untuk melihat berapa banyak deskripsi skill yang diperpendek atau dijatuhkan dan skills mana yang terpengaruh.903Deskripsi skill dimuat ke dalam konteks sehingga Claude tahu apa yang tersedia. Semua nama skill selalu disertakan, tetapi jika Anda memiliki banyak skills, deskripsi diperpendek agar sesuai dengan anggaran karakter, yang dapat menghilangkan kata kunci yang dibutuhkan Claude untuk mencocokkan permintaan Anda. Anggaran diskalakan pada 1% dari jendela konteks model. Ketika meluap, deskripsi untuk skills yang Anda invokasinya paling sedikit dijatuhkan terlebih dahulu, sehingga skills yang benar-benar Anda gunakan tetap mempertahankan teks lengkapnya. Jalankan `/doctor` untuk melihat berapa banyak deskripsi skill yang diperpendek atau dijatuhkan dan skills mana yang terpengaruh.

901 904 

902Untuk menaikkan anggaran, atur pengaturan [`skillListingBudgetFraction`](/id/settings#available-settings) (misalnya `0.02` = 2%) atau variabel lingkungan `SLASH_COMMAND_TOOL_CHAR_BUDGET` ke jumlah karakter tetap. Untuk membebaskan anggaran bagi skills lainnya, atur entri prioritas rendah ke `"name-only"` di [`skillOverrides`](#override-skill-visibility-from-settings) sehingga mereka terdaftar tanpa deskripsi. Anda juga dapat memangkas teks `description` dan `when_to_use` di sumbernya: depankan kasus penggunaan utama, karena teks gabungan setiap entri dibatasi pada 1.536 karakter terlepas dari anggaran. Batas dapat dikonfigurasi dengan [`maxSkillDescriptionChars`](/id/settings#available-settings).905Mulai dari v2.1.196, baris Skills di `/context` melaporkan ukuran daftar setelah anggaran diterapkan, sehingga cocok dengan apa yang diterima model. Versi sebelumnya menghitung teks lengkap setiap deskripsi, sehingga baris dapat menampilkan nilai beberapa kali lebih besar dari anggaran `/doctor` yang dilaporkan.

906 

907Untuk menaikkan anggaran, atur pengaturan [`skillListingBudgetFraction`](/id/settings#available-settings) (misalnya `0.02` = 2%) atau variabel lingkungan `SLASH_COMMAND_TOOL_CHAR_BUDGET` ke jumlah karakter tetap. Untuk membebaskan anggaran bagi skills lainnya, atur entri prioritas rendah ke `"name-only"` di [`skillOverrides`](#override-skill-visibility-from-settings) sehingga mereka terdaftar tanpa deskripsi. Anda juga dapat memangkas teks `description` dan `when_to_use` di sumbernya: depankan kasus penggunaan utama, karena teks gabungan setiap entri dibatasi pada 1.536 karakter terlepas dari anggaran. Batas dapat dikonfigurasi dengan [`skillListingMaxDescChars`](/id/settings#available-settings).

903 908 

904<h2 id="related-resources">909<h2 id="related-resources">

905 Sumber daya terkait910 Sumber daya terkait

statusline.md +3 −0

Details

194| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | Detik epoch Unix ketika jendela batas laju 5 jam atau 7 hari direset |194| `rate_limits.five_hour.resets_at`, `rate_limits.seven_day.resets_at` | Detik epoch Unix ketika jendela batas laju 5 jam atau 7 hari direset |

195| `session_id` | Pengidentifikasi sesi unik |195| `session_id` | Pengidentifikasi sesi unik |

196| `session_name` | Nama sesi khusus yang ditetapkan dengan bendera `--name` atau `/rename`. Tidak ada jika tidak ada nama khusus yang telah ditetapkan |196| `session_name` | Nama sesi khusus yang ditetapkan dengan bendera `--name` atau `/rename`. Tidak ada jika tidak ada nama khusus yang telah ditetapkan |

197| `prompt_id` | UUID yang mengidentifikasi prompt pengguna yang sedang diproses. Cocok dengan atribut [`prompt.id` pada acara OpenTelemetry](/id/monitoring-usage#event-correlation-attributes). Tidak ada sampai input pengguna pertama. Memerlukan Claude Code v2.1.196 atau lebih baru |

197| `transcript_path` | Jalur ke file transkrip percakapan |198| `transcript_path` | Jalur ke file transkrip percakapan |

198| `version` | Versi Claude Code |199| `version` | Versi Claude Code |

199| `output_style.name` | Nama gaya output saat ini |200| `output_style.name` | Nama gaya output saat ini |


215 "cwd": "/current/working/directory",216 "cwd": "/current/working/directory",

216 "session_id": "abc123...",217 "session_id": "abc123...",

217 "session_name": "my-session",218 "session_name": "my-session",

219 "prompt_id": "550e8400-e29b-41d4-a716-446655440000",

218 "transcript_path": "/path/to/transcript.jsonl",220 "transcript_path": "/path/to/transcript.jsonl",

219 "model": {221 "model": {

220 "id": "claude-opus-4-8",222 "id": "claude-opus-4-8",


296 **Bidang yang mungkin tidak ada** (tidak ada dalam JSON):298 **Bidang yang mungkin tidak ada** (tidak ada dalam JSON):

297 299 

298 * `session_name`: muncul hanya ketika nama khusus telah ditetapkan dengan `--name` atau `/rename`300 * `session_name`: muncul hanya ketika nama khusus telah ditetapkan dengan `--name` atau `/rename`

301 * `prompt_id`: muncul hanya setelah input pengguna pertama

299 * `workspace.git_worktree`: muncul hanya ketika direktori saat ini berada di dalam linked git worktree302 * `workspace.git_worktree`: muncul hanya ketika direktori saat ini berada di dalam linked git worktree

300 * `workspace.repo`: muncul hanya di dalam repositori git dengan remote `origin` yang dikonfigurasi303 * `workspace.repo`: muncul hanya di dalam repositori git dengan remote `origin` yang dikonfigurasi

301 * `effort`: muncul hanya ketika model saat ini mendukung parameter upaya penalaran304 * `effort`: muncul hanya ketika model saat ini mendukung parameter upaya penalaran

sub-agents.md +45 −31

Details

38 <Tab title="Explore">38 <Tab title="Explore">

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

40 40 

41 * **Model**: Haiku (cepat, latensi rendah)41 * **Model**: Haiku, yang cepat dan latensi rendah

42 * **Tools**: Alat hanya-baca (akses ditolak ke alat Write dan Edit)42 * **Tools**: alat hanya-baca; Write dan Edit ditolak

43 * **Purpose**: Penemuan file, pencarian kode, eksplorasi basis kode43 * **Purpose**: penemuan file, pencarian kode, eksplorasi basis kode

44 44 

45 Claude mendelegasikan ke Explore ketika perlu mencari atau memahami basis kode tanpa membuat perubahan. Ini menjaga hasil eksplorasi di luar konteks percakapan utama Anda.45 Claude mendelegasikan ke Explore ketika perlu mencari atau memahami basis kode tanpa membuat perubahan. Ini menjaga hasil eksplorasi di luar konteks percakapan utama Anda.

46 46 


50 <Tab title="Plan">50 <Tab title="Plan">

51 Agen penelitian yang digunakan selama [plan mode](/id/permission-modes#analyze-before-you-edit-with-plan-mode) untuk mengumpulkan konteks sebelum menyajikan rencana.51 Agen penelitian yang digunakan selama [plan mode](/id/permission-modes#analyze-before-you-edit-with-plan-mode) untuk mengumpulkan konteks sebelum menyajikan rencana.

52 52 

53 * **Model**: Mewarisi dari percakapan utama53 * **Model**: mewarisi dari percakapan utama

54 * **Tools**: Alat hanya-baca (akses ditolak ke alat Write dan Edit)54 * **Tools**: alat hanya-baca; Write dan Edit ditolak

55 * **Purpose**: Penelitian basis kode untuk perencanaan55 * **Purpose**: penelitian basis kode untuk perencanaan

56 56 

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

58 </Tab>58 </Tab>


60 <Tab title="General-purpose">60 <Tab title="General-purpose">

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

62 62 

63 * **Model**: Mewarisi dari percakapan utama63 * **Model**: mewarisi dari percakapan utama

64 * **Tools**: Semua alat64 * **Tools**: semua alat

65 * **Purpose**: Penelitian kompleks, operasi multi-langkah, modifikasi kode65 * **Purpose**: penelitian kompleks, operasi multi-langkah, modifikasi kode

66 66 

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

68 </Tab>68 </Tab>


77 </Tab>77 </Tab>

78</Tabs>78</Tabs>

79 79 

80Subagent bawaan selalu terdaftar dalam sesi interaktif. Untuk memblokir tipe bawaan tertentu, tambahkan ke `permissions.deny` seperti yang ditunjukkan dalam [Nonaktifkan subagent tertentu](#disable-specific-subagents). Untuk mencegah Claude mendelegasikan ke subagent apa pun, tolak alat `Agent` itu sendiri dengan [`permissions.deny`](/id/permissions#tool-specific-permission-rules). Dalam [mode non-interaktif](/id/headless) dan [Agent SDK](/id/agent-sdk/overview), atur [`CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1`](/id/env-vars) untuk menghapus semua tipe bawaan dan menyediakan hanya milik Anda sendiri.80Subagent bawaan selalu terdaftar dalam sesi interaktif. Untuk membatasi mereka:

81 

82* Untuk memblokir tipe bawaan tertentu, tambahkan ke `permissions.deny` seperti yang ditunjukkan dalam [Nonaktifkan subagent tertentu](#disable-specific-subagents).

83* Untuk mencegah Claude mendelegasikan ke subagent apa pun, tolak alat `Agent` itu sendiri dengan [`permissions.deny`](/id/permissions#tool-specific-permission-rules).

84* Dalam [mode non-interaktif](/id/headless) dan [Agent SDK](/id/agent-sdk/overview), atur [`CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1`](/id/env-vars) untuk menghapus semua tipe bawaan dan menyediakan hanya milik Anda sendiri.

81 85 

82Selain subagent bawaan ini, Anda dapat membuat subagent Anda sendiri dengan prompt khusus, pembatasan alat, mode izin, hooks, dan skills. Bagian berikut menunjukkan cara memulai dan menyesuaikan subagent.86Selain subagent bawaan ini, Anda dapat membuat subagent Anda sendiri dengan prompt khusus, pembatasan alat, mode izin, hooks, dan skills. Bagian berikut menunjukkan cara memulai dan menyesuaikan subagent.

83 87 


93 <Step title="Buka antarmuka subagent">97 <Step title="Buka antarmuka subagent">

94 Di Claude Code, jalankan:98 Di Claude Code, jalankan:

95 99 

96 ```text theme={null}100 ```text wrap theme={null}

97 /agents101 /agents

98 ```102 ```

99 </Step>103 </Step>


105 <Step title="Hasilkan dengan Claude">109 <Step title="Hasilkan dengan Claude">

106 Pilih **Generate with Claude**. Ketika diminta, jelaskan subagent:110 Pilih **Generate with Claude**. Ketika diminta, jelaskan subagent:

107 111 

108 ```text theme={null}112 ```text wrap theme={null}

109 A code improvement agent that scans files and suggests improvements113 A code improvement agent that scans files and suggests improvements

110 for readability, performance, and best practices. It should explain114 for readability, performance, and best practices. It should explain

111 each issue, show the current code, and provide an improved version.115 each issue, show the current code, and provide an improved version.


133 <Step title="Simpan dan coba">137 <Step title="Simpan dan coba">

134 Tinjau ringkasan konfigurasi. Tekan `s` atau `Enter` untuk menyimpan, atau tekan `e` untuk menyimpan dan mengedit file di editor Anda. Subagent tersedia segera. Coba:138 Tinjau ringkasan konfigurasi. Tekan `s` atau `Enter` untuk menyimpan, atau tekan `e` untuk menyimpan dan mengedit file di editor Anda. Subagent tersedia segera. Coba:

135 139 

136 ```text theme={null}140 ```text wrap theme={null}

137 Use the code-improver agent to suggest improvements in this project141 Use the code-improver agent to suggest improvements in this project

138 ```142 ```

139 143 


185 189 

186**Subagent pengguna** (`~/.claude/agents/`) adalah subagent pribadi yang tersedia di semua proyek Anda.190**Subagent pengguna** (`~/.claude/agents/`) adalah subagent pribadi yang tersedia di semua proyek Anda.

187 191 

188Claude Code memindai `.claude/agents/` dan `~/.claude/agents/` secara rekursif, sehingga Anda dapat mengorganisir definisi ke dalam subfolder seperti `agents/review/` atau `agents/research/`. Jalur subdirektori tidak mempengaruhi cara subagent diidentifikasi atau dipanggil, karena identitas hanya berasal dari bidang frontmatter `name`. Jaga nilai `name` tetap unik di seluruh pohon: jika dua file dalam satu cakupan mendeklarasikan nama yang sama, Claude Code menyimpan satu dan membuang yang lain tanpa peringatan.192Claude Code memindai `.claude/agents/` dan `~/.claude/agents/` secara rekursif, sehingga Anda dapat mengorganisir definisi ke dalam subfolder seperti `agents/review/` atau `agents/research/`. Jalur subdirektori tidak mempengaruhi cara subagent diidentifikasi atau dipanggil, karena identitas hanya berasal dari bidang frontmatter `name`.

193 

194Jaga nilai `name` tetap unik di seluruh pohon: jika dua file dalam satu cakupan mendeklarasikan nama yang sama, Claude Code menyimpan satu dan membuang yang lain tanpa peringatan. {/* min-version: 2.1.196 */}Sejak v2.1.196, menjalankan `/doctor` melaporkan nama agen duplikat dalam cakupan yang sama dan menunjukkan definisi mana yang aktif.

189 195 

190Direktori `agents/` plugin juga dipindai secara rekursif. Tidak seperti cakupan proyek dan pengguna, subfolder di dalam direktori `agents/` plugin menjadi bagian dari [pengenal yang dibatasi cakupan](#invoke-subagents-explicitly): file di `agents/review/security.md` dalam plugin `my-plugin` terdaftar sebagai `my-plugin:review:security`.196Direktori `agents/` plugin juga dipindai secara rekursif. Tidak seperti cakupan proyek dan pengguna, subfolder di dalam direktori `agents/` plugin menjadi bagian dari [pengenal yang dibatasi cakupan](#invoke-subagents-explicitly): file di `agents/review/security.md` dalam plugin `my-plugin` terdaftar sebagai `my-plugin:review:security`.

191 197 


299Bidang `model` mengontrol [model AI](/id/model-config) mana yang digunakan subagent:305Bidang `model` mengontrol [model AI](/id/model-config) mana yang digunakan subagent:

300 306 

301* **Alias model**: Gunakan salah satu alias yang tersedia: `sonnet`, `opus`, `haiku`, atau `fable`307* **Alias model**: Gunakan salah satu alias yang tersedia: `sonnet`, `opus`, `haiku`, atau `fable`

302* **ID model lengkap**: Gunakan ID model lengkap seperti `claude-opus-4-8` atau `claude-sonnet-4-6`. Menerima nilai yang sama dengan flag `--model`308* **ID model lengkap**: Gunakan ID model lengkap seperti `claude-opus-4-8` atau `claude-sonnet-5`. Menerima nilai yang sama dengan flag `--model`

303* **inherit**: Gunakan model yang sama dengan percakapan utama309* **inherit**: Gunakan model yang sama dengan percakapan utama

304* **Dihilangkan**: Jika tidak ditentukan, default ke `inherit` (menggunakan model yang sama dengan percakapan utama)310* **Dihilangkan**: Jika tidak ditentukan, default ke `inherit` (menggunakan model yang sama dengan percakapan utama)

305 311 

306Ketika Claude memanggil subagent, Claude juga dapat melewatkan parameter `model` untuk invokasi spesifik itu. Claude Code menyelesaikan model subagent dalam urutan ini:312Ketika Claude memanggil subagent, Claude juga dapat melewatkan parameter `model` untuk invokasi spesifik itu. Claude Code menyelesaikan model subagent dalam urutan ini:

307 313 

3081. Variabel lingkungan [`CLAUDE_CODE_SUBAGENT_MODEL`](/id/model-config#environment-variables), jika diatur3141. Variabel lingkungan [`CLAUDE_CODE_SUBAGENT_MODEL`](/id/model-config#environment-variables), jika diatur ke alias model atau ID model

3092. Parameter `model` per-invokasi3152. Parameter `model` per-invokasi

3103. Frontmatter `model` definisi subagent3163. Frontmatter `model` definisi subagent

3114. Model percakapan utama3174. Model percakapan utama

312 318 

319{/* min-version: 2.1.196 */}Sejak v2.1.196, mengatur `CLAUDE_CODE_SUBAGENT_MODEL` ke `inherit` sama dengan membiarkannya tidak diatur: resolusi berlanjut dengan parameter `model` per-invokasi, kemudian frontmatter. Dalam versi sebelumnya, `inherit` memaksa subagent ke model percakapan utama dan mengabaikan kedua sumber itu.

320 

313Variabel lingkungan, parameter per-invokasi, dan nilai frontmatter diperiksa terhadap daftar allowlist [`availableModels`](/id/model-config#restrict-model-selection) organisasi Anda. Nilai yang diselesaikan ke model yang dikecualikan tidak digunakan dan subagent berjalan pada model yang diwarisi sebagai gantinya.321Variabel lingkungan, parameter per-invokasi, dan nilai frontmatter diperiksa terhadap daftar allowlist [`availableModels`](/id/model-config#restrict-model-selection) organisasi Anda. Nilai yang diselesaikan ke model yang dikecualikan tidak digunakan dan subagent berjalan pada model yang diwarisi sebagai gantinya.

314 322 

315<h3 id="control-subagent-capabilities">323<h3 id="control-subagent-capabilities">


602 610 

603Subagent dapat mendefinisikan [hooks](/id/hooks) yang berjalan selama siklus hidup subagent. Ada dua cara untuk mengonfigurasi hooks:611Subagent dapat mendefinisikan [hooks](/id/hooks) yang berjalan selama siklus hidup subagent. Ada dua cara untuk mengonfigurasi hooks:

604 612 

6051. **Dalam frontmatter subagent**: Tentukan hooks yang hanya berjalan saat subagent tertentu itu aktif613* **Dalam frontmatter subagent**: Tentukan hooks yang hanya berjalan saat subagent tertentu itu aktif

6062. **Dalam `settings.json`**: Tentukan hooks yang berjalan dalam sesi utama ketika subagent dimulai atau berhenti614* **Dalam `settings.json`**: Tentukan hooks yang berjalan dalam sesi utama ketika subagent dimulai atau berhenti

607 615 

608<h4 id="hooks-in-subagent-frontmatter">616<h4 id="hooks-in-subagent-frontmatter">

609 Hooks dalam frontmatter subagent617 Hooks dalam frontmatter subagent


656| `SubagentStart` | Nama jenis agen | Ketika subagent mulai dijalankan |664| `SubagentStart` | Nama jenis agen | Ketika subagent mulai dijalankan |

657| `SubagentStop` | Nama jenis agen | Ketika subagent selesai |665| `SubagentStop` | Nama jenis agen | Ketika subagent selesai |

658 666 

659Kedua peristiwa mendukung matcher untuk menargetkan jenis agen tertentu berdasarkan nama. Contoh ini menjalankan skrip setup hanya ketika subagent `db-agent` dimulai, dan skrip cleanup ketika subagent apa pun berhenti:667Kedua peristiwa mendukung matcher untuk menargetkan jenis agen tertentu berdasarkan nama. Nilai matcher adalah `name` frontmatter agen untuk subagent tingkat proyek dan pengguna, atau pengenal yang dibatasi cakupan plugin seperti `my-plugin:db-agent` untuk [subagent plugin](/id/plugins). Nama yang dibatasi cakupan berisi titik dua, sehingga dievaluasi sebagai [ekspresi reguler yang tidak berlabuh](/id/hooks#matcher-patterns); jangkarnya dengan `^` dan `$`, seperti dalam `^my-plugin:db-agent$`, untuk mencocokkan hanya agen itu.

668 

669Contoh ini menjalankan skrip setup hanya ketika subagent `db-agent` dimulai, dan skrip cleanup ketika subagent apa pun berhenti:

660 670 

661```json theme={null}671```json theme={null}

662{672{


680}690}

681```691```

682 692 

693Matcher dengan tanda hubung seperti `db-agent` cocok dengan tepat pada Claude Code v2.1.195 atau lebih baru. Pada versi sebelumnya dievaluasi sebagai ekspresi reguler yang tidak berlabuh dan juga terjadi untuk jenis agen apa pun yang berisinya, seperti `prod-db-agent`; jangkarnya sebagai `^db-agent$` pada versi-versi itu.

694 

683Lihat [Hooks](/id/hooks) untuk format konfigurasi hook lengkap.695Lihat [Hooks](/id/hooks) untuk format konfigurasi hook lengkap.

684 696 

685<h2 id="work-with-subagents">697<h2 id="work-with-subagents">


704 716 

705Untuk bahasa alami, tidak ada sintaks khusus. Sebutkan subagent dan Claude biasanya mendelegasikan:717Untuk bahasa alami, tidak ada sintaks khusus. Sebutkan subagent dan Claude biasanya mendelegasikan:

706 718 

707```text theme={null}719```text wrap theme={null}

708Use the test-runner subagent to fix failing tests720Use the test-runner subagent to fix failing tests

709Have the code-reviewer subagent look at my recent changes721Have the code-reviewer subagent look at my recent changes

710```722```

711 723 

712**@-mention subagent.** Ketik `@` dan pilih subagent dari typeahead, dengan cara yang sama Anda @-mention file. Ini memastikan subagent tertentu berjalan daripada meninggalkan pilihan kepada Claude:724**@-mention subagent.** Ketik `@` dan pilih subagent dari typeahead, dengan cara yang sama Anda @-mention file. Ini memastikan subagent tertentu berjalan daripada meninggalkan pilihan kepada Claude:

713 725 

714```text theme={null}726```text wrap theme={null}

715@"code-reviewer (agent)" look at the auth changes727@"code-reviewer (agent)" look at the auth changes

716```728```

717 729 

718Pesan lengkap Anda masih pergi ke Claude, yang menulis prompt tugas subagent berdasarkan apa yang Anda minta. @-mention mengontrol subagent mana yang Claude panggil, bukan prompt apa yang diterima.730Pesan lengkap Anda masih pergi ke Claude, yang menulis prompt tugas subagent berdasarkan apa yang Anda minta. @-mention mengontrol subagent mana yang Claude panggil, bukan prompt apa yang diterima.

719 731 

720Subagent yang disediakan oleh [plugin](/id/plugins) yang diaktifkan muncul di typeahead dengan nama yang dibatasi, seperti `my-plugin:code-reviewer` atau `my-plugin:review:security` ketika plugin [mengorganisir agen ke dalam subfolder](#choose-the-subagent-scope). Subagent background bernama yang saat ini berjalan dalam sesi juga muncul di typeahead, menunjukkan status mereka di samping nama. Anda juga dapat mengetik mention secara manual tanpa menggunakan picker: `@agent-<name>` untuk subagent lokal, atau `@agent-` diikuti dengan nama yang dibatasi untuk subagent plugin, misalnya `@agent-my-plugin:code-reviewer`.732Subagent yang disediakan oleh [plugin](/id/plugins) yang diaktifkan muncul di typeahead dengan nama yang dibatasi, seperti `my-plugin:code-reviewer` atau `my-plugin:review:security` ketika plugin [mengorganisir agen ke dalam subfolder](#choose-the-subagent-scope). Subagent background bernama yang saat ini berjalan dalam sesi juga muncul di typeahead, menunjukkan status mereka di samping nama.

733 

734Anda juga dapat mengetik mention secara manual tanpa menggunakan picker: `@agent-<name>` untuk subagent lokal, atau `@agent-` diikuti dengan nama yang dibatasi untuk subagent plugin, misalnya `@agent-my-plugin:code-reviewer`.

721 735 

722**Jalankan seluruh sesi sebagai subagent.** Lewatkan [`--agent <name>`](/id/cli-reference) untuk memulai sesi di mana thread utama itu sendiri mengambil prompt sistem subagent, pembatasan alat, dan model:736**Jalankan seluruh sesi sebagai subagent.** Lewatkan [`--agent <name>`](/id/cli-reference) untuk memulai sesi di mana thread utama itu sendiri mengambil prompt sistem subagent, pembatasan alat, dan model:

723 737 


757 Jalankan subagent di foreground atau background771 Jalankan subagent di foreground atau background

758</h3>772</h3>

759 773 

760Subagent dapat berjalan di foreground (blocking) atau background (concurrent):774Subagent dapat berjalan di foreground atau background:

761 775 

762* **Subagent foreground** memblokir percakapan utama sampai selesai. Prompt izin dilewatkan kepada Anda saat muncul.776* **Subagent foreground** memblokir percakapan utama sampai selesai. Prompt izin dilewatkan kepada Anda saat muncul.

763* **Subagent background** berjalan secara bersamaan sementara Anda terus bekerja. {/* min-version: 2.1.186 */}Mulai dari v2.1.186, ketika subagent background mencapai panggilan alat yang memerlukan izin, prompt muncul di sesi utama Anda dan menyebutkan subagent yang bertanya. Setujui untuk membiarkan subagent melanjutkan, atau tekan Esc untuk menolak panggilan alat itu saja tanpa menghentikan subagent. Sebelum v2.1.186, subagent background auto-deny setiap panggilan alat yang sebaliknya akan meminta.777* **Subagent background** berjalan secara bersamaan sementara Anda terus bekerja. {/* min-version: 2.1.186 */}Mulai dari v2.1.186, ketika subagent background mencapai panggilan alat yang memerlukan izin, prompt muncul di sesi utama Anda dan menyebutkan subagent yang bertanya. Setujui untuk membiarkan subagent melanjutkan, atau tekan Esc untuk menolak panggilan alat itu saja tanpa menghentikan subagent. Sebelum v2.1.186, subagent background auto-deny setiap panggilan alat yang sebaliknya akan meminta.


781 795 

782Salah satu penggunaan paling efektif untuk subagent adalah mengisolasi operasi yang menghasilkan jumlah output besar. Menjalankan tes, mengambil dokumentasi, atau memproses file log dapat mengonsumsi konteks yang signifikan. Dengan mendelegasikan ini ke subagent, output verbose tetap dalam konteks subagent sementara hanya ringkasan relevan yang kembali ke percakapan utama Anda.796Salah satu penggunaan paling efektif untuk subagent adalah mengisolasi operasi yang menghasilkan jumlah output besar. Menjalankan tes, mengambil dokumentasi, atau memproses file log dapat mengonsumsi konteks yang signifikan. Dengan mendelegasikan ini ke subagent, output verbose tetap dalam konteks subagent sementara hanya ringkasan relevan yang kembali ke percakapan utama Anda.

783 797 

784```text theme={null}798```text wrap theme={null}

785Use a subagent to run the test suite and report only the failing tests with their error messages799Use a subagent to run the test suite and report only the failing tests with their error messages

786```800```

787 801 


791 805 

792Untuk investigasi independen, hasilkan beberapa subagent untuk bekerja secara bersamaan:806Untuk investigasi independen, hasilkan beberapa subagent untuk bekerja secara bersamaan:

793 807 

794```text theme={null}808```text wrap theme={null}

795Research the authentication, database, and API modules in parallel using separate subagents809Research the authentication, database, and API modules in parallel using separate subagents

796```810```

797 811 


809 823 

810Untuk alur kerja multi-langkah, minta Claude untuk menggunakan subagent secara berurutan. Setiap subagent menyelesaikan tugasnya dan mengembalikan hasil ke Claude, yang kemudian melewatkan konteks relevan ke subagent berikutnya.824Untuk alur kerja multi-langkah, minta Claude untuk menggunakan subagent secara berurutan. Setiap subagent menyelesaikan tugasnya dan mengembalikan hasil ke Claude, yang kemudian melewatkan konteks relevan ke subagent berikutnya.

811 825 

812```text theme={null}826```text wrap theme={null}

813Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them827Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them

814```828```

815 829 


820Gunakan **percakapan utama** ketika:834Gunakan **percakapan utama** ketika:

821 835 

822* Tugas memerlukan bolak-balik yang sering atau penyempurnaan iteratif836* Tugas memerlukan bolak-balik yang sering atau penyempurnaan iteratif

823* Beberapa fase berbagi konteks yang signifikan (perencanaan implementasi pengujian)837* Beberapa fase berbagi konteks yang signifikan, seperti perencanaan, implementasi, dan pengujian

824* Anda membuat perubahan cepat dan tertarget838* Anda membuat perubahan cepat dan tertarget

825* Latensi penting. Subagent dimulai segar dan mungkin memerlukan waktu untuk mengumpulkan konteks839* Latensi penting. Subagent dimulai segar dan mungkin memerlukan waktu untuk mengumpulkan konteks

826 840 


840 854 

841{/* min-version: 2.1.172 */}Mulai dari Claude Code v2.1.172, subagent dapat menghasilkan subagent-nya sendiri. Gunakan ini ketika tugas yang didelegasikan itu sendiri terbagi menjadi subtask paralel, seperti subagent reviewer yang mengirimkan verifier per temuan, sehingga output perantara tidak pernah mencapai percakapan utama Anda. Hanya ringkasan subagent tingkat atas yang kembali kepada Anda.855{/* min-version: 2.1.172 */}Mulai dari Claude Code v2.1.172, subagent dapat menghasilkan subagent-nya sendiri. Gunakan ini ketika tugas yang didelegasikan itu sendiri terbagi menjadi subtask paralel, seperti subagent reviewer yang mengirimkan verifier per temuan, sehingga output perantara tidak pernah mencapai percakapan utama Anda. Hanya ringkasan subagent tingkat atas yang kembali kepada Anda.

842 856 

843Subagent bersarang dikonfigurasi dengan cara yang sama seperti subagent tingkat atas dan diselesaikan dari [scope](#choose-the-subagent-scope) yang sama. Panel subagent di bawah input prompt menunjukkan pohon lengkap: setiap baris menampilkan hitungan `(+N)` keturunan, dan membuka baris menunjukkan anak langsung subagent itu dengan jalur kembali ke `main`. Tab Running dalam [`/agents`](#use-the-%2Fagents-command) mencantumkan subagent yang berjalan sebagai daftar datar.857Subagent bersarang dikonfigurasi dengan cara yang sama seperti subagent tingkat atas dan diselesaikan dari [scope](#choose-the-subagent-scope) yang sama. Panel subagent di bawah input prompt menunjukkan pohon lengkap: setiap baris menampilkan hitungan `(+N)` keturunan, dan {/* min-version: 2.1.193 */}mulai dari v2.1.193, membuka baris menunjukkan saudara dan anak langsung subagent itu dengan jalur kembali ke `main`. Tab Running dalam [`/agents`](#use-the-%2Fagents-command) mencantumkan subagent yang berjalan sebagai daftar datar.

844 858 

845Kedalaman dihitung sebagai jumlah level subagent di bawah percakapan utama, terlepas dari apakah setiap level berjalan di [foreground atau background](#run-subagents-in-foreground-or-background). Subagent pada kedalaman lima tidak menerima alat Agent dan tidak dapat menghasilkan lebih lanjut. Batasnya tetap dan tidak dapat dikonfigurasi.859Kedalaman dihitung sebagai jumlah level subagent di bawah percakapan utama, terlepas dari apakah setiap level berjalan di [foreground atau background](#run-subagents-in-foreground-or-background). Subagent pada kedalaman lima tidak menerima alat Agent dan tidak dapat menghasilkan lebih lanjut. Batasnya tetap dan tidak dapat dikonfigurasi.

846 860 


884 898 

885Untuk melanjutkan subagent, minta Claude untuk melanjutkan pekerjaan sebelumnya:899Untuk melanjutkan subagent, minta Claude untuk melanjutkan pekerjaan sebelumnya:

886 900 

887```text theme={null}901```text wrap theme={null}

888Use the code-reviewer subagent to review the authentication module902Use the code-reviewer subagent to review the authentication module

889[Agent completes]903[Agent completes]

890 904 


900 914 

901* **Pemadatan percakapan utama**: Ketika percakapan utama dipadatkan, transkrip subagent tidak terpengaruh. Mereka disimpan dalam file terpisah.915* **Pemadatan percakapan utama**: Ketika percakapan utama dipadatkan, transkrip subagent tidak terpengaruh. Mereka disimpan dalam file terpisah.

902* **Persistensi sesi**: Transkrip subagent bertahan dalam sesi mereka. Anda dapat [melanjutkan subagent](#resume-subagents) setelah memulai ulang Claude Code dengan melanjutkan sesi yang sama.916* **Persistensi sesi**: Transkrip subagent bertahan dalam sesi mereka. Anda dapat [melanjutkan subagent](#resume-subagents) setelah memulai ulang Claude Code dengan melanjutkan sesi yang sama.

903* **Pembersihan otomatis**: Transkrip dibersihkan berdasarkan pengaturan `cleanupPeriodDays` (default: 30 hari).917* **Pembersihan otomatis**: Transkrip dibersihkan berdasarkan pengaturan `cleanupPeriodDays`, yang default ke 30 hari.

904 918 

905<h4 id="auto-compaction">919<h4 id="auto-compaction">

906 Auto-compaction920 Auto-compaction


942 956 

943Anda dapat memulai fork sendiri dengan `/fork` diikuti oleh direktif, dengan atau tanpa variabel yang ditetapkan. Claude Code memberi nama fork dari kata-kata pertama direktif. Contoh berikut mem-fork percakapan untuk draft kasus uji sementara Anda melanjutkan dengan implementasi dalam sesi utama:957Anda dapat memulai fork sendiri dengan `/fork` diikuti oleh direktif, dengan atau tanpa variabel yang ditetapkan. Claude Code memberi nama fork dari kata-kata pertama direktif. Contoh berikut mem-fork percakapan untuk draft kasus uji sementara Anda melanjutkan dengan implementasi dalam sesi utama:

944 958 

945```text theme={null}959```text wrap theme={null}

946/fork draft unit tests for the parser changes so far960/fork draft unit tests for the parser changes so far

947```961```

948 962 

Details

196 196 

197* [Claude for Teams atau Enterprise](/id/authentication#claude-for-teams-or-enterprise)197* [Claude for Teams atau Enterprise](/id/authentication#claude-for-teams-or-enterprise)

198* [Anthropic Console](/id/authentication#claude-console-authentication)198* [Anthropic Console](/id/authentication#claude-console-authentication)

199* [Claude apps gateway](/id/claude-apps-gateway), gateway yang di-host sendiri yang menambahkan sign-in IdP di depan Amazon Bedrock, Google Vertex AI, Microsoft Foundry, atau Anthropic API

199* [Amazon Bedrock](/id/amazon-bedrock)200* [Amazon Bedrock](/id/amazon-bedrock)

200* [Claude Platform on AWS](/id/claude-platform-on-aws)201* [Claude Platform on AWS](/id/claude-platform-on-aws)

201* [Google Vertex AI](/id/google-vertex-ai)202* [Google Vertex AI](/id/google-vertex-ai)

Details

11Untuk menambahkan tools kustom, hubungkan [server MCP](/id/mcp). Untuk memperluas Claude dengan alur kerja berbasis prompt yang dapat digunakan kembali, tulis [skill](/id/skills), yang berjalan melalui tool `Skill` yang ada daripada menambahkan entri tool baru.11Untuk menambahkan tools kustom, hubungkan [server MCP](/id/mcp). Untuk memperluas Claude dengan alur kerja berbasis prompt yang dapat digunakan kembali, tulis [skill](/id/skills), yang berjalan melalui tool `Skill` yang ada daripada menambahkan entri tool baru.

12 12 

13| Tool | Deskripsi | Izin Diperlukan |13| Tool | Deskripsi | Izin Diperlukan |

14| :--------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------- |14| :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------- |

15| `Agent` | Menjalankan [subagent](/id/sub-agents) dengan jendela konteks sendiri untuk menangani tugas. Lihat [perilaku Agent tool](#agent-tool-behavior) | Tidak |15| `Agent` | Menjalankan [subagent](/id/sub-agents) dengan jendela konteks sendiri untuk menangani tugas. Lihat [perilaku Agent tool](#agent-tool-behavior) | Tidak |

16| `Artifact` | Menerbitkan file HTML atau Markdown sebagai [artifact](/id/artifacts): halaman interaktif pribadi di claude.ai yang dapat Anda bagikan dalam organisasi Anda. {/* plan-availability: feature=artifacts plans=team,enterprise providers=anthropic */}Memerlukan paket Team atau Enterprise dan autentikasi `/login`; lihat [Ketersediaan](/id/artifacts#availability) | Ya |16| `Artifact` | Menerbitkan file HTML atau Markdown sebagai [artifact](/id/artifacts): halaman interaktif pribadi di claude.ai yang dapat Anda bagikan dalam organisasi Anda. {/* plan-availability: feature=artifacts plans=team,enterprise providers=anthropic */}Memerlukan paket Team atau Enterprise dan autentikasi `/login`; lihat [Ketersediaan](/id/artifacts#availability) | Ya |

17| `AskUserQuestion` | Mengajukan pertanyaan pilihan ganda untuk mengumpulkan persyaratan atau memperjelas ambiguitas | Tidak |17| `AskUserQuestion` | Mengajukan pertanyaan pilihan ganda untuk mengumpulkan persyaratan atau memperjelas ambiguitas | Tidak |


28| `Grep` | Mencari pola dalam konten file. Lihat [perilaku Grep tool](#grep-tool-behavior) | Tidak |28| `Grep` | Mencari pola dalam konten file. Lihat [perilaku Grep tool](#grep-tool-behavior) | Tidak |

29| `ListMcpResourcesTool` | Mencantumkan resources yang diekspos oleh [server MCP](/id/mcp) yang terhubung | Tidak |29| `ListMcpResourcesTool` | Mencantumkan resources yang diekspos oleh [server MCP](/id/mcp) yang terhubung | Tidak |

30| `LSP` | Intelijen kode melalui language servers: lompat ke definisi, temukan referensi, laporkan kesalahan tipe dan peringatan. Lihat [perilaku LSP tool](#lsp-tool-behavior) | Tidak |30| `LSP` | Intelijen kode melalui language servers: lompat ke definisi, temukan referensi, laporkan kesalahan tipe dan peringatan. Lihat [perilaku LSP tool](#lsp-tool-behavior) | Tidak |

31| `Monitor` | Menjalankan perintah di latar belakang dan mengirimkan setiap baris output kembali ke Claude, sehingga dapat bereaksi terhadap entri log, perubahan file, atau status yang dipolling di tengah percakapan. Lihat [Monitor tool](#monitor-tool) | Ya |31| `Monitor` | Menjalankan perintah di latar belakang dan mengirimkan setiap baris output kembali ke Claude, sehingga dapat bereaksi terhadap entri log, perubahan file, atau status yang dipolling di tengah percakapan. Dapat juga membuka WebSocket dan memperlakukan setiap pesan masuk sebagai acara. Lihat [Monitor tool](#monitor-tool) | Ya |

32| `NotebookEdit` | Memodifikasi sel notebook Jupyter. Lihat [perilaku NotebookEdit tool](#notebookedit-tool-behavior) | Ya |32| `NotebookEdit` | Memodifikasi sel notebook Jupyter. Lihat [perilaku NotebookEdit tool](#notebookedit-tool-behavior) | Ya |

33| `PowerShell` | Menjalankan perintah PowerShell secara native. Lihat [PowerShell tool](#powershell-tool) untuk ketersediaan | Ya |33| `PowerShell` | Menjalankan perintah PowerShell secara native. Lihat [PowerShell tool](#powershell-tool) untuk ketersediaan | Ya |

34| `PushNotification` | Mengirim notifikasi desktop, dan push phone ketika [Remote Control](/id/remote-control) terhubung, sehingga tugas yang berjalan lama atau [tugas terjadwal](/id/scheduled-tasks) dapat menjangkau Anda ketika Anda pergi. {/* plan-availability: feature=push-notifications providers=anthropic */}Pengiriman push berjalan melalui infrastruktur yang dihosting Anthropic, yang tidak dapat diakses dari Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry | Tidak |34| `PushNotification` | Mengirim notifikasi desktop, dan push phone ketika [Remote Control](/id/remote-control) terhubung, sehingga tugas yang berjalan lama atau [tugas terjadwal](/id/scheduled-tasks) dapat menjangkau Anda ketika Anda pergi. {/* plan-availability: feature=push-notifications providers=anthropic */}Pengiriman push berjalan melalui infrastruktur yang dihosting Anthropic, yang tidak dapat diakses dari Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry | Tidak |

35| `Read` | Membaca konten file. Lihat [perilaku Read tool](#read-tool-behavior) | Tidak |35| `Read` | Membaca konten file. Lihat [perilaku Read tool](#read-tool-behavior) | Tidak |

36| `ReadMcpResourceTool` | Membaca resource MCP tertentu berdasarkan URI | Tidak |36| `ReadMcpResourceTool` | Membaca resource MCP tertentu berdasarkan URI | Tidak |

37| `RemoteTrigger` | Membuat, memperbarui, menjalankan, dan mencantumkan [Routines](/id/routines) di claude.ai. Mendukung perintah `/schedule`. {/* plan-availability: feature=routines plans=pro,max,team,enterprise providers=anthropic */}Routines berada di claude.ai dan memerlukan paket Pro, Max, Team, atau Enterprise, jadi tool ini tidak dapat diakses dari Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry | Tidak |37| `RemoteTrigger` | Membuat, memperbarui, menjalankan, dan mencantumkan [Routines](/id/routines) di claude.ai. Mendukung perintah `/schedule`. {/* plan-availability: feature=routines plans=pro,max,team,enterprise providers=anthropic */}Routines berada di claude.ai dan memerlukan paket Pro, Max, Team, atau Enterprise, jadi tool ini tidak dapat diakses dari Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry | Tidak |

38| `ReportFindings` | Melaporkan temuan code-review sebagai daftar terstruktur, dengan file, ringkasan, dan skenario kegagalan per temuan, sehingga Claude Code dapat merender mereka daripada mencetaknya sebagai teks. Claude memanggilnya ketika instruksi code-review aktif memberitahunya untuk melakukannya. {/* min-version: 2.1.196 */}Memerlukan Claude Code v2.1.196 atau lebih baru | Tidak |

38| `ScheduleWakeup` | Menjadwalkan ulang iterasi berikutnya dari [self-paced `/loop`](/id/scheduled-tasks#let-claude-choose-the-interval). Claude memanggil ini di akhir setiap iterasi untuk memilih kapan iterasi berikutnya berjalan, antara satu menit dan satu jam ke depan; Anda tidak memanggilnya secara langsung. Wakeup yang tertunda muncul dalam `session_crons` dalam [Stop hook input](/id/hooks#stop-input). {/* plan-availability: feature=loop-dynamic providers=anthropic */}Tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry, di mana prompt `/loop` tanpa interval berjalan pada jadwal tetap | Tidak |39| `ScheduleWakeup` | Menjadwalkan ulang iterasi berikutnya dari [self-paced `/loop`](/id/scheduled-tasks#let-claude-choose-the-interval). Claude memanggil ini di akhir setiap iterasi untuk memilih kapan iterasi berikutnya berjalan, antara satu menit dan satu jam ke depan; Anda tidak memanggilnya secara langsung. Wakeup yang tertunda muncul dalam `session_crons` dalam [Stop hook input](/id/hooks#stop-input). {/* plan-availability: feature=loop-dynamic providers=anthropic */}Tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry, di mana prompt `/loop` tanpa interval berjalan pada jadwal tetap | Tidak |

39| `SendMessage` | Mengirim pesan ke anggota [agent team](/id/agent-teams), atau [melanjutkan subagent](/id/sub-agents#resume-subagents) berdasarkan ID agennya. Subagent yang dihentikan secara otomatis melanjutkan di latar belakang. Pesan protokol tim terstruktur memerlukan agent teams | Tidak |40| `SendMessage` | Mengirim pesan ke anggota [agent team](/id/agent-teams), atau [melanjutkan subagent](/id/sub-agents#resume-subagents) berdasarkan ID agennya. Subagent yang dihentikan secara otomatis melanjutkan di latar belakang. Pesan protokol tim terstruktur memerlukan agent teams | Tidak |

41| `SendUserFile` | Mengirim file dari sesi kepada Anda dengan keterangan opsional, sehingga laporan yang dihasilkan, diagram, tangkapan layar, atau artefak yang dibangun mencapai perangkat Anda daripada hanya disebutkan dalam transkrip. {/* min-version: 2.1.196 */}Sejak v2.1.196, input `display` opsional mengontrol presentasi: `render` membuka file secara inline di klien, `attach` menampilkan kartu unduhan saja, dan ketika tidak diatur klien memutuskan berdasarkan jenis file. Tersedia ketika klien [Remote Control](/id/remote-control) terhubung atau sesi berjalan di lingkungan cloud terkelola seperti [Claude Code di web](/id/claude-code-on-the-web). Pengiriman berjalan melalui infrastruktur yang dihosting Anthropic, jadi tool tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry | Tidak |

40| `ShareOnboardingGuide` | {/* plan-availability: feature=onboarding-guide-share plans=pro,max,team,enterprise providers=anthropic */}Mengunggah `ONBOARDING.md` dan mengembalikan tautan berbagi yang dapat dibuka rekan tim di Claude Code. Dipanggil dari `/team-onboarding` setelah panduan ditulis. Tersedia untuk pelanggan claude.ai pada paket Pro, Max, Team, dan Enterprise | Ya |42| `ShareOnboardingGuide` | {/* plan-availability: feature=onboarding-guide-share plans=pro,max,team,enterprise providers=anthropic */}Mengunggah `ONBOARDING.md` dan mengembalikan tautan berbagi yang dapat dibuka rekan tim di Claude Code. Dipanggil dari `/team-onboarding` setelah panduan ditulis. Tersedia untuk pelanggan claude.ai pada paket Pro, Max, Team, dan Enterprise | Ya |

41| `Skill` | Menjalankan [skill](/id/skills#control-who-invokes-a-skill) dalam percakapan utama | Ya |43| `Skill` | Menjalankan [skill](/id/skills#control-who-invokes-a-skill) dalam percakapan utama | Ya |

42| `TaskCreate` | Membuat tugas baru dalam daftar tugas | Tidak |44| `TaskCreate` | Membuat tugas baru dalam daftar tugas | Tidak |


206* Poll PR atau CI job dan laporkan ketika statusnya berubah208* Poll PR atau CI job dan laporkan ketika statusnya berubah

207* Pantau direktori untuk perubahan file209* Pantau direktori untuk perubahan file

208* Lacak output dari skrip yang sedang berjalan lama yang Anda tunjukkan210* Lacak output dari skrip yang sedang berjalan lama yang Anda tunjukkan

211* Terhubung ke feed WebSocket dan laporkan setiap pesan saat tiba

209 212 

210Claude menulis skrip kecil untuk watch, menjalankannya di latar belakang, dan menerima setiap baris output saat tiba. Anda terus bekerja dalam sesi yang sama dan Claude menyela ketika peristiwa tiba. Hentikan monitor dengan meminta Claude untuk membatalkannya atau dengan mengakhiri sesi.213Untuk sebagian besar watch, Claude menulis skrip kecil, menjalankannya di latar belakang, dan menerima setiap baris output saat tiba. Untuk server yang sudah mendorong peristiwa, Claude dapat membuka [WebSocket](#websocket-source) daripada menjalankan skrip.

211 214 

212Monitor menggunakan [aturan izin yang sama seperti Bash](/id/permissions#tool-specific-permission-rules), jadi pola `allow` dan `deny` yang Anda tetapkan untuk Bash berlaku di sini juga. Ini tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry. Ini juga tidak tersedia ketika `DISABLE_TELEMETRY` atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur.215Anda terus bekerja dalam sesi yang sama dan Claude menyela ketika peristiwa tiba. Hentikan monitor dengan meminta Claude untuk membatalkannya atau dengan mengakhiri sesi.

216 

217Ketika Monitor menjalankan perintah, ia menggunakan [aturan izin yang sama seperti Bash](/id/permissions#tool-specific-permission-rules), jadi pola `allow` dan `deny` yang Anda tetapkan untuk Bash berlaku di sini juga. [Sumber WebSocket](#websocket-source) memiliki prompt persetujuan tersendiri.

218 

219Tool ini tidak tersedia di Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry. Ini juga tidak tersedia ketika `DISABLE_TELEMETRY` atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur.

213 220 

214Plugin dapat mendeklarasikan monitors yang dimulai secara otomatis ketika plugin aktif, daripada meminta Claude untuk memulainya. Lihat [plugin monitors](/id/plugins-reference#monitors).221Plugin dapat mendeklarasikan monitors yang dimulai secara otomatis ketika plugin aktif, daripada meminta Claude untuk memulainya. Lihat [plugin monitors](/id/plugins-reference#monitors).

215 222 

223<h3 id="websocket-source">

224 WebSocket source

225</h3>

226 

227<Note>

228 Sumber WebSocket memerlukan Claude Code v2.1.195 atau lebih baru.

229</Note>

230 

231Ketika server sudah mendorong peristiwa melalui WebSocket, Claude dapat terhubung langsung ke dalamnya daripada menulis skrip polling. Setiap jenis aktivitas soket menjadi peristiwa atau mengakhiri watch:

232 

233* **Pesan teks**: masing-masing menjadi satu peristiwa, bahkan ketika pesan mencakup beberapa baris.

234* **Pesan biner**: tidak dilewatkan. Claude menerima baris placeholder seperti `[binary frame, 512 bytes]` sebagai gantinya.

235* **Pesan lebih besar dari 1 MiB**: watch berakhir, jadi berlangganan feed yang disaring jika ada.

236* **Penutupan soket**: watch berakhir dan Claude menerima kode penutupan.

237 

238Watch WebSocket mengambil input `ws` sebagai pengganti `command`, dan satu panggilan Monitor tidak dapat menggabungkan keduanya. Input `ws` memiliki dua bidang:

239 

240| Field | Required | Description |

241| :---------- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |

242| `url` | Yes | Endpoint untuk terhubung. Harus berupa URL `ws://` atau `wss://` tanpa kredensial tertanam atau spasi, hanya menggunakan karakter ASCII |

243| `protocols` | No | Nama subprotokol WebSocket untuk ditawarkan selama handshake. Setiap entri harus berupa token subprotokol yang valid, dan daftar tidak dapat berisi duplikat |

244 

245Input `timeout_ms` dan `persistent` berperilaku sama seperti untuk perintah: watch berakhir pada tenggat waktu kecuali `persistent` diatur, dan `TaskStop` membatalkannya lebih awal.

246 

247Membuka WebSocket meminta persetujuan, dan prompt tidak menawarkan opsi untuk melewati prompt di masa depan untuk host yang sama.

248 

249Claude Code menolak URL yang menunjuk ke alamat pribadi, link-local, atau cloud-metadata, termasuk nama host yang menyelesaikan ke salah satu. Ini juga menolak host di `sandbox.network.deniedDomains`, dan ketika [`allowManagedDomainsOnly`](/id/settings#sandbox-settings) diatur dalam pengaturan terkelola, host apa pun di luar daftar izin terkelola.

250 

216<h2 id="notebookedit-tool-behavior">251<h2 id="notebookedit-tool-behavior">

217 Perilaku NotebookEdit tool252 Perilaku NotebookEdit tool

218</h2>253</h2>


265 300 

266Perilaku reset direktori kerja sesi utama yang sama yang dijelaskan di bagian Bash tool berlaku untuk perintah PowerShell, termasuk variabel lingkungan `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.301Perilaku reset direktori kerja sesi utama yang sama yang dijelaskan di bagian Bash tool berlaku untuk perintah PowerShell, termasuk variabel lingkungan `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR`.

267 302 

303{/* min-version: 2.1.196 */}Mulai dari v2.1.196, PowerShell tool mencocokkan penanganan Bash tool terhadap kode keluar pencarian dan diff. Kode keluar 1 dari `grep`, `egrep`, `fgrep`, dan `git grep` berarti tidak ada kecocokan, dan kode keluar 1 dari `git diff` berarti perbedaan ada, sehingga hasil ini tidak dilaporkan ke Claude sebagai kegagalan perintah.

304 

268<h3 id="preview-limitations">305<h3 id="preview-limitations">

269 Batasan pratinjau306 Batasan pratinjau

270</h3>307</h3>


284 321 

285Read menangani beberapa tipe file di luar teks biasa:322Read menangani beberapa tipe file di luar teks biasa:

286 323 

287* **Gambar**: PNG, JPG, dan format gambar lainnya dikembalikan sebagai konten visual yang dapat dilihat Claude, bukan sebagai byte mentah. Claude Code mengubah ukuran dan mengompresi ulang gambar besar agar sesuai dengan batas ukuran gambar model sebelum mengirimnya, jadi Claude mungkin melihat versi downscaled dari screenshot besar. Jika Claude melewatkan detail tingkat piksel halus dalam gambar besar, minta untuk memotong wilayah minat terlebih dahulu, misalnya dengan ImageMagick melalui Bash.324* **Gambar**: PNG, JPG, dan format gambar lainnya dikembalikan sebagai konten visual yang dapat dilihat Claude, bukan sebagai byte mentah. Claude Code mengubah ukuran dan mengompresi ulang gambar besar agar sesuai dengan batas ukuran gambar model sebelum mengirimnya, jadi Claude mungkin melihat versi downscaled dari screenshot besar. Mulai dari v2.1.196, gambar yang masih lebih besar dari 500KB setelah pengubahan ukuran tersebut dikodekan ulang sebagai JPEG dengan kualitas berkurang dengan dimensi pikselnya tetap tidak berubah. Jika Claude melewatkan detail tingkat piksel halus dalam gambar besar, minta untuk memotong wilayah minat terlebih dahulu, misalnya dengan ImageMagick melalui Bash.

288* **PDF**: Claude membaca file `.pdf` pendek secara keseluruhan. Untuk PDF lebih panjang dari 10 halaman, membaca dalam rentang dengan parameter `pages`, seperti `"1-5"`, hingga 20 halaman sekaligus.325* **PDF**: Claude membaca file `.pdf` pendek secara keseluruhan. Untuk PDF lebih panjang dari 10 halaman, membaca dalam rentang dengan parameter `pages`, seperti `"1-5"`, hingga 20 halaman sekaligus.

289* **Notebook Jupyter**: file `.ipynb` mengembalikan semua sel dengan output mereka, termasuk kode, markdown, dan visualisasi.326* **Notebook Jupyter**: file `.ipynb` mengembalikan semua sel dengan output mereka, termasuk kode, markdown, dan visualisasi.

290 327 

Details

45Jika masalah Anda tidak tercantum, lakukan pemeriksaan diagnostik di bawah untuk mempersempit penyebabnya.45Jika masalah Anda tidak tercantum, lakukan pemeriksaan diagnostik di bawah untuk mempersempit penyebabnya.

46 46 

47<Tip>47<Tip>

48 Jika Anda lebih suka melewati terminal sepenuhnya, [Claude Code Desktop app](/id/desktop-quickstart) memungkinkan Anda menginstal dan menggunakan Claude Code melalui antarmuka grafis. Unduh untuk [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs) atau [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) dan mulai coding tanpa setup command-line apa pun.48 Jika Anda lebih suka melewati terminal sepenuhnya, [Claude Code Desktop app](/id/desktop-quickstart) memungkinkan Anda menginstal dan menggunakan Claude Code melalui antarmuka grafis. Unduh untuk [macOS](https://claude.ai/api/desktop/darwin/universal/dmg/latest/redirect?utm_source=claude_code\&utm_medium=docs), [Windows](https://claude.com/download?utm_source=claude_code\&utm_medium=docs), atau [Linux](https://claude.com/download?utm_source=claude_code\&utm_medium=docs) dan mulai coding tanpa setup command-line apa pun.

49</Tip>49</Tip>

50 50 

51<h2 id="run-diagnostic-checks">51<h2 id="run-diagnostic-checks">

Details

18 Persyaratan18 Persyaratan

19</h2>19</h2>

20 20 

21Dikte suara mengalirkan audio yang direkam ke server Anthropic untuk transkripsi. Audio tidak diproses secara lokal. Layanan ucapan-ke-teks hanya tersedia saat Anda melakukan autentikasi dengan akun Claude.ai, dan tidak tersedia saat Claude Code dikonfigurasi untuk menggunakan kunci API Anthropic secara langsung, Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry. Dikte suara juga tidak tersedia saat organisasi Anda memiliki kepatuhan HIPAA yang diaktifkan. Transkripsi tidak menggunakan pesan Claude atau token dan tidak dihitung terhadap batas yang ditampilkan di `/usage`. Lihat [penggunaan data](/id/data-usage) untuk mengetahui bagaimana Anthropic menangani data Anda.21Dikte suara mengalirkan audio yang direkam ke server Anthropic untuk transkripsi. Audio tidak diproses secara lokal. Layanan ini memerlukan semua hal berikut:

22 22 

23Dikte suara juga memerlukan akses mikrofon lokal, sehingga tidak berfungsi di lingkungan jarak jauh seperti [Claude Code di web](/id/claude-code-on-the-web) atau sesi SSH. Di WSL, dikte suara memerlukan WSLg untuk akses audio. WSLg disertakan dengan WSL2 saat diinstal dari Microsoft Store di Windows 10 atau 11. Jika WSLg tidak tersedia, misalnya di WSL1, jalankan Claude Code di Windows asli sebagai gantinya.23* **Akun Claude.ai**: layanan ucapan-ke-teks hanya tersedia saat Anda melakukan autentikasi dengan akun Claude.ai, dan tidak tersedia saat Claude Code dikonfigurasi untuk menggunakan kunci API Anthropic secara langsung, Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry.

24* **Organisasi tanpa kepatuhan HIPAA yang diaktifkan**: `/voice` menampilkan `Voice mode is disabled by your organization's policy` saat pembatasan ini berlaku.

25* **Mikrofon lokal**: dikte suara tidak berfungsi di lingkungan jarak jauh seperti [Claude Code di web](/id/claude-code-on-the-web) atau sesi SSH.

26* **WSLg, jika Anda menjalankan Claude Code di WSL**: WSLg disertakan dengan WSL2 saat diinstal dari Microsoft Store di Windows 10 atau 11. Jika WSLg tidak tersedia, misalnya di WSL1, jalankan Claude Code di Windows asli sebagai gantinya.

27 

28Transkripsi tidak menggunakan pesan Claude atau token dan tidak dihitung terhadap batas yang ditampilkan di `/usage`. Lihat [penggunaan data](/id/data-usage) untuk mengetahui bagaimana Anthropic menangani data Anda.

24 29 

25Perekaman audio menggunakan modul asli bawaan di macOS, Linux, dan Windows. Di Linux, jika modul asli tidak dapat dimuat, Claude Code kembali ke `arecord` dari ALSA utils atau `rec` dari SoX. Jika tidak ada yang tersedia, `/voice` mencetak perintah instalasi untuk manajer paket Anda.30Perekaman audio menggunakan modul asli bawaan di macOS, Linux, dan Windows. Di Linux, jika modul asli tidak dapat dimuat, Claude Code kembali ke `arecord` dari ALSA utils atau `rec` dari SoX. Jika tidak ada yang tersedia, `/voice` mencetak perintah instalasi untuk manajer paket Anda.

26 31 


91 96 

92Mode ketuk mengalihkan perekaman dengan penekanan tombol tunggal: ketuk sekali untuk memulai, berbicara, kemudian ketuk lagi untuk mengirim prompt. Tidak ada pemanasan, dan Anda tidak perlu menahan kunci.97Mode ketuk mengalihkan perekaman dengan penekanan tombol tunggal: ketuk sekali untuk memulai, berbicara, kemudian ketuk lagi untuk mengirim prompt. Tidak ada pemanasan, dan Anda tidak perlu menahan kunci.

93 98 

94Aktifkan mode ketuk dengan `/voice tap`. Dengan input prompt kosong, ketuk `Space` untuk mulai merekam. Footer menampilkan bentuk gelombang langsung saat merekam. Ketuk `Space` lagi untuk berhenti. Claude Code menyisipkan transkrip dan mengirimkan prompt secara otomatis saat transkrip setidaknya tiga kata panjang. Transkrip yang lebih pendek dimasukkan tetapi tidak dikirim, sehingga ketukan yang tidak disengaja tidak mengirim kata yang tersesat.99Aktifkan mode ketuk dengan `/voice tap`. Dengan input prompt kosong, ketuk `Space` untuk mulai merekam. Footer menampilkan bentuk gelombang langsung saat merekam. Ketuk `Space` lagi untuk berhenti.

100 

101Claude Code menyisipkan transkrip dan mengirimkan prompt secara otomatis saat transkrip setidaknya tiga kata panjang. Transkrip yang lebih pendek dimasukkan tetapi tidak dikirim, sehingga ketukan yang tidak disengaja tidak mengirim kata yang tersesat.

102 

103Ambang batas tiga kata menghitung kata untuk bahasa yang ditulis tanpa spasi. Mulai dari v2.1.195, transkrip Jepang, Cina, dan Thailand menghitung kata individual, sehingga mereka auto-submit dalam mode ketuk dan dalam mode tahan dengan `autoSubmit`. Versi sebelumnya menghitung transkrip tanpa spasi sebagai satu kata dan tidak pernah mengirimnya secara otomatis.

95 104 

96Ketukan pertama hanya mulai merekam saat input prompt kosong, sehingga Anda masih dapat mengetik spasi secara normal saat menyusun pesan. Ketukan kedua menghentikan perekaman terlepas dari isi input. Perekaman juga berhenti secara otomatis setelah 15 detik keheningan atau dua menit total.105Ketukan pertama hanya mulai merekam saat input prompt kosong, sehingga Anda masih dapat mengetik spasi secara normal saat menyusun pesan. Ketukan kedua menghentikan perekaman terlepas dari isi input. Perekaman juga berhenti secara otomatis setelah 15 detik keheningan atau dua menit total.

97 106 


169Masalah umum saat dikte suara tidak diaktifkan atau merekam:178Masalah umum saat dikte suara tidak diaktifkan atau merekam:

170 179 

171* **`Voice mode requires a Claude.ai account`**: Anda diautentikasi dengan kunci API atau penyedia pihak ketiga. Jalankan `/login` untuk masuk dengan akun Claude.ai.180* **`Voice mode requires a Claude.ai account`**: Anda diautentikasi dengan kunci API atau penyedia pihak ketiga. Jalankan `/login` untuk masuk dengan akun Claude.ai.

181* **`Voice mode is disabled by your organization's policy`**: konfigurasi kepatuhan organisasi Anda menonaktifkan dikte suara, seperti yang dijelaskan dalam [Persyaratan](#requirements). Hubungi administrator organisasi Anda untuk mengonfirmasi apakah dikte suara tersedia untuk organisasi Anda.

172* **`Microphone access is denied`**: berikan izin mikrofon ke terminal Anda di pengaturan sistem. Di macOS, buka System Settings → Privacy & Security → Microphone dan aktifkan aplikasi terminal Anda, kemudian jalankan `/voice` lagi. Di Windows, buka Settings → Privacy & security → Microphone dan aktifkan akses mikrofon untuk aplikasi desktop, kemudian jalankan `/voice` lagi. Jika terminal Anda tidak terdaftar dalam pengaturan macOS, lihat [Terminal tidak terdaftar dalam pengaturan Mikrofon macOS](#terminal-not-listed-in-macos-microphone-settings).182* **`Microphone access is denied`**: berikan izin mikrofon ke terminal Anda di pengaturan sistem. Di macOS, buka System Settings → Privacy & Security → Microphone dan aktifkan aplikasi terminal Anda, kemudian jalankan `/voice` lagi. Di Windows, buka Settings → Privacy & security → Microphone dan aktifkan akses mikrofon untuk aplikasi desktop, kemudian jalankan `/voice` lagi. Jika terminal Anda tidak terdaftar dalam pengaturan macOS, lihat [Terminal tidak terdaftar dalam pengaturan Mikrofon macOS](#terminal-not-listed-in-macos-microphone-settings).

173* **`No audio recording tool found` di Linux**: modul audio asli tidak dapat dimuat dan tidak ada fallback yang diinstal. Instal SoX dengan perintah yang ditampilkan dalam pesan kesalahan, misalnya `sudo apt-get install sox`.183* **`No audio recording tool found` di Linux**: modul audio asli tidak dapat dimuat dan tidak ada fallback yang diinstal. Instal SoX dengan perintah yang ditampilkan dalam pesan kesalahan, misalnya `sudo apt-get install sox`.

184* **`Voice mode requires a microphone, but SoX could not open an audio capture device`**: SoX diinstal, tetapi host tidak memiliki perangkat penangkap audio, misalnya server headless atau kontainer. Jalankan Claude Code pada mesin dengan mikrofon. {/* min-version: 2.1.195 */}Mulai dari v2.1.195, Claude Code di Linux melaporkan pesan ini dalam situasi itu; versi sebelumnya meminta Anda untuk menginstal SoX bahkan ketika sudah diinstal.

174* **`Voice mode could not find a working audio recorder in WSL`**: WSLg merutekan audio melalui PulseAudio daripada perangkat ALSA, jadi SoX memerlukan backend PulseAudio-nya diinstal secara eksplisit. Jalankan `sudo apt install sox libsox-fmt-pulse`. Menginstal `sox` saja menarik backend ALSA, yang tidak dapat merekam di WSL karena tidak ada perangkat `/dev/snd`.185* **`Voice mode could not find a working audio recorder in WSL`**: WSLg merutekan audio melalui PulseAudio daripada perangkat ALSA, jadi SoX memerlukan backend PulseAudio-nya diinstal secara eksplisit. Jalankan `sudo apt install sox libsox-fmt-pulse`. Menginstal `sox` saja menarik backend ALSA, yang tidak dapat merekam di WSL karena tidak ada perangkat `/dev/snd`.

175* **`Voice input is failing repeatedly and has been paused`**: dikte suara mengalami beberapa kegagalan awal berturut-turut dan berhenti mencoba sesi baru sampai satu berhasil. Ini biasanya berarti mikrofon atau tumpukan audio di host ini tidak dapat menangkap audio, misalnya server headless, shell jarak jauh tanpa passthrough audio, atau izin mikrofon yang ditolak. Konfirmasi perangkat input yang berfungsi, perbaiki penyebab mendasar dari entri di atas, kemudian picu suara lagi.186* **`Voice input is failing repeatedly and has been paused`**: dikte suara mengalami beberapa kegagalan awal berturut-turut dan berhenti mencoba sesi baru sampai satu berhasil. Ini biasanya berarti mikrofon atau tumpukan audio di host ini tidak dapat menangkap audio, misalnya server headless, shell jarak jauh tanpa passthrough audio, atau izin mikrofon yang ditolak. Konfirmasi perangkat input yang berfungsi, perbaiki penyebab mendasar dari entri di atas, kemudian picu suara lagi.

176* **Tidak ada yang terjadi saat menahan `Space` dalam mode tahan**: perhatikan input prompt saat Anda menahan. Jika spasi terus menumpuk, dikte suara kemungkinan mati; jalankan `/voice hold` untuk mengaktifkannya. Jika hanya satu atau dua spasi muncul dan kemudian tidak ada, dikte suara aktif tetapi deteksi tahan tidak dipicu. Deteksi tahan memerlukan terminal Anda untuk mengirim peristiwa pengulangan kunci, sehingga tidak dapat mendeteksi kunci yang ditahan jika pengulangan kunci dinonaktifkan di tingkat OS. Beralih ke mode ketuk dengan `/voice tap` untuk menghindari persyaratan pengulangan kunci.187* **Tidak ada yang terjadi saat menahan `Space` dalam mode tahan**: perhatikan input prompt saat Anda menahan. Jika spasi terus menumpuk, dikte suara kemungkinan mati; jalankan `/voice hold` untuk mengaktifkannya. Jika hanya satu atau dua spasi muncul dan kemudian tidak ada, dikte suara aktif tetapi deteksi tahan tidak dipicu. Deteksi tahan memerlukan terminal Anda untuk mengirim peristiwa pengulangan kunci, sehingga tidak dapat mendeteksi kunci yang ditahan jika pengulangan kunci dinonaktifkan di tingkat OS. Beralih ke mode ketuk dengan `/voice tap` untuk menghindari persyaratan pengulangan kunci.

whats-new.md +16 −0

Details

8 8 

9Ringkasan dev mingguan menyoroti fitur yang paling mungkin mengubah cara Anda bekerja. Setiap entri mencakup kode yang dapat dijalankan, demo singkat, dan tautan ke dokumentasi lengkap. Untuk setiap perbaikan bug dan peningkatan kecil, lihat [changelog](/id/changelog).9Ringkasan dev mingguan menyoroti fitur yang paling mungkin mengubah cara Anda bekerja. Setiap entri mencakup kode yang dapat dijalankan, demo singkat, dan tautan ke dokumentasi lengkap. Untuk setiap perbaikan bug dan peningkatan kecil, lihat [changelog](/id/changelog).

10 10 

11<Update label="Week 26" description="June 22–26, 2026" tags={["v2.1.185–v2.1.193"]}>

12 **`claude mcp login`**: autentikasi server MCP yang dikonfigurasi dari shell Anda alih-alih menu `/mcp` interaktif, dan hapus kredensial yang disimpannya nanti dengan `claude mcp logout`.

13 

14 Juga minggu ini: **shell mode merespons output perintah** (`! npm test` mendapat penjelasan tanpa prompt kedua); **`/rewind`** dapat melanjutkan percakapan dari sebelum `/clear` dijalankan; dan **subagent latar belakang** sekarang menampilkan prompt izin di sesi utama alih-alih auto-denying.

15 

16 [Baca ringkasan Week 26 →](/id/whats-new/2026-w26)

17</Update>

18 

19<Update label="Week 25" description="June 15–19, 2026" tags={["v2.1.178–v2.1.183"]}>

20 **Artifacts**: ubah output sesi menjadi halaman langsung yang dapat dibagikan di claude.ai yang diperbarui di tempat saat sesi bekerja, sekarang dalam beta di paket Team dan Enterprise.

21 

22 Juga minggu ini: **aturan deny dan ask cocok dengan parameter tool** dengan `Tool(param:value)`, misalnya `Agent(model:opus)`; **`/config key=value`** menetapkan pengaturan apa pun dari prompt, dalam mode `-p`, dan dari Remote Control; dan **auto mode memblokir perintah git yang merusak** ketika Anda tidak meminta untuk membuang pekerjaan lokal.

23 

24 [Baca ringkasan Week 25 →](/id/whats-new/2026-w25)

25</Update>

26 

11<Update label="Week 24" description="June 8–12, 2026" tags={["v2.1.166–v2.1.176"]}>27<Update label="Week 24" description="June 8–12, 2026" tags={["v2.1.166–v2.1.176"]}>

12 **`/cd`**: pindahkan sesi saat ini ke direktori kerja baru di tengah percakapan tanpa membangun kembali cache prompt.28 **`/cd`**: pindahkan sesi saat ini ke direktori kerja baru di tengah percakapan tanpa membangun kembali cache prompt.

13 29 

Details

73 <p className="digest-feature-try">Tambahkan batas minimum ke pengaturan terkelola Anda sehingga klien lama menolak untuk memulai:</p>73 <p className="digest-feature-try">Tambahkan batas minimum ke pengaturan terkelola Anda sehingga klien lama menolak untuk memulai:</p>

74 74 

75 ```json managed-settings.json theme={null}75 ```json managed-settings.json theme={null}

76 {

76 "requiredMinimumVersion": "2.1.163"77 "requiredMinimumVersion": "2.1.163"

78 }

77 ```79 ```

78 80 

79 <a className="digest-feature-link" href="/docs/id/admin-setup#decide-what-to-enforce">Tentukan apa yang akan diterapkan</a>81 <a className="digest-feature-link" href="/docs/id/admin-setup#decide-what-to-enforce">Tentukan apa yang akan diterapkan</a>

whats-new/2026-w25.md +90 −0 created

Details

1> ## Documentation Index

2> 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.

4 

5# Minggu 25 · 15–19 Juni 2026

6 

7> Publikasikan halaman langsung yang dapat dibagikan dari sesi Anda dengan Artifacts, cocokkan parameter alat dalam aturan deny dan ask, dan atur pengaturan apa pun dari prompt dengan /config.

8 

9<div className="digest-meta">

10 <span>Rilis <a href="/docs/id/changelog#2-1-178">v2.1.178 → v2.1.183</a></span>

11 <span>3 fitur · 15–19 Juni</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Artifacts</span>

17 </div>

18 

19 <p className="digest-feature-lede">Artifact adalah halaman langsung dan interaktif yang Claude Code publikasikan dari sesi Anda ke URL pribadi di claude.ai, dan halaman tersebut diperbarui di tempat saat sesi terus bekerja. Minta satu ketika teks terminal bukan medium yang tepat, seperti panduan PR dengan diff yang dianotasi secara inline atau dasbor yang dibangun dari data sesi. Artifacts sedang dalam beta di paket Team dan Enterprise.</p>

20 

21 <Frame>

22 <video autoPlay muted loop playsInline className="w-full" src="https://mintcdn.com/claude-code/1ylKDoQynT1UgfEK/images/whats-new/artifacts.mp4?fit=max&auto=format&n=1ylKDoQynT1UgfEK&q=85&s=7f5391559d2bc69989621b36322fcff1" data-path="images/whats-new/artifacts.mp4" />

23 </Frame>

24 

25 <p className="digest-feature-try">Minta Claude untuk membuat halaman, kemudian setujui prompt publikasi:</p>

26 

27 ```text Claude Code theme={null}

28 > Make an artifact that walks through this PR with the diff annotated inline.

29 ```

30 

31 <a className="digest-feature-link" href="/docs/id/artifacts#create-an-artifact">Buat artifact</a>

32</div>

33 

34<div className="digest-feature">

35 <div className="digest-feature-header">

36 <span className="digest-feature-title">Cocokkan berdasarkan parameter input</span>

37 <span className="digest-feature-pill">v2.1.178</span>

38 </div>

39 

40 <p className="digest-feature-lede">Aturan deny dan ask permission sekarang dapat mencocokkan parameter input alat dengan sintaks <code>Tool(param:value)</code>. Misalnya, <code>Agent(model:opus)</code> mencocokkan spawn subagent yang meminta tingkat model Opus. Nilai menerima `*` sebagai wildcard, jadi `Agent(isolation:*)` mencocokkan nilai isolasi eksplisit apa pun.</p>

41 

42 <p className="digest-feature-try">Tambahkan aturan parameter ke daftar deny di <code>settings.json</code>:</p>

43 

44 ```json .claude/settings.json {3} theme={null}

45 {

46 "permissions": {

47 "deny": ["Agent(model:opus)"]

48 }

49 }

50 ```

51 

52 <a className="digest-feature-link" href="/docs/id/permissions#match-by-input-parameter">Cocokkan berdasarkan parameter input</a>

53</div>

54 

55<div className="digest-feature">

56 <div className="digest-feature-header">

57 <span className="digest-feature-title">Atur pengaturan apa pun dari prompt</span>

58 <span className="digest-feature-pill">v2.1.181</span>

59 </div>

60 

61 <p className="digest-feature-lede">Teruskan <code>key=value</code> ke <code>/config</code> untuk mengubah pengaturan secara langsung tanpa membuka antarmuka Pengaturan. Sintaks ini juga berfungsi dalam mode non-interaktif dengan flag <code>-p</code> dan dari Remote Control.</p>

62 

63 <p className="digest-feature-try">Atur pengaturan <code>thinking</code> dari prompt:</p>

64 

65 ```text Claude Code theme={null}

66 > /config thinking=false

67 ```

68 

69 <a className="digest-feature-link" href="/docs/id/commands#all-commands">Referensi perintah</a>

70</div>

71 

72<div className="digest-wins">

73 <p className="digest-wins-title">Kemenangan lainnya</p>

74 

75 <div className="digest-wins-grid">

76 <div>Mode Auto sekarang memblokir perintah git yang merusak (`git reset --hard`, `git clean -fd`, `git stash drop`) ketika Anda tidak meminta untuk membuang pekerjaan lokal, dan memblokir <code>terraform destroy</code> kecuali Anda meminta stack tertentu</div>

77 <div>Atur pengaturan <code>attribution.sessionUrl</code> baru ke <code>false</code> untuk menghilangkan tautan sesi claude.ai dari commit dan PR di sesi web dan Remote Control</div>

78 <div>Di antarmuka <code>/config</code>, Enter dan Space keduanya mengubah pengaturan yang dipilih, dan Esc sekarang menyimpan dan menutup alih-alih mengembalikan</div>

79 <div>Pengaturan opt-in <code>sandbox.allowAppleEvents</code> baru memungkinkan perintah sandbox mengirim Apple Events di macOS</div>

80 <div>Arahkan <code>CLAUDE\_CLIENT\_PRESENCE\_FILE</code> ke file penanda untuk menekan notifikasi push seluler saat Anda berada di mesin</div>

81 <div>Paragraf panjang sekarang streaming baris demi baris alih-alih menunggu jeda baris pertama</div>

82 <div>Penurunan koneksi API di tengah-tengah thinking sekarang mencoba ulang secara otomatis alih-alih menampilkan "Connection closed while thinking"</div>

83 <div>Dengan <code>CLAUDE\_CODE\_EXPERIMENTAL\_AGENT\_TEAMS=1</code> diatur, setiap sesi memiliki satu tim implisit, jadi Anda spawn rekan kerja secara langsung dengan parameter <code>name</code> alat Agent</div>

84 <div>Skills di direktori <code>.claude/skills</code> bersarang dimuat saat bekerja pada file di sana; pada benturan nama skill bersarang muncul sebagai `<dir>:<name>` sehingga keduanya tetap tersedia</div>

85 <div>Prompt caching tetap tidak membaca pada <code>ANTHROPIC\_BASE\_URL</code> kustom dan di Foundry</div>

86 <div>Write dan Edit menghasilkan file berukuran nol atau terpotong di drive jaringan dan folder yang disinkronkan cloud</div>

87 </div>

88</div>

89 

90[Changelog lengkap untuk v2.1.178–v2.1.183 →](/id/changelog#2-1-178)

whats-new/2026-w26.md +66 −0 created

Details

1> ## Documentation Index

2> 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.

4 

5# Minggu 26 · 22–26 Juni 2026

6 

7> Autentikasi server MCP dari shell Anda dengan claude mcp login, dapatkan respons terhadap output perintah shell mode dengan awalan !, dan lanjutkan percakapan dari sebelum /clear dengan /rewind.

8 

9<div className="digest-meta">

10 <span>Rilis <a href="/id/docs/changelog#2-1-185">v2.1.185 → v2.1.193</a></span>

11 <span>2 fitur · 22–26 Juni</span>

12</div>

13 

14<div className="digest-feature">

15 <div className="digest-feature-header">

16 <span className="digest-feature-title">Autentikasi server MCP dari CLI</span>

17 <span className="digest-feature-pill">v2.1.186</span>

18 </div>

19 

20 <p className="digest-feature-lede">Perintah baru `claude mcp login <name>` dan `claude mcp logout <name>` mengautentikasi server MCP yang dikonfigurasi dari shell Anda alih-alih menu <code>/mcp</code> interaktif. `claude mcp login` menjalankan alur OAuth server secara langsung, dan `claude mcp logout` menghapus kredensial yang disimpan.</p>

21 

22 <p className="digest-feature-try">Jalankan alur OAuth untuk server yang dikonfigurasi tanpa membuka sesi:</p>

23 

24 ```bash terminal theme={null}

25 claude mcp login sentry

26 ```

27 

28 <a className="digest-feature-link" href="/id/docs/mcp#authenticate-from-the-command-line">Autentikasi dari baris perintah</a>

29</div>

30 

31<div className="digest-feature">

32 <div className="digest-feature-header">

33 <span className="digest-feature-title">Shell mode merespons output perintah</span>

34 <span className="digest-feature-pill">v2.1.186</span>

35 </div>

36 

37 <p className="digest-feature-lede">Perintah yang Anda jalankan dengan awalan <code>!</code> sekarang mendapatkan respons dari Claude setelah output masuk ke transkrip, sehingga Anda dapat menjalankan <code>! npm test</code> dan mendapatkan penjelasan tentang kegagalan tanpa prompt kedua. Respons biaya sama dengan mengirim prompt normal. Untuk mempertahankan perilaku sebelumnya, di mana output ditambahkan ke konteks tanpa respons, atur <code>respondToBashCommands</code> ke <code>false</code> dalam <code>settings.json</code>.</p>

38 

39 <p className="digest-feature-try">Jalankan perintah dan dapatkan respons terhadap outputnya:</p>

40 

41 ```text Claude Code theme={null}

42 > ! npm test

43 ```

44 

45 <a className="digest-feature-link" href="/id/docs/interactive-mode#shell-mode-with-prefix">Shell mode dengan awalan !</a>

46</div>

47 

48<div className="digest-wins">

49 <p className="digest-wins-title">Kemenangan lainnya</p>

50 

51 <div className="digest-wins-grid">

52 <div><code>/rewind</code> sekarang dapat melanjutkan percakapan dari sebelum <code>/clear</code> dijalankan</div>

53 <div>Pengaturan <code>sandbox.credentials</code> baru memblokir perintah bersandbox dari membaca file kredensial dan variabel lingkungan rahasia</div>

54 <div>Pembatasan model yang dikonfigurasi organisasi sekarang berlaku untuk pemilih model, `--model`, <code>/model</code>, dan <code>ANTHROPIC\_MODEL</code>, dengan pesan "dibatasi oleh pengaturan organisasi Anda" ketika model yang dibatasi dipilih</div>

55 <div>Pengaturan <code>autoMode.classifyAllShell</code> baru merutekan semua perintah Bash dan PowerShell melalui pengklasifikasi mode otomatis, dan alasan penolakan sekarang ditampilkan dalam transkrip, toast penolakan, dan <code>/permissions</code></div>

56 <div>Acara log OpenTelemetry <code>claude\_code.assistant\_response</code> baru membawa teks respons model; penerapan yang sudah mencatat konten prompt mulai menerimanya saat upgrade, jadi atur <code>OTEL\_LOG\_ASSISTANT\_RESPONSES=0</code> untuk tetap hanya prompt</div>

57 <div>Subagen latar belakang sekarang menampilkan prompt izin dalam sesi utama alih-alih auto-deny; dialog menunjukkan agen mana yang meminta, dan Esc menolak hanya alat itu</div>

58 <div><code>/install-github-app</code> sekarang dapat menginstal hanya GitHub App dan melewati langkah alur kerja Actions dan rahasia</div>

59 <div>Host yang Anda izinkan dalam dialog izin jaringan sandbox diingat untuk sisa sesi alih-alih re-prompt pada setiap koneksi</div>

60 <div>Respons streaming menggunakan sekitar 37% lebih sedikit CPU, dan pertumbuhan memori sesi panjang dari cache output terminal berkurang</div>

61 <div>`/review <pr>` sekarang menggunakan mesin ulasan yang sama dengan <code>/code-review medium</code></div>

62 <div>Perintah <code>!</code> mode Bash mendapatkan pelengkapan otomatis jalur file langsung</div>

63 </div>

64</div>

65 

66[Changelog lengkap untuk v2.1.185–v2.1.193 →](/id/changelog#2-1-185)

workflows.md +2 −0

Details

68 68 

69 <Step title="Baca laporan">69 <Step title="Baca laporan">

70 Ketika run selesai, laporan mendarat di sesi Anda. Ini mengutip sumber setiap klaim berasal, dengan klaim yang tidak bertahan pemeriksaan silang sudah disaring.70 Ketika run selesai, laporan mendarat di sesi Anda. Ini mengutip sumber setiap klaim berasal, dengan klaim yang tidak bertahan pemeriksaan silang sudah disaring.

71 

72 {/* min-version: 2.1.196 */}Mulai dari v2.1.196, ketika agen verifikasi tidak dapat memeriksa klaim, seperti setelah batas laju atau kesalahan API, laporan mencantumkan klaim tersebut sebagai tidak terverifikasi daripada menghitungnya sebagai dibantah.

71 </Step>73 </Step>

72</Steps>74</Steps>

73 75