SpyBara
Go Premium

Documentation 2026-07-02 23:59 UTC to 2026-07-03 23:00 UTC

51 files changed +1,102 −348. View all changes and history on the product overview
2026
Sat 4 03:01 Fri 3 23:00 Thu 2 23:59 Wed 1 21:01

admin-setup.md +2 −0

Details

90| [Version floor](/id/settings) | Cegah auto-update dari penginstalan di bawah minimum di seluruh organisasi | `minimumVersion` |90| [Version floor](/id/settings) | Cegah auto-update dari penginstalan di bawah minimum di seluruh organisasi | `minimumVersion` |

91| [Required version range](/id/settings) | Tolak untuk memulai sama sekali ketika versi yang berjalan berada di luar rentang yang disetujui organisasi. Lebih kuat daripada `minimumVersion`, yang hanya memblokir downgrade | `requiredMinimumVersion`, `requiredMaximumVersion` |91| [Required version range](/id/settings) | Tolak untuk memulai sama sekali ketika versi yang berjalan berada di luar rentang yang disetujui organisasi. Lebih kuat daripada `minimumVersion`, yang hanya memblokir downgrade | `requiredMinimumVersion`, `requiredMaximumVersion` |

92 92 

93Organisasi yang anggotanya melakukan autentikasi melalui claude.ai atau Anthropic API juga dapat mengatur model tanpa menerapkan pengaturan: [pembatasan model organisasi](/id/model-config#organization-model-restrictions) menonaktifkan model individual, [model default organisasi](/id/model-config#organization-default-model) menetapkan model mana yang dimulai sesi baru, dan [batas upaya organisasi](/id/model-config#organization-effort-limits) membatasi tingkat upaya per peran. Ketiga kontrol memerlukan paket Claude Enterprise. Pembatasan model dan batas upaya diberlakukan di sisi server; model default adalah titik awal yang dapat diubah pengguna, kecuali organisasi memberlakukannya. Penegakan tersedia untuk serangkaian organisasi terbatas; tanyakan tim akun Anthropic Anda tentang ketersediaan. Tidak ada kontrol ini yang menjangkau sesi di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau [Claude Platform on AWS](/id/claude-platform-on-aws); di penyedia tersebut, gunakan `availableModels` di atas untuk pembatasan dan kunci `model` dalam pengaturan terkelola untuk default.

94 

93Aturan izin dan sandboxing mencakup lapisan berbeda. Menolak WebFetch memblokir alat fetch Claude, tetapi jika Bash diizinkan, `curl` dan `wget` masih dapat menjangkau URL apa pun. Sandboxing menutup celah itu dengan daftar allowlist domain jaringan yang diberlakukan di tingkat OS.95Aturan izin dan sandboxing mencakup lapisan berbeda. Menolak WebFetch memblokir alat fetch Claude, tetapi jika Bash diizinkan, `curl` dan `wget` masih dapat menjangkau URL apa pun. Sandboxing menutup celah itu dengan daftar allowlist domain jaringan yang diberlakukan di tingkat OS.

94 96 

95Untuk model ancaman yang dilindungi kontrol ini, lihat [Security](/id/security).97Untuk model ancaman yang dilindungi kontrol ini, lihat [Security](/id/security).

advisor.md +4 −3

Details

85Advisor harus setidaknya sama mampu dengan model utama. Advisor yang diterima untuk setiap model utama adalah:85Advisor harus setidaknya sama mampu dengan model utama. Advisor yang diterima untuk setiap model utama adalah:

86 86 

87| Model utama | Advisor yang diterima | Catatan |87| Model utama | Advisor yang diterima | Catatan |

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| Sonnet 5 | Fable, Opus, Sonnet 5 | Advisor Sonnet 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. Opus 4.6 utama juga menerima advisor Sonnet 5 |92| Opus 4.6 | Fable, Opus, Sonnet 5 | Sonnet 5 dan Opus 4.6 diperingkat sebagai sama mampu, jadi Opus 4.6 utama menerima advisor Sonnet 5 |

93| Opus 4.7 atau lebih baru | Fable, Opus 4.7, Opus 4.8 | Opus 4.7 dan Opus 4.8 diperingkat sebagai sama mampu, jadi keduanya menerima yang lain sebagai advisor. Opus 4.7 utama dengan advisor Opus 4.6 atau Sonnet 5 ditolak |

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

94 95 

95Fable 5 memerlukan Claude Code v2.1.170 atau lebih baru dan akses Fable 5, baik bertindak sebagai model utama atau advisor.96Fable 5 memerlukan Claude Code v2.1.170 atau lebih baru dan akses Fable 5, baik bertindak sebagai model utama atau advisor.


174/advisor off175/advisor off

175```176```

176 177 

177Untuk menonaktifkan alat advisor sepenuhnya, termasuk perintah `/advisor` dan bendera `--advisor`, atur `CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`. Lihat [Environment variables](/id/env-vars).178Untuk menonaktifkan alat advisor sepenuhnya, atur `CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`. Perintah `/advisor` menjadi tidak tersedia dan `advisorModel` yang dikonfigurasi apa pun diabaikan. Bendera `--advisor` diterima tetapi tidak memiliki efek; skrip yang ada yang meneruskannya terus berfungsi tanpa kesalahan. Lihat [Environment variables](/id/env-vars).

178 179 

179<h2 id="compare-with-related-features">180<h2 id="compare-with-related-features">

180 Bandingkan dengan fitur terkait181 Bandingkan dengan fitur terkait

Details

86<Accordion title="Contoh: Periksa message types dan handle results">86<Accordion title="Contoh: Periksa message types dan handle results">

87 <CodeGroup>87 <CodeGroup>

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

89 import asyncio

89 from claude_agent_sdk import query, AssistantMessage, ResultMessage90 from claude_agent_sdk import query, AssistantMessage, ResultMessage

90 91 

92 

93 async def main():

94 try:

91 async for message in query(prompt="Summarize this project"):95 async for message in query(prompt="Summarize this project"):

92 if isinstance(message, AssistantMessage):96 if isinstance(message, AssistantMessage):

93 print(f"Turn completed: {len(message.content)} content blocks")97 print(f"Turn completed: {len(message.content)} content blocks")


96 print(message.result)100 print(message.result)

97 else:101 else:

98 print(f"Stopped: {message.subtype}")102 print(f"Stopped: {message.subtype}")

103 except Exception as error:

104 # A single-shot query() raises after yielding an error result. If the

105 # failure was an error result, the error subtype branches above have

106 # already run; connection or process failures yield no result message.

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

108 

109 

110 asyncio.run(main())

99 ```111 ```

100 112 

101 ```typescript TypeScript theme={null}113 ```typescript TypeScript theme={null}

102 import { query } from "@anthropic-ai/claude-agent-sdk";114 import { query } from "@anthropic-ai/claude-agent-sdk";

103 115 

116 try {

104 for await (const message of query({ prompt: "Summarize this project" })) {117 for await (const message of query({ prompt: "Summarize this project" })) {

105 if (message.type === "assistant") {118 if (message.type === "assistant") {

106 console.log(`Turn completed: ${message.message.content.length} content blocks`);119 console.log(`Turn completed: ${message.message.content.length} content blocks`);


113 }126 }

114 }127 }

115 }128 }

129 } catch (error) {

130 // A single-shot query() throws after yielding an error result. If the

131 // failure was an error result, the error subtype branches above have

132 // already run; connection or process failures yield no result message.

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

134 }

116 ```135 ```

117 </CodeGroup>136 </CodeGroup>

118</Accordion>137</Accordion>


321 340 

322Field `result` (final text output) hanya present pada variant `success`, jadi selalu periksa subtype sebelum membacanya. Semua result subtypes membawa `total_cost_usd`, `usage`, `num_turns`, dan `session_id` sehingga Anda dapat track cost dan resume bahkan setelah errors. Di Python, `total_cost_usd` dan `usage` diketik sebagai optional dan mungkin `None` pada beberapa error paths, jadi guard sebelum formatting mereka. Lihat [Tracking costs dan usage](/id/agent-sdk/cost-tracking) untuk details tentang interpreting `usage` fields.341Field `result` (final text output) hanya present pada variant `success`, jadi selalu periksa subtype sebelum membacanya. Semua result subtypes membawa `total_cost_usd`, `usage`, `num_turns`, dan `session_id` sehingga Anda dapat track cost dan resume bahkan setelah errors. Di Python, `total_cost_usd` dan `usage` diketik sebagai optional dan mungkin `None` pada beberapa error paths, jadi guard sebelum formatting mereka. Lihat [Tracking costs dan usage](/id/agent-sdk/cost-tracking) untuk details tentang interpreting `usage` fields.

323 342 

343<Note>

344 Ketika query berakhir pada error result:

345 

346 * Sebuah single-shot `query()` call menghasilkan final result message, kemudian raises error yang mencakup failure text, seperti `Reached maximum number of turns`. Raise adalah intentional — bungkus loop dalam try block jika kode Anda perlu melanjutkan melewatinya. Underlying Claude Code process juga exits dengan nonzero code.

347 * Sebuah streaming input session tetap alive, dan Anda dapat terus mengirim messages.

348</Note>

349 

324Hasil juga mencakup field `stop_reason` (`string | null` di TypeScript, `str | None` di Python) yang menunjukkan mengapa model berhenti generating pada final turn-nya. Common values adalah `end_turn` (model selesai secara normal), `max_tokens` (mencapai output token limit), dan `refusal` (model menolak request). Pada error result subtypes, `stop_reason` membawa value dari last assistant response sebelum loop berakhir. Untuk mendeteksi refusals, periksa `stop_reason === "refusal"` (TypeScript) atau `stop_reason == "refusal"` (Python). Lihat [`SDKResultMessage`](/id/agent-sdk/typescript#sdkresultmessage) (TypeScript) atau [`ResultMessage`](/id/agent-sdk/python#resultmessage) (Python) untuk full type.350Hasil juga mencakup field `stop_reason` (`string | null` di TypeScript, `str | None` di Python) yang menunjukkan mengapa model berhenti generating pada final turn-nya. Common values adalah `end_turn` (model selesai secara normal), `max_tokens` (mencapai output token limit), dan `refusal` (model menolak request). Pada error result subtypes, `stop_reason` membawa value dari last assistant response sebelum loop berakhir. Untuk mendeteksi refusals, periksa `stop_reason === "refusal"` (TypeScript) atau `stop_reason == "refusal"` (Python). Lihat [`SDKResultMessage`](/id/agent-sdk/typescript#sdkresultmessage) (TypeScript) atau [`ResultMessage`](/id/agent-sdk/python#resultmessage) (Python) untuk full type.

325 351 

326<h2 id="hooks">352<h2 id="hooks">


348 374 

349Contoh ini menggabungkan konsep-konsep kunci dari halaman ini ke dalam satu agent yang memperbaiki tes yang gagal. Ini mengkonfigurasi agent dengan tools yang diizinkan (auto-approved sehingga agent berjalan secara otonom), pengaturan proyek, dan batas keamanan pada turns dan effort reasoning. Saat loop berjalan, ini menangkap session ID untuk potensi resumption, menangani hasil akhir, dan mencetak total biaya.375Contoh ini menggabungkan konsep-konsep kunci dari halaman ini ke dalam satu agent yang memperbaiki tes yang gagal. Ini mengkonfigurasi agent dengan tools yang diizinkan (auto-approved sehingga agent berjalan secara otonom), pengaturan proyek, dan batas keamanan pada turns dan effort reasoning. Saat loop berjalan, ini menangkap session ID untuk potensi resumption, menangani hasil akhir, dan mencetak total biaya.

350 376 

377Karena panggilan `query()` single-shot menaikkan error setelah menghasilkan hasil error, loop dibungkus dalam blok try sehingga skrip keluar dengan bersih ketika batas tercapai.

378 

351<CodeGroup>379<CodeGroup>

352 ```python Python theme={null}380 ```python Python theme={null}

353 import asyncio381 import asyncio


357 async def run_agent():385 async def run_agent():

358 session_id = None386 session_id = None

359 387 

388 try:

360 async for message in query(389 async for message in query(

361 prompt="Find and fix the bug causing test failures in the auth module",390 prompt="Find and fix the bug causing test failures in the auth module",

362 options=ClaudeAgentOptions(391 options=ClaudeAgentOptions(


389 print(f"Stopped: {message.subtype}")418 print(f"Stopped: {message.subtype}")

390 if message.total_cost_usd is not None:419 if message.total_cost_usd is not None:

391 print(f"Cost: ${message.total_cost_usd:.4f}")420 print(f"Cost: ${message.total_cost_usd:.4f}")

421 except Exception as error:

422 # A single-shot query() raises after yielding an error result. If the

423 # failure was an error result, the error subtype branches above have

424 # already run; connection or process failures yield no result message.

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

392 426 

393 427 

394 asyncio.run(run_agent())428 asyncio.run(run_agent())


399 433 

400 let sessionId: string | undefined;434 let sessionId: string | undefined;

401 435 

436 try {

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

403 prompt: "Find and fix the bug causing test failures in the auth module",438 prompt: "Find and fix the bug causing test failures in the auth module",

404 options: {439 options: {


428 console.log(`Cost: $${message.total_cost_usd.toFixed(4)}`);463 console.log(`Cost: $${message.total_cost_usd.toFixed(4)}`);

429 }464 }

430 }465 }

466 } catch (error) {

467 // A single-shot query() throws after yielding an error result. If the

468 // failure was an error result, the error subtype branches above have

469 // already run; connection or process failures yield no result message.

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

471 }

431 ```472 ```

432</CodeGroup>473</CodeGroup>

433 474 

Details

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

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

65 65 

66 try {

66 for await (const message of query({ prompt: "Summarize this project" })) {67 for await (const message of query({ prompt: "Summarize this project" })) {

67 if (message.type === "result") {68 if (message.type === "result") {

68 console.log(`Total cost: $${message.total_cost_usd}`);69 console.log(`Total cost: $${message.total_cost_usd}`);

69 }70 }

70 }71 }

72 } catch (error) {

73 // A single-shot query() throws after yielding an error result. If the

74 // failure was an error result, it still carried total_cost_usd and the

75 // branch above has already run; connection or process failures yield

76 // no result message.

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

78 }

71 ```79 ```

72 80 

73 ```python Python theme={null}81 ```python Python theme={null}


76 84 

77 85 

78 async def main():86 async def main():

87 try:

79 async for message in query(prompt="Summarize this project"):88 async for message in query(prompt="Summarize this project"):

80 if isinstance(message, ResultMessage):89 if isinstance(message, ResultMessage):

81 print(f"Total cost: ${message.total_cost_usd or 0}")90 print(f"Total cost: ${message.total_cost_usd or 0}")

91 except Exception as error:

92 # A single-shot query() raises after yielding an error result. If the

93 # failure was an error result, it still carried total_cost_usd and the

94 # branch above has already run; connection or process failures yield

95 # no result message.

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

82 97 

83 98 

84 asyncio.run(main())99 asyncio.run(main())


110let totalInputTokens = 0;125let totalInputTokens = 0;

111let totalOutputTokens = 0;126let totalOutputTokens = 0;

112 127 

113for await (const message of query({ prompt: "Summarize this project" })) {128try {

129 for await (const message of query({ prompt: "Summarize this project" })) {

114 if (message.type === "assistant") {130 if (message.type === "assistant") {

115 const msgId = message.message.id;131 const msgId = message.message.id;

116 132 


121 totalOutputTokens += message.message.usage.output_tokens;137 totalOutputTokens += message.message.usage.output_tokens;

122 }138 }

123 }139 }

140 }

141} catch (error) {

142 // A single-shot query() throws after yielding an error result, so the

143 // totals below still reflect the steps that ran before the failure.

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

124}145}

125 146 

126console.log(`Steps: ${seenIds.size}`);147console.log(`Steps: ${seenIds.size}`);


139```typescript theme={null}160```typescript theme={null}

140import { query } from "@anthropic-ai/claude-agent-sdk";161import { query } from "@anthropic-ai/claude-agent-sdk";

141 162 

142for await (const message of query({ prompt: "Summarize this project" })) {163try {

164 for await (const message of query({ prompt: "Summarize this project" })) {

143 if (message.type !== "result") continue;165 if (message.type !== "result") continue;

144 166 

145 for (const [modelName, usage] of Object.entries(message.modelUsage)) {167 for (const [modelName, usage] of Object.entries(message.modelUsage)) {


149 console.log(` Cache read: ${usage.cacheReadInputTokens}`);171 console.log(` Cache read: ${usage.cacheReadInputTokens}`);

150 console.log(` Cache creation: ${usage.cacheCreationInputTokens}`);172 console.log(` Cache creation: ${usage.cacheCreationInputTokens}`);

151 }173 }

174 }

175} catch (error) {

176 // A single-shot query() throws after yielding an error result. If the

177 // failure was an error result, the per-model breakdown above has already

178 // printed; connection or process failures yield no result message.

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

152}180}

153```181```

154 182 


173 ];201 ];

174 202 

175 for (const prompt of prompts) {203 for (const prompt of prompts) {

204 try {

176 for await (const message of query({ prompt })) {205 for await (const message of query({ prompt })) {

177 if (message.type === "result") {206 if (message.type === "result") {

178 totalSpend += message.total_cost_usd;207 totalSpend += message.total_cost_usd;

179 console.log(`This call: $${message.total_cost_usd}`);208 console.log(`This call: $${message.total_cost_usd}`);

180 }209 }

181 }210 }

211 } catch (error) {

212 // A single-shot query() throws after yielding an error result. If the

213 // failure was an error result, this call's cost was already counted;

214 // connection or process failures yield no result message. Continue

215 // with the next prompt.

216 console.error(`Call failed: ${error}`);

217 }

182 }218 }

183 219 

184 console.log(`Total spend: $${totalSpend.toFixed(4)}`);220 console.log(`Total spend: $${totalSpend.toFixed(4)}`);


199 ]235 ]

200 236 

201 for prompt in prompts:237 for prompt in prompts:

238 try:

202 async for message in query(prompt=prompt):239 async for message in query(prompt=prompt):

203 if isinstance(message, ResultMessage):240 if isinstance(message, ResultMessage):

204 cost = message.total_cost_usd or 0241 cost = message.total_cost_usd or 0

205 total_spend += cost242 total_spend += cost

206 print(f"This call: ${cost}")243 print(f"This call: ${cost}")

244 except Exception as error:

245 # A single-shot query() raises after yielding an error result. If

246 # the failure was an error result, this call's cost was already

247 # counted; connection or process failures yield no result message.

248 # Continue with the next prompt.

249 print(f"Call failed: {error}")

207 250 

208 print(f"Total spend: ${total_spend:.4f}")251 print(f"Total spend: ${total_spend:.4f}")

209 252 

Details

50 50 

51Untuk menggunakan file checkpointing, aktifkan dalam opsi Anda, tangkap UUID checkpoint dari aliran respons, kemudian panggil `rewindFiles()` (TypeScript) atau `rewind_files()` (Python) ketika Anda perlu memulihkan.51Untuk menggunakan file checkpointing, aktifkan dalam opsi Anda, tangkap UUID checkpoint dari aliran respons, kemudian panggil `rewindFiles()` (TypeScript) atau `rewind_files()` (Python) ketika Anda perlu memulihkan.

52 52 

53Contoh berikut menunjukkan alur lengkap: aktifkan checkpointing, tangkap UUID checkpoint dan ID sesi dari aliran respons, kemudian lanjutkan sesi nanti untuk mengembalikan file. Setiap langkah dijelaskan secara detail di bawah.53Contoh berikut menunjukkan alur lengkap: aktifkan checkpointing, tangkap UUID checkpoint dan ID sesi dari aliran respons, kemudian lanjutkan sesi nanti untuk mengembalikan file. Setiap langkah dijelaskan secara detail di bawah. Contoh-contoh di bagian ini menggunakan prompt "Refactor the authentication module". Jalankan mereka dalam proyek yang berisi modul autentikasi, atau ubah prompt untuk menamai file yang ada di proyek Anda, sehingga Anda dapat menonton file berubah dan melihat rewind memulihkannya.

54 54 

55<CodeGroup>55<CodeGroup>

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


197 session_id = None197 session_id = None

198 198 

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

200 # Update checkpoint on each user message (keeps the latest)200 # Capture the first user message UUID as the checkpoint

201 if isinstance(message, UserMessage) and message.uuid:201 if isinstance(message, UserMessage) and message.uuid and checkpoint_id is None:

202 checkpoint_id = message.uuid202 checkpoint_id = message.uuid

203 # Capture session ID from the result message203 # Capture session ID from the result message

204 if isinstance(message, ResultMessage):204 if isinstance(message, ResultMessage):


210 let sessionId: string | undefined;210 let sessionId: string | undefined;

211 211 

212 for await (const message of response) {212 for await (const message of response) {

213 // Update checkpoint on each user message (keeps the latest)213 // Capture the first user message UUID as the checkpoint

214 if (message.type === "user" && message.uuid) {214 if (message.type === "user" && message.uuid && !checkpointId) {

215 checkpointId = message.uuid;215 checkpointId = message.uuid;

216 }216 }

217 // Capture session ID from any message that has it217 // Capture session ID from any message that has it


250 ```250 ```

251 </CodeGroup>251 </CodeGroup>

252 252 

253 Jika Anda menangkap ID sesi dan ID checkpoint, Anda juga dapat mengembalikan dari CLI:253 Jika Anda menangkap ID sesi dan ID checkpoint, Anda juga dapat mengembalikan dari CLI. Perintah ini memerlukan executable `claude`, yang berasal dari [menginstal Claude Code](/id/setup) dan tidak diinstal oleh paket SDK. SDK mengaktifkan checkpointing untuk Anda, tetapi ketika Anda menjalankan `claude -p` secara langsung, Anda harus mengatur variabel lingkungan `CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING`:

254 254 

255 ```bash theme={null}255 ```bash theme={null}

256 claude -p --resume <session-id> --rewind-files <checkpoint-uuid>256 CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING=true claude -p --resume <session-id> --rewind-files <checkpoint-uuid>

257 ```257 ```

258 

259 Flag `--rewind-files` tidak muncul dalam output `claude --help`, tetapi CLI menerimanya seperti yang ditunjukkan.

258 </Step>260 </Step>

259</Steps>261</Steps>

260 262 


270 272 

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

272 274 

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

276 

273<CodeGroup>277<CodeGroup>

274 ```python Python theme={null}278 ```python Python theme={null}

275 import asyncio279 import asyncio


752 756 

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

754 758 

759<h3 id="file-rewinding-is-not-enabled-error">

760 Kesalahan "File rewinding is not enabled"

761</h3>

762 

763Kesalahan ini terjadi ketika Anda mencoba rewind non-interaktif tanpa checkpointing diaktifkan: menjalankan `claude -p` biasa dengan `--rewind-files`, atau menjalankan sesi SDK, termasuk sesi yang dilanjutkan, yang opsinya tidak mengaktifkan checkpointing. SDK menetapkan variabel lingkungan `CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING` secara internal hanya ketika `enable_file_checkpointing` (Python) atau `enableFileCheckpointing` (TypeScript) diaktifkan pada sesi yang melakukan rewind; CLI biasa tidak pernah menetapkannya.

764 

765**Solusi**: Untuk CLI biasa, atur variabel lingkungan saat menjalankan perintah:

766 

767```bash theme={null}

768CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING=true claude -p --resume <session-id> --rewind-files <checkpoint-uuid>

769```

770 

771Untuk SDK, atur `enable_file_checkpointing=True` (Python) atau `enableFileCheckpointing: true` (TypeScript) pada sesi yang dilanjutkan, seperti yang dilakukan contoh di halaman ini.

772 

755<h3 id="processtransport-is-not-ready-for-writing-error">773<h3 id="processtransport-is-not-ready-for-writing-error">

756 Kesalahan "ProcessTransport is not ready for writing"774 Kesalahan "ProcessTransport is not ready for writing"

757</h3>775</h3>

Details

28 </Step>28 </Step>

29 29 

30 <Step title="Ask rules">30 <Step title="Ask rules">

31 Periksa aturan `ask` dari [settings.json](/id/settings#permission-settings). Jika aturan ask cocok, panggilan jatuh melalui callback [`canUseTool`](/id/agent-sdk/user-input) Anda untuk konfirmasi, bahkan dalam mode `bypassPermissions`. Dalam mode `dontAsk` aturan ask yang cocok ditolak sebagai gantinya, karena mode itu tidak pernah meminta.31 Periksa aturan `ask` dari [settings.json](/id/settings#permission-settings). Jika aturan ask cocok, panggilan jatuh melalui callback [`canUseTool`](/id/agent-sdk/user-input) Anda untuk konfirmasi, bahkan dalam mode `bypassPermissions`.

32 

33 Alat yang memerlukan interaksi pengguna berperilaku dengan cara yang sama: `AskUserQuestion` dan alat MCP yang servernya menetapkan [`_meta["anthropic/requiresUserInteraction"]`](/id/mcp#require-approval-for-a-specific-tool) selalu jatuh melalui callback, bahkan ketika aturan allow cocok. Dalam mode `dontAsk` kedua kasus ditolak sebagai gantinya, karena mode itu tidak pernah meminta. {/* min-version: 2.1.199 */}Anotasi MCP memerlukan Claude Code v2.1.199 atau lebih baru.

32 </Step>34 </Step>

33 35 

34 <Step title="Permission mode">36 <Step title="Permission mode">


46 48 

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" />49<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 50 

51Mulai dari v2.1.198, jika Anda meneruskan callback `canUseTool` yang urutan evaluasi ini tidak pernah dapat mencapai, SDK TypeScript mengeluarkan peringatan proses Node.js sekali ketika kueri dibangun. Kode peringatan adalah `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Dua konfigurasi memicunya:

52 

53* `permissionMode: 'bypassPermissions'`, yang secara otomatis menyetujui setiap panggilan yang mencapai langkah mode izin

54* Setiap entri `allowedTools` bare seperti `"Read"`, yang secara otomatis menyetujui seluruh alat itu sebelum callback dikonsultasikan

55 

56Entri dengan specifier seperti `Bash(ls *)` dan mode `acceptEdits` tidak memicunya, dan aturan allow yang berasal dari file pengaturan tidak terlihat oleh pemeriksaan.

57 

58Dengarkan dengan `process.on('warning', ...)` dan cocokkan kode untuk mencatat atau menekannya. Untuk membatasi setiap panggilan alat terlepas dari mode dan aturan, gunakan hook [`PreToolUse`](/id/agent-sdk/hooks) sebagai gantinya.

59 

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

50 61 

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


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.78Aturan 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 79 

69<Warning>80<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`.81 **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. Pengecualiannya adalah alat yang memerlukan interaksi pengguna, `AskUserQuestion` dan alat MCP yang ditandai dengan [`_meta["anthropic/requiresUserInteraction"]`](/id/mcp#require-approval-for-a-specific-tool), yang mencapai callback bahkan ketika aturan allow cocok. 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>82</Warning>

72 83 

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

Details

958```958```

959 959 

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`: itu retry kapasitas error tanpa batas, dan {/* min-version: 2.1.199 */}sejak Claude Code v2.1.199 menaikkan default untuk error transien lainnya menjadi `300` dan menghapus batas pada variabel ini.

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

Details

7> Tentukan dan panggil subagents untuk mengisolasi konteks, menjalankan tugas secara paralel, dan menerapkan instruksi khusus dalam aplikasi Claude Agent SDK Anda.7> Tentukan dan panggil subagents untuk mengisolasi konteks, menjalankan tugas secara paralel, dan menerapkan instruksi khusus dalam aplikasi Claude Agent SDK Anda.

8 8 

9Subagents adalah instans agen terpisah yang dapat dihasilkan oleh agen utama Anda untuk menangani subtask yang terfokus.9Subagents adalah instans agen terpisah yang dapat dihasilkan oleh agen utama Anda untuk menangani subtask yang terfokus.

10Gunakan subagents untuk mengisolasi konteks bagi subtask yang terfokus, menjalankan beberapa analisis secara paralel, dan menerapkan instruksi khusus tanpa membuat prompt agen utama menjadi terlalu panjang.10Gunakan subagents untuk mengisolasi konteks, menjalankan beberapa analisis secara paralel, dan menerapkan instruksi khusus tanpa menambah prompt agen utama.

11 11 

12Panduan ini menjelaskan cara mendefinisikan dan menggunakan subagents dalam SDK menggunakan parameter `agents`.12Panduan ini menjelaskan cara mendefinisikan dan menggunakan subagents dalam SDK menggunakan parameter `agents`.

13 13 


17 17 

18Anda dapat membuat subagents dengan tiga cara:18Anda dapat membuat subagents dengan tiga cara:

19 19 

20* **Secara programatis**: gunakan parameter `agents` dalam opsi `query()` Anda ([TypeScript](/id/agent-sdk/typescript#agentdefinition), [Python](/id/agent-sdk/python#agentdefinition))20* **Secara programatis**: gunakan parameter `agents` dalam opsi `query()` Anda. Lihat referensi [TypeScript](/id/agent-sdk/typescript#agentdefinition) dan [Python](/id/agent-sdk/python#agentdefinition)

21* **Berbasis sistem file**: tentukan agents sebagai file markdown di direktori `.claude/agents/` (lihat [mendefinisikan subagents sebagai file](/id/sub-agents))21* **Berbasis sistem file**: tentukan agents sebagai file markdown di direktori `.claude/agents/`. Lihat [mendefinisikan subagents sebagai file](/id/sub-agents)

22* **Tujuan umum bawaan**: Claude dapat memanggil subagent `general-purpose` bawaan kapan saja melalui alat Agent tanpa Anda mendefinisikan apa pun22* **Tujuan umum bawaan**: Claude dapat memanggil subagent `general-purpose` bawaan kapan saja melalui alat Agent tanpa Anda mendefinisikan apa pun

23 23 

24Panduan ini berfokus pada pendekatan programatis, yang direkomendasikan untuk aplikasi SDK.24Panduan ini berfokus pada pendekatan programatis, yang direkomendasikan untuk aplikasi SDK.

25 25 

26Ketika Anda mendefinisikan subagents, Claude menentukan apakah akan memanggil mereka berdasarkan field `description` setiap subagent. Tulis deskripsi yang jelas yang menjelaskan kapan subagent harus digunakan, dan Claude akan secara otomatis mendelegasikan tugas yang sesuai. Anda juga dapat secara eksplisit meminta subagent berdasarkan nama dalam prompt Anda (misalnya, "Gunakan agen code-reviewer untuk...").26Ketika Anda mendefinisikan subagents, Claude menentukan apakah akan memanggil mereka berdasarkan field `description` setiap subagent. Tulis deskripsi yang jelas yang menjelaskan kapan menggunakan subagent, dan Claude akan secara otomatis mendelegasikan tugas yang sesuai. Anda juga dapat secara eksplisit meminta subagent berdasarkan nama dalam prompt Anda, misalnya "Gunakan agen code-reviewer untuk...".

27 27 

28<h2 id="benefits-of-using-subagents">28<h2 id="benefits-of-using-subagents">

29 Manfaat menggunakan subagents29 Manfaat menggunakan subagents


61 61 

62**Contoh:** subagent `doc-reviewer` mungkin hanya memiliki akses ke alat Read dan Grep, memastikan dapat menganalisis tetapi tidak pernah secara tidak sengaja memodifikasi file dokumentasi Anda.62**Contoh:** subagent `doc-reviewer` mungkin hanya memiliki akses ke alat Read dan Grep, memastikan dapat menganalisis tetapi tidak pernah secara tidak sengaja memodifikasi file dokumentasi Anda.

63 63 

64<h2 id="creating-subagents">64<h2 id="create-subagents">

65 Membuat subagents65 Membuat subagents

66</h2>66</h2>

67 67 


69 Definisi programatis (direkomendasikan)69 Definisi programatis (direkomendasikan)

70</h3>70</h3>

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`. 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).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](#detect-subagent-invocation).

75 

76Contoh ini membuat dua subagents: peninjau kode dengan akses read-only dan runner test yang dapat menjalankan perintah.

75 77 

76<CodeGroup>78<CodeGroup>

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


197 199 

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.200Dalam 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.

199 201 

202Dua perilaku subagent berubah dalam Claude Code v2.1.198:

203 

204* Subagents berjalan di latar belakang secara default. Panggilan alat Agent yang menghilangkan input [`run_in_background`](/id/agent-sdk/typescript) meluncurkan subagent latar belakang, dan Claude menetapkan `run_in_background: false` ketika memerlukan hasil sebelum melanjutkan. Sebelum v2.1.198, menghilangkan `run_in_background` menjalankan subagent secara sinkron. Atur field `background` ke `true` untuk memaksa eksekusi latar belakang untuk agen tertentu terlepas dari apa yang diminta Claude.

205* Subagent mewarisi konfigurasi extended thinking sesi utama. Pada versi sebelumnya, extended thinking dinonaktifkan di dalam subagents terlepas dari pengaturan sesi utama.

206 

200<Note>207<Note>

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.208 {/* 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.

202</Note>209</Note>


215 Apa yang diwarisi subagents222 Apa yang diwarisi subagents

216</h2>223</h2>

217 224 

218Jendela konteks subagent dimulai segar (tidak ada percakapan parent) tetapi tidak kosong. Satu-satunya saluran dari parent ke subagent adalah string prompt alat Agent, jadi sertakan jalur file, pesan kesalahan, atau keputusan apa pun yang dibutuhkan subagent langsung dalam prompt itu.225Jendela konteks subagent dimulai segar, tanpa percakapan parent, tetapi tidak kosong. Satu-satunya saluran dari parent ke subagent adalah string prompt alat Agent, jadi sertakan jalur file, pesan kesalahan, atau keputusan apa pun yang dibutuhkan subagent langsung dalam prompt itu.

219 226 

220| Subagent menerima | Subagent tidak menerima |227| Subagent menerima | Subagent tidak menerima |

221| :---------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------ |228| :---------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------ |


224| Definisi alat (diwarisi dari parent, atau subset dalam `tools`) | Prompt sistem parent |231| Definisi alat (diwarisi dari parent, atau subset dalam `tools`) | Prompt sistem parent |

225 232 

226<Note>233<Note>

227 Parent menerima pesan final subagent verbatim sebagai hasil alat Agent, tetapi dapat merangkumnya dalam respons sendiri. Untuk mempertahankan output subagent verbatim dalam respons yang menghadap pengguna, sertakan instruksi untuk melakukannya dalam prompt atau opsi `systemPrompt` yang Anda berikan ke panggilan `query()` **utama**.234 Parent menerima pesan final subagent verbatim sebagai hasil alat Agent, tetapi dapat merangkumnya dalam respons sendiri. Untuk mempertahankan output subagent verbatim dalam respons yang menghadap pengguna, sertakan instruksi untuk melakukannya dalam prompt atau opsi `systemPrompt` yang Anda berikan ke panggilan `query()` utama.

228</Note>235</Note>

229 236 

230<h2 id="invoking-subagents">237{/* min-version: 2.1.199 */}Mulai dari Claude Code v2.1.199, kesalahan API yang mengakhiri subagent lebih awal, seperti batas laju, tidak pernah disampaikan sebagai hasilnya. Jika subagent sudah menghasilkan output, alat Agent mengembalikan output parsial itu dengan catatan bahwa subagent tidak selesai; jika tidak, hasil alat adalah pesan kesalahan, `Agent terminated early due to an API error`, diikuti oleh detail kesalahan. Lihat [API errors in subagents](/id/sub-agents#api-errors-in-subagents) untuk perilaku foreground dan background.

238 

239<h2 id="invoke-subagents">

231 Memanggil subagents240 Memanggil subagents

232</h2>241</h2>

233 242 


329 ```338 ```

330</CodeGroup>339</CodeGroup>

331 340 

332<h2 id="detecting-subagent-invocation">341<h2 id="detect-subagent-invocation">

333 Mendeteksi invokasi subagent342 Mendeteksi invokasi subagent

334</h2>343</h2>

335 344 

336Subagents dipanggil melalui alat Agent. Untuk mendeteksi ketika subagent dipanggil, periksa blok `tool_use` di mana `name` adalah `"Agent"`. Pesan dari dalam konteks subagent mencakup field `parent_tool_use_id`.345Claude menginvokasi subagents melalui alat Agent. Untuk mendeteksi ketika subagent diinvokasi, periksa blok `tool_use` di mana `name` adalah `"Agent"`. Pesan dari dalam konteks subagent mencakup field `parent_tool_use_id`.

337 346 

338<Note>347<Note>

339 Nama alat diubah dari `"Task"` menjadi `"Agent"` dalam Claude Code v2.1.63. Rilis SDK saat ini memancarkan `"Agent"` dalam blok `tool_use` tetapi masih menggunakan `"Task"` dalam daftar alat `system:init` dan dalam `result.permission_denials[].tool_name`. Memeriksa kedua nilai dalam `block.name` memastikan kompatibilitas di seluruh versi SDK.348 Nama alat diubah dari `"Task"` menjadi `"Agent"` dalam Claude Code v2.1.63. Rilis SDK saat ini memancarkan `"Agent"` dalam blok `tool_use` tetapi masih menggunakan `"Task"` dalam daftar alat `system:init` dan dalam `result.permission_denials[].tool_name`. Memeriksa kedua nilai dalam `block.name` memastikan kompatibilitas di seluruh versi SDK.


422 ```431 ```

423</CodeGroup>432</CodeGroup>

424 433 

425<h2 id="resuming-subagents">434<h2 id="resume-subagents">

426 Melanjutkan subagents435 Melanjutkan subagents

427</h2>436</h2>

428 437 

429Subagents dapat dilanjutkan untuk melanjutkan dari mana mereka berhenti. Subagents yang dilanjutkan mempertahankan riwayat percakapan lengkap mereka, termasuk semua panggilan alat sebelumnya, hasil, dan penalaran. Subagent melanjutkan tepat di mana ia berhenti daripada memulai segar.438Anda dapat melanjutkan subagent untuk terus dari mana ia berhenti daripada memulai dari awal. Subagent yang dilanjutkan mempertahankan riwayat percakapan lengkapnya, termasuk semua panggilan alat sebelumnya, hasil, dan penalaran.

430 439 

431Ketika subagent selesai, hasil alat Agent mencakup blok teks yang berisi `agentId: <id>`. Agen bawaan [`Explore` dan `Plan`](/id/sub-agents#built-in-subagents) adalah one-shot dan tidak mengembalikan `agentId`, jadi gunakan agen khusus atau `general-purpose` ketika Anda perlu melanjutkan. Untuk melanjutkan subagent secara programatis:440Ketika subagent selesai, hasil alat Agent mencakup blok teks yang berisi `agentId: <id>`. Agen bawaan [`Explore` dan `Plan`](/id/sub-agents#built-in-subagents) adalah one-shot dan tidak mengembalikan `agentId`, jadi gunakan agen khusus atau `general-purpose` ketika Anda perlu melanjutkan. Untuk melanjutkan subagent secara programatis:

432 441 

4331. **Tangkap ID sesi**: Ekstrak `session_id` dari pesan selama query pertama4421. **Tangkap ID sesi**: ekstrak `session_id` dari pesan selama query pertama

4342. **Ekstrak ID agen**: Parse `agentId` dari teks hasil alat Agent4432. **Ekstrak ID agen**: parse `agentId` dari teks hasil alat Agent

4353. **Lanjutkan sesi**: Berikan `resume: sessionId` dalam opsi query kedua, dan sertakan ID agen dalam prompt Anda4443. **Lanjutkan sesi**: berikan `resume: sessionId` dalam opsi query kedua, dan sertakan ID agen dalam prompt Anda

436 445 

437<Note>446<Note>

438 Anda harus melanjutkan sesi yang sama untuk mengakses transkrip subagent. Setiap panggilan `query()` memulai sesi baru secara default, jadi berikan `resume: sessionId` untuk melanjutkan dalam sesi yang sama.447 Anda harus melanjutkan sesi yang sama untuk mengakses transkrip subagent. Setiap panggilan `query()` memulai sesi baru secara default, jadi berikan `resume: sessionId` untuk melanjutkan dalam sesi yang sama.


566 575 

567Transkrip subagent bertahan secara independen dari percakapan utama:576Transkrip subagent bertahan secara independen dari percakapan utama:

568 577 

569* **Pemadatan percakapan utama**: Ketika percakapan utama dipadatkan, transkrip subagent tidak terpengaruh. Mereka disimpan dalam file terpisah.578* **Pemadatan percakapan utama**: ketika percakapan utama dipadatkan, transkrip subagent tidak terpengaruh. Mereka disimpan dalam file terpisah.

570* **Persistensi sesi**: Transkrip subagent bertahan dalam sesi mereka. Anda dapat melanjutkan subagent setelah memulai ulang Claude Code dengan melanjutkan sesi yang sama.579* **Persistensi sesi**: transkrip subagent bertahan dalam sesi mereka. Anda dapat melanjutkan subagent setelah memulai ulang Claude Code dengan melanjutkan sesi yang sama.

571* **Pembersihan otomatis**: Transkrip dibersihkan berdasarkan pengaturan `cleanupPeriodDays` (default: 30 hari).580* **Pembersihan otomatis**: transkrip dibersihkan berdasarkan pengaturan `cleanupPeriodDays`, yang secara default adalah 30 hari.

572 581 

573<h2 id="tool-restrictions-1">582<h2 id="tool-restrictions-1">

574 Pembatasan alat583 Pembatasan alat


662 671 

663Jika Claude menyelesaikan tugas secara langsung daripada mendelegasikan ke subagent Anda:672Jika Claude menyelesaikan tugas secara langsung daripada mendelegasikan ke subagent Anda:

664 673 

6651. **Periksa bahwa invokasi Agent disetujui**: sertakan `Agent` dalam `allowedTools` untuk auto-approve panggilan subagent. Tanpa itu, invokasi Agent jatuh ke callback `canUseTool` Anda atau, dalam mode `dontAsk`, ditolak674* **Periksa bahwa invokasi Agent disetujui**: sertakan `Agent` dalam `allowedTools` untuk auto-approve panggilan subagent. Tanpa itu, invokasi Agent jatuh ke callback `canUseTool` Anda atau, dalam mode `dontAsk`, ditolak

6662. **Gunakan prompting eksplisit**: sebutkan subagent berdasarkan nama dalam prompt Anda (misalnya, "Gunakan agen code-reviewer untuk...")675* **Gunakan prompting eksplisit**: sebutkan subagent berdasarkan nama dalam prompt Anda, misalnya "Gunakan agen code-reviewer untuk..."

6673. **Tulis deskripsi yang jelas**: jelaskan dengan tepat kapan subagent harus digunakan sehingga Claude dapat mencocokkan tugas dengan tepat676* **Tulis deskripsi yang jelas**: jelaskan dengan tepat kapan menggunakan subagent sehingga Claude dapat mencocokkan tugas dengan tepat

668 677 

669<h3 id="filesystem-based-agents-not-loading">678<h3 id="filesystem-based-agents-not-loading">

670 Agen berbasis filesystem tidak dimuat679 Agen berbasis filesystem tidak dimuat

671</h3>680</h3>

672 681 

673Agen yang didefinisikan dalam `.claude/agents/` dimuat saat startup saja. Jika Anda membuat file agen baru saat Claude Code berjalan, mulai ulang sesi untuk memuatnya.682Claude Code memantau `~/.claude/agents/` dan `.claude/agents/` dan mengambil file agen baru atau yang telah diedit dalam beberapa detik, tanpa perlu restart. Jika definisi tidak pernah muncul, kerjakan melalui penyebab-penyebab ini:

683 

684* **Direktori `agents` baru**: pemantau hanya mencakup direktori yang ada saat sesi dimulai, jadi file pertama di direktori baru memerlukan restart sesi. Ini adalah penyebab paling umum.

685* **Frontmatter tidak valid atau `name` duplikat**: periksa YAML file, dan apakah agen yang ada sudah menggunakan `name` tersebut.

686* **`--disable-slash-commands`**: sesi yang dimulai dengan flag ini tidak memantau direktori-direktori ini dan selalu memerlukan restart untuk memuat file baru.

687* **Agen programatik dengan nama yang sama**: `agents` yang dilewatkan ke `query()` menimpa agen filesystem dengan nama yang sama.

688 

689Untuk format file, lihat [cara menulis file subagent](/id/sub-agents#write-subagent-files).

674 690 

675<h3 id="windows-long-prompt-failures">691<h3 id="long-prompt-failures-on-windows">

676 Windows: kegagalan prompt panjang692 Kegagalan prompt panjang di Windows

677</h3>693</h3>

678 694 

679Di Windows, subagents dengan prompt yang sangat panjang mungkin gagal karena batasan panjang baris perintah (8191 karakter). Jaga prompt tetap ringkas atau gunakan agen berbasis filesystem untuk instruksi kompleks.695Di Windows, subagents dengan prompt yang sangat panjang mungkin gagal karena batasan panjang baris perintah sebesar 8191 karakter. Jaga prompt tetap ringkas atau gunakan agen berbasis filesystem untuk instruksi kompleks.

680 696 

681<h2 id="related-documentation">697<h2 id="related-documentation">

682 Dokumentasi terkait698 Dokumentasi terkait

Details

9Pelacakan todo menyediakan cara terstruktur untuk mengelola tugas dan menampilkan kemajuan kepada pengguna. Claude Agent SDK mencakup fungsionalitas todo bawaan yang membantu mengorganisir alur kerja yang kompleks dan membuat pengguna tetap terinformasi tentang perkembangan tugas.9Pelacakan todo menyediakan cara terstruktur untuk mengelola tugas dan menampilkan kemajuan kepada pengguna. Claude Agent SDK mencakup fungsionalitas todo bawaan yang membantu mengorganisir alur kerja yang kompleks dan membuat pengguna tetap terinformasi tentang perkembangan tugas.

10 10 

11<Note>11<Note>

12 Mulai dari TypeScript Agent SDK 0.3.142 dan Claude Code v2.1.142, sesi menggunakan alat Task terstruktur `TaskCreate`, `TaskUpdate`, `TaskGet`, dan `TaskList` sebagai pengganti `TodoWrite`. Lihat [Migrasi ke alat Task](#migrate-to-task-tools) untuk cara memantau perubahan kode. Contoh di halaman ini menetapkan `CLAUDE_CODE_ENABLE_TASKS=0` untuk terus menampilkan `TodoWrite` untuk sesi yang belum bermigrasi.12 Mulai dari TypeScript Agent SDK 0.3.142 dan Claude Code v2.1.142, sesi menggunakan alat Task terstruktur `TaskCreate`, `TaskUpdate`, `TaskGet`, dan `TaskList` sebagai pengganti `TodoWrite`. Python SDK mendapatkan perubahan ini dari Claude Code CLI yang diluncurkannya, bukan dari versi paket Python: pengalihan berlaku setelah CLI tersebut — salinan yang disertakan dalam paket pip, atau yang Anda tunjuk dengan `cli_path` — adalah v2.1.142 atau lebih baru. Lihat [Migrasi ke alat Task](#migrate-to-task-tools) untuk cara memantau perubahan kode. Contoh di halaman ini menetapkan `CLAUDE_CODE_ENABLE_TASKS=0` untuk terus menampilkan `TodoWrite` untuk sesi yang belum bermigrasi.

13</Note>13</Note>

14 14 

15<h3 id="todo-lifecycle">15<h3 id="todo-lifecycle">


27 Kapan Todos Digunakan27 Kapan Todos Digunakan

28</h3>28</h3>

29 29 

30SDK secara otomatis membuat todos untuk:30SDK membuat todos untuk sebagian besar pekerjaan multi-langkah, seperti:

31 31 

32* **Tugas multi-langkah yang kompleks** memerlukan 3 atau lebih tindakan yang berbeda32* **Tugas multi-langkah yang kompleks** memerlukan 3 atau lebih tindakan yang berbeda

33* **Daftar tugas yang disediakan pengguna** ketika beberapa item disebutkan33* **Daftar tugas yang disediakan pengguna** ketika beberapa item disebutkan

34* **Operasi non-trivial** yang mendapat manfaat dari pelacakan kemajuan34* **Operasi non-trivial** yang mendapat manfaat dari pelacakan kemajuan

35* **Permintaan eksplisit** ketika pengguna meminta organisasi todo35* **Permintaan eksplisit** ketika pengguna meminta organisasi todo

36 36 

37Mungkin melewatkan todos untuk permintaan yang sangat singkat atau satu langkah.

38 

37<h2 id="examples">39<h2 id="examples">

38 Contoh40 Contoh

39</h2>41</h2>

40 42 

43Sebelum menjalankan contoh-contoh ini, instal Claude Agent SDK dengan mengikuti [quickstart](/id/agent-sdk/quickstart).

44 

45Setiap contoh berjalan sampai agen selesai dan menghasilkan pesan hasil akhirnya. Jika sesi mencapai batas giliran terlebih dahulu, pesan hasil tersebut memiliki subtipe `error_max_turns`. Periksa `subtype` untuk mendeteksi penghentian tersebut.

46 

47Contoh-contoh ini menggunakan panggilan `query()` single-shot. Setelah menghasilkan hasil `error_max_turns`, `query()` melempar kesalahan yang mencakup `Reached maximum number of turns`. Setiap contoh membungkus loop-nya dalam blok try untuk keluar dengan bersih ketika itu terjadi.

48 

49Lihat [Handle the result](/id/agent-sdk/agent-loop#handle-the-result) untuk subtipe hasil.

50 

41<h3 id="monitoring-todo-changes">51<h3 id="monitoring-todo-changes">

42 Memantau Perubahan Todo52 Memantau Perubahan Todo

43</h3>53</h3>


46 ```typescript TypeScript theme={null}56 ```typescript TypeScript theme={null}

47 import { query } from "@anthropic-ai/claude-agent-sdk";57 import { query } from "@anthropic-ai/claude-agent-sdk";

48 58 

59 try {

49 for await (const message of query({60 for await (const message of query({

50 prompt: "Optimize my React app performance and track progress with todos",61 prompt: "Optimize my React app performance and track progress with todos",

51 // Re-enable TodoWrite, which this example monitors. Without it, the SDK uses62 // Re-enable TodoWrite, which this example monitors. Without it, the SDK uses


68 }79 }

69 }80 }

70 }81 }

82 } catch (error) {

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

84 // such as when the maxTurns limit is hit.

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

86 }

71 ```87 ```

72 88 

73 ```python Python theme={null}89 ```python Python theme={null}

90 import asyncio

91 

74 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock92 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock

75 93 

94 

95 async def main():

96 try:

76 async for message in query(97 async for message in query(

77 prompt="Optimize my React app performance and track progress with todos",98 prompt="Optimize my React app performance and track progress with todos",

78 # Re-enable TodoWrite, which this example monitors. Without it, the SDK uses99 # Re-enable TodoWrite, which this example monitors. Without it, the SDK uses


95 else "❌"116 else "❌"

96 )117 )

97 print(f"{i + 1}. {status} {todo['content']}")118 print(f"{i + 1}. {status} {todo['content']}")

119 except Exception as error:

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

121 # such as when the max_turns limit is hit.

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

123 

124 

125 asyncio.run(main())

98 ```126 ```

99</CodeGroup>127</CodeGroup>

100 128 


128 }156 }

129 157 

130 async trackQuery(prompt: string) {158 async trackQuery(prompt: string) {

159 try {

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

132 prompt,161 prompt,

133 // Re-enable TodoWrite, which this tracker watches for.162 // Re-enable TodoWrite, which this tracker watches for.


142 }171 }

143 }172 }

144 }173 }

174 } catch (error) {

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

176 // such as when the maxTurns limit is hit.

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

178 }

145 }179 }

146 }180 }

147 181 


151 ```185 ```

152 186 

153 ```python Python theme={null}187 ```python Python theme={null}

188 import asyncio

189 

154 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock190 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock

155 from typing import List, Dict191 from typing import List, Dict

156 192 


186 print(f"{i + 1}. {icon} {text}")222 print(f"{i + 1}. {icon} {text}")

187 223 

188 async def track_query(self, prompt: str):224 async def track_query(self, prompt: str):

225 try:

189 async for message in query(226 async for message in query(

190 prompt=prompt,227 prompt=prompt,

191 # Re-enable TodoWrite, which this tracker watches for.228 # Re-enable TodoWrite, which this tracker watches for.


196 if isinstance(block, ToolUseBlock) and block.name == "TodoWrite":233 if isinstance(block, ToolUseBlock) and block.name == "TodoWrite":

197 self.todos = block.input["todos"]234 self.todos = block.input["todos"]

198 self.display_progress()235 self.display_progress()

236 except Exception as error:

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

238 # such as when the max_turns limit is hit.

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

199 240 

200 241 

201 # Usage242 # Usage

243 async def main():

202 tracker = TodoTracker()244 tracker = TodoTracker()

203 await tracker.track_query("Build a complete authentication system with todos")245 await tracker.track_query("Build a complete authentication system with todos")

246 

247 

248 asyncio.run(main())

204 ```249 ```

205</CodeGroup>250</CodeGroup>

206 251 


217| Bentuk item: `{ content, status, activeForm }` | Input `TaskCreate`: `{ subject, description, activeForm?, metadata? }`. Input `TaskUpdate`: `{ taskId, status?, subject?, description?, activeForm?, addBlocks?, addBlockedBy?, owner?, metadata? }`. `status` adalah `"pending"`, `"in_progress"`, atau `"completed"`; atur `status: "deleted"` untuk menghapus |262| Bentuk item: `{ content, status, activeForm }` | Input `TaskCreate`: `{ subject, description, activeForm?, metadata? }`. Input `TaskUpdate`: `{ taskId, status?, subject?, description?, activeForm?, addBlocks?, addBlockedBy?, owner?, metadata? }`. `status` adalah `"pending"`, `"in_progress"`, atau `"completed"`; atur `status: "deleted"` untuk menghapus |

218| Render `block.input.todos` secara langsung | Akumulasi item di seluruh panggilan, atau baca snapshot dari hasil alat `TaskList` |263| Render `block.input.todos` secara langsung | Akumulasi item di seluruh panggilan, atau baca snapshot dari hasil alat `TaskList` |

219 264 

220ID tugas yang ditugaskan tidak ada dalam input `TaskCreate`. Ini kembali dalam `tool_result` yang cocok sebagai `{ task: { id, subject } }`, jadi tangkap dari blok hasil untuk mengunci peta Anda. Contoh berikut menunjukkan perubahan minimal ke loop [Memantau Perubahan Todo](#monitoring-todo-changes). Untuk merender daftar lengkap, pantau hasil alat `TaskList` dalam aliran atau akumulasi hasil `TaskCreate` dan input `TaskUpdate` ke dalam peta.265ID tugas yang ditugaskan tidak ada dalam input `TaskCreate`. Ini kembali dalam `tool_result` yang cocok sebagai `{ task: { id, subject } }`, jadi tangkap dari blok hasil untuk mengunci peta Anda. Contoh berikut menunjukkan perubahan minimal ke loop [Memantau Perubahan Todo](#monitoring-todo-changes). Ini membaca hanya input `tool_use` dan melewatkan penangkapan ID dari blok `tool_result`. Untuk merender daftar lengkap, pantau hasil alat `TaskList` dalam aliran atau akumulasi hasil `TaskCreate` dan input `TaskUpdate` ke dalam peta.

221 266 

222Input `tool_use` yang dialirkan adalah bentuk mentah yang dipancarkan model. Claude Code memperbaiki beberapa nama kunci yang hampir-tetapi-tidak-benar sebelum eksekusi, memetakan `id` atau `task_id` ke `taskId` dan `active_form` ke `activeForm`, tetapi perbaikan itu tidak tercermin dalam aliran. Baca bidang input `TaskUpdate` secara defensif, seperti yang dilakukan sampel di bawah ini, daripada mengasumsikan nama kanonik selalu ada.267Input `tool_use` yang dialirkan adalah bentuk mentah yang dipancarkan model. Claude Code memperbaiki beberapa nama kunci yang hampir-tetapi-tidak-benar sebelum eksekusi, memetakan `id` atau `task_id` ke `taskId` dan `active_form` ke `activeForm`, tetapi perbaikan itu tidak tercermin dalam aliran. Baca bidang input `TaskUpdate` secara defensif, seperti yang dilakukan sampel di bawah ini, daripada mengasumsikan nama kanonik selalu ada.

223 268 


225 ```typescript TypeScript theme={null}270 ```typescript TypeScript theme={null}

226 import { query } from "@anthropic-ai/claude-agent-sdk";271 import { query } from "@anthropic-ai/claude-agent-sdk";

227 272 

273 try {

228 for await (const message of query({274 for await (const message of query({

229 prompt: "Optimize my React app performance",275 prompt: "Optimize my React app performance and track progress with todos",

276 options: { maxTurns: 15 },

230 })) {277 })) {

231 if (message.type !== "assistant") continue;278 if (message.type !== "assistant") continue;

232 for (const block of message.message.content) {279 for (const block of message.message.content) {


246 }293 }

247 }294 }

248 }295 }

296 } catch (error) {

297 // A single-shot query() throws after yielding an error result.

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

299 }

249 ```300 ```

250 301 

251 ```python Python theme={null}302 ```python Python theme={null}

252 from claude_agent_sdk import query, AssistantMessage, ToolUseBlock303 import asyncio

253 304 

305 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock

306 

307 async def main():

308 try:

254 async for message in query(309 async for message in query(

255 prompt="Optimize my React app performance",310 prompt="Optimize my React app performance and track progress with todos",

311 options=ClaudeAgentOptions(max_turns=15),

256 ):312 ):

257 if not isinstance(message, AssistantMessage):313 if not isinstance(message, AssistantMessage):

258 continue314 continue


269 )325 )

270 if task_id:326 if task_id:

271 print(f" {task_id} -> {block.input['status']}")327 print(f" {task_id} -> {block.input['status']}")

328 except Exception as error:

329 # A single-shot query() raises after yielding an error result.

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

331 

332 

333 asyncio.run(main())

272 ```334 ```

273</CodeGroup>335</CodeGroup>

274 336 

Details

551```551```

552 552 

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`: itu retry kapasitas error tanpa batas, dan {/* min-version: 2.1.199 */}mulai dari Claude Code v2.1.199 menaikkan default untuk error transien lainnya menjadi `300` dan menghapus cap pada variabel ini.

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


901 decisionReason?: string;901 decisionReason?: string;

902 toolUseID: string;902 toolUseID: string;

903 agentID?: string;903 agentID?: string;

904 requestId: string;

904 }905 }

905) => Promise<PermissionResult>;906) => Promise<PermissionResult | null>;

906```907```

907 908 

908| Opsi | Tipe | Deskripsi |909| Opsi | Tipe | Deskripsi |


913| `decisionReason` | `string` | Menjelaskan mengapa permintaan izin ini dipicu |914| `decisionReason` | `string` | Menjelaskan mengapa permintaan izin ini dipicu |

914| `toolUseID` | `string` | Pengenal unik untuk tool call spesifik ini dalam pesan asisten |915| `toolUseID` | `string` | Pengenal unik untuk tool call spesifik ini dalam pesan asisten |

915| `agentID` | `string` | Jika berjalan dalam sub-agen, ID sub-agen |916| `agentID` | `string` | Jika berjalan dalam sub-agen, ID sub-agen |

917| `requestId` | `string` | `request_id` dari envelope `control_request`. Sebuah `control_response` yang aplikasi Anda kirim di luar SDK, seperti HTTP POST yang ditandatangani, harus mengulangi nilai ini sehingga proses Claude Code dapat mencocokkan balasan ke permintaan |

918 

919Callback biasanya menyelesaikan permintaan dengan mengembalikan [`PermissionResult`](#permissionresult), yang SDK tulis kembali melalui transportnya sebagai `control_response`. Kembalikan `null` hanya ketika aplikasi Anda sudah mengirim `control_response` untuk permintaan ini melalui saluran sendiri, mengulangi `requestId`; SDK kemudian melewati penulisan respons ke transportnya. Mengembalikan `null` dalam kasus lain meninggalkan tool call terblokir tanpa batas, karena tidak ada `control_response` yang pernah dikirim dan prompt izin tidak timeout.

920 

921Opsi `requestId` dan nilai pengembalian `null` memerlukan Claude Code v2.1.199 atau lebih baru.

916 922 

917<h3 id="permissionresult">923<h3 id="permissionresult">

918 `PermissionResult`924 `PermissionResult`


2179};2185};

2180```2186```

2181 2187 

2182Menghentikan tugas latar belakang atau shell yang sedang berjalan berdasarkan ID.2188Menghentikan tugas latar belakang atau shell yang sedang berjalan berdasarkan ID. {/* min-version: 2.1.198 */}Mulai dari v2.1.198, `task_id` juga menerima rekan tim agent atau agen latar belakang bernama berdasarkan ID agen atau nama.

2183 2189 

2184<h3 id="notebookedit">2190<h3 id="notebookedit">

2185 NotebookEdit2191 NotebookEdit


3788| `ripgrep` | `{ command: string; args?: string[] }` | `undefined` | Konfigurasi biner ripgrep kustom untuk lingkungan sandbox |3794| `ripgrep` | `{ command: string; args?: string[] }` | `undefined` | Konfigurasi biner ripgrep kustom untuk lingkungan sandbox |

3789 3795 

3790<Note>3796<Note>

3791 Sandbox bergantung pada dukungan platform dan, di Linux, alat seperti `bubblewrap` dan `socat`. Ketika `enabled` adalah `true` dan sandbox tidak dapat dimulai, `query()` melaporkan pesan `result` dengan `subtype: "error_during_execution"` dan alasan dalam `errors`, kemudian berhenti. Perhatikan subtype itu daripada mengharapkan `query()` untuk melempar sebelum menghasilkan pesan.3797 Sandbox bergantung pada dukungan platform dan, di Linux, alat seperti `bubblewrap` dan `socat`. Ketika `enabled` adalah `true` dan sandbox tidak dapat dimulai, `query()` melaporkan pesan `result` dengan `subtype: "error_during_execution"` dan alasan dalam `errors`. Untuk panggilan `query()` pesan tunggal, SDK melempar setelah menghasilkan hasil kesalahan itu, jadi bungkus loop dalam blok try untuk melanjutkan melewatinya. Lihat [Menangani hasil](/id/agent-sdk/agent-loop#handle-the-result) untuk kontrak kesalahan.

3792 3798 

3793 Untuk menjalankan unsandboxed sebagai gantinya, atur `failIfUnavailable: false`.3799 Untuk menjalankan unsandboxed sebagai gantinya, atur `failIfUnavailable: false`.

3794</Note>3800</Note>


3800```typescript theme={null}3806```typescript theme={null}

3801import { query } from "@anthropic-ai/claude-agent-sdk";3807import { query } from "@anthropic-ai/claude-agent-sdk";

3802 3808 

3803for await (const message of query({3809try {

3810 for await (const message of query({

3804 prompt: "Build and test my project",3811 prompt: "Build and test my project",

3805 options: {3812 options: {

3806 sandbox: {3813 sandbox: {


3811 }3818 }

3812 }3819 }

3813 }3820 }

3814})) {3821 })) {

3815 if ("result" in message) console.log(message.result);3822 if ("result" in message) console.log(message.result);

3823 }

3824} catch (error) {

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

3826 // such as when the sandbox can't start (failIfUnavailable defaults to true).

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

3816}3828}

3817```3829```

3818 3830 


3929<Warning>3941<Warning>

3930 Perintah yang berjalan dengan `dangerouslyDisableSandbox: true` memiliki akses sistem penuh. Pastikan handler `canUseTool` Anda memvalidasi permintaan ini dengan hati-hati.3942 Perintah yang berjalan dengan `dangerouslyDisableSandbox: true` memiliki akses sistem penuh. Pastikan handler `canUseTool` Anda memvalidasi permintaan ini dengan hati-hati.

3931 3943 

3932 Jika `permissionMode` diatur ke `bypassPermissions` dan `allowUnsandboxedCommands` diaktifkan, model dapat secara otonom mengeksekusi perintah di luar sandbox tanpa prompt persetujuan apa pun. Kombinasi ini secara efektif memungkinkan model untuk melarikan diri dari isolasi sandbox secara diam-diam.3944 Jika `permissionMode` diatur ke `bypassPermissions` dan `allowUnsandboxedCommands` diaktifkan, model dapat secara otonom mengeksekusi perintah di luar sandbox tanpa prompt persetujuan apa pun (aturan [`ask`](/id/agent-sdk/permissions#how-permissions-are-evaluated) eksplisit masih memaksa satu). Kombinasi ini secara efektif memungkinkan model untuk melarikan diri dari isolasi sandbox secara diam-diam.

3933</Warning>3945</Warning>

3934 3946 

3935<h2 id="see-also">3947<h2 id="see-also">

agent-teams.md +12 −3

Details

89* **Enter**: buka transkrip rekan tim yang dipilih dan kirim pesan langsung kepadanya89* **Enter**: buka transkrip rekan tim yang dipilih dan kirim pesan langsung kepadanya

90* **Escape**: hentikan giliran saat ini rekan tim yang dipilih90* **Escape**: hentikan giliran saat ini rekan tim yang dipilih

91 91 

92{/* min-version: 2.1.181 */}Mulai dari v2.1.181, baris rekan tim yang idle bersembunyi setelah 30 detik dan muncul kembali pada giliran berikutnya. Rekan tim tetap berjalan dan dapat dialamatkan saat tersembunyi.92{/* min-version: 2.1.199 */}Mulai dari v2.1.199, baris rekan tim yang idle tetap berada di panel sementara rekan tim atau subagent mana pun masih bekerja, sehingga Anda dapat memilihnya untuk meninjau transkrip atau memberikan pekerjaan lebih lanjut. Setelah setiap agent di panel idle, baris idle bersembunyi setelah 30 detik dan muncul kembali pada giliran berikutnya rekan tim; rekan tim tetap berjalan dan dapat dialamatkan saat tersembunyi. Di v2.1.181 hingga v2.1.198, baris idle bersembunyi 30 detik setelah giliran sendirinya berakhir, bahkan sementara rekan tim lain masih bekerja; baris idle tidak disembunyikan di versi sebelum v2.1.181.

93 

94Ketika lebih dari tiga rekan tim idle sekaligus, baris di luar tiga pertama runtuh menjadi satu baris yang menghitung rekan tim yang runtuh, seperti `2 idle agents` ketika lima idle. Pilih dan tekan Enter untuk memperluas baris yang runtuh, atau tekan Esc untuk meruntuhkannya lagi. Rekan tim yang bekerja, rekan tim yang gagal, dan rekan tim yang Anda lihat selalu mempertahankan baris mereka sendiri.

93 95 

94Jika Anda ingin setiap rekan tim di split pane-nya sendiri, lihat [Pilih mode tampilan](#choose-a-display-mode).96Jika Anda ingin setiap rekan tim di split pane-nya sendiri, lihat [Pilih mode tampilan](#choose-a-display-mode).

95 97 


174* **Mode in-process**: gunakan tombol panah atas dan bawah di panel agent untuk memilih rekan tim, kemudian tekan Enter untuk melihat sessionnya dan ketik untuk mengirim pesan kepadanya. Tekan `x` pada rekan tim yang dipilih untuk menghentikannya. Tekan Ctrl+T untuk toggle daftar tugas.176* **Mode in-process**: gunakan tombol panah atas dan bawah di panel agent untuk memilih rekan tim, kemudian tekan Enter untuk melihat sessionnya dan ketik untuk mengirim pesan kepadanya. Tekan `x` pada rekan tim yang dipilih untuk menghentikannya. Tekan Ctrl+T untuk toggle daftar tugas.

175* **Mode split-pane**: klik ke dalam pane rekan tim untuk berinteraksi dengan session mereka secara langsung. Setiap rekan tim memiliki tampilan penuh dari terminal mereka sendiri.177* **Mode split-pane**: klik ke dalam pane rekan tim untuk berinteraksi dengan session mereka secara langsung. Setiap rekan tim memiliki tampilan penuh dari terminal mereka sendiri.

176 178 

179Saat Anda melihat rekan tim in-process, teks biasa dan [skills](/id/skills) pergi ke rekan tim itu, tetapi perintah built-in masih berjalan dalam session lead.

180 

181Model rekan tim dan fast mode diperbaiki ketika mereka spawn, jadi `/model` dan `/fast` hanya mengubah pengaturan lead. {/* min-version: 2.1.199 */}Mulai dari v2.1.199, mengetik salah satu perintah saat melihat rekan tim menampilkan pemberitahuan bahwa perubahan berlaku untuk lead; versi sebelumnya menerapkannya ke lead tanpa indikasi. `/effort` masih berlaku untuk giliran rekan tim yang lebih baru, karena rekan tim mengikuti [effort level](/id/model-config#adjust-effort-level) lead.

182 

177<h3 id="assign-and-claim-tasks">183<h3 id="assign-and-claim-tasks">

178 Tetapkan dan klaim tugas184 Tetapkan dan klaim tugas

179</h3>185</h3>


295**Bagaimana rekan tim berbagi informasi:**301**Bagaimana rekan tim berbagi informasi:**

296 302 

297* **Pengiriman pesan otomatis**: ketika rekan tim mengirim pesan, mereka dikirimkan secara otomatis ke penerima. Lead tidak perlu polling untuk update.303* **Pengiriman pesan otomatis**: ketika rekan tim mengirim pesan, mereka dikirimkan secara otomatis ke penerima. Lead tidak perlu polling untuk update.

298* **Notifikasi idle**: ketika rekan tim selesai dan berhenti, mereka secara otomatis memberi tahu lead.304* **Notifikasi idle**: ketika rekan tim selesai dan berhenti, mereka secara otomatis memberi tahu lead. {/* min-version: 2.1.198 */}Mulai dari v2.1.198, rekan tim yang giliran berakhir pada kesalahan API memberi tahu lead bahwa itu gagal dan menyertakan teks kesalahan, daripada tampak selesai secara normal.

299* **Daftar tugas bersama**: semua agent dapat melihat status tugas dan mengklaim pekerjaan yang tersedia.305* **Daftar tugas bersama**: semua agent dapat melihat status tugas dan mengklaim pekerjaan yang tersedia.

300* **Pesan rekan tim**: kirim pesan ke satu rekan tim spesifik berdasarkan nama. Untuk menjangkau semua orang, kirim satu pesan per penerima.306* **Pesan rekan tim**: kirim pesan ke satu rekan tim spesifik berdasarkan nama. Untuk menjangkau semua orang, kirim satu pesan per penerima.

301 307 


430Jika rekan tim tidak muncul setelah Anda meminta Claude untuk membuat mereka:436Jika rekan tim tidak muncul setelah Anda meminta Claude untuk membuat mereka:

431 437 

432* Dalam mode in-process, rekan tim muncul di panel agen di bawah input prompt. Gunakan tombol panah atas dan bawah untuk memilih satu, kemudian tekan Enter untuk melihatnya.438* Dalam mode in-process, rekan tim muncul di panel agen di bawah input prompt. Gunakan tombol panah atas dan bawah untuk memilih satu, kemudian tekan Enter untuk melihatnya.

433* Baris rekan tim yang hilang setelah diam telah disembunyikan, bukan dihentikan. Baris idle menyembunyikan setelah 30 detik dan muncul kembali pada giliran rekan tim berikutnya. Kirim pesan ke rekan tim berdasarkan nama untuk membawanya kembali.439* Baris rekan tim yang hilang setelah diam telah disembunyikan, bukan dihentikan. Baris idle menyembunyikan 30 detik setelah seluruh panel menjadi idle dan muncul kembali pada giliran rekan tim berikutnya. Ketika lebih dari tiga rekan tim idle, baris surplus mereka runtuh menjadi satu baris `N idle agents` yang Enter perluas. Kirim pesan ke rekan tim berdasarkan nama untuk membawa baris yang disembunyikan kembali.

434* Periksa bahwa tugas yang Anda berikan Claude cukup kompleks untuk menjamin rekan tim. Claude memutuskan apakah akan menelurkan mereka berdasarkan tugas.440* Periksa bahwa tugas yang Anda berikan Claude cukup kompleks untuk menjamin rekan tim. Claude memutuskan apakah akan menelurkan mereka berdasarkan tugas.

435* Jika Anda secara eksplisit meminta split panes, pastikan tmux diinstal dan tersedia di PATH Anda:441* Jika Anda secara eksplisit meminta split panes, pastikan tmux diinstal dan tersedia di PATH Anda:

436 ```bash theme={null}442 ```bash theme={null}


453* Berikan instruksi tambahan kepada mereka secara langsung459* Berikan instruksi tambahan kepada mereka secara langsung

454* Hasilkan rekan tim pengganti untuk melanjutkan pekerjaan460* Hasilkan rekan tim pengganti untuk melanjutkan pekerjaan

455 461 

462{/* min-version: 2.1.198 */}Mulai dari v2.1.198, pesan dari lead atau rekan tim lain membangunkan rekan tim in-process yang menunggu untuk mencoba ulang permintaan API yang gagal, sehingga mencoba ulang segera alih-alih menunggu penundaan percobaan ulang penuh.

463 

456<h3 id="lead-shuts-down-before-work-is-done">464<h3 id="lead-shuts-down-before-work-is-done">

457 Lead shuts down sebelum pekerjaan selesai465 Lead shuts down sebelum pekerjaan selesai

458</h3>466</h3>


481* **Shutdown dapat lambat**: rekan tim menyelesaikan permintaan atau tool call saat ini sebelum shutdown, yang dapat memakan waktu.489* **Shutdown dapat lambat**: rekan tim menyelesaikan permintaan atau tool call saat ini sebelum shutdown, yang dapat memakan waktu.

482* **Satu tim per session**: sebuah session memiliki tepat satu tim, yang dibatasi pada session tersebut. Anda tidak dapat membuat tim bernama tambahan atau berbagi tim di seluruh session.490* **Satu tim per session**: sebuah session memiliki tepat satu tim, yang dibatasi pada session tersebut. Anda tidak dapat membuat tim bernama tambahan atau berbagi tim di seluruh session.

483* **Tidak ada tim bersarang**: rekan tim tidak dapat menelurkan rekan tim mereka sendiri. Hanya lead yang dapat mengelola tim.491* **Tidak ada tim bersarang**: rekan tim tidak dapat menelurkan rekan tim mereka sendiri. Hanya lead yang dapat mengelola tim.

492* **Tidak ada background subagents dari rekan tim in-process**: subagents rekan tim in-process sendiri berjalan di foreground. Meminta yang background, baik dengan `run_in_background` atau definisi subagent yang menetapkan `background: true`, mengembalikan error, karena pekerjaan background rekan tim tidak dapat bertahan lebih lama dari proses lead. Subagents yang diluncurkan dari percakapan utama mengikuti [default background](/id/sub-agents#run-subagents-in-foreground-or-background).

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

485* **Izin ditetapkan pada spawn**: semua rekan tim dimulai dengan mode izin lead. Anda dapat mengubah mode rekan tim individual setelah spawn, tetapi Anda tidak dapat mengatur mode per-rekan tim pada waktu spawn.494* **Izin ditetapkan pada spawn**: semua rekan tim dimulai dengan mode izin lead. Anda dapat mengubah mode rekan tim individual setelah spawn, tetapi Anda tidak dapat mengatur mode per-rekan tim pada waktu spawn.

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

agent-view.md +60 −11

Details

27* [Mulai cepat](#quick-start): berikan Claude tugas untuk dikerjakan di latar belakang, periksa, dan campur tangan ketika diperlukan27* [Mulai cepat](#quick-start): berikan Claude tugas untuk dikerjakan di latar belakang, periksa, dan campur tangan ketika diperlukan

28* [Pantau sesi dengan tampilan agen](#monitor-sessions-with-agent-view), termasuk ikon status, mengintip dan membalas, melampirkan, mengorganisir, dan pintasan keyboard28* [Pantau sesi dengan tampilan agen](#monitor-sessions-with-agent-view), termasuk ikon status, mengintip dan membalas, melampirkan, mengorganisir, dan pintasan keyboard

29* [Kirim agen baru](#dispatch-new-agents) dari tampilan agen, dari dalam sesi, atau dari shell Anda29* [Kirim agen baru](#dispatch-new-agents) dari tampilan agen, dari dalam sesi, atau dari shell Anda

30* [Kelola sesi dari shell](#manage-sessions-from-the-shell)30* [Kelola sesi dari shell](#manage-sessions-from-the-shell) dengan `claude agents`, `claude attach`, dan perintah terkait

31* [Bagaimana sesi latar belakang dihosting](#how-background-sessions-are-hosted) oleh proses supervisor31* [Bagaimana sesi latar belakang dihosting](#how-background-sessions-are-hosted) oleh proses supervisor

32 32 

33<h2 id="quick-start">33<h2 id="quick-start">


64 </Step>64 </Step>

65 65 

66 <Step title="Bawa sesi yang ada ke dalam">66 <Step title="Bawa sesi yang ada ke dalam">

67 Untuk memindahkan sesi yang sudah Anda buka ke tampilan agen, jalankan `/bg` di dalamnya, atau tekan `←` pada prompt kosong untuk mengirimnya ke latar belakang dan membuka tampilan agen dalam satu langkah. Sesi terus berjalan dan muncul sebagai baris bersama yang Anda kirim.67 Langkah ini memerlukan sesi yang sedang berjalan. Jika Anda mengikuti langkah-langkah sebelumnya, Anda tidak memiliki sesi yang terbuka di terminal ini, jadi buka sesi `claude` biasa di terminal lain dan kirim pesan terlebih dahulu. Untuk memindahkan sesi yang sudah Anda buka ke tampilan agen, jalankan `/bg` di dalamnya, atau tekan `←` pada prompt kosong untuk mengirimnya ke latar belakang dan membuka tampilan agen dalam satu langkah. Sesi terus berjalan dan muncul sebagai baris bersama yang Anda kirim.

68 </Step>68 </Step>

69</Steps>69</Steps>

70 70 


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 

79Nama tersebut berwarna dengan warna yang ditetapkan oleh [`/color`](/id/commands) dalam sesi itu. {/* min-version: 2.1.199 */}Mulai dari v2.1.199, warna terbawa ketika Anda [mengirim sesi ke latar belakang](#from-inside-a-session) dengan `←` atau `/background`.

80 

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`:81Secara 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 82 

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


91 ✽ clawd walk cycle Write assets/sprites/clawd-walk.png 3m93 ✽ clawd walk cycle Write assets/sprites/clawd-walk.png 3m

92 94 

93Siap untuk ditinjau95Siap untuk ditinjau

94 ∙ jump physics Opened PR with collision fix PR #2048 2h96 ∙ jump physics Opened PR with collision fix #2048 2h

95 97 

96Membutuhkan masukan98Membutuhkan masukan

97 ✻ power-up design needs input: double jump or wall climb? 1m99 ✻ power-up design needs input: double jump or wall climb? 1m


129| `∙` | Proses telah keluar. Anda masih dapat mengintip, membalas, atau melampirkan, dan Claude memulai ulang dari tempat ia berhenti |131| `∙` | 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 |132| `✢` | Sesi [`/loop`](/id/scheduled-tasks) yang tidur di antara iterasi. Baris menunjukkan jumlah jalannya dan hitungan mundur |

131 133 

132Label `PR #N` yang dapat muncul di tepi kanan baris adalah [status permintaan tarik](#pull-request-status) yang dibuka sesi, bukan bagian dari ikon status. Ketika sesi telah membuka lebih dari satu permintaan tarik, label menunjukkan hitungan sebagai gantinya, seperti `3 PRs`.134Label `#N` yang dapat muncul di tepi kanan baris adalah [permintaan tarik yang dibuka sesi](#pull-request-status), bukan bagian dari ikon status.

133 135 

134Judul tab terminal menunjukkan jumlah menunggu-masukan saat tampilan agen terbuka: `2 awaiting input · claude agents` ketika sesi membutuhkan masukan, atau `claude agents` ketika tidak ada.136Judul tab terminal menunjukkan jumlah menunggu-masukan saat tampilan agen terbuka: `2 awaiting input · claude agents` ketika sesi membutuhkan masukan, atau `claude agents` ketika tidak ada.

135 137 

138Mulai dari v2.1.198, saat tampilan agen terbuka, Claude Code juga mengirim notifikasi melalui [saluran notifikasi terminal](/id/terminal-config#get-a-terminal-bell-or-notification) yang dikonfigurasi ketika sesi latar belakang lokal mulai membutuhkan masukan Anda, selesai, atau gagal. Sesi yang berjalan sesuai jadwal, seperti sesi [`/loop`](/id/scheduled-tasks), hanya memberitahu ketika mereka membutuhkan masukan Anda. Notifikasi menggunakan pengaturan [`preferredNotifChannel`](/id/settings#available-settings) yang sama dengan sisa Claude Code dan menjalankan hook [`Notification`](/id/hooks#notification) dengan tipe `agent_needs_input` atau `agent_completed`.

139 

136Sesi latar belakang tidak memerlukan terminal apa pun yang terbuka untuk terus bekerja. [Proses supervisor](#the-supervisor-process) terpisah menjalankannya, jadi Anda dapat menutup tampilan agen, menutup shell, atau memulai sesi interaktif baru dan pekerjaan yang dikirim terus berlanjut.140Sesi latar belakang tidak memerlukan terminal apa pun yang terbuka untuk terus bekerja. [Proses supervisor](#the-supervisor-process) terpisah menjalankannya, jadi Anda dapat menutup tampilan agen, menutup shell, atau memulai sesi interaktif baru dan pekerjaan yang dikirim terus berlanjut.

137 141 

138Status sesi bertahan di disk melalui pembaruan otomatis dan restart supervisor. Sesi juga dipertahankan ketika mesin Anda tidur. Proses mereka dilanjutkan saat bangun dan supervisor terhubung kembali ke mereka alih-alih memperlakukan celah waktu sebagai menganggur. Mematikan masih menghentikan sesi yang berjalan; lihat [Sesi menampilkan gagal setelah shutdown](#sessions-show-as-failed-after-shutdown) untuk cara memulihkannya.142Status sesi bertahan di disk melalui pembaruan otomatis dan restart supervisor. Sesi juga dipertahankan ketika mesin Anda tidur. Proses mereka dilanjutkan saat bangun dan supervisor terhubung kembali ke mereka alih-alih memperlakukan celah waktu sebagai menganggur. Mematikan masih menghentikan sesi yang berjalan; lihat [Sesi menampilkan gagal setelah shutdown](#sessions-show-as-failed-after-shutdown) untuk cara memulihkannya.


151 Status permintaan tarik155 Status permintaan tarik

152</h3>156</h3>

153 157 

154Ketika sesi membuka permintaan tarik, label `PR #1234` muncul di tepi kanan baris, tertaut ke permintaan tarik di terminal yang mendukung hyperlink. Label bertahan ketika Anda mengirim tindak lanjut ke sesi, sehingga permintaan tarik tetap terlihat sementara baris kembali ke kemajuan langsung.158Ketika sesi membuka permintaan tarik, label `#1234` muncul di tepi kanan baris, tertaut ke permintaan tarik di terminal yang mendukung hyperlink. Label bertahan ketika Anda mengirim tindak lanjut ke sesi, sehingga permintaan tarik tetap terlihat sementara baris kembali ke kemajuan langsung. Sesi latar belakang yang mengisolasi perubahan mereka dalam worktree membuka permintaan tarik ini sendiri; [Bagaimana file edit diisolasi](#how-file-edits-are-isolated) mencakup kapan itu terjadi dan apa yang tidak pernah dilakukan sesi tanpa bertanya.

155 159 

156Ketika sesi telah membuka lebih dari satu permintaan tarik, label menunjukkan hitungan sebagai gantinya, seperti `3 PRs`, berwarna oleh permintaan tarik terbuka yang paling membutuhkan perhatian. Buka [panel intip](#peek-and-reply) untuk melihat semuanya.160Ketika sesi telah membuka lebih dari satu permintaan tarik, label menunjukkan hitungan sebagai gantinya, seperti `3 PRs`, berwarna oleh permintaan tarik terbuka yang paling membutuhkan perhatian. Buka [panel intip](#peek-and-reply) untuk melihat semuanya.

157 161 


190 194 

191Sesi yang dilampirkan selalu dirender dalam [mode layar penuh](/id/fullscreen), terlepas dari pengaturan `tui` Anda, karena sesi latar belakang tidak memiliki scrollback terminal untuk ditambahkan. Gulir dengan `PgUp`, `PgDn`, atau roda mouse, dan tekan `Ctrl+O` untuk mode transkrip. Gulir asli terminal Anda dan mode salinan tmux hanya menampilkan viewport saat ini, sama seperti ketika Anda menjalankan aplikasi layar penuh apa pun.195Sesi yang dilampirkan selalu dirender dalam [mode layar penuh](/id/fullscreen), terlepas dari pengaturan `tui` Anda, karena sesi latar belakang tidak memiliki scrollback terminal untuk ditambahkan. Gulir dengan `PgUp`, `PgDn`, atau roda mouse, dan tekan `Ctrl+O` untuk mode transkrip. Gulir asli terminal Anda dan mode salinan tmux hanya menampilkan viewport saat ini, sama seperti ketika Anda menjalankan aplikasi layar penuh apa pun.

192 196 

193Tekan `←` pada prompt kosong untuk melepaskan dan kembali ke tampilan agen. Jika dialog memiliki fokus dan tidak merespons `←`, tekan `Ctrl+Z` untuk melepaskan segera.197Tekan `←` pada prompt kosong, atau jalankan `/exit`, untuk melepaskan dan kembali ke tampilan agen. Mulai dari v2.1.198, ini berfungsi dengan cara yang sama apakah Anda membuka sesi dari tampilan agen atau dengan `claude attach <id>` dari shell Anda.

198 

199`Ctrl+Z` juga melepaskan tetapi kembali ke tempat Anda memulai: tampilan agen jika Anda melampirkan dari sana, atau shell Anda jika Anda menjalankan `claude attach`. Gunakan `Ctrl+Z` ketika dialog memiliki fokus dan tidak merespons `←`.

194 200 

195`Ctrl+C` mempertahankan perilaku interupsi standarnya saat dilampirkan: ini membatalkan respons yang sedang berjalan atau perintah shell `!` daripada melepaskan. Menekan `Ctrl+C` dua kali pada prompt kosong melepaskan, sama seperti di sesi apa pun.201`Ctrl+C` mempertahankan perilaku interupsi standarnya saat dilampirkan: ini membatalkan respons yang sedang berjalan atau perintah shell `!` daripada melepaskan. Menekan `Ctrl+C` dua kali pada prompt kosong melepaskan, sama seperti di sesi apa pun.

196 202 


289| `#<number>` atau URL permintaan tarik | Jika sesi sudah bekerja pada PR itu, pilih saja alih-alih mengirim |295| `#<number>` atau URL permintaan tarik | Jika sesi sudah bekerja pada PR itu, pilih saja alih-alih mengirim |

290| `Shift+Enter` | Kirim dan lampirkan segera ke sesi baru |296| `Shift+Enter` | Kirim dan lampirkan segera ke sesi baru |

291 297 

292Serangkaian kecil perintah berjalan dalam tampilan agen itu sendiri alih-alih mengirim: `/exit` dan `/quit` menutup tampilan agen, `/logout` menandatangani Anda keluar, dan `/model` menetapkan [model pengiriman](#set-the-model). Skills, perintah Anda sendiri, dan built-in yang memperluas prompt seperti `/init` dikirim ke sesi latar belakang baru sebagai prompt pertamanya. Perintah built-in lainnya menampilkan petunjuk `attach to a session to run it` sebagai gantinya.298Serangkaian kecil perintah berjalan dalam tampilan agen itu sendiri alih-alih mengirim:

299 

300* `/exit` dan `/quit` menutup tampilan agen

301* `/logout` menandatangani Anda keluar

302* `/model` menetapkan [model pengiriman](#set-the-model)

303* Mulai dari v2.1.198, `/login` membuka dialog masuk sehingga Anda dapat masuk lagi tanpa melampirkan ke sesi

304 

305Skills, perintah Anda sendiri, dan built-in yang memperluas prompt seperti `/init` dikirim ke sesi latar belakang baru sebagai prompt pertamanya. Perintah built-in lainnya menampilkan petunjuk `attach to a session to run it` sebagai gantinya.

293 306 

294Mengemas tugas berulang sebagai [skill](/id/skills) memungkinkan Anda memulai alur kerja yang sama dari tampilan agen berulang kali tanpa mengetik ulang prompt.307Mengemas tugas berulang sebagai [skill](/id/skills) memungkinkan Anda memulai alur kerja yang sama dari tampilan agen berulang kali tanpa mengetik ulang prompt.

295 308 


313 326 

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.327Jalankan `/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.

315 328 

329Keluar dari sesi interaktif yang masih memiliki pekerjaan latar belakang yang berjalan, seperti subagent, perintah shell latar belakang, alur kerja, atau [monitor](/id/tools-reference#monitor-tool), menampilkan dialog `Background work is running` alih-alih berhenti segera. Mulai dari v2.1.198 dialog menawarkan `Move to background and exit` bersama `Exit anyway` dan `Stay`. Memilihnya memindahkan sesi ke latar belakang dengan cara yang sama seperti `/background`, kemudian mengembalikan Anda ke shell Anda, sehingga pekerjaan yang dapat dibawa terus berjalan dan sesi muncul dalam tampilan agen. Opsi tidak ditampilkan ketika tampilan agen [dimatikan](#turn-off-agent-view).

330 

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.331Melepaskan 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 332 

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.333Pekerjaan 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.


342claude --bg "investigate the flaky SettingsChangeDetector test"357claude --bg "investigate the flaky SettingsChangeDetector test"

343```358```

344 359 

360Prompt adalah argumen posisional, bukan nilai `-p`. Mulai dari v2.1.198, menggabungkan `--bg` dengan `-p` atau `--print` ditolak dengan kesalahan sebelum sesi apa pun dibuat, karena `--print` tidak pernah memulai sesi interaktif yang `claude agents` lampirkan.

361 

345Untuk menjalankan subagent tertentu sebagai agen utama sesi, gabungkan `--bg` dengan `--agent`:362Untuk menjalankan subagent tertentu sebagai agen utama sesi, gabungkan `--bg` dengan `--agent`:

346 363 

347```bash theme={null}364```bash theme={null}


354claude --bg --name "flaky-test-fix" "investigate the flaky SettingsChangeDetector test"371claude --bg --name "flaky-test-fix" "investigate the flaky SettingsChangeDetector test"

355```372```

356 373 

357Setelah melepaskan ke latar belakang, Claude mencetak ID pendek sesi dan perintah untuk mengelolanya. Ketika Anda memberikan `--name`, nama muncul setelah ID pendek:374Setelah melepaskan ke latar belakang, Claude mencetak ID pendek sesi dan perintah untuk mengelolanya. Ketika layanan yang menghosting sesi latar belakang belum berjalan, `--bg` mungkin pertama kali mencetak `Starting background service…` di atas output ini. Ketika Anda memberikan `--name`, nama muncul setelah ID pendek:

358 375 

359```text theme={null}376```text theme={null}

360backgrounded · 7c5dcf5d · flaky-test-fix377backgrounded · 7c5dcf5d · flaky-test-fix


414 431 

415Sebuah [subagent](/id/sub-agents) yang sesi latar belakang spawn mewarisi direktori kerja sesi, jadi pengeditan filenya mendarat di worktree sesi daripada salinan kerja Anda. Untuk memberikan subagent worktree terpisah sendiri, atur [`isolation: worktree`](/id/sub-agents#supported-frontmatter-fields) dalam frontmatter-nya atau berikan `isolation: "worktree"` saat spawn-nya.432Sebuah [subagent](/id/sub-agents) yang sesi latar belakang spawn mewarisi direktori kerja sesi, jadi pengeditan filenya mendarat di worktree sesi daripada salinan kerja Anda. Untuk memberikan subagent worktree terpisah sendiri, atur [`isolation: worktree`](/id/sub-agents#supported-frontmatter-fields) dalam frontmatter-nya atau berikan `isolation: "worktree"` saat spawn-nya.

416 433 

434Mulai dari v2.1.198, sesi latar belakang yang mengisolasi perubahan kodenya dalam worktree juga melakukan commit, mendorong cabangnya sendiri, dan membuka draft pull request tanpa berhenti untuk bertanya. Label [`#N`](#pull-request-status) muncul pada barisnya ketika pull request dibuka. Tidak pernah mendorong ke `main` atau `master`, tidak pernah force-push atau merge, dan melewati pull request ketika Anda mengatakan kepadanya untuk tidak membuka satu atau repositori tidak memiliki remote.

435 

436Sesi yang mengedit checkout yang tidak mengisolasi dirinya sendiri masih bertanya sebelum melakukan commit atau beralih cabang. Ini berlaku ketika isolasi diatur ke `"none"`, ketika pergerakan worktree gagal, atau ketika sesi dimulai di dalam worktree yang sudah ada.

437 

417<h3 id="set-the-model">438<h3 id="set-the-model">

418 Atur model439 Atur model

419</h3>440</h3>


529 550 

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.551Setelah 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 552 

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`.553Pekerjaan latar belakang yang sesi itu sendiri mulai di tingkat atas diserahkan ketika prosesnya dihentikan, dimulai ulang, atau diperbarui, termasuk di Windows. Proses berikutnya yang dimulai untuk sesi itu mengambilnya kembali:

554 

555* Perintah shell latar belakang yang selesai sementara itu dilaporkan sebagai selesai dengan outputnya

556* Alur kerja dinamis dilanjutkan dari tempat ia berhenti

557* [Subagen latar belakang](/id/sub-agents#run-subagents-in-foreground-or-background) dilanjutkan dari transkrip mereka sendiri

558 

559{/* min-version: 2.1.198 */}Mulai dari v2.1.198 penyerahan mencakup ketiga-tiganya. Sebelum v2.1.198 itu hanya mencakup perintah shell dan alur kerja, jadi subagen latar belakang berhenti dengan proses dan dilaporkan sebagai gagal pada bangun berikutnya.

560 

561Pekerjaan yang statusnya hanya hidup di dalam proses itu sendiri berhenti dengannya alih-alih diserahkan. Itu adalah perintah shell yang dimulai subagen, yang dapat dimulai lagi oleh subagen yang dilanjutkan, dan [monitor](/id/tools-reference#monitor-tool) yang sedang berjalan, yang aliran acaranya tidak dapat dipindahkan ke proses lain.

562 

563Menghapus sesi menghentikan semua yang diserahkannya. Untuk menghentikan semua pekerjaan latar belakang sesi dengan proses alih-alih menyerahkannya, atur variabel lingkungan [`CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF`](/id/env-vars#variables) ke `1`.

533 564 

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.565Jika 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 566 


606 637 

607Sleep saja tidak menyebabkan hal ini. Sesi dipertahankan di seluruh sleep dan supervisor terhubung kembali ke sesi tersebut saat bangun.638Sleep saja tidak menyebabkan hal ini. Sesi dipertahankan di seluruh sleep dan supervisor terhubung kembali ke sesi tersebut saat bangun.

608 639 

640<h3 id="a-session-fails-before-starting-with-a-possibly-low-memory-note">

641 Sesi gagal sebelum dimulai dengan catatan `possibly low memory`

642</h3>

643 

644Mulai dari v2.1.199, ketika proses sesi latar belakang keluar sebelum selesai dimulai dan host kekurangan memori, status baris menyebutkan keluar dan menambahkan `possibly low memory — free some up and retry`. Versi sebelumnya hanya menampilkan alasan keluar yang telanjang untuk kegagalan ini.

645 

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

647 

648Bebaskan memori di mesin, kemudian lampirkan, intip, atau balas ke baris dan supervisor memulai proses segar untuk sesi. Ketika memori tetap rendah, supervisor juga [menghentikan sesi idle](#the-supervisor-process) untuk membebaskan sumber daya dengan sendirinya.

649 

609<h3 id="agent-view-says-the-background-service-did-not-respond">650<h3 id="agent-view-says-the-background-service-did-not-respond">

610 Tampilan agen mengatakan layanan latar belakang tidak merespons651 Tampilan agen mengatakan layanan latar belakang tidak merespons

611</h3>652</h3>


636 677 

637Lihat [referensi kesalahan](/id/errors#could-not-resolve-authentication-method) untuk daftar lengkap penyebab dan perbaikan.678Lihat [referensi kesalahan](/id/errors#could-not-resolve-authentication-method) untuk daftar lengkap penyebab dan perbaikan.

638 679 

639<h3 id="background-sessions-cannot-read-desktop-documents-or-downloads-on-macos">680<h3 id="background-sessions-can’t-read-desktop-documents-or-downloads-on-macos">

640 Sesi latar belakang tidak dapat membaca Desktop, Documents, atau Downloads di macOS681 Sesi latar belakang tidak dapat membaca Desktop, Documents, atau Downloads di macOS

641</h3>682</h3>

642 683 


644 685 

645Dengan installer asli, entri muncul sebagai Claude Code dan pemberian akses tetap ada di seluruh pembaruan. Dengan metode instalasi lain seperti Homebrew atau npm, entri menampilkan jalur biner dan mungkin perlu diberikan akses lagi setelah memperbarui.686Dengan installer asli, entri muncul sebagai Claude Code dan pemberian akses tetap ada di seluruh pembaruan. Dengan metode instalasi lain seperti Homebrew atau npm, entri menampilkan jalur biner dan mungkin perlu diberikan akses lagi setelah memperbarui.

646 687 

688<h3 id="background-sessions-can’t-reach-local-network-hosts-on-macos">

689 Sesi latar belakang tidak dapat menjangkau host jaringan lokal di macOS

690</h3>

691 

692Di macOS 15 dan yang lebih baru, sistem memblokir proses dari menjangkau perangkat di jaringan lokal Anda sampai Anda memberikan izin Local Network. Sebelum v2.1.198 host sesi latar belakang tidak pernah meminta izin itu, jadi perintah yang menargetkan alamat LAN gagal dengan `connect: no route to host` meskipun perintah yang sama berfungsi di terminal foreground. {/* min-version: 2.1.198 */}Mulai dari v2.1.198, perintah pertama dalam sesi latar belakang yang terhubung ke alamat jaringan lokal memicu prompt izin Local Network macOS untuk Claude Code. Berikan sekali dan perintah tersebut menjangkau host LAN dengan cara yang sama seperti di terminal foreground.

693 

647<h3 id="a-session-is-slow-to-respond-after-attaching">694<h3 id="a-session-is-slow-to-respond-after-attaching">

648 Sesi lambat merespons setelah melampirkan695 Sesi lambat merespons setelah melampirkan

649</h3>696</h3>


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.730Tampilan 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 731 

685| Versi | Perubahan |732| Versi | Perubahan |

686| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |733| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

734| v2.1.199 | {/* min-version: 2.1.199 */}Sesi latar belakang yang prosesnya keluar sebelum selesai dimulai pada host dengan memori rendah menampilkan `possibly low memory — free some up and retry` dalam status barisnya alih-alih hanya alasan keluar yang polos. Melepaskan sesi dengan `←` atau `/background` membawa `/color` ke baris baru. |

735| v2.1.198 | {/* min-version: 2.1.198 */}Tampilan agen mengirim notifikasi melalui `preferredNotifChannel` ketika sesi latar belakang memerlukan input, selesai, atau gagal, dan memicu hook `Notification` dengan tipe `agent_needs_input` atau `agent_completed`. `←` dan `/exit` di dalam `claude attach <id>` kembali ke tampilan agen alih-alih keluar ke shell; `Ctrl+Z` kembali ke shell. Sesi latar belakang yang mengisolasi pekerjaannya dalam worktree melakukan commit, mendorong cabang terisolasinya sendiri, tidak pernah `main` atau `master`, dan membuka permintaan tarik draft ketika selesai alih-alih bertanya terlebih dahulu. `/login` berjalan dalam tampilan agen dan membuka dialog masuk. Dialog keluar `Background work is running` menawarkan `Move to background and exit`. Handoff keluar juga mencakup subagen latar belakang, yang melanjutkan dari transkrip mereka pada waktu bangun berikutnya alih-alih dilaporkan sebagai gagal. `claude --bg` dikombinasikan dengan `-p` atau `--print` ditolak dengan kesalahan. |

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. |736| 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. |737| 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. |738| 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. |

agents.md +1 −1

Details

53Perintah untuk memeriksa pekerjaan yang sedang berjalan tergantung pada pendekatan mana yang Anda gunakan:53Perintah untuk memeriksa pekerjaan yang sedang berjalan tergantung pada pendekatan mana yang Anda gunakan:

54 54 

55* Untuk sesi latar belakang, `claude agents` membuka [agent view](/id/agent-view): satu layar menampilkan setiap sesi, statusnya, dan mana yang membutuhkan input Anda.55* Untuk sesi latar belakang, `claude agents` membuka [agent view](/id/agent-view): satu layar menampilkan setiap sesi, statusnya, dan mana yang membutuhkan input Anda.

56* Untuk subagents dalam sesi saat ini, `/agents` membuka panel dengan tab **Running** yang mencantumkan subagents langsung dan tab **Library** tempat Anda [membuat dan mengedit subagents kustom](/id/sub-agents#use-the-%2Fagents-command). Meskipun nama serupa, ini terpisah dari `claude agents`.56* Untuk subagents dalam sesi saat ini, subagents latar belakang bernama muncul dalam typeahead @-mention dengan statusnya. {/* min-version: 2.1.198 */}Mulai dari v2.1.198, `/agents` tidak lagi membuka panel; ini mencetak pemberitahuan yang menunjuk ke lokasi file subagent. Untuk [membuat dan mengedit subagents kustom](/id/sub-agents#configure-subagents), tanyakan kepada Claude atau edit file secara langsung. Meskipun nama serupa, `/agents` terpisah dari `claude agents`.

57* Untuk apa pun yang berjalan di latar belakang sesi saat ini, `/tasks` mencantumkan setiap item dan memungkinkan Anda memeriksa, melampirkan, atau menghentikannya.57* Untuk apa pun yang berjalan di latar belakang sesi saat ini, `/tasks` mencantumkan setiap item dan memungkinkan Anda memeriksa, melampirkan, atau menghentikannya.

58* Untuk dynamic workflows, `/workflows` mencantumkan runs yang sedang berjalan dan yang telah selesai, fase yang masing-masing berada di dalamnya, dan berapa banyak agents yang telah selesai.58* Untuk dynamic workflows, `/workflows` mencantumkan runs yang sedang berjalan dan yang telah selesai, fase yang masing-masing berada di dalamnya, dan berapa banyak agents yang telah selesai.

59 59 

Details

184 184 

185Kedua pengaturan ini memiliki kondisi pemicu yang berbeda:185Kedua pengaturan ini memiliki kondisi pemicu yang berbeda:

186 186 

187* **`awsAuthRefresh`**: berjalan hanya ketika Claude Code mendeteksi bahwa kredensial AWS Anda telah kedaluwarsa, baik secara lokal berdasarkan stempel waktu mereka atau ketika Bedrock mengembalikan kesalahan kredensial, kemudian mencoba ulang permintaan dengan kredensial yang disegarkan.187* **`awsAuthRefresh`**: berjalan hanya ketika Claude Code mendeteksi bahwa kredensial AWS Anda telah kedaluwarsa, baik secara lokal berdasarkan stempel waktu mereka atau ketika API mengembalikan kesalahan kredensial, kemudian mencoba ulang permintaan dengan kredensial yang disegarkan.

188* **`awsCredentialExport`**: berjalan saat awal sesi dan pada setiap pemuatan ulang kredensial, bahkan ketika kredensial di rantai penyedia kredensial default AWS Anda masih valid. Gunakan ini ketika akun Bedrock Anda memerlukan kredensial lintas akun yang berbeda dari yang akan diselesaikan oleh rantai penyedia default.188* **`awsCredentialExport`**: berjalan saat awal sesi dan pada setiap pemuatan ulang kredensial, bahkan ketika kredensial di rantai penyedia kredensial default AWS Anda masih valid. Gunakan ini ketika akun Bedrock Anda memerlukan kredensial lintas akun yang berbeda dari yang akan diselesaikan oleh rantai penyedia default.

189 189 

190<h5 id="example-configuration">190<h5 id="example-configuration">

Details

54 54 

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

56 56 

57Mulai dari Claude Code v2.1.195, `claude auto-mode defaults` mencetak dua jenis entri lingkungan.57Mulai dari Claude Code v2.1.198, `claude auto-mode defaults` mencetak tiga jenis entri lingkungan. Versi sebelum v2.1.195 hanya mencetak lima trust slot pertama.

58 58 

59* **Context slots**: menggambarkan organisasi, stack, dan postur keamanan Anda sehingga pengklasifikasi membaca aturan lain dalam konteks Anda. Tidak seperti dua jenis lainnya, context slots tidak memiliki aturan mereka sendiri yang menargetkan mereka. Masing-masing default ke `None configured` atau ke asumsi konservatif yang dinamai di sebelahnya:

60 * **Organization**

61 * **Primary use of Claude Code**: default ke pengembangan perangkat lunak

62 * **Cloud provider(s)**

63 * **Repository visibility**: repositori diasumsikan pribadi kecuali host remote dan namanya menunjukkan sebaliknya

64 * **Internal sharing / snippet hosting**: layanan paste dan gist publik diperlakukan sebagai di luar batas kepercayaan sampai Anda menyebutkan satu

65 * **Org-specific CLIs**

66 * **Secrets management**

67 * **Default / protected branches**: `main` dan `master` diperlakukan sebagai terlindungi sampai Anda menyebutkan yang lain

68 * **CI/CD deploy targets**

69 * **Network posture**

70 * **Protected deployment namespaces / environments**: kembali ke heuristik Sensitive remote targets sampai Anda menyebutkan mereka

71 * **Data retention / declassification**

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.72* **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.73* **Sensitivity slots**: nama apa yang diperlakukan aturan perlindungan sebagai berisiko tinggi. Slot tersebut adalah Sensitive data locations & audiences, 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 74 

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.75Untuk 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 76 


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

88* **Layanan internal utama**: CI, registri artefak, indeks paket internal, tooling insiden99* **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 diblokir100* **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 konten101* **Sensitive data locations & audiences**: bucket, database, atau path yang menyimpan data pribadi, data bisnis rahasia, kredensial, data yang diatur, atau materi sensitif serupa, dan audiens yang data di setiap lokasi dapat dibagikan dengannya, sehingga pengklasifikasi melindungi lokasi tersebut daripada menebak dari konten. {/* min-version: 2.1.195 */}{/* max-version: 2.1.197 */}Claude Code v2.1.195 hingga v2.1.197 menyebutkan entri ini sebagai lokasi PII / regulated-data dan hanya mencakup lokasi yang menyimpan data pribadi atau yang diatur, tanpa dimensi audiens

91* **Target remote sensitif**: namespace, host, atau container yang dihitung sebagai production, sehingga remote shell dan port-forward ke dalamnya memerlukan persetujuan eksplisit Anda102* **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 perubahan103* **Protected IaC scopes**: sumber daya infrastruktur yang apply atau destroy harus selalu memerlukan Anda untuk menyebutkan perubahan

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

94 105 

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.106Entri Internal package registry, Sensitive data locations & audiences, 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 107 

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

98 109 

chrome.md +15 −2

Details

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

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

4 4 

5# Gunakan Claude Code dengan Chrome (beta)5# Gunakan Claude Code dengan Chrome

6 6 

7> Hubungkan Claude Code ke browser Chrome Anda untuk menguji aplikasi web, debug dengan console logs, otomatisasi pengisian formulir, dan ekstrak data dari halaman web.7> Hubungkan Claude Code ke browser Chrome Anda untuk menguji aplikasi web, debug dengan console logs, otomatisasi pengisian formulir, dan ekstrak data dari halaman web.

8 8 


11Claude membuka tab baru untuk tugas browser dan berbagi status login browser Anda, sehingga dapat mengakses situs apa pun yang sudah Anda masuki. Tindakan browser berjalan di jendela Chrome yang terlihat secara real-time. Ketika Claude menemukan halaman login atau CAPTCHA, ia berhenti dan meminta Anda menanganinya secara manual.11Claude membuka tab baru untuk tugas browser dan berbagi status login browser Anda, sehingga dapat mengakses situs apa pun yang sudah Anda masuki. Tindakan browser berjalan di jendela Chrome yang terlihat secara real-time. Ketika Claude menemukan halaman login atau CAPTCHA, ia berhenti dan meminta Anda menanganinya secara manual.

12 12 

13<Note>13<Note>

14 Integrasi Chrome sedang dalam beta dan saat ini bekerja dengan Google Chrome dan Microsoft Edge. Belum didukung di Brave, Arc, atau browser berbasis Chromium lainnya. WSL (Windows Subsystem for Linux) juga tidak didukung.14 Integrasi Chrome bekerja dengan Google Chrome dan Microsoft Edge. Belum didukung di Brave, Arc, atau browser berbasis Chromium lainnya. Juga tidak didukung di Windows Subsystem for Linux (WSL).

15</Note>15</Note>

16 16 

17<h2 id="capabilities">17<h2 id="capabilities">


90 90 

91Izin tingkat situs diwarisi dari ekstensi Chrome. Kelola izin di pengaturan ekstensi Chrome untuk mengontrol situs mana yang dapat dijelajahi, diklik, dan diketik oleh Claude.91Izin tingkat situs diwarisi dari ekstensi Chrome. Kelola izin di pengaturan ekstensi Chrome untuk mengontrol situs mana yang dapat dijelajahi, diklik, dan diketik oleh Claude.

92 92 

93<h3 id="browser-tools-in-plan-mode">

94 Alat browser dalam plan mode

95</h3>

96 

97Dalam [plan mode](/id/permission-modes#analyze-before-you-edit-with-plan-mode), panggilan alat browser yang hanya membaca halaman atau status browser berjalan tanpa permintaan izin, dan panggilan yang mengubah status meminta persetujuan.

98 

99* **Panggilan hanya-baca**: `read_page`, `get_page_text`, `find`, membaca pesan konsol atau permintaan jaringan, dan mengambil tangkapan layar

100* **Panggilan yang mengubah status**: klik, pengetikan, navigasi, manajemen tab dan jendela, dan merekam GIF

101 

102Mulai dari v2.1.199, panggilan yang sebaliknya hanya-baca yang menetapkan flag input yang mengubah status, seperti `createIfEmpty` pada `tabs_context_mcp`, `clear` pada pembaca konsol dan jaringan, atau `save_to_disk` pada tangkapan layar, juga meminta persetujuan. Panggilan `browser_batch` berjalan tanpa permintaan hanya ketika setiap tindakan di dalamnya adalah hanya-baca.

103 

93<h2 id="example-workflows">104<h2 id="example-workflows">

94 Contoh alur kerja105 Contoh alur kerja

95</h2>106</h2>


208 219 

209Pertama kali Anda mengaktifkan integrasi Chrome, Claude Code menginstal file konfigurasi host messaging asli. Chrome membaca file ini saat startup, jadi jika ekstensi tidak terdeteksi pada upaya pertama Anda, restart Chrome untuk mengambil konfigurasi baru.220Pertama kali Anda mengaktifkan integrasi Chrome, Claude Code menginstal file konfigurasi host messaging asli. Chrome membaca file ini saat startup, jadi jika ekstensi tidak terdeteksi pada upaya pertama Anda, restart Chrome untuk mengambil konfigurasi baru.

210 221 

222Mulai dari v2.1.199, Claude Code membuka tab browser yang meminta Anda untuk menghubungkan ekstensi hanya pada instalasi pertama itu. Sesi-sesi kemudian yang menulis ulang file konfigurasi, misalnya setelah beralih build Claude Code atau direktori konfigurasi, tidak membukanya kembali.

223 

211Jika koneksi masih gagal, verifikasi file konfigurasi host ada di:224Jika koneksi masih gagal, verifikasi file konfigurasi host ada di:

212 225 

213Untuk Chrome:226Untuk Chrome:

Details

4 4 

5# Konfigurasi gateway aplikasi Claude5# Konfigurasi gateway aplikasi Claude

6 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.7> Referensi untuk setiap opsi gateway.yaml: listener dan TLS, OIDC, session, Postgres store, Bedrock/Claude Platform on AWS/Agent Platform/Foundry upstreams, model routing, managed policies, dan telemetry.

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

10 

11Untuk 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 12 

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.13Gateway 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 14 


24* [`oidc`](#oidc): identity provider Anda (IdP), termasuk issuer, client, claim mapping, dan siapa yang boleh masuk26* [`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 lifetime27* [`session`](#session): bearer tokens yang dimint gateway, dengan secret dan lifetime

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

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

28 30 

29**Bagian opsional:**31**Bagian opsional:**

30 32 


68 `oidc`70 `oidc`

69</h3>71</h3>

70 72 

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.73Blok `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.

74 

75OpenID 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.

72 76 

73| Field | Diperlukan | Deskripsi |77| Field | Diperlukan | Deskripsi |

74| ------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |78| ------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


121 `upstreams`125 `upstreams`

122</h3>126</h3>

123 127 

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:`.128`upstreams` adalah ordered list. Gateway meneruskan inference ke upstream pertama yang menyelesaikan model yang diminta. Pada `5xx`, `429`, `401`, `403`, `404`, atau timeout ia failover ke next; `4xx` lainnya tidak, karena error tersebut dapat diatribusikan ke request daripada upstream. `401` atau `403` berarti credential gateway sendiri gagal terhadap upstream itu, dan `404` berarti upstream itu tidak melayani model yang diminta, jadi upstream yang lebih baru dalam list masih bisa.

129 

130Failover pada `404` memerlukan gateway v2.1.198 atau lebih baru. Release sebelumnya mengembalikan `404` pertama ke client bahkan ketika upstream yang lebih baru dalam list melayani model.

125 131 

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).132Multiple upstreams dari provider yang sama harus menetapkan distinct `name:`.

133 

134Bedrock, Claude Platform on AWS, 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 135 

128<h4 id="anthropic-api">136<h4 id="anthropic-api">

129 Anthropic API137 Anthropic API


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 |201| 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. |202| 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 203 

204<h4 id="claude-platform-on-aws">

205 Claude Platform on AWS

206</h4>

207 

208Claude Platform on AWS melayani first-party Anthropic API pada infrastruktur AWS di `aws-external-anthropic.<region>.api.aws`. Ini menggunakan first-party model IDs, menghormati header `anthropic-beta` seperti yang dikirim, dan melayani `count_tokens`, jadi tidak ada terjemahan spesifik Bedrock yang berlaku. Provider `anthropicAws` memerlukan Claude Code v2.1.198 atau lebih baru; release gateway sebelumnya menolaknya saat boot.

209 

210Untuk client-side deployment dari platform yang sama, lihat [Claude Code on Claude Platform on AWS](/id/claude-platform-on-aws). Gateway-side upstream:

211 

212```yaml theme={null}

213upstreams:

214 - provider: anthropicAws

215 region: us-east-1

216 workspace_id: wrkspc_...

217 auth:

218 api_key: ${ANTHROPIC_AWS_API_KEY} # sent as x-api-key

219 # OR SigV4 via the AWS default credential chain:

220 # auth: {}

221 # OR explicit SigV4 credentials:

222 # auth:

223 # aws_access_key_id: ${AWS_ACCESS_KEY_ID}

224 # aws_secret_access_key: ${AWS_SECRET_ACCESS_KEY}

225 # Override the derived endpoint:

226 # base_url: https://aws-external-anthropic.us-east-1.api.aws

227```

228 

229Platform berjalan di akun AWS terpisah dari Amazon Bedrock dan menandatangani SigV4 requests untuk nama service-nya sendiri, `aws-external-anthropic`, jadi Bedrock-scoped IAM role tidak mengotorisasinya. API key di `auth.api_key` mengambil precedence ketika SigV4 credentials juga diatur. Empty `auth` block menggunakan AWS SDK's default credential chain, chain yang sama yang digunakan upstream [Amazon Bedrock](#amazon-bedrock).

230 

231| Field | Diperlukan | Deskripsi |

232| ------------------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |

233| `region` | Ya | AWS region, lowercase letters, digits, dan hyphens. Gateway menurunkan endpoint darinya sebagai `https://aws-external-anthropic.<region>.api.aws`. |

234| `workspace_id` | Ya | Dikirim sebagai header pada setiap request; platform memerlukan ini |

235| `auth.api_key` | Tidak | API key untuk platform, dikirim sebagai `x-api-key`. Bukan bearer token: dua auth modes adalah API key atau SigV4. |

236| `auth.aws_access_key_id` / `auth.aws_secret_access_key` | Tidak | Explicit SigV4 credentials. Menetapkan satu tanpa yang lain gagal saat boot. `auth.aws_session_token` diterima bersama mereka. |

237| `base_url` | Tidak | Override endpoint yang diturunkan |

238 

239Karena platform menyelesaikan first-party model IDs, built-in catalog routes ke sana tanpa [`models:`](#models) block. Ketika Anda mengkurasi daftar `models:`, key entry `anthropicAws:` dengan first-party ID.

240 

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

197 Google Cloud Agent Platform242 Google Cloud Agent Platform

198</h4>243</h4>


255 300 

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.301Provider 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 302 

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.303Gateway mencoba upstreams secara berurutan. `5xx`, `429`, `401`, `403`, `404`, timeouts, dan missing-endpoint (`501`) failover; `4xx` lainnya tidak.

304 

305`429` adalah per-upstream capacity, jadi provisioned-throughput (PT) exhaustion failover ke on-demand. `404` adalah per-upstream model availability, jadi upstream yang belum enable model tidak memblokir upstream yang lebih baru dalam list yang melayaninya. Upstream yang tidak dapat menyelesaikan model yang diminta dilewati tanpa network round-trip.

259 306 

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

261 308 


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. |627| `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` |628| `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` |629| `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. |630| `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; setiap penyedia lainnya 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). |631| `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` |632| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Per-IP rate limit pada pengajuan `user_code` di `/device` |

586 633 


662 # region: us-east-1709 # region: us-east-1

663 # auth: {}710 # auth: {}

664 711 

712 # - provider: anthropicAws

713 # region: us-east-1

714 # workspace_id: wrkspc_...

715 # auth:

716 # api_key: ${ANTHROPIC_AWS_API_KEY}

717 

665 # - provider: vertex718 # - provider: vertex

666 # region: us-east5719 # region: us-east5

667 # project_id: example-prod720 # project_id: example-prod


678 upstream_model:731 upstream_model:

679 anthropic: claude-opus-4-8732 anthropic: claude-opus-4-8

680 # bedrock: us.anthropic.claude-opus-4-8733 # bedrock: us.anthropic.claude-opus-4-8

734 # anthropicAws: claude-opus-4-8

681 # vertex: claude-opus-4-8735 # vertex: claude-opus-4-8

682 # foundry: <your-opus-deployment-name>736 # foundry: <your-opus-deployment-name>

683 - id: claude-sonnet-4-6737 - id: claude-sonnet-4-6

Details

97<Note>97<Note>

98 **Identitas beban kerja**98 **Identitas beban kerja**

99 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.100 Lebih suka identitas beban kerja platform daripada kunci statis: IRSA di EKS untuk Bedrock dan untuk Claude Platform di AWS, 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>101</Note>

102 102 

103<h3 id="cloud-run">103<h3 id="cloud-run">

Details

723Teleport memeriksa persyaratan ini sebelum melanjutkan sesi. Jika ada persyaratan yang tidak terpenuhi, Anda akan melihat kesalahan atau diminta untuk menyelesaikan masalah.723Teleport memeriksa persyaratan ini sebelum melanjutkan sesi. Jika ada persyaratan yang tidak terpenuhi, Anda akan melihat kesalahan atau diminta untuk menyelesaikan masalah.

724 724 

725| Persyaratan | Detail |725| Persyaratan | Detail |

726| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |726| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

727| Status git bersih | Direktori kerja Anda harus tidak memiliki perubahan yang tidak dikomit. Teleport meminta Anda untuk menyimpan perubahan jika diperlukan. |727| Status git bersih | Direktori kerja Anda harus tidak memiliki perubahan yang tidak dikomit. Teleport meminta Anda untuk menyimpan perubahan jika diperlukan. |

728| Repositori yang benar | Anda harus menjalankan `--teleport` dari checkout repositori yang sama, bukan fork. |728| Repositori yang benar | Anda harus menjalankan `--teleport` dari checkout repositori yang sama, bukan fork. Mulai dari v2.1.199, Claude Code menerima checkout bahkan ketika tidak dapat mengurai remote menjadi nama host, seperti alias host SSH seperti `git@work:owner/repo.git` atau bentuk pendek yang ditulis ulang `insteadOf`. Ini menampilkan prompt konfirmasi terlebih dahulu, dan hanya ketika pemilik remote dan nama repositori cocok dengan repositori sesi. |

729| Cabang tersedia | Cabang dari sesi cloud harus telah didorong ke remote. Teleport secara otomatis mengambil dan checkout. |729| Cabang tersedia | Cabang dari sesi cloud harus telah didorong ke remote. Teleport secara otomatis mengambil dan checkout. |

730| Akun yang sama | Anda harus diautentikasi ke akun claude.ai yang sama yang digunakan dalam sesi cloud. |730| Akun yang sama | Anda harus diautentikasi ke akun claude.ai yang sama yang digunakan dalam sesi cloud. |

731 731 

Details

230 230 

231Untuk CI dan otomasi, berikan runner peran IAM dengan izin untuk memanggil layanan Anthropic dan atur `AWS_REGION`. Rantai kredensial mengambil peran secara otomatis.231Untuk CI dan otomasi, berikan runner peran IAM dengan izin untuk memanggil layanan Anthropic dan atur `AWS_REGION`. Rantai kredensial mengambil peran secara otomatis.

232 232 

233Jika kredensial SSO Anda kedaluwarsa di tengah sesi, konfigurasi [`awsAuthRefresh`](/id/amazon-bedrock#advanced-credential-configuration) sehingga Claude Code menjalankan kembali perintah login Anda dan mencoba lagi alih-alih gagal. Tambahkan perintah ke `settings.json` Anda:233Jika kredensial SSO Anda kedaluwarsa di tengah sesi, konfigurasi [`awsAuthRefresh`](/id/amazon-bedrock#advanced-credential-configuration) sehingga Claude Code menjalankan kembali perintah login Anda dan mencoba lagi alih-alih gagal. Penyegaran otomatis pada Claude Platform on AWS memerlukan Claude Code v2.1.198 atau lebih baru; versi sebelumnya berhenti dengan prompt untuk menjalankan `/login`, yang tidak dapat menyegarkan kredensial AWS. Tambahkan perintah ke `settings.json` Anda:

234 234 

235```json theme={null}235```json theme={null}

236{236{

Details

47 47 

48Jika Anda salah mengetik subperintah, Claude Code menyarankan kecocokan terdekat dan keluar tanpa memulai sesi. Misalnya, `claude udpate` mencetak `Did you mean claude update?`.48Jika Anda salah mengetik subperintah, Claude Code menyarankan kecocokan terdekat dan keluar tanpa memulai sesi. Misalnya, `claude udpate` mencetak `Did you mean claude update?`.

49 49 

50{/* min-version: 2.1.199 */}Mulai dari v2.1.199, `claude --dangerously-skip-permissions daemon <subcommand>` menjalankan subperintah `daemon`. Versi sebelumnya memperlakukan `daemon <subcommand>` sebagai prompt untuk sesi interaktif baru, sehingga subperintah tidak pernah berjalan ketika flag datang terlebih dahulu, setup umum ketika `claude` memiliki alias untuk menyertakan flag. Hanya `--dangerously-skip-permissions` atau `--allow-dangerously-skip-permissions` yang terdepan yang merutekan ke `daemon` dengan cara ini; flag terdepan lainnya masih memulai sesi interaktif.

51 

50<h2 id="cli-flags">52<h2 id="cli-flags">

51 Flag CLI53 Flag CLI

52</h2>54</h2>


66| `--ax-screen-reader` | {/* min-version: 2.1.181 */}Render output yang ramah pembaca layar: teks datar tanpa batas dekoratif atau animasi. Memaksa renderer klasik, jadi pengaturan [`tui`](/id/settings#available-settings) tidak berpengaruh untuk sesi. Mengambil prioritas atas [`CLAUDE_AX_SCREEN_READER`](/id/env-vars) dan pengaturan [`axScreenReader`](/id/settings#available-settings). Memerlukan Claude Code v2.1.181 atau lebih baru | `claude --ax-screen-reader` |68| `--ax-screen-reader` | {/* min-version: 2.1.181 */}Render output yang ramah pembaca layar: teks datar tanpa batas dekoratif atau animasi. Memaksa renderer klasik, jadi pengaturan [`tui`](/id/settings#available-settings) tidak berpengaruh untuk sesi. Mengambil prioritas atas [`CLAUDE_AX_SCREEN_READER`](/id/env-vars) dan pengaturan [`axScreenReader`](/id/settings#available-settings). Memerlukan Claude Code v2.1.181 atau lebih baru | `claude --ax-screen-reader` |

67| `--bare` | Mode minimal: lewati penemuan otomatis hooks, skills, plugins, server MCP, auto memory, dan CLAUDE.md sehingga panggilan skrip dimulai lebih cepat. Claude memiliki akses ke tools Bash, baca file, dan edit file. Menetapkan [`CLAUDE_CODE_SIMPLE`](/id/env-vars). Lihat [bare mode](/id/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |69| `--bare` | Mode minimal: lewati penemuan otomatis hooks, skills, plugins, server MCP, auto memory, dan CLAUDE.md sehingga panggilan skrip dimulai lebih cepat. Claude memiliki akses ke tools Bash, baca file, dan edit file. Menetapkan [`CLAUDE_CODE_SIMPLE`](/id/env-vars). Lihat [bare mode](/id/headless#start-faster-with-bare-mode) | `claude --bare -p "query"` |

68| `--betas` | Header beta untuk disertakan dalam permintaan API (hanya pengguna kunci API) | `claude --betas interleaved-thinking` |70| `--betas` | Header beta untuk disertakan dalam permintaan API (hanya pengguna kunci API) | `claude --betas interleaved-thinking` |

69| `--bg`, `--background` | Mulai sesi sebagai [agen latar belakang](/id/agent-view) dan kembali segera. Mencetak ID sesi dan perintah manajemen. Gabungkan dengan `--exec` untuk menjalankan perintah shell sebagai pekerjaan latar belakang alih-alih sesi Claude, atau dengan `--agent` untuk menjalankan subagent tertentu | `claude --bg "investigate the flaky test"` |71| `--bg`, `--background` | Mulai sesi sebagai [agen latar belakang](/id/agent-view) dan kembali segera. Mencetak ID sesi dan perintah manajemen. Gabungkan dengan `--exec` untuk menjalankan perintah shell sebagai pekerjaan latar belakang alih-alih sesi Claude, atau dengan `--agent` untuk menjalankan subagent tertentu. {/* min-version: 2.1.198 */}Tidak dapat dikombinasikan dengan `-p`/`--print`; lihat [referensi kesalahan](/id/errors#command-line-errors) | `claude --bg "investigate the flaky test"` |

70| `--channels` | (Pratinjau penelitian) Server MCP yang notifikasi [channel](/id/channels) Claude harus dengarkan dalam sesi ini. Daftar yang dipisahkan spasi dari entri `plugin:<name>@<marketplace>`. Memerlukan autentikasi Claude.ai | `claude --channels plugin:my-notifier@my-marketplace` |72| `--channels` | (Pratinjau penelitian) Server MCP yang notifikasi [channel](/id/channels) Claude harus dengarkan dalam sesi ini. Daftar yang dipisahkan spasi dari entri `plugin:<name>@<marketplace>`. Memerlukan autentikasi Claude.ai | `claude --channels plugin:my-notifier@my-marketplace` |

71| `--chrome` | Aktifkan [integrasi browser Chrome](/id/chrome) untuk otomasi web dan pengujian | `claude --chrome` |73| `--chrome` | Aktifkan [integrasi browser Chrome](/id/chrome) untuk otomasi web dan pengujian | `claude --chrome` |

72| `--continue`, `-c` | Muat percakapan terbaru di direktori saat ini. Mencakup sesi yang menambahkan direktori ini dengan `/add-dir` | `claude --continue` |74| `--continue`, `-c` | Muat percakapan terbaru di direktori saat ini. Mencakup sesi yang menambahkan direktori ini dengan `/add-dir` | `claude --continue` |


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"` |102| `--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"` |

101| `--output-format` | Tentukan format output untuk mode cetak (opsi: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |103| `--output-format` | Tentukan format output untuk mode cetak (opsi: `text`, `json`, `stream-json`) | `claude -p "query" --output-format json` |

102| `--permission-mode` | Mulai dalam [mode izin](/id/permission-modes) yang ditentukan. Menerima `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, atau `bypassPermissions`. Menimpa `defaultMode` dari file pengaturan | `claude --permission-mode plan` |104| `--permission-mode` | Mulai dalam [mode izin](/id/permission-modes) yang ditentukan. Menerima `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, atau `bypassPermissions`. Menimpa `defaultMode` dari file pengaturan | `claude --permission-mode plan` |

103| `--permission-prompt-tool` | Tentukan tool MCP untuk menangani prompt izin dalam mode non-interaktif | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |105| `--permission-prompt-tool` | Tentukan tool MCP untuk menangani prompt izin dalam mode non-interaktif. {/* min-version: 2.1.199 */}Mulai dari v2.1.199, tool prompt tidak dapat menyetujui tool MCP yang ditandai sebagai [memerlukan interaksi pengguna](/id/mcp#require-approval-for-a-specific-tool): hasil `allow` untuk satu dikonversi menjadi penolakan | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

104| `--plugin-dir` | Muat plugin dari direktori atau arsip `.zip` untuk sesi ini saja. Setiap flag mengambil satu jalur. Ulangi flag untuk beberapa plugin: `--plugin-dir A --plugin-dir B.zip` | `claude --plugin-dir ./my-plugin` |106| `--plugin-dir` | Muat plugin dari direktori atau arsip `.zip` untuk sesi ini saja. Setiap flag mengambil satu jalur. Ulangi flag untuk beberapa plugin: `--plugin-dir A --plugin-dir B.zip` | `claude --plugin-dir ./my-plugin` |

105| `--plugin-url` | Ambil arsip plugin `.zip` dari URL untuk sesi ini saja. Ulangi flag untuk beberapa plugin, atau berikan URL yang dipisahkan spasi dalam satu nilai yang dikutip | `claude --plugin-url https://example.com/plugin.zip` |107| `--plugin-url` | Ambil arsip plugin `.zip` dari URL untuk sesi ini saja. Ulangi flag untuk beberapa plugin, atau berikan URL yang dipisahkan spasi dalam satu nilai yang dikutip | `claude --plugin-url https://example.com/plugin.zip` |

106| `--print`, `-p` | Cetak respons tanpa mode interaktif (lihat [dokumentasi Agent SDK](/id/agent-sdk/overview) untuk detail penggunaan programatik) | `claude -p "query"` |108| `--print`, `-p` | Cetak respons tanpa mode interaktif (lihat [dokumentasi Agent SDK](/id/agent-sdk/overview) untuk detail penggunaan programatik) | `claude -p "query"` |

commands.md +10 −9

Details

10 10 

11Ketik `/` untuk melihat setiap perintah yang tersedia untuk Anda, atau ketik `/` diikuti dengan huruf untuk memfilter.11Ketik `/` untuk melihat setiap perintah yang tersedia untuk Anda, atau ketik `/` diikuti dengan huruf untuk memfilter.

12 12 

13Sebuah perintah hanya dikenali di awal pesan Anda. Teks yang mengikuti nama perintah diteruskan kepadanya sebagai argumen.13Sebuah perintah hanya dikenali di awal pesan Anda. Teks yang mengikuti nama perintah diteruskan kepadanya sebagai argumen. {/* min-version: 2.1.199 */}Mulai dari v2.1.199, [skills](/id/skills#pass-arguments-to-skills) adalah pengecualian: invokasi skill diikuti oleh lebih banyak skills, seperti `/skill-a /skill-b do XYZ`, memuat setiap skill yang dinamai di awal dan meneruskan teks yang tertinggal ke masing-masing sebagai argumen. Hingga enam skills dapat dirantai.

14 14 

15<h2 id="commands-across-a-typical-workflow">15<h2 id="commands-across-a-typical-workflow">

16 Perintah di seluruh alur kerja khas16 Perintah di seluruh alur kerja khas


18 18 

19Sebagian besar perintah berguna pada titik tertentu dalam sesi, dari pengaturan proyek hingga pengiriman perubahan.19Sebagian besar perintah berguna pada titik tertentu dalam sesi, dari pengaturan proyek hingga pengiriman perubahan.

20 20 

21**Sesi pertama di repo.** Jalankan `/init` untuk menghasilkan `CLAUDE.md` pemula, kemudian `/memory` untuk menyempurnakannya. Gunakan `/mcp` dan `/agents` untuk mengatur server atau subagent apa pun yang dibutuhkan proyek, dan `/permissions` untuk menetapkan aturan persetujuan yang Anda inginkan.21**Sesi pertama di repo.** Jalankan `/init` untuk menghasilkan `CLAUDE.md` pemula, kemudian `/memory` untuk menyempurnakannya. Gunakan `/mcp` untuk mengatur server apa pun yang dibutuhkan proyek, minta Claude untuk membuat [subagent](/id/sub-agents) apa pun yang Anda inginkan, dan jalankan `/permissions` untuk menetapkan aturan persetujuan Anda.

22 22 

23**Selama tugas.** `/plan` beralih ke Plan Mode sebelum perubahan besar. `/model` dan `/effort` menyesuaikan berapa banyak reasoning yang Anda keluarkan. Ketika percakapan menjadi panjang, `/context` menunjukkan ke mana jendela akan pergi dan `/compact` merangkumnya; gunakan `/btw` untuk pertanyaan sampingan cepat yang tidak boleh membengkak riwayat.23**Selama tugas.** `/plan` beralih ke plan mode sebelum perubahan besar. `/model` dan `/effort` menyesuaikan model mana yang Anda gunakan dan berapa banyak reasoning yang diterapkannya. Ketika percakapan menjadi panjang, `/context` menunjukkan apa yang mengisi jendela dan `/compact` merangkumnya untuk membebaskan ruang. Gunakan `/btw` untuk pertanyaan sampingan cepat yang tidak boleh ditambahkan ke riwayat percakapan.

24 24 

25**Menjalankan pekerjaan secara paralel.** `/agents` membuka manajer untuk [subagents](/id/sub-agents) yang dapat didelegasikan Claude untuk tugas sampingan, dan `/tasks` mencantumkan apa yang sedang berjalan di latar belakang sesi saat ini. `/background` melepaskan seluruh sesi untuk terus berjalan sebagai [background agent](/id/agent-view) dan membebaskan terminal Anda. Untuk perubahan besar yang mencakup codebase, `/batch` menguraikannya menjadi unit independen dan menjalankan masing-masing di [worktree](/id/worktrees) miliknya sendiri. Lihat [Run agents in parallel](/id/agents) untuk cara pendekatan ini berhubungan.25**Menjalankan pekerjaan secara paralel.** Claude mendelegasikan tugas sampingan ke [subagent](/id/sub-agents), dan `/tasks` mencantumkan apa yang sedang berjalan di latar belakang sesi saat ini. `/background` melepaskan seluruh sesi untuk terus berjalan sebagai [background agent](/id/agent-view) dan membebaskan terminal Anda. Untuk perubahan besar yang mencakup codebase, `/batch` menguraikannya menjadi unit independen dan menjalankan masing-masing di [worktree](/id/worktrees) miliknya sendiri. Lihat [Run agents in parallel](/id/agents) untuk cara pendekatan ini berhubungan.

26 26 

27**Sebelum Anda mengirim.** `/diff` menampilkan apa yang berubah, `/code-review` memeriksa diff untuk bug kebenaran dan pembersihan serta dapat menerapkan temuan dengan `--fix`, `/review` menjalankan tinjauan read-only yang sama pada permintaan tarik GitHub, dan `/security-review` memberikan pembacaan pass read-only yang lebih dalam. `/code-review ultra` menjalankan tinjauan multi-agent di cloud.27**Sebelum Anda mengirim.** `/diff` menampilkan apa yang berubah, `/code-review` memeriksa diff untuk bug kebenaran dan pembersihan serta dapat menerapkan temuan dengan `--fix`, `/review` menjalankan tinjauan read-only yang sama pada permintaan tarik GitHub, dan `/security-review` memberikan pembacaan pass read-only yang lebih dalam. `/code-review ultra` menjalankan tinjauan multi-agent di cloud.

28 28 


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

52| `/add-dir <path>` | Tambahkan direktori kerja untuk akses file selama sesi saat ini. Sebagian besar konfigurasi `.claude/` [tidak ditemukan](/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori yang ditambahkan. Anda dapat nanti melanjutkan sesi dari direktori yang ditambahkan dengan `--continue` atau `--resume` |52| `/add-dir <path>` | Tambahkan direktori kerja untuk akses file selama sesi saat ini. Sebagian besar konfigurasi `.claude/` [tidak ditemukan](/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori yang ditambahkan. Anda dapat nanti melanjutkan sesi dari direktori yang ditambahkan dengan `--continue` atau `--resume` |

53| `/advisor [model\|off]` | {/* min-version: 2.1.98 */}Aktifkan atau nonaktifkan [advisor tool](/id/advisor), yang berkonsultasi dengan model kedua untuk panduan di momen-momen kunci selama tugas. Menerima `opus`, `sonnet`, `fable` ({/* min-version: 2.1.170 */}v2.1.170+), atau ID model lengkap. Tanpa argumen, membuka pemilih. Memerlukan Claude Code v2.1.98 atau lebih baru |53| `/advisor [model\|off]` | {/* min-version: 2.1.98 */}Aktifkan atau nonaktifkan [advisor tool](/id/advisor), yang berkonsultasi dengan model kedua untuk panduan di momen-momen kunci selama tugas. Menerima `opus`, `sonnet`, `fable` ({/* min-version: 2.1.170 */}v2.1.170+), atau ID model lengkap. Tanpa argumen, membuka pemilih. Memerlukan Claude Code v2.1.98 atau lebih baru |

54| `/agents` | Kelola konfigurasi [agent](/id/sub-agents) |54| `/agents` | {/* min-version: 2.1.198 */}Sejak v2.1.198, menjalankan `/agents` mencetak pengingat untuk meminta Claude membuat atau mengelola [subagents](/id/sub-agents), atau untuk mengedit `.claude/agents/` atau `~/.claude/agents/` secara langsung. {/* max-version: 2.1.197 */}Pada v2.1.197 dan sebelumnya, membuka antarmuka interaktif untuk membuat dan mengelola konfigurasi subagent |

55| `/autofix-pr [prompt]` | Spawn sesi [Claude Code di web](/id/claude-code-on-the-web#auto-fix-pull-requests) yang memantau PR cabang saat ini dan mendorong perbaikan ketika CI gagal atau reviewer meninggalkan komentar. Mendeteksi PR terbuka dari cabang yang Anda checkout dengan `gh pr view`; untuk memantau PR yang berbeda, checkout cabangnya terlebih dahulu. Secara default sesi cloud diberitahu untuk memperbaiki setiap kegagalan CI dan komentar review; teruskan prompt untuk memberikan instruksi yang berbeda, misalnya `/autofix-pr only fix lint and type errors`. Memerlukan CLI `gh` dan akses ke [Claude Code di web](/id/claude-code-on-the-web) |55| `/autofix-pr [prompt]` | Spawn sesi [Claude Code di web](/id/claude-code-on-the-web#auto-fix-pull-requests) yang memantau PR cabang saat ini dan mendorong perbaikan ketika CI gagal atau reviewer meninggalkan komentar. Mendeteksi PR terbuka dari cabang yang Anda checkout dengan `gh pr view`; untuk memantau PR yang berbeda, checkout cabangnya terlebih dahulu. Secara default sesi cloud diberitahu untuk memperbaiki setiap kegagalan CI dan komentar review; teruskan prompt untuk memberikan instruksi yang berbeda, misalnya `/autofix-pr only fix lint and type errors`. Memerlukan CLI `gh` dan akses ke [Claude Code di web](/id/claude-code-on-the-web) |

56| `/background [prompt]` | Lepaskan sesi saat ini untuk berjalan sebagai [background agent](/id/agent-view) dan bebaskan terminal ini. Teruskan prompt untuk mengirim satu instruksi lagi sebelum melepaskan. Pantau sesi dengan `claude agents`. Alias: `/bg` |56| `/background [prompt]` | Lepaskan sesi saat ini untuk berjalan sebagai [background agent](/id/agent-view) dan bebaskan terminal ini. Teruskan prompt untuk mengirim satu instruksi lagi sebelum melepaskan. Pantau sesi dengan `claude agents`. Alias: `/bg` |

57| `/batch <instruction>` | **[Skill](/id/skills#bundled-skills).** Orkestrasi perubahan skala besar di seluruh codebase secara paralel. Meneliti codebase, menguraikan pekerjaan menjadi 5 hingga 30 unit independen, dan menyajikan rencana. Setelah disetujui, spawn satu [background subagent](/id/sub-agents#run-subagents-in-foreground-or-background) per unit dalam [git worktree](/id/worktrees) yang terisolasi. Setiap subagent mengimplementasikan unitnya, menjalankan tes, dan membuka pull request. Memerlukan repositori git. Contoh: `/batch migrate src/ from Solid to React` |57| `/batch <instruction>` | **[Skill](/id/skills#bundled-skills).** Orkestrasi perubahan skala besar di seluruh codebase secara paralel. Meneliti codebase, menguraikan pekerjaan menjadi 5 hingga 30 unit independen, dan menyajikan rencana. Setelah disetujui, spawn satu [background subagent](/id/sub-agents#run-subagents-in-foreground-or-background) per unit dalam [git worktree](/id/worktrees) yang terisolasi. Setiap subagent mengimplementasikan unitnya, menjalankan tes, dan membuka pull request. Memerlukan repositori git. Contoh: `/batch migrate src/ from Solid to React` |


68| `/context [all]` | Visualisasikan penggunaan konteks saat ini sebagai grid berwarna. Menampilkan saran optimasi untuk alat yang berat konteks, memory bloat, dan peringatan kapasitas. Dalam [fullscreen mode](/id/fullscreen) rincian per-item disusutkan untuk menjaga grid tetap terlihat. Teruskan `all` untuk meperluasnya |68| `/context [all]` | Visualisasikan penggunaan konteks saat ini sebagai grid berwarna. Menampilkan saran optimasi untuk alat yang berat konteks, memory bloat, dan peringatan kapasitas. Dalam [fullscreen mode](/id/fullscreen) rincian per-item disusutkan untuk menjaga grid tetap terlihat. Teruskan `all` untuk meperluasnya |

69| `/copy [N]` | Salin respons asisten terakhir ke clipboard. Teruskan angka `N` untuk menyalin respons ke-N terbaru: `/copy 2` menyalin respons kedua terakhir. Ketika blok kode ada, menampilkan pemilih interaktif untuk memilih blok individual atau respons lengkap. Tekan `w` di pemilih untuk menulis pilihan ke file alih-alih clipboard, yang berguna melalui SSH |69| `/copy [N]` | Salin respons asisten terakhir ke clipboard. Teruskan angka `N` untuk menyalin respons ke-N terbaru: `/copy 2` menyalin respons kedua terakhir. Ketika blok kode ada, menampilkan pemilih interaktif untuk memilih blok individual atau respons lengkap. Tekan `w` di pemilih untuk menulis pilihan ke file alih-alih clipboard, yang berguna melalui SSH |

70| `/cost` | Alias untuk `/usage` |70| `/cost` | Alias untuk `/usage` |

71| `/dataviz [request]` | **[Skill](/id/skills#bundled-skills).** Panduan desain untuk bagan, grafik, dan dashboard. Claude memilih bentuk bagan untuk data, menetapkan warna berdasarkan peran, memvalidasi palet untuk keamanan buta warna dan kontras dengan skrip bundel, dan menerapkan aturan mark, interaction, dan accessibility. Menggunakan palet placeholder netral merek yang Anda ganti dengan milik Anda sendiri. {/* min-version: 2.1.198 */}Memerlukan Claude Code v2.1.198 atau lebih baru |

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| `/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 |73| `/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-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 |75| `/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 |

75| `/desktop` | Lanjutkan sesi saat ini di aplikasi Claude Code Desktop. Memerlukan macOS atau Windows dan langganan Claude. Alias: `/app` |76| `/desktop` | Lanjutkan sesi saat ini di aplikasi Claude Code Desktop. Memerlukan macOS atau Windows dan langganan Claude. Alias: `/app` |

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 |77| `/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. {/* min-version: 2.1.198 */}Sejak v2.1.198, penampil terbuka juga menyegarkan secara otomatis ketika status git repositori berubah di luar sesi, seperti switch cabang atau commit di terminal lain |

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 |78| `/doctor` | Diagnosa dan verifikasi instalasi dan pengaturan Claude Code Anda. Hasil ditampilkan dengan ikon status. Tekan `f` untuk membuat Claude memperbaiki masalah yang dilaporkan |

78| `/effort [level\|auto]` | Atur [effort level](/id/model-config#adjust-effort-level) model. Menerima `low`, `medium`, `high`, `xhigh`, `max`, atau `ultracode`; level yang tersedia tergantung pada model, dan `max` dan `ultracode` hanya untuk sesi. `ultracode` adalah pengaturan Claude Code yang menggabungkan reasoning `xhigh` dengan orkestrasi [workflow](/id/workflows#let-claude-decide-with-ultracode) otomatis. `auto` mengatur ulang ke default model. Tanpa argumen, membuka slider interaktif; gunakan panah kiri dan kanan untuk memilih level dan `Enter` untuk menerapkan. Berlaku segera tanpa menunggu respons saat ini selesai |79| `/effort [level\|auto]` | Atur [effort level](/id/model-config#adjust-effort-level) model. Menerima `low`, `medium`, `high`, `xhigh`, `max`, atau `ultracode`; level yang tersedia tergantung pada model, dan `max` dan `ultracode` hanya untuk sesi. `ultracode` adalah pengaturan Claude Code yang menggabungkan reasoning `xhigh` dengan orkestrasi [workflow](/id/workflows#let-claude-decide-with-ultracode) otomatis. `auto` mengatur ulang ke default model. Tanpa argumen, membuka slider interaktif; gunakan panah kiri dan kanan untuk memilih level dan `Enter` untuk menerapkan. Berlaku segera tanpa menunggu respons saat ini selesai |

79| `/exit` | Keluar dari CLI. Dalam [background session](/id/agent-view#attach-to-a-session) yang terpasang, ini melepaskan dan sesi terus berjalan. Alias: `/quit` |80| `/exit` | Keluar dari CLI. Dalam [background session](/id/agent-view#attach-to-a-session) yang terpasang, ini melepaskan dan sesi terus berjalan. Alias: `/quit` |


81| `/fast [on\|off]` | Alihkan [fast mode](/id/fast-mode) aktif atau nonaktif |82| `/fast [on\|off]` | Alihkan [fast mode](/id/fast-mode) aktif atau nonaktif |

82| `/feedback [report]` | Kirimkan umpan balik, laporkan bug, atau bagikan percakapan Anda. Alias: `/bug`, `/share` |83| `/feedback [report]` | Kirimkan umpan balik, laporkan bug, atau bagikan percakapan Anda. Alias: `/bug`, `/share` |

83| `/fewer-permission-prompts` | **[Skill](/id/skills#bundled-skills).** Pindai transkrip Anda untuk Bash dan MCP tool calls read-only umum, kemudian tambahkan allowlist prioritas ke project `.claude/settings.json` untuk mengurangi permission prompts |84| `/fewer-permission-prompts` | **[Skill](/id/skills#bundled-skills).** Pindai transkrip Anda untuk Bash dan MCP tool calls read-only umum, kemudian tambahkan allowlist prioritas ke project `.claude/settings.json` untuk mengurangi permission prompts |

84| `/focus` | Alihkan focus view, yang menampilkan hanya prompt terakhir Anda, ringkasan tool-call satu baris dengan edit diffstats, dan respons final. Pilihan bertahan di seluruh sesi; atur [`viewMode`](/id/settings#available-settings) dalam pengaturan untuk menggantinya. Hanya tersedia dalam [fullscreen rendering](/id/fullscreen) |85| `/focus` | Alihkan focus view, yang menampilkan hanya prompt terakhir Anda, ringkasan tool-call satu baris dengan edit diffstats, dan respons final. {/* min-version: 2.1.198 */}Sejak v2.1.198, ringkasan tool-call juga menghitung subagent yang diluncurkan dalam turn dan menyusutkan notifikasi background-task yang selesai menjadi satu hitungan. Pilihan bertahan di seluruh sesi; atur [`viewMode`](/id/settings#available-settings) dalam pengaturan untuk menggantinya. Hanya tersedia dalam [fullscreen rendering](/id/fullscreen) |

85| `/fork <directive>` | {/* min-version: 2.1.161 */}Spawn [forked subagent](/id/sub-agents#fork-the-current-conversation): sebuah subagent latar belakang yang mewarisi percakapan lengkap dan bekerja pada direktif sementara Anda terus melanjutkan. Hasilnya kembali ke percakapan Anda ketika selesai. Untuk beralih ke salinan percakapan sendiri, gunakan `/branch`. Sebelum v2.1.161, `/fork` adalah alias untuk `/branch` |86| `/fork <directive>` | {/* min-version: 2.1.161 */}Spawn [forked subagent](/id/sub-agents#fork-the-current-conversation): sebuah subagent latar belakang yang mewarisi percakapan lengkap dan bekerja pada direktif sementara Anda terus melanjutkan. Hasilnya kembali ke percakapan Anda ketika selesai. Untuk beralih ke salinan percakapan sendiri, gunakan `/branch`. Sebelum v2.1.161, `/fork` adalah alias untuk `/branch` |

86| `/goal [condition\|clear]` | Atur [goal](/id/goal): Claude terus bekerja di seluruh turn sampai kondisi terpenuhi. Tanpa argumen, menampilkan goal saat ini atau yang paling baru dicapai. `clear`, `stop`, `off`, `reset`, `none`, atau `cancel` menghapus goal aktif lebih awal |87| `/goal [condition\|clear]` | Atur [goal](/id/goal): Claude terus bekerja di seluruh turn sampai kondisi terpenuhi. Tanpa argumen, menampilkan goal saat ini atau yang paling baru dicapai. `clear`, `stop`, `off`, `reset`, `none`, atau `cancel` menghapus goal aktif lebih awal |

87| `/heapdump` | Tulis JavaScript heap snapshot dan memory breakdown ke `~/Desktop`, atau direktori home Anda di Linux tanpa folder Desktop, untuk mendiagnosis penggunaan memori tinggi. Lihat [troubleshooting](/id/troubleshooting#high-cpu-or-memory-usage) |88| `/heapdump` | Tulis JavaScript heap snapshot dan memory breakdown ke `~/Desktop`, atau direktori home Anda di Linux tanpa folder Desktop, untuk mendiagnosis penggunaan memori tinggi. Lihat [troubleshooting](/id/troubleshooting#high-cpu-or-memory-usage) |


127| `/setup-bedrock` | Konfigurasi autentikasi [Amazon Bedrock](/id/amazon-bedrock), region, dan model pins melalui wizard interaktif. Hanya terlihat ketika `CLAUDE_CODE_USE_BEDROCK=1` diatur. Pengguna Bedrock pertama kali juga dapat mengakses wizard ini dari layar login |128| `/setup-bedrock` | Konfigurasi autentikasi [Amazon Bedrock](/id/amazon-bedrock), region, dan model pins melalui wizard interaktif. Hanya terlihat ketika `CLAUDE_CODE_USE_BEDROCK=1` diatur. Pengguna Bedrock pertama kali juga dapat mengakses wizard ini dari layar login |

128| `/setup-vertex` | Konfigurasi autentikasi [Google Vertex AI](/id/google-vertex-ai), proyek, region, dan model pins melalui wizard interaktif. Hanya terlihat ketika `CLAUDE_CODE_USE_VERTEX=1` diatur. Pengguna Vertex AI pertama kali juga dapat mengakses wizard ini dari layar login |129| `/setup-vertex` | Konfigurasi autentikasi [Google Vertex AI](/id/google-vertex-ai), proyek, region, dan model pins melalui wizard interaktif. Hanya terlihat ketika `CLAUDE_CODE_USE_VERTEX=1` diatur. Pengguna Vertex AI pertama kali juga dapat mengakses wizard ini dari layar login |

129| `/simplify [target]` | {/* min-version: 2.1.154 */}**[Skill](/id/skills#bundled-skills).** Tinjau kode yang diubah untuk peluang cleanup dan terapkan perbaikan. Empat review [agents](/id/sub-agents) berjalan secara paralel, mencakup reuse dari helper yang ada, simplification, efficiency, dan apakah perubahan berada pada tingkat abstraksi yang tepat. Dari v2.1.154, review tidak mencari bug kebenaran. Gunakan `/code-review` untuk menemukan bug. Pada versi sebelumnya `/simplify` setara dengan `/code-review --fix`. Teruskan path atau referensi PR untuk meninjau target spesifik |130| `/simplify [target]` | {/* min-version: 2.1.154 */}**[Skill](/id/skills#bundled-skills).** Tinjau kode yang diubah untuk peluang cleanup dan terapkan perbaikan. Empat review [agents](/id/sub-agents) berjalan secara paralel, mencakup reuse dari helper yang ada, simplification, efficiency, dan apakah perubahan berada pada tingkat abstraksi yang tepat. Dari v2.1.154, review tidak mencari bug kebenaran. Gunakan `/code-review` untuk menemukan bug. Pada versi sebelumnya `/simplify` setara dengan `/code-review --fix`. Teruskan path atau referensi PR untuk meninjau target spesifik |

130| `/skills` | Daftar [skills](/id/skills) yang tersedia. Tekan `t` untuk mengurutkan berdasarkan token count. Tekan `Space` untuk [menyembunyikan skill dari Claude atau menu `/`](/id/skills#override-skill-visibility-from-settings), kemudian `Enter` untuk menyimpan |131| `/skills` | Daftar [skills](/id/skills) yang tersedia. {/* min-version: 2.1.121 */}Sejak v2.1.121, ketik untuk memfilter daftar berdasarkan nama. Tekan `t` untuk mengurutkan berdasarkan token count. Tekan `Space` untuk [menyembunyikan skill dari Claude atau menu `/`](/id/skills#override-skill-visibility-from-settings), kemudian `Enter` untuk menyimpan |

131| `/stats` | Alias untuk `/usage`. Membuka pada tab Stats |132| `/stats` | Alias untuk `/usage`. Membuka pada tab Stats |

132| `/status` | Buka antarmuka Settings (tab Status) yang menampilkan versi, model, akun, dan konektivitas. Bekerja saat Claude merespons, tanpa menunggu respons saat ini selesai |133| `/status` | Buka antarmuka Settings pada tab Status, menampilkan versi, model, akun, dan konektivitas. Bekerja saat Claude merespons |

133| `/statusline` | Konfigurasi [status line](/id/statusline) Claude Code. Jelaskan apa yang Anda inginkan, atau jalankan tanpa argumen untuk auto-configure dari prompt shell Anda |134| `/statusline` | Konfigurasi [status line](/id/statusline) Claude Code. Jelaskan apa yang Anda inginkan, atau jalankan tanpa argumen untuk auto-configure dari prompt shell Anda |

134| `/stickers` | Pesan stiker Claude Code |135| `/stickers` | Pesan stiker Claude Code |

135| `/stop` | Hentikan [background session](/id/agent-view) saat ini. Hanya tersedia saat terhubung ke background session; transkrip dan worktree apa pun disimpan. Untuk melepaskan tanpa menghentikan, gunakan `/exit` atau tekan `←` |136| `/stop` | Hentikan [background session](/id/agent-view) saat ini. Hanya tersedia saat terhubung ke background session; transkrip dan worktree apa pun disimpan. Untuk melepaskan tanpa menghentikan, gunakan `/exit` atau tekan `←` |

Details

1587 Apa yang bertahan dari pemadatan1587 Apa yang bertahan dari pemadatan

1588</h2>1588</h2>

1589 1589 

1590Ketika sesi panjang dipadatkan, Claude Code merangkum riwayat percakapan agar sesuai dengan jendela konteks. Apa yang terjadi pada instruksi Anda tergantung pada cara instruksi tersebut dimuat:1590Ketika sesi panjang dipadatkan, Claude Code merangkum riwayat percakapan agar sesuai dengan jendela konteks. {/* min-version: 2.1.198 */}Mulai dari v2.1.198, permintaan perangkuman mewarisi konfigurasi [extended thinking](/id/model-config#extended-thinking) sesi Anda, sehingga ia bernalar dengan pemikiran diaktifkan ketika sesi Anda memilikinya diaktifkan dan tetap mati sebaliknya. Pemikiran hanya mempengaruhi cara ringkasan diproduksi; pengaturan sesi Anda tidak berubah setelahnya. Apa yang terjadi pada instruksi Anda tergantung pada cara instruksi tersebut dimuat:

1591 1591 

1592| Mekanisme | Setelah pemadatan |1592| Mekanisme | Setelah pemadatan |

1593| :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- |1593| :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- |

costs.md +3 −3

Details

107* **Bersihkan antar tugas**: Gunakan `/clear` untuk memulai segar saat beralih ke pekerjaan yang tidak terkait. Konteks basi membuang token pada setiap pesan berikutnya. Gunakan `/rename` sebelum membersihkan sehingga Anda dapat dengan mudah menemukan sesi nanti, kemudian `/resume` untuk kembali ke sana.107* **Bersihkan antar tugas**: Gunakan `/clear` untuk memulai segar saat beralih ke pekerjaan yang tidak terkait. Konteks basi membuang token pada setiap pesan berikutnya. Gunakan `/rename` sebelum membersihkan sehingga Anda dapat dengan mudah menemukan sesi nanti, kemudian `/resume` untuk kembali ke sana.

108* **Tambahkan instruksi compaction kustom**: `/compact Focus on code samples and API usage` memberi tahu Claude apa yang harus dipertahankan selama perangkuman.108* **Tambahkan instruksi compaction kustom**: `/compact Focus on code samples and API usage` memberi tahu Claude apa yang harus dipertahankan selama perangkuman.

109 109 

110Anda juga dapat menyesuaikan perilaku compaction di CLAUDE.md Anda:110Anda juga dapat menyesuaikan perilaku compaction di file CLAUDE.md Anda di root proyek Anda:

111 111 

112```markdown theme={null}112```markdown theme={null}

113# Compact instructions113# Compact instructions


170 </Tab>170 </Tab>

171 171 

172 <Tab title="filter-test-output.sh">172 <Tab title="filter-test-output.sh">

173 Hook memanggil skrip ini, yang memeriksa apakah perintah adalah test runner dan memodifikasinya untuk menampilkan hanya kegagalan:173 Hook memanggil skrip ini. Buat folder dengan `mkdir -p ~/.claude/hooks`, simpan skrip di bawah sebagai `~/.claude/hooks/filter-test-output.sh`, dan buat dapat dieksekusi dengan `chmod +x ~/.claude/hooks/filter-test-output.sh`. Ini memeriksa apakah perintah adalah test runner dan memodifikasinya untuk menampilkan hanya kegagalan:

174 174 

175 ```bash theme={null}175 ```bash theme={null}

176 #!/bin/bash176 #!/bin/bash


198 Sesuaikan pemikiran yang diperluas198 Sesuaikan pemikiran yang diperluas

199</h3>199</h3>

200 200 

201Pemikiran yang diperluas diaktifkan secara default karena secara signifikan meningkatkan kinerja pada tugas perencanaan dan penalaran yang kompleks. Token pemikiran ditagih sebagai token output, dan anggaran default dapat mencapai puluhan ribu token per permintaan tergantung pada model. Untuk tugas yang lebih sederhana di mana penalaran mendalam tidak diperlukan, Anda dapat mengurangi biaya dengan menurunkan [tingkat upaya](/id/model-config#adjust-effort-level) dengan `/effort` atau di `/model`, menonaktifkan pemikiran di `/config`, atau, pada model dengan [anggaran pemikiran tetap](/id/model-config#adaptive-reasoning-and-fixed-thinking-budgets), menurunkan anggaran dengan `MAX_THINKING_TOKENS=8000`. Model adaptive-reasoning mengabaikan anggaran bukan nol, jadi gunakan tingkat upaya di sana. Menonaktifkan pemikiran tidak tersedia di Fable 5, yang selalu menggunakan pemikiran yang diperluas.201Pemikiran yang diperluas diaktifkan secara default karena secara signifikan meningkatkan kinerja pada tugas perencanaan dan penalaran yang kompleks. Token pemikiran ditagih sebagai token output, dan anggaran default dapat mencapai puluhan ribu token per permintaan tergantung pada model. Untuk tugas yang lebih sederhana di mana penalaran mendalam tidak diperlukan, Anda dapat mengurangi biaya dengan menurunkan [tingkat upaya](/id/model-config#adjust-effort-level) dengan `/effort` atau di `/model`, menonaktifkan pemikiran di `/config`, atau, pada model dengan [anggaran pemikiran tetap](/id/model-config#adaptive-reasoning-and-fixed-thinking-budgets), menurunkan anggaran dengan menetapkan [variabel lingkungan](/id/env-vars) `MAX_THINKING_TOKENS`, misalnya `MAX_THINKING_TOKENS=8000`. Model adaptive-reasoning mengabaikan anggaran bukan nol, jadi gunakan tingkat upaya di sana. Menonaktifkan pemikiran tidak tersedia di Fable 5, yang selalu menggunakan pemikiran yang diperluas.

202 202 

203<h3 id="delegate-verbose-operations-to-subagents">203<h3 id="delegate-verbose-operations-to-subagents">

204 Delegasikan operasi verbose ke subagents204 Delegasikan operasi verbose ke subagents

Details

14 Lihat apa yang dimuat ke dalam context14 Lihat apa yang dimuat ke dalam context

15</h2>15</h2>

16 16 

17Perintah `/context` menampilkan semua yang menempati jendela context untuk sesi saat ini, dipecah berdasarkan kategori: system prompt, file memory, skills, alat MCP, dan pesan percakapan. Jalankan terlebih dahulu untuk mengonfirmasi apakah `CLAUDE.md`, rules, atau deskripsi skill Anda ada sama sekali.17Perintah `/context` menampilkan semua yang menempati jendela context untuk sesi saat ini, dipecah berdasarkan kategori: system prompt, file memory, skills, custom subagents dengan sumber masing-masing dimuat dari, alat MCP, dan pesan percakapan. Jalankan terlebih dahulu untuk mengonfirmasi apakah `CLAUDE.md`, rules, atau deskripsi skill Anda ada sama sekali.

18 18 

19Untuk detail tentang kategori tertentu, lanjutkan dengan perintah khusus:19Untuk detail tentang kategori tertentu, lanjutkan dengan perintah khusus:

20 20 


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 |

26| `/hooks` | Konfigurasi hook aktif |25| `/hooks` | Konfigurasi hook aktif |

27| `/mcp` | Server MCP yang terhubung dan statusnya |26| `/mcp` | Server MCP yang terhubung dan statusnya |

28| `/permissions` | Aturan allow dan deny yang diselesaikan saat ini berlaku |27| `/permissions` | Aturan allow dan deny yang diselesaikan saat ini berlaku |

desktop.md +1 −1

Details

829* **Linux (beta)**: Computer Use belum tersedia di aplikasi desktop Linux. Lihat [Claude Desktop on Linux](/id/desktop-linux).829* **Linux (beta)**: Computer Use belum tersedia di aplikasi desktop Linux. Lihat [Claude Desktop on Linux](/id/desktop-linux).

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

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

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.832* **Perintah terminal-dialog**: perintah bawaan yang membuka panel interaktif di terminal, seperti `/permissions`, `/config`, 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.

833 833 

834<h2 id="troubleshooting">834<h2 id="troubleshooting">

835 Troubleshooting835 Troubleshooting

errors.md +143 −11

Details

25| `API Error: 500 Internal server error` | [Kesalahan server](#api-error-500-internal-server-error) |25| `API Error: 500 Internal server error` | [Kesalahan server](#api-error-500-internal-server-error) |

26| `API Error: Repeated 529 Overloaded errors` | [Kesalahan server](#api-error-repeated-529-overloaded-errors) |26| `API Error: Repeated 529 Overloaded errors` | [Kesalahan server](#api-error-repeated-529-overloaded-errors) |

27| `Request timed out` | [Kesalahan server](#request-timed-out), atau [Jaringan](#unable-to-connect-to-api) jika pesan menyebutkan koneksi internet Anda |27| `Request timed out` | [Kesalahan server](#request-timed-out), atau [Jaringan](#unable-to-connect-to-api) jika pesan menyebutkan koneksi internet Anda |

28| `Server error mid-response. The response above may be incomplete.` | [Kesalahan server](#the-response-above-may-be-incomplete) |

29| `Connection closed mid-response` / `Response stalled mid-stream` | [Kesalahan server](#the-response-above-may-be-incomplete) |

28| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Kesalahan server](#auto-mode-cannot-determine-the-safety-of-an-action) |30| `<model> is temporarily unavailable, so auto mode cannot determine the safety of...` | [Kesalahan server](#auto-mode-cannot-determine-the-safety-of-an-action) |

29| `Auto mode could not evaluate this action and is blocking it for safety` | [Kesalahan server](#auto-mode-cannot-determine-the-safety-of-an-action) |31| `Auto mode could not evaluate this action and is blocking it for safety` | [Kesalahan server](#auto-mode-cannot-determine-the-safety-of-an-action) |

30| `Auto mode classifier transcript exceeded context window` | [Kesalahan server](#auto-mode-cannot-determine-the-safety-of-an-action) |32| `Auto mode classifier transcript exceeded context window` | [Kesalahan server](#auto-mode-cannot-determine-the-safety-of-an-action) |

33| `Agent terminated early due to an API error` | [Kesalahan server](#agent-terminated-early-due-to-an-api-error) |

31| `You've hit your session limit` / `You've hit your weekly limit` | [Batas penggunaan](#you%E2%80%99ve-hit-your-session-limit) |34| `You've hit your session limit` / `You've hit your weekly limit` | [Batas penggunaan](#you%E2%80%99ve-hit-your-session-limit) |

32| `Usage credits required for 1M context` | [Batas penggunaan](#usage-credits-required-for-1m-context) |35| `Usage credits required for 1M context` | [Batas penggunaan](#usage-credits-required-for-1m-context) |

33| `Server is temporarily limiting requests` | [Batas penggunaan](#server-is-temporarily-limiting-requests) |36| `Server is temporarily limiting requests` | [Batas penggunaan](#server-is-temporarily-limiting-requests) |


43| `Remote Control is only available when using Claude via api.anthropic.com` | [Autentikasi](#remote-control-requires-the-anthropic-api) |46| `Remote Control is only available when using Claude via api.anthropic.com` | [Autentikasi](#remote-control-requires-the-anthropic-api) |

44| `OAuth token revoked` / `OAuth token has expired` | [Autentikasi](#oauth-token-revoked-or-expired) |47| `OAuth token revoked` / `OAuth token has expired` | [Autentikasi](#oauth-token-revoked-or-expired) |

45| `does not meet scope requirement user:profile` | [Autentikasi](#oauth-scope-requirement) |48| `does not meet scope requirement user:profile` | [Autentikasi](#oauth-scope-requirement) |

49| `AWS credentials expired or invalid` | [Autentikasi](#aws-credentials-expired-or-invalid) |

50| `AWS authentication failed` | [Autentikasi](#aws-authentication-failed) |

46| `Unable to connect to API` | [Jaringan](#unable-to-connect-to-api) |51| `Unable to connect to API` | [Jaringan](#unable-to-connect-to-api) |

47| `Waiting for API response · will retry in` | [Percobaan ulang otomatis](#automatic-retries), atau [Jaringan](#unable-to-connect-to-api) jika terus berlanjut |52| `Waiting for API response · will retry in` | [Percobaan ulang otomatis](#automatic-retries), atau [Jaringan](#unable-to-connect-to-api) jika terus berlanjut |

48| `SSL certificate verification failed` | [Jaringan](#ssl-certificate-errors) |53| `SSL certificate verification failed` | [Jaringan](#ssl-certificate-errors) |

54| `SSL certificate error (...)` during login or startup | [Jaringan](#ssl-certificate-errors) |

49| `403` with `x-deny-reason: host_not_allowed` in a cloud or routine session | [Jaringan](#host-not-allowed-in-a-cloud-session) |55| `403` with `x-deny-reason: host_not_allowed` in a cloud or routine session | [Jaringan](#host-not-allowed-in-a-cloud-session) |

50| `Prompt is too long` | [Kesalahan permintaan](#prompt-is-too-long) |56| `Prompt is too long` | [Kesalahan permintaan](#prompt-is-too-long) |

51| `Error during compaction: Conversation too long` | [Kesalahan permintaan](#error-during-compaction-conversation-too-long) |57| `Error during compaction: Conversation too long` | [Kesalahan permintaan](#error-during-compaction-conversation-too-long) |


61| `max_tokens must be greater than thinking.budget_tokens` | [Kesalahan permintaan](#thinking-budget-exceeds-output-limit) |67| `max_tokens must be greater than thinking.budget_tokens` | [Kesalahan permintaan](#thinking-budget-exceeds-output-limit) |

62| `API Error: 400 due to tool use concurrency issues` | [Kesalahan permintaan](#tool-use-or-thinking-block-mismatch) |68| `API Error: 400 due to tool use concurrency issues` | [Kesalahan permintaan](#tool-use-or-thinking-block-mismatch) |

63| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Kesalahan permintaan](#usage-policy-refusal) |69| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Kesalahan permintaan](#usage-policy-refusal) |

64| Respons tampak berkualitas lebih rendah dari biasanya | [Kualitas respons](#responses-seem-lower-quality-than-usual) |70| `--bg and --print conflict` | [Kesalahan baris perintah](#command-line-errors) |

71| Responses seem lower quality than usual | [Kualitas respons](#responses-seem-lower-quality-than-usual) |

65 72 

66<h2 id="automatic-retries">73<h2 id="automatic-retries">

67 Percobaan ulang otomatis74 Percobaan ulang otomatis

68</h2>75</h2>

69 76 

70Claude Code mencoba ulang kegagalan transien sebelum menampilkan kesalahan kepada Anda. Kesalahan server, respons kelebihan beban, waktu tunggu permintaan, throttle 429 sementara, dan koneksi yang terputus semuanya dicoba ulang hingga 10 kali dengan backoff eksponensial. Saat mencoba ulang, spinner menampilkan hitungan mundur `Retrying in Ns · attempt x/y`.77Claude Code mencoba ulang kegagalan transien sebelum menampilkan kesalahan kepada Anda. Kesalahan server, respons kelebihan beban, waktu tunggu permintaan, throttle 429 sementara, dan koneksi yang terputus semuanya dicoba ulang hingga 10 kali dengan backoff eksponensial. {/* min-version: 2.1.198 */}Mulai dari v2.1.198, ini mencakup koneksi yang terputus di tengah respons sebelum output yang terlihat telah dialirkan: Claude Code mengeluarkan kembali permintaan dengan backoff yang sama dan giliran berlanjut daripada berhenti dengan kesalahan koneksi. {/* min-version: 2.1.199 */}Mulai dari v2.1.199, throttle 429 sementara yang tidak membawa header kuota paket Anda juga dicoba ulang ketika Anda masuk dengan langganan claude.ai; versi sebelumnya hanya mencoba ulang untuk autentikasi kunci API dan Enterprise.

78 

79Dua kelas kegagalan tidak dicoba ulang, karena percobaan ulang tidak dapat berhasil:

80 

81* {/* min-version: 2.1.199 */}Mulai dari v2.1.199, kegagalan validasi sertifikat TLS, seperti proxy yang menginspeksi TLS, bundel `NODE_EXTRA_CA_CERTS` yang hilang, atau sertifikat yang kedaluwarsa, gagal pada percobaan pertama sehingga perbaikan muncul segera daripada setelah anggaran percobaan ulang penuh. Lihat [Kesalahan sertifikat SSL](#ssl-certificate-errors). Kondisi TLS transien seperti timeout handshake masih mencoba ulang.

82* {/* min-version: 2.1.199 */}Mulai dari v2.1.199, kesalahan server yang tiba setelah Claude telah dialirkan output yang terlihat menjaga respons parsial dan menambahkan [pemberitahuan respons tidak lengkap](#the-response-above-may-be-incomplete) daripada mencoba ulang, karena menjalankan kembali permintaan dapat menjalankan panggilan alat yang sama dua kali. Versi sebelumnya membuang output parsial dan melaporkan giliran sebagai kesalahan.

83 

84Saat mencoba ulang, spinner menampilkan hitungan mundur `Retrying in Ns · attempt x/y` setelah label kesalahan. Label menyebutkan alasan spesifik dari percobaan pertama untuk kegagalan yang dapat Anda tindaklanjuti segera: jaringan tidak aktif, handshake TLS gagal, atau Anda mencapai batas laju. Untuk kesalahan lainnya, itu berbunyi `API error` pada awalnya. {/* min-version: 2.1.198 */}Mulai dari v2.1.198, itu beralih ke alasan spesifik dari percobaan ketiga, atau pada percobaan terakhir ketika `CLAUDE_CODE_MAX_RETRIES` memungkinkan lebih sedikit dari tiga; versi sebelumnya hanya beralih pada percobaan terakhir.

85 

86{/* min-version: 2.1.198 */}Mulai dari v2.1.198, tip spinner biasa ditekan selama percobaan ulang. Setelah alasan kesalahan terungkap, jika kegagalan adalah kelebihan beban 529, baris di bawah hitungan mundur juga menyebutkan di mana memeriksa status layanan: `status.claude.com` di API Anthropic, atau host penyedia atau gateway yang disebutkan dalam pesan pada konfigurasi lain.

71 87 

72{/* min-version: 2.1.185 */}Jika tidak ada data yang tiba di aliran respons selama 20 detik sementara permintaan masih tertunda, spinner menampilkan `Waiting for API response · will retry in … · check your network` sebelum percobaan ulang apa pun dimulai. Permintaan belum gagal: hitungan mundur berjalan ke titik di mana Claude Code membatalkan koneksi yang macet dan mencoba ulang, sehingga banner hilang dengan sendirinya setelah data dilanjutkan atau percobaan ulang berhasil. Mulai dari v2.1.185 ambang batasnya adalah 20 detik; versi sebelumnya menampilkan banner setelah 10 detik dengan wording yang berbeda. Jika muncul kembali pada setiap percobaan, perlakukan sebagai [masalah jaringan](#unable-to-connect-to-api).88{/* min-version: 2.1.185 */}Jika tidak ada data yang tiba di aliran respons selama 20 detik sementara permintaan masih tertunda, spinner menampilkan `Waiting for API response · will retry in … · check your network` sebelum percobaan ulang apa pun dimulai. Permintaan belum gagal: hitungan mundur berjalan ke titik di mana Claude Code membatalkan koneksi yang macet dan mencoba ulang, sehingga banner hilang dengan sendirinya setelah data dilanjutkan atau percobaan ulang berhasil. Mulai dari v2.1.185 ambang batasnya adalah 20 detik; versi sebelumnya menampilkan banner setelah 10 detik dengan wording yang berbeda. Jika muncul kembali pada setiap percobaan, perlakukan sebagai [masalah jaringan](#unable-to-connect-to-api).

73 89 

74Ketika Anda melihat salah satu kesalahan di halaman ini, percobaan ulang tersebut telah habis. Anda dapat menyesuaikan perilaku dengan variabel lingkungan ini:90Ketika Anda melihat salah satu kesalahan di halaman ini, percobaan ulang tersebut telah habis, kecuali jika itu termasuk kelas yang tidak dicoba ulang, seperti kegagalan validasi sertifikat. Anda dapat menyesuaikan perilaku dengan variabel lingkungan ini:

75 91 

76| Variabel | Default | Efek |92| Variabel | Default | Efek |

77| :------------------------------------------- | :------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |93| :------------------------------------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

78| [`CLAUDE_CODE_MAX_RETRIES`](/id/env-vars) | 10 | Jumlah percobaan ulang. {/* min-version: 2.1.186 */}Dibatasi pada 15 mulai dari v2.1.186. Turunkan untuk menampilkan kegagalan lebih cepat dalam skrip. |94| [`CLAUDE_CODE_MAX_RETRIES`](/id/env-vars) | 10 | Jumlah percobaan ulang. {/* min-version: 2.1.186 */}Dibatasi pada 15 mulai dari v2.1.186; {/* min-version: 2.1.199 */}mulai dari v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` menaikkan default dan menghapus batas. Turunkan untuk menampilkan kegagalan lebih cepat dalam skrip. |

79| [`CLAUDE_CODE_RETRY_WATCHDOG`](/id/env-vars) | unset | Atur ke `1` dalam sesi tanpa pengawasan seperti pekerjaan CI untuk mencoba ulang kesalahan kapasitas `429` dan `529` tanpa batas alih-alih gagal setelah percobaan `CLAUDE_CODE_MAX_RETRIES`. |95| [`CLAUDE_CODE_RETRY_WATCHDOG`](/id/env-vars) | unset | Atur ke `1` dalam sesi tanpa pengawasan seperti pekerjaan CI untuk mencoba ulang kesalahan kapasitas `429` dan `529` tanpa batas daripada gagal setelah percobaan `CLAUDE_CODE_MAX_RETRIES`. {/* min-version: 2.1.199 */}Mulai dari v2.1.199, itu juga menaikkan jumlah percobaan ulang default untuk kesalahan transien lainnya, seperti kesalahan server, timeout, dan koneksi yang terputus, menjadi 300, kira-kira tiga jam backoff, dan menghapus batas 15 pada `CLAUDE_CODE_MAX_RETRIES` jika Anda menetapkan variabel itu secara eksplisit. |

80| [`API_TIMEOUT_MS`](/id/env-vars) | 600000 | Waktu tunggu per permintaan dalam milidetik. Naikkan untuk jaringan lambat atau proxy. |96| [`API_TIMEOUT_MS`](/id/env-vars) | 600000 | Waktu tunggu per permintaan dalam milidetik. Naikkan untuk jaringan lambat atau proxy. |

81 97 

82<h2 id="server-errors">98<h2 id="server-errors">


115API Error: Repeated 529 Overloaded errors. The API is at capacity — this is usually temporary. Try again in a moment. If it persists, check https://status.claude.com.131API Error: Repeated 529 Overloaded errors. The API is at capacity — this is usually temporary. Try again in a moment. If it persists, check https://status.claude.com.

116```132```

117 133 

118Kalimat terakhir bervariasi menurut penyedia dengan cara yang sama seperti kesalahan 500 di atas. 529 bukan batas penggunaan Anda dan tidak dihitung terhadap kuota Anda.134Kalimat terakhir bervariasi menurut penyedia dengan cara yang sama seperti kesalahan 500 di atas.

135 

136Sebuah 529 bukan batas penggunaan Anda dan tidak dihitung terhadap kuota Anda.

119 137 

120**Yang harus dilakukan:**138**Yang harus dilakukan:**

121 139 


142* Jika jaringan lambat atau proxy adalah penyebabnya, naikkan `API_TIMEOUT_MS` seperti yang dijelaskan dalam [Percobaan ulang otomatis](#automatic-retries)160* Jika jaringan lambat atau proxy adalah penyebabnya, naikkan `API_TIMEOUT_MS` seperti yang dijelaskan dalam [Percobaan ulang otomatis](#automatic-retries)

143* Jika waktu tunggu sering terjadi dan jaringan Anda sehat, lihat [Kesalahan jaringan dan koneksi](#network-and-connection-errors) di bawah161* Jika waktu tunggu sering terjadi dan jaringan Anda sehat, lihat [Kesalahan jaringan dan koneksi](#network-and-connection-errors) di bawah

144 162 

163<h3 id="the-response-above-may-be-incomplete">

164 The response above may be incomplete

165</h3>

166 

167Respons streaming gagal setelah Claude telah menghasilkan output yang terlihat. Mengirim kembali permintaan dapat menjalankan panggilan alat yang sama dua kali, jadi Claude Code menjaga apa yang sudah dialirkan dan menambahkan pemberitahuan ini daripada membuang giliran. Varian mana yang Anda lihat menyebutkan penyebabnya:

168 

169```text theme={null}

170API Error: Server error mid-response. The response above may be incomplete.

171API Error: Connection closed mid-response. The response above may be incomplete.

172API Error: Response stalled mid-stream. The response above may be incomplete.

173```

174 

175* {/* min-version: 2.1.199 */}}`Server error mid-response`: kesalahan server kelebihan beban atau 5xx di tengah aliran. Varian ini memerlukan Claude Code v2.1.199 atau lebih baru; sebelumnya kasus itu membuang output parsial dan melaporkan seluruh giliran sebagai kesalahan.

176* `Connection closed mid-response`: koneksi terputus.

177* `Response stalled mid-stream`: aliran berhenti mengirim data.

178 

179**Yang harus dilakukan:**

180 

181* Baca respons yang dialirkan. Tidak ada yang hilang, tetapi kalimat atau panggilan alat terakhir mungkin hilang.

182* Balas dengan `continue` untuk membuat Claude melanjutkan dari tempat itu berhenti

183* Jika kesalahan yang sama muncul sebelum output yang terlihat, Claude Code mencoba ulang permintaan daripada menyelesaikannya. Lihat [Percobaan ulang otomatis](#automatic-retries).

184 

145<h3 id="auto-mode-cannot-determine-the-safety-of-an-action">185<h3 id="auto-mode-cannot-determine-the-safety-of-an-action">

146 Auto mode cannot determine the safety of an action186 Auto mode cannot determine the safety of an action

147</h3>187</h3>


186* Setujui atau tolak tindakan dalam prompt yang muncul226* Setujui atau tolak tindakan dalam prompt yang muncul

187* Jalankan `/compact` untuk mengurangi ukuran percakapan sehingga tindakan berikutnya sesuai dengan jendela pengklasifikasi lagi227* Jalankan `/compact` untuk mengurangi ukuran percakapan sehingga tindakan berikutnya sesuai dengan jendela pengklasifikasi lagi

188 228 

229<h3 id="agent-terminated-early-due-to-an-api-error">

230 Agent terminated early due to an API error

231</h3>

232 

233{/* min-version: 2.1.199 */}Permintaan API [subagent](/id/sub-agents) gagal secara terminal, misalnya karena batas penggunaan tercapai atau percobaan ulang untuk kesalahan server habis, jadi subagent berhenti sebelum menyelesaikan tugasnya. Pesan ini memerlukan Claude Code v2.1.199 atau lebih baru; sebelumnya teks kesalahan API dikembalikan ke Claude seolah-olah itu adalah hasil subagent.

234 

235```text theme={null}

236Agent terminated early due to an API error: <error detail>

237```

238 

239**Yang harus dilakukan:**

240 

241* Cocokkan detail kesalahan setelah titik dua dengan bagiannya sendiri di halaman ini, seperti [Batas penggunaan](#usage-limits) atau [Kesalahan server](#server-errors), dan ikuti langkah-langkah bagian itu

242* Setelah kesalahan yang mendasar hilang, minta Claude untuk mencoba ulang tugas atau [resume subagent](/id/sub-agents#resume-subagents)

243 

244Ketika batas laju, kelebihan beban, atau kesalahan server mengganggu subagent latar depan yang sudah menghasilkan output, Claude menerima output parsial itu ditandai sebagai tidak lengkap daripada kesalahan ini. Lihat [Kesalahan API dalam subagent](/id/sub-agents#api-errors-in-subagents).

245 

189<h2 id="usage-limits">246<h2 id="usage-limits">

190 Batas penggunaan247 Batas penggunaan

191</h2>248</h2>


246API Error: Server is temporarily limiting requests (not your usage limit)303API Error: Server is temporarily limiting requests (not your usage limit)

247```304```

248 305 

249Ini [dicoba ulang secara otomatis](#automatic-retries) sebelum ditampilkan.306Claude Code membedakan ini dari batas paket Anda dengan tidak adanya header kuota terpadu yang respons batas nyata bawa. {/* min-version: 2.1.199 */}Mulai dari v2.1.199 ini [dicoba ulang secara otomatis](#automatic-retries) dengan backoff sebelum ditampilkan, cara apa pun Anda autentikasi. Pada versi sebelumnya, sesi yang masuk dengan langganan claude.ai gagal giliran pada kemunculan pertama; hanya autentikasi kunci API dan Enterprise yang mencoba ulang.

250 307 

251**Yang harus dilakukan:**308**Yang harus dilakukan:**

252 309 


373 Your organization has disabled API key authentication430 Your organization has disabled API key authentication

374</h3>431</h3>

375 432 

376Admin organisasi Console Anda telah mematikan autentikasi kunci API, jadi API menolak kunci yang dikirim Claude Code. Petunjuk pemulihan setelah `·` bervariasi tergantung dari mana kunci berasal:433Pesan ini memerlukan Claude Code v2.1.169 atau lebih baru. Admin organisasi Console Anda telah mematikan autentikasi kunci API, jadi API menolak kunci yang dikirim Claude Code. Petunjuk pemulihan setelah `·` bervariasi tergantung dari mana kunci berasal:

377 434 

378```text theme={null}435```text theme={null}

379Your organization has disabled API key authentication · Run /login to sign in with your claude.ai account436Your organization has disabled API key authentication · Run /login to sign in with your claude.ai account


402Your organization has disabled Claude subscription access for Claude Code · Use an Anthropic API key instead, or ask your admin to enable access459Your organization has disabled Claude subscription access for Claude Code · Use an Anthropic API key instead, or ask your admin to enable access

403```460```

404 461 

405Ini adalah pengaturan organisasi sisi server, jadi tidak dapat ditimpa dari pengaturan lokal, variabel lingkungan, atau flag CLI. Agent SDK dan mode non-interaktif `-p` menampilkan ini sebagai kode kesalahan `oauth_org_not_allowed`.462Ini adalah pengaturan organisasi sisi server, jadi tidak dapat ditimpa dari pengaturan lokal, variabel lingkungan, atau flag CLI.

463 

464Agent SDK dan mode non-interaktif `-p` menampilkan ini sebagai kode kesalahan `oauth_org_not_allowed`.

406 465 

407**Yang harus dilakukan:**466**Yang harus dilakukan:**

408 467 


477 536 

478* Jalankan `/login` untuk membuat token baru dengan cakupan saat ini. Anda tidak perlu keluar terlebih dahulu.537* Jalankan `/login` untuk membuat token baru dengan cakupan saat ini. Anda tidak perlu keluar terlebih dahulu.

479 538 

539<h3 id="aws-credentials-expired-or-invalid">

540 AWS credentials expired or invalid

541</h3>

542 

543{/* min-version: 2.1.198 */}Pesan ini memerlukan Claude Code v2.1.198 atau lebih baru dan hanya muncul ketika [`awsAuthRefresh`](/id/amazon-bedrock#advanced-credential-configuration) diatur dalam file pengaturan Anda. Token sesi AWS Anda kedaluwarsa atau ditolak, dan penyegaran otomatis yang sudah dijalankan Claude Code tidak menghasilkan kredensial yang diterima API. Ini muncul pada 401 dari [Claude Platform on AWS](/id/claude-platform-on-aws) atau [endpoint Mantle](/id/amazon-bedrock#use-the-mantle-endpoint), yang merupakan cara penyedia tersebut melaporkan token keamanan yang kedaluwarsa.

544 

545Petunjuk tindakan di tengah menyebutkan perintah `awsAuthRefresh` dari pengaturan Anda, jadi itu bervariasi. Bagian stabil adalah `AWS credentials expired or invalid` di depan:

546 

547```text theme={null}

548AWS credentials expired or invalid · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · API Error: 401 ...

549```

550 

551Tanpa `awsAuthRefresh` yang dikonfigurasi, 401 yang sama menampilkan pesan `Please run /login` generik sebagai gantinya, yang tidak dapat menyegarkan kredensial AWS.

552 

553**Yang harus dilakukan:**

554 

555* Jalankan perintah `awsAuthRefresh` yang disebutkan dalam pesan, seperti `aws sso login --profile myprofile`, di terminal lain dan selesaikan sign-in browser, kemudian coba ulang

556* Dalam sesi interaktif, jalankan `/login`, pilih **3rd-party platform**, kemudian pilih **Claude Platform on AWS · refresh credentials** di bawah **Using 3rd-party platforms** untuk menjalankan perintah yang sama tanpa memulai ulang Claude Code. Lihat [Configure AWS credentials](/id/claude-platform-on-aws#1-configure-aws-credentials)

557* Jika kesalahan berulang setelah perintah refresh berhasil, konfirmasi identitas valid di luar Claude Code dengan `aws sts get-caller-identity` di shell dan profil yang sama

558 

559<h3 id="aws-authentication-failed">

560 AWS authentication failed

561</h3>

562 

563{/* min-version: 2.1.198 */}Pesan ini memerlukan Claude Code v2.1.198 atau lebih baru dan hanya muncul ketika [`awsAuthRefresh`](/id/amazon-bedrock#advanced-credential-configuration) diatur dalam file pengaturan Anda. Penyedia AWS Anda mengembalikan 403, atau [Amazon Bedrock](/id/amazon-bedrock) mengembalikan 401.

564 

565Claude Code tidak dapat mengatakan penyebab mana yang Anda alami. Amazon Bedrock melaporkan token keamanan yang kedaluwarsa sebagai 403, tetapi 403 juga merupakan cara itu melaporkan penolakan otorisasi, seperti `AccessDeniedException` dari izin IAM yang hilang atau model yang tidak diaktifkan untuk akun Anda.

566 

567401 dari Amazon Bedrock juga mendarat di sini daripada di bawah [AWS credentials expired or invalid](#aws-credentials-expired-or-invalid), karena Bedrock tidak melaporkan token yang kedaluwarsa sebagai 401. 401 dari endpoint itu biasanya berasal dari sesuatu yang lain dalam jalur permintaan, seperti proxy perusahaan.

568 

569Penyegaran kredensial memperbaiki token yang kedaluwarsa dan tidak dapat memperbaiki penyebab lainnya, jadi pesan menawarkan keduanya:

570 

571```text theme={null}

572AWS authentication failed · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · if credentials are current, check AWS permissions and model access · API Error: 403 ...

573```

574 

575Petunjuk tindakan di tengah menyebutkan perintah `awsAuthRefresh` dari pengaturan Anda, jadi itu bervariasi. Bagian stabil adalah `AWS authentication failed` di depan.

576 

577**Yang harus dilakukan:**

578 

579* Jalankan perintah `awsAuthRefresh` yang disebutkan dalam pesan, atau `aws sso login`, untuk berjaga-jaga jika kredensial yang kedaluwarsa adalah penyebabnya

580* Jika kredensial Anda saat ini, konfirmasi izin IAM di [IAM configuration](/id/amazon-bedrock#iam-configuration) dilampirkan pada identitas yang Anda gunakan dan model yang dipilih diaktifkan untuk akun dan wilayah Anda

581* Jalankan `aws sts get-caller-identity` untuk mengonfirmasi identitas mana yang digunakan permintaan Anda; `AWS_PROFILE` basi atau profil default adalah penyebab umum ketidakcocokan izin

582 

480<h2 id="network-and-connection-errors">583<h2 id="network-and-connection-errors">

481 Kesalahan jaringan dan koneksi584 Kesalahan jaringan dan koneksi

482</h2>585</h2>


525Unable to connect to API: Self-signed certificate detected628Unable to connect to API: Self-signed certificate detected

526```629```

527 630 

631{/* min-version: 2.1.199 */}Mulai dari v2.1.199, kegagalan validasi sertifikat tidak dicoba ulang, jadi kesalahan ini muncul pada percobaan pertama daripada setelah [anggaran percobaan ulang](#automatic-retries) penuh. Versi sebelumnya menghabiskan beberapa menit mencoba ulang sebelum menampilkannya. Kondisi TLS transien, seperti timeout handshake, masih mencoba ulang.

632 

633Selama `/login` dan pemeriksaan konektivitas startup, kegagalan yang sama dilaporkan dengan kode OpenSSL dan perbaikan inline:

634 

635```text theme={null}

636SSL certificate error (UNABLE_TO_GET_ISSUER_CERT_LOCALLY). If you are behind a corporate proxy or TLS-intercepting firewall, set NODE_EXTRA_CA_CERTS to your CA bundle path, or ask IT to allowlist *.anthropic.com. Run /doctor for details.

637```

638 

528**Yang harus dilakukan:**639**Yang harus dilakukan:**

529 640 

530* Ekspor bundel CA organisasi Anda dan arahkan Claude Code ke sana dengan `NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.pem`641* Ekspor bundel CA organisasi Anda dan arahkan Claude Code ke sana dengan `NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.pem`


811* Jika Anda tidak dapat mengidentifikasi putaran mana yang menyebabkannya, jalankan `/clear` untuk memulai percakapan segar dalam proyek yang sama. Percakapan sebelumnya Anda dipertahankan di disk dan tetap tersedia di `/resume`.922* Jika Anda tidak dapat mengidentifikasi putaran mana yang menyebabkannya, jalankan `/clear` untuk memulai percakapan segar dalam proyek yang sama. Percakapan sebelumnya Anda dipertahankan di disk dan tetap tersedia di `/resume`.

812* Dalam [mode non-interaktif](/id/headless) (`-p`), di mana rewind tidak tersedia, coba lagi dengan prompt yang diubah atau mulai sesi baru tanpa `--continue`. Pemeriksaan kebijakan bervariasi menurut model, jadi beralih ke model yang berbeda dengan `--model` juga dapat menyelesaikan penolakan dalam beberapa kasus.923* Dalam [mode non-interaktif](/id/headless) (`-p`), di mana rewind tidak tersedia, coba lagi dengan prompt yang diubah atau mulai sesi baru tanpa `--continue`. Pemeriksaan kebijakan bervariasi menurut model, jadi beralih ke model yang berbeda dengan `--model` juga dapat menyelesaikan penolakan dalam beberapa kasus.

813 924 

925<h2 id="command-line-errors">

926 Kesalahan baris perintah

927</h2>

928 

929Kesalahan ini berasal dari validasi Claude Code sendiri dari baris perintah `claude`. Claude Code mencetaknya segera, sebelum membuat sesi atau mengirim permintaan API apa pun.

930 

931<h3 id="conflict-between-bg-and-print">

932 Conflict between --bg and --print

933</h3>

934 

935Pesan ini memerlukan Claude Code v2.1.198 atau lebih baru. Anda menggabungkan `--bg` dengan `-p` atau `--print` dalam invokasi `claude` yang sama. `--bg` memulai [background session](/id/agent-view#from-your-shell) yang Anda kemudian lampirkan dengan `claude agents`, sementara `--print` berjalan [non-interaktif](/id/headless) dan tidak pernah memulai sesi interaktif yang `claude agents` lampirkan. Sebelum v2.1.198 kombinasi ini secara diam-diam membuat pekerjaan latar belakang yang tidak pernah dapat dilampirkan.

936 

937```text theme={null}

938--bg and --print conflict: --print never starts the interactive session that `claude agents` attaches to, so the job would be unattachable. The prompt is the positional — drop --print: `claude --bg '<task>'`.

939```

940 

941**Yang harus dilakukan:**

942 

943* Lepaskan `-p` atau `--print`. `--bg` mengambil prompt sebagai argumen posisional, jadi `claude --bg "<task>"` adalah perintah lengkap. Lihat [Dispatch new agents from your shell](/id/agent-view#from-your-shell).

944* Untuk menjalankan prompt non-interaktif dan mencetak hasilnya daripada membuat sesi latar belakang, lepaskan `--bg` dan jalankan `claude -p "<task>"`

945 

814<h2 id="responses-seem-lower-quality-than-usual">946<h2 id="responses-seem-lower-quality-than-usual">

815 Responses seem lower quality than usual947 Responses seem lower quality than usual

816</h2>948</h2>


838 Laporkan kesalahan970 Laporkan kesalahan

839</h2>971</h2>

840 972 

841Halaman ini mencakup kesalahan dari Claude API. Untuk kesalahan dari komponen Claude Code lainnya, lihat panduan yang relevan:973Untuk kesalahan dari komponen yang tidak tercakup halaman ini, lihat panduan yang relevan:

842 974 

843* Server MCP gagal terhubung atau autentikasi: [MCP](/id/mcp)975* Server MCP gagal terhubung atau autentikasi: [MCP](/id/mcp)

844* Skrip hook gagal atau memblokir alat: [Debug hooks](/id/hooks#debug-hooks)976* Skrip hook gagal atau memblokir alat: [Debug hooks](/id/hooks#debug-hooks)

fullscreen.md +2 −2

Details

58* **Klik saran dalam daftar perintah `/` atau file `@`** untuk menerimanya. Mengarahkan kursor menyoroti baris di bawah kursor Anda.58* **Klik saran dalam daftar perintah `/` atau file `@`** untuk menerimanya. Mengarahkan kursor menyoroti baris di bawah kursor Anda.

59* **Klik opsi dalam menu pilih** untuk memilihnya. Ini mencakup prompt izin, `/model`, `/config`, dan dialog lainnya yang menampilkan daftar opsi. Mengarahkan kursor menunjukkan pointer pada baris di bawah kursor Anda. Memerlukan Claude Code v2.1.187 atau lebih baru.59* **Klik opsi dalam menu pilih** untuk memilihnya. Ini mencakup prompt izin, `/model`, `/config`, dan dialog lainnya yang menampilkan daftar opsi. Mengarahkan kursor menunjukkan pointer pada baris di bawah kursor Anda. Memerlukan Claude Code v2.1.187 atau lebih baru.

60* **Klik hasil alat yang diciutkan** untuk memperluasnya dan melihat output lengkap. Klik lagi untuk menciutkan. Panggilan alat dan hasilnya berkembang bersama. Hanya pesan yang memiliki lebih banyak untuk ditampilkan yang dapat diklik.60* **Klik hasil alat yang diciutkan** untuk memperluasnya dan melihat output lengkap. Klik lagi untuk menciutkan. Panggilan alat dan hasilnya berkembang bersama. Hanya pesan yang memiliki lebih banyak untuk ditampilkan yang dapat diklik.

61* **Tahan `Cmd` di macOS, atau `Ctrl` di Linux dan Windows, dan klik URL atau jalur file** untuk membukanya. Jalur file dalam output alat, seperti yang dicetak setelah Edit atau Write, terbuka di aplikasi default Anda. URL `http://` dan `https://` biasa terbuka di browser Anda. Mulai dari v2.1.181, klik biasa tanpa menahan `Cmd` atau `Ctrl` tidak lagi membuka tautan, sesuai dengan perilaku terminal asli. Di terminal terintegrasi VS Code dan terminal berbasis xterm.js serupa, Claude Code menunda ke penanganan tautan terminal sendiri, yang menggunakan gestur yang sama.61* **Tahan `Cmd` di macOS, atau `Ctrl` di Linux dan Windows, dan klik URL atau jalur file** untuk membukanya. Jalur file dalam output alat, seperti yang dicetak setelah Edit atau Write, terbuka di aplikasi default Anda. URL `http://` dan `https://` biasa terbuka di browser Anda. Mulai dari v2.1.181, klik biasa tanpa menahan `Cmd` atau `Ctrl` tidak lagi membuka tautan, sesuai dengan perilaku terminal asli. Beberapa terminal macOS meneruskan `Cmd`+click ke aplikasi yang berjalan alih-alih membuka tautan sendiri, dan protokol mouse terminal tidak memiliki cara untuk mengenkode kunci `Cmd`, jadi Claude Code menerimanya sebagai klik biasa. Di Ghostty, dan mulai dari v2.1.198 di Warp di macOS, Claude Code mendeteksi ini dan membiarkan klik biasa pada tautan membukanya, dan menahan `Cmd` masih berfungsi. Di terminal terintegrasi VS Code dan terminal berbasis xterm.js serupa, Claude Code menunda ke penanganan tautan terminal sendiri, yang menggunakan gestur yang sama.

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. Mulai dari v2.1.198, klik ganda pada URL memilih seluruh URL, termasuk skema. 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`.65Teks yang dipilih disalin ke clipboard Anda secara otomatis saat pelepasan mouse. Untuk mematikan ini, alihkan Copy on select di `/config`.

gateways.md +1 −1

Details

44 Claude apps gateway44 Claude apps gateway

45</h3>45</h3>

46 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.47Claude apps gateway adalah gateway yang di-host sendiri milik Anthropic, disertakan dalam biner `claude`. Ini merutekan ke Amazon Bedrock, Claude Platform on AWS, 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 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.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 50 

hooks.md +81 −45

Details

16 Siklus hidup hook16 Siklus hidup hook

17</h2>17</h2>

18 18 

19Hooks dijalankan pada titik-titik tertentu selama sesi Claude Code. Ketika event dijalankan dan matcher cocok, Claude Code meneruskan konteks JSON tentang event ke handler hook Anda. Untuk command hooks, input tiba di stdin. Untuk HTTP hooks, input tiba sebagai badan permintaan POST. Handler Anda kemudian dapat memeriksa input, mengambil tindakan, dan secara opsional mengembalikan keputusan. Events jatuh ke dalam tiga cadence: sekali per sesi (`SessionStart`, `SessionEnd`), sekali per turn (`UserPromptSubmit`, `Stop`, `StopFailure`), dan pada setiap pemanggilan tool di dalam loop agentic (`PreToolUse`, `PostToolUse`):19Hooks dijalankan pada titik-titik tertentu selama sesi Claude Code. Ketika event dijalankan dan matcher cocok, Claude Code meneruskan konteks JSON tentang event ke handler hook Anda. Untuk command hooks, input tiba di stdin. Untuk HTTP hooks, input tiba sebagai badan permintaan POST. Handler Anda kemudian dapat memeriksa input, mengambil tindakan, dan secara opsional mengembalikan keputusan.

20 

21Events jatuh ke dalam tiga cadence:

22 

23* sekali per sesi: `SessionStart` dan `SessionEnd`

24* sekali per turn: `UserPromptSubmit`, `Stop`, dan `StopFailure`

25* pada setiap pemanggilan tool di dalam loop agentic: `PreToolUse` dan `PostToolUse`

20 26 

21<div style={{maxWidth: "500px", margin: "0 auto"}}>27<div style={{maxWidth: "500px", margin: "0 auto"}}>

22 <Frame>28 <Frame>


214| `SessionStart` | bagaimana sesi dimulai | `startup`, `resume`, `clear`, `compact` |220| `SessionStart` | bagaimana sesi dimulai | `startup`, `resume`, `clear`, `compact` |

215| `Setup` | flag CLI mana yang memicu setup | `init`, `maintenance` |221| `Setup` | flag CLI mana yang memicu setup | `init`, `maintenance` |

216| `SessionEnd` | mengapa sesi berakhir | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |222| `SessionEnd` | mengapa sesi berakhir | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

217| `Notification` | tipe notifikasi | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |223| `Notification` | tipe notifikasi | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response`, `agent_needs_input`, `agent_completed` |

218| `SubagentStart` | tipe agent | `general-purpose`, `Explore`, `Plan`, nama agent kustom, atau nama dengan cakupan plugin seperti `^my-plugin:reviewer$` |224| `SubagentStart` | tipe agent | `general-purpose`, `Explore`, `Plan`, nama agent kustom, atau nama dengan cakupan plugin seperti `^my-plugin:reviewer$` |

219| `PreCompact`, `PostCompact` | apa yang memicu compaction | `manual`, `auto` |225| `PreCompact`, `PostCompact` | apa yang memicu compaction | `manual`, `auto` |

220| `SubagentStop` | tipe agent | nilai yang sama seperti `SubagentStart` |226| `SubagentStop` | tipe agent | nilai yang sama seperti `SubagentStart` |


317 323 

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.324Semua 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 325 

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.326Handlers 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. {/* min-version: 2.1.199 */}Mulai dari v2.1.199, [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/id/env-vars) diatur ke [Remote Control](/id/remote-control) session ID saat sesi lokal memiliki koneksi Remote Control yang aktif.

321 327 

322<h4 id="common-fields">328<h4 id="common-fields">

323 Bidang umum329 Bidang umum


704Kode keluar 2 adalah cara hook menandakan "berhenti, jangan lakukan ini." Efeknya tergantung pada event, karena beberapa event mewakili tindakan yang dapat diblokir (seperti pemanggilan tool yang belum terjadi) dan yang lain mewakili hal-hal yang sudah terjadi atau tidak dapat dicegah.710Kode keluar 2 adalah cara hook menandakan "berhenti, jangan lakukan ini." Efeknya tergantung pada event, karena beberapa event mewakili tindakan yang dapat diblokir (seperti pemanggilan tool yang belum terjadi) dan yang lain mewakili hal-hal yang sudah terjadi atau tidak dapat dicegah.

705 711 

706| Hook event | Dapat diblokir? | Apa yang terjadi pada exit 2 |712| Hook event | Dapat diblokir? | Apa yang terjadi pada exit 2 |

707| :-------------------- | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- |713| :-------------------- | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |

708| `PreToolUse` | Ya | Memblokir pemanggilan tool |714| `PreToolUse` | Ya | Memblokir pemanggilan tool |

709| `PermissionRequest` | Ya | Menolak izin |715| `PermissionRequest` | Ya | Menolak izin |

710| `UserPromptSubmit` | Ya | Memblokir pemrosesan prompt dan menghapus prompt |716| `UserPromptSubmit` | Ya | Memblokir pemrosesan prompt dan menghapus prompt |

711| `UserPromptExpansion` | Ya | Memblokir ekspansi |717| `UserPromptExpansion` | Ya | Memblokir ekspansi |

712| `Stop` | Ya | Mencegah Claude berhenti, melanjutkan percakapan |718| `Stop` | Ya | Mencegah Claude berhenti, melanjutkan percakapan |

713| `SubagentStop` | Ya | Mencegah subagent berhenti |719| `SubagentStop` | Ya | Mencegah subagent berhenti |

714| `TeammateIdle` | Ya | Mencegah teammate menjadi idle (teammate terus bekerja) |720| `TeammateIdle` | Ya | Mencegah teammate menjadi idle, jadi terus bekerja |

715| `TaskCreated` | Ya | Membatalkan pembuatan tugas |721| `TaskCreated` | Ya | Membatalkan pembuatan tugas |

716| `TaskCompleted` | Ya | Mencegah tugas ditandai sebagai selesai |722| `TaskCompleted` | Ya | Mencegah tugas ditandai sebagai selesai |

717| `ConfigChange` | Ya | Memblokir perubahan konfigurasi dari berlaku (kecuali `policy_settings`) |723| `ConfigChange` | Ya | Memblokir perubahan konfigurasi dari berlaku (kecuali `policy_settings`) |

718| `StopFailure` | Tidak | Output dan kode keluar diabaikan |724| `StopFailure` | Tidak | Output dan kode keluar diabaikan |

719| `PostToolUse` | Tidak | Menampilkan stderr ke Claude (tool sudah dijalankan) |725| `PostToolUse` | Tidak | Menampilkan stderr ke Claude; tool sudah dijalankan |

720| `PostToolUseFailure` | Tidak | Menampilkan stderr ke Claude (tool sudah gagal) |726| `PostToolUseFailure` | Tidak | Menampilkan stderr ke Claude; tool sudah gagal |

721| `PostToolBatch` | Ya | Menghentikan loop agentic sebelum pemanggilan model berikutnya |727| `PostToolBatch` | Ya | Menghentikan loop agentic sebelum pemanggilan model berikutnya |

722| `PermissionDenied` | Tidak | Kode keluar dan stderr diabaikan (penolakan sudah terjadi). Gunakan JSON `hookSpecificOutput.retry: true` untuk memberitahu model itu dapat mencoba lagi |728| `PermissionDenied` | Tidak | Kode keluar dan stderr diabaikan karena penolakan sudah terjadi. Gunakan JSON `hookSpecificOutput.retry: true` untuk memberitahu model itu dapat mencoba lagi |

723| `Notification` | Tidak | Menampilkan stderr ke pengguna saja |729| `Notification` | Tidak | Menampilkan stderr ke pengguna saja |

724| `SubagentStart` | Tidak | Menampilkan stderr ke pengguna saja |730| `SubagentStart` | Tidak | Menampilkan stderr ke pengguna saja |

725| `SessionStart` | Tidak | Menampilkan stderr ke pengguna saja |731| `SessionStart` | Tidak | Menampilkan stderr ke pengguna saja |


736| `InstructionsLoaded` | Tidak | Kode keluar diabaikan |742| `InstructionsLoaded` | Tidak | Kode keluar diabaikan |

737| `MessageDisplay` | Tidak | Teks asli ditampilkan |743| `MessageDisplay` | Tidak | Teks asli ditampilkan |

738 744 

745Untuk `SessionStart`, `Setup`, dan `SubagentStart`, stderr kode keluar 2 dirender dalam transkrip sebagai pemberitahuan `<hook name> hook error`, dengan cara yang sama seperti [kesalahan non-blocking](#exit-code-output). Claude tidak melihatnya, dan sesi atau subagent berlanjut. Untuk `SubagentStart`, pemberitahuan muncul dalam transkrip subagent itu sendiri, bukan dalam percakapan induk.

746 

747Sejak Claude Code v2.1.199, `SessionStart`, `Setup`, dan `SubagentStart` menampilkan stderr kode keluar 2 dalam transkrip. Versi sebelumnya menulisnya ke debug log saja.

748 

739<h3 id="http-response-handling">749<h3 id="http-response-handling">

740 Penanganan respons HTTP750 Penanganan respons HTTP

741</h3>751</h3>


963 SessionStart input973 SessionStart input

964</h4>974</h4>

965 975 

966Selain [bidang input umum](#common-input-fields), SessionStart hooks menerima `source` dan secara opsional `model`, `agent_type`, dan `session_title`. Bidang `source` menunjukkan bagaimana sesi dimulai: `"startup"` untuk sesi baru, `"resume"` untuk sesi yang dilanjutkan, `"clear"` setelah `/clear`, atau `"compact"` setelah compaction. Bidang `model` berisi pengenal model aktif. Itu dapat dihilangkan, misalnya setelah `/clear` atau ketika sesi dipulihkan melalui conversation recovery, jadi periksa bidang sebelum membacanya. Jika Anda memulai Claude Code dengan `claude --agent <name>`, bidang `agent_type` berisi nama agent. Bidang `session_title` membawa judul sesi saat ini jika sudah ditetapkan, misalnya melalui `--name` atau `/rename`. Hook yang memancarkan `sessionTitle` dapat memeriksa `session_title` terlebih dahulu untuk menghindari menimpa judul yang ditetapkan pengguna secara eksplisit.976Selain [bidang input umum](#common-input-fields), SessionStart hooks menerima `source` dan secara opsional `model`, `agent_type`, dan `session_title`:

977 

978| Bidang | Deskripsi |

979| :-------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

980| `source` | Bagaimana sesi dimulai: `"startup"` untuk sesi baru, `"resume"` untuk sesi yang dilanjutkan, `"clear"` setelah `/clear`, atau `"compact"` setelah compaction |

981| `model` | Pengenal model aktif. Itu dapat dihilangkan, misalnya setelah `/clear` atau ketika sesi dipulihkan melalui conversation recovery, jadi periksa bidang sebelum membacanya |

982| `agent_type` | Nama agent, hadir ketika Anda memulai Claude Code dengan `claude --agent <name>` |

983| `session_title` | Judul sesi saat ini jika sudah ditetapkan, misalnya melalui `--name` atau `/rename`. Hook yang memancarkan `sessionTitle` dapat memeriksa `session_title` terlebih dahulu untuk menghindari menimpa judul yang ditetapkan pengguna secara eksplisit |

967 984 

968```json theme={null}985```json theme={null}

969{986{


983Teks apa pun yang dicetak skrip hook ke stdout ditambahkan sebagai konteks untuk Claude. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan bidang spesifik event ini:1000Teks apa pun yang dicetak skrip hook ke stdout ditambahkan sebagai konteks untuk Claude. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan bidang spesifik event ini:

984 1001 

985| Bidang | Deskripsi |1002| Bidang | Deskripsi |

986| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1003| :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

987| `additionalContext` | String ditambahkan ke konteks Claude pada awal percakapan, sebelum prompt pertama. Lihat [Tambahkan konteks untuk Claude](#add-context-for-claude) untuk cara teks disampaikan dan apa yang harus dimasukkan |1004| `additionalContext` | String ditambahkan ke konteks Claude pada awal percakapan, sebelum prompt pertama. Lihat [Tambahkan konteks untuk Claude](#add-context-for-claude) untuk cara teks disampaikan dan apa yang harus dimasukkan |

988| `initialUserMessage` | String digunakan sebagai pesan pengguna pertama sesi. Berlaku dalam [mode non-interaktif](/id/headless) (`-p`), di mana itu menjadi giliran pertama bahkan jika tidak ada prompt yang disediakan. Jika prompt disediakan, itu mengikuti sebagai giliran berikutnya. Tidak seperti `additionalContext`, yang menempel pada giliran yang ada, ini membuat giliran |1005| `initialUserMessage` | String digunakan sebagai pesan pengguna pertama sesi. Berlaku dalam [mode non-interaktif](/id/headless) dengan flag `-p`, di mana itu menjadi giliran pertama bahkan jika tidak ada prompt yang disediakan. Jika prompt disediakan, itu mengikuti sebagai giliran berikutnya. Tidak seperti `additionalContext`, yang menempel pada giliran yang ada, ini membuat giliran |

989| `sessionTitle` | Menetapkan judul sesi, dengan efek yang sama seperti `/rename`. Gunakan untuk memberi nama sesi secara otomatis dari folder peluncuran, cabang git, atau nama worktree. Berlaku hanya ketika `source` adalah `"startup"` atau `"resume"`; diabaikan pada `"clear"` dan `"compact"` |1006| `sessionTitle` | Menetapkan judul sesi, dengan efek yang sama seperti `/rename`. Gunakan untuk memberi nama sesi secara otomatis dari folder peluncuran, cabang git, atau nama worktree. Berlaku hanya ketika `source` adalah `"startup"` atau `"resume"`; diabaikan pada `"clear"` dan `"compact"` |

990| `watchPaths` | Array path absolut untuk menonton untuk event [FileChanged](#filechanged) selama sesi ini |1007| `watchPaths` | Array path absolut untuk menonton untuk event [FileChanged](#filechanged) selama sesi ini |

991| `reloadSkills` | Boolean. Ketika `true`, Claude Code memindai ulang direktori [skill](/id/skills) dan command setelah SessionStart hooks selesai, jadi skills yang diinstal hook tersedia dalam sesi yang sama, dimulai dengan prompt pertama |1008| `reloadSkills` | Boolean. Ketika `true`, Claude Code memindai ulang direktori [skill](/id/skills) dan command setelah SessionStart hooks selesai, jadi skills yang diinstal hook tersedia dalam sesi yang sama, dimulai dengan prompt pertama |


1062 Setup1079 Setup

1063</h3>1080</h3>

1064 1081 

1065Dijalankan hanya ketika Anda meluncurkan Claude Code dengan `--init-only`, atau dengan `--init` atau `--maintenance` dalam mode print (`-p`). Itu tidak dijalankan pada startup normal. Gunakan untuk instalasi dependensi satu kali atau pembersihan terjadwal yang Anda picu secara eksplisit dari CI atau skrip, terpisah dari startup sesi normal. Untuk inisialisasi per-sesi, gunakan [SessionStart](#sessionstart) sebagai gantinya.1082Dijalankan hanya ketika Anda meluncurkan Claude Code dengan `--init-only`, atau dengan `--init` atau `--maintenance` dalam [mode non-interaktif](/id/headless) dengan flag `-p`. Itu tidak dijalankan pada startup normal. Gunakan untuk instalasi dependensi satu kali atau pembersihan terjadwal yang Anda picu secara eksplisit dari CI atau skrip, terpisah dari startup sesi normal. Untuk inisialisasi per-sesi, gunakan [SessionStart](#sessionstart) sebagai gantinya.

1066 1083 

1067Nilai matcher sesuai dengan flag CLI yang memicu hook:1084Nilai matcher sesuai dengan flag CLI yang memicu hook:

1068 1085 


1071| `init` | `claude --init-only` atau `claude -p --init` |1088| `init` | `claude --init-only` atau `claude -p --init` |

1072| `maintenance` | `claude -p --maintenance` |1089| `maintenance` | `claude -p --maintenance` |

1073 1090 

1074`--init-only` menjalankan Setup hooks dan SessionStart hooks dengan matcher `startup`, kemudian keluar tanpa memulai percakapan. `--init` dan `--maintenance` menjalankan Setup hooks hanya ketika digabungkan dengan `-p` (mode print); dalam sesi interaktif dua flag itu saat ini tidak menjalankan Setup hooks.1091`--init-only` menjalankan Setup hooks dan SessionStart hooks dengan matcher `startup`, kemudian keluar tanpa memulai percakapan. `--init` dan `--maintenance` menjalankan Setup hooks hanya ketika digabungkan dengan `-p`; dalam sesi interaktif dua flag itu saat ini tidak menjalankan Setup hooks.

1075 1092 

1076Karena Setup tidak dijalankan pada setiap peluncuran, plugin yang memerlukan dependensi yang diinstal tidak dapat mengandalkan Setup saja. Pola praktis adalah memeriksa dependensi pada penggunaan pertama dan menginstal jika tidak ada, misalnya hook atau skill yang menguji `${CLAUDE_PLUGIN_DATA}/node_modules` dan menjalankan `npm install` jika tidak ada. Lihat [direktori data persisten](/id/plugins-reference#persistent-data-directory) untuk tempat menyimpan dependensi yang diinstal.1093Karena Setup tidak dijalankan pada setiap peluncuran, plugin yang memerlukan dependensi yang diinstal tidak dapat mengandalkan Setup saja. Pola praktis adalah memeriksa dependensi pada penggunaan pertama dan menginstal jika tidak ada, misalnya hook atau skill yang menguji `${CLAUDE_PLUGIN_DATA}/node_modules` dan menjalankan `npm install` jika tidak ada. Lihat [direktori data persisten](/id/plugins-reference#persistent-data-directory) untuk tempat menyimpan dependensi yang diinstal.

1077 1094 


1095 Setup decision control1112 Setup decision control

1096</h4>1113</h4>

1097 1114 

1098Setup hooks tidak dapat memblokir. Pada kode keluar 2, stderr ditampilkan kepada pengguna; pada kode keluar non-nol lainnya, stderr muncul hanya ketika Anda meluncurkan dengan `--verbose`. Dalam kedua kasus eksekusi berlanjut. Untuk meneruskan informasi ke konteks Claude, kembalikan `additionalContext` dalam output JSON; plain stdout ditulis ke debug log saja. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan bidang spesifik event ini:1115Setup hooks tidak dapat memblokir. Kode keluar non-nol apa pun, termasuk 2, menampilkan stderr ke pengguna sebagai pemberitahuan `<hook name> hook error`, dan eksekusi berlanjut. Dalam [mode non-interaktif](/id/headless), output hook muncul hanya ketika Anda meluncurkan dengan `--verbose`.

1116 

1117Untuk meneruskan informasi ke konteks Claude, kembalikan `additionalContext` dalam output JSON; plain stdout ditulis ke debug log saja. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan bidang spesifik event ini:

1099 1118 

1100| Bidang | Deskripsi |1119| Bidang | Deskripsi |

1101| :------------------ | :-------------------------------------------------------------------------- |1120| :------------------ | :-------------------------------------------------------------------------- |


1191* **Plain text stdout**: teks non-JSON apa pun yang ditulis ke stdout ditambahkan sebagai konteks1210* **Plain text stdout**: teks non-JSON apa pun yang ditulis ke stdout ditambahkan sebagai konteks

1192* **JSON dengan `additionalContext`**: gunakan format JSON di bawah untuk kontrol lebih. Bidang `additionalContext` ditambahkan sebagai konteks1211* **JSON dengan `additionalContext`**: gunakan format JSON di bawah untuk kontrol lebih. Bidang `additionalContext` ditambahkan sebagai konteks

1193 1212 

1194Plain stdout ditampilkan sebagai output hook dalam transkrip. Bidang `additionalContext` ditambahkan lebih diskrit.1213Plain stdout ditampilkan sebagai output hook dalam transkrip. Nilai `additionalContext` disuntikkan sebagai pengingat sistem yang dibaca Claude tanpa entri transkrip yang terlihat.

1195 1214 

1196Untuk memblokir prompt, kembalikan objek JSON dengan `decision` diatur ke `"block"`:1215Untuk memblokir prompt, kembalikan objek JSON dengan `decision` diatur ke `"block"`:

1197 1216 


1215}1234}

1216```1235```

1217 1236 

1218<Note>

1219 Format JSON tidak diperlukan untuk kasus penggunaan sederhana. Untuk menambahkan konteks, Anda dapat mencetak teks biasa ke stdout dengan kode keluar 0. Gunakan JSON ketika Anda perlu memblokir prompts atau menginginkan kontrol yang lebih terstruktur.

1220</Note>

1221 

1222<h3 id="userpromptexpansion">1237<h3 id="userpromptexpansion">

1223 UserPromptExpansion1238 UserPromptExpansion

1224</h3>1239</h3>


1545Dalam `PostToolUse`, `tool_response` untuk panggilan Agent yang selesai membawa teks akhir subagent bersama dengan telemetri penggunaan. Baca bidang-bidang ini untuk mencatat biaya per-subagent dari hook:1560Dalam `PostToolUse`, `tool_response` untuk panggilan Agent yang selesai membawa teks akhir subagent bersama dengan telemetri penggunaan. Baca bidang-bidang ini untuk mencatat biaya per-subagent dari hook:

1546 1561 

1547| Bidang | Tipe | Contoh | Deskripsi |1562| Bidang | Tipe | Contoh | Deskripsi |

1548| :------------------ | :----- | :---------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |1563| :------------------ | :----- | :---------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1549| `status` | string | `"completed"` | `"completed"` untuk panggilan sinkron, `"async_launched"` untuk `run_in_background: true` |1564| `status` | string | `"completed"` | `"completed"` untuk panggilan foreground subagents, `"async_launched"` untuk background subagents. {/* min-version: 2.1.198 */}Mulai dari v2.1.198, subagents berjalan di latar belakang secara default, jadi `run_in_background` yang dihilangkan juga menghasilkan `"async_launched"` |

1550| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengenal untuk run subagent |1565| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengenal untuk run subagent |

1551| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks akhir subagent |1566| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks akhir subagent |

1552| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model yang dijalankan subagent, yang mungkin berbeda dari model yang diminta. {/* min-version: 2.1.174 */}Memerlukan Claude Code v2.1.174 atau lebih baru |1567| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model yang dijalankan subagent, yang mungkin berbeda dari model yang diminta. {/* min-version: 2.1.174 */}Memerlukan Claude Code v2.1.174 atau lebih baru |


1555| `totalToolUseCount` | number | `7` | Jumlah pemanggilan tool yang dibuat subagent |1570| `totalToolUseCount` | number | `7` | Jumlah pemanggilan tool yang dibuat subagent |

1556| `usage` | object | `{"input_tokens": 8320, ...}` | Breakdown token per-tipe: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |1571| `usage` | object | `{"input_tokens": 8320, ...}` | Breakdown token per-tipe: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |

1557 1572 

1558Untuk panggilan `run_in_background: true`, tool mengembalikan segera setelah meluncurkan subagent, jadi `tool_response` tidak membawa bidang penggunaan. Itu memiliki `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, dan `resolvedModel`.1573Untuk background subagents, tool mengembalikan segera setelah meluncurkan, jadi `tool_response` tidak membawa bidang penggunaan. Itu memiliki `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, dan `resolvedModel`.

1559 1574 

1560Bidang `resolvedModel` menamai model yang sebenarnya dijalankan subagent, yang dapat berbeda dari nilai `model` dalam `tool_input`. Itu memerlukan Claude Code v2.1.174 atau lebih baru.1575Bidang `resolvedModel` menamai model yang sebenarnya dijalankan subagent, yang dapat berbeda dari nilai `model` dalam `tool_input`. Itu memerlukan Claude Code v2.1.174 atau lebih baru.

1561 1576 


1593Hooks `PreToolUse` dapat mengontrol apakah pemanggilan tool dilanjutkan. Tidak seperti hooks lain yang menggunakan bidang `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberikannya kontrol yang lebih kaya: empat hasil (izinkan, tolak, tanya, atau tunda) ditambah kemampuan untuk memodifikasi input tool sebelum eksekusi.1608Hooks `PreToolUse` dapat mengontrol apakah pemanggilan tool dilanjutkan. Tidak seperti hooks lain yang menggunakan bidang `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberikannya kontrol yang lebih kaya: empat hasil (izinkan, tolak, tanya, atau tunda) ditambah kemampuan untuk memodifikasi input tool sebelum eksekusi.

1594 1609 

1595| Bidang | Deskripsi |1610| Bidang | Deskripsi |

1596| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1611| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

1597| `permissionDecision` | `"allow"` melewati prompt izin. `"deny"` mencegah pemanggilan tool. `"ask"` meminta pengguna untuk mengkonfirmasi. `"defer"` keluar dengan baik sehingga tool dapat dilanjutkan nanti. [Deny and ask rules](/id/permissions#manage-permissions) masih berlaku terlepas dari apa yang dikembalikan hook |1612| `permissionDecision` | `"allow"` melewati prompt izin, kecuali untuk [tools yang memerlukan interaksi pengguna](#pretooluse-decision-control). `"deny"` mencegah pemanggilan tool. `"ask"` meminta pengguna untuk mengkonfirmasi. `"defer"` keluar dengan baik sehingga tool dapat dilanjutkan nanti. [Deny and ask rules](/id/permissions#manage-permissions) masih dievaluasi terlepas dari apa yang dikembalikan hook |

1598| `permissionDecisionReason` | Untuk `"allow"` dan `"ask"`, ditampilkan ke pengguna tetapi bukan Claude. Untuk `"deny"`, ditampilkan ke Claude. Untuk `"defer"`, diabaikan |1613| `permissionDecisionReason` | Untuk `"allow"` dan `"ask"`, ditampilkan ke pengguna tetapi bukan Claude. Untuk `"deny"`, ditampilkan ke Claude. Untuk `"defer"`, diabaikan |

1599| `updatedInput` | Memodifikasi parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan bidang yang tidak berubah bersama yang dimodifikasi. Gabungkan dengan `"allow"` untuk persetujuan otomatis, atau `"ask"` untuk menampilkan input yang dimodifikasi ke pengguna. Untuk `"defer"`, diabaikan |1614| `updatedInput` | Memodifikasi parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan bidang yang tidak berubah bersama yang dimodifikasi. Gabungkan dengan `"allow"` untuk persetujuan otomatis, atau `"ask"` untuk menampilkan input yang dimodifikasi ke pengguna. Untuk `"defer"`, diabaikan |

1600| `additionalContext` | String ditambahkan ke konteks Claude bersama hasil tool. Diabaikan ketika `permissionDecision` adalah `"defer"`. Lihat [Tambahkan konteks untuk Claude](#add-context-for-claude) |1615| `additionalContext` | String ditambahkan ke konteks Claude bersama hasil tool. Diabaikan ketika `permissionDecision` adalah `"defer"`. Lihat [Tambahkan konteks untuk Claude](#add-context-for-claude) |


1619 1634 

1620`AskUserQuestion` dan `ExitPlanMode` memerlukan interaksi pengguna dan biasanya memblokir dalam [mode non-interaktif](/id/headless) dengan flag `-p`. Mengembalikan `permissionDecision: "allow"` bersama dengan `updatedInput` memenuhi persyaratan itu: hook membaca input tool dari stdin, mengumpulkan jawaban melalui UI Anda sendiri, dan mengembalikannya dalam `updatedInput` sehingga tool dijalankan tanpa meminta. Mengembalikan `"allow"` saja tidak cukup untuk tools ini. Untuk `AskUserQuestion`, kembalikan array `questions` asli dan tambahkan objek [`answers`](#askuserquestion) yang memetakan teks setiap pertanyaan ke jawaban yang dipilih.1635`AskUserQuestion` dan `ExitPlanMode` memerlukan interaksi pengguna dan biasanya memblokir dalam [mode non-interaktif](/id/headless) dengan flag `-p`. Mengembalikan `permissionDecision: "allow"` bersama dengan `updatedInput` memenuhi persyaratan itu: hook membaca input tool dari stdin, mengumpulkan jawaban melalui UI Anda sendiri, dan mengembalikannya dalam `updatedInput` sehingga tool dijalankan tanpa meminta. Mengembalikan `"allow"` saja tidak cukup untuk tools ini. Untuk `AskUserQuestion`, kembalikan array `questions` asli dan tambahkan objek [`answers`](#askuserquestion) yang memetakan teks setiap pertanyaan ke jawaban yang dipilih.

1621 1636 

1637Mulai dari v2.1.199, tool MCP yang server-nya menandainya dengan [`_meta["anthropic/requiresUserInteraction"]`](/id/mcp#require-approval-for-a-specific-tool) lebih ketat: hook tidak dapat melewati prompt persetujuannya dengan `"allow"`, dengan atau tanpa `updatedInput`, karena Claude Code tidak dapat mengkonfirmasi hook mengumpulkan interaksi yang dibutuhkan tool.

1638 

1622<Note>1639<Note>

1623 PreToolUse sebelumnya menggunakan bidang `decision` dan `reason` tingkat atas, tetapi ini sudah usang untuk event ini. Gunakan `hookSpecificOutput.permissionDecision` dan `hookSpecificOutput.permissionDecisionReason` sebagai gantinya. Nilai usang `"approve"` dan `"block"` memetakan ke `"allow"` dan `"deny"` masing-masing. Events lain seperti PostToolUse dan Stop terus menggunakan `decision` dan `reason` tingkat atas sebagai format saat ini mereka.1640 PreToolUse sebelumnya menggunakan bidang `decision` dan `reason` tingkat atas, tetapi ini sudah usang untuk event ini. Gunakan `hookSpecificOutput.permissionDecision` dan `hookSpecificOutput.permissionDecisionReason` sebagai gantinya. Nilai usang `"approve"` dan `"block"` memetakan ke `"allow"` dan `"deny"` masing-masing. Events lain seperti PostToolUse dan Stop terus menggunakan `decision` dan `reason` tingkat atas sebagai format saat ini mereka.

1624</Note>1641</Note>


2016 Notification2033 Notification

2017</h3>2034</h3>

2018 2035 

2019Dijalankan ketika Claude Code mengirimkan notifikasi. Cocok pada tipe notifikasi: `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response`. Hilangkan matcher untuk menjalankan hooks untuk semua tipe notifikasi.2036Dijalankan ketika Claude Code mengirimkan notifikasi. Cocok pada tipe notifikasi. Hilangkan matcher untuk menjalankan hooks untuk semua tipe notifikasi.

2037 

2038| Matcher | Kapan dijalankan |

2039| :--------------------- | :-------------------------------------------------------------------------------------------------------------------- |

2040| `permission_prompt` | Claude memerlukan persetujuan tool use |

2041| `idle_prompt` | Claude selesai dan menunggu prompt berikutnya Anda |

2042| `auth_success` | Autentikasi selesai |

2043| `elicitation_dialog` | Server MCP membuka formulir elicitation |

2044| `elicitation_complete` | Formulir elicitation MCP dikirimkan atau ditutup |

2045| `elicitation_response` | Respons elicitation MCP dikirim kembali ke server |

2046| `agent_needs_input` | Sesi latar belakang mulai menunggu input Anda. Dijalankan hanya saat [agent view](/id/agent-view) terbuka di terminal |

2047| `agent_completed` | Sesi latar belakang selesai atau gagal. Dijalankan hanya saat [agent view](/id/agent-view) terbuka di terminal |

2048 

2049Tipe `agent_needs_input` dan `agent_completed` memerlukan Claude Code v2.1.198 atau lebih baru.

2020 2050 

2021Gunakan matchers terpisah untuk menjalankan handler berbeda tergantung pada tipe notifikasi. Konfigurasi ini memicu skrip alert khusus izin ketika Claude memerlukan persetujuan izin dan notifikasi berbeda ketika Claude telah idle:2051Gunakan matchers terpisah untuk menjalankan handler berbeda tergantung pada tipe notifikasi. Konfigurasi ini memicu skrip alert khusus izin ketika Claude memerlukan persetujuan izin dan notifikasi berbeda ketika Claude telah idle:

2022 2052 


2079 SubagentStart input2109 SubagentStart input

2080</h4>2110</h4>

2081 2111 

2082Selain [bidang input umum](#common-input-fields), SubagentStart hooks menerima `agent_id` dengan pengenal unik untuk subagent dan `agent_type` dengan nama agent (agent bawaan seperti `"general-purpose"`, `"Explore"`, `"Plan"`, atau nama agent kustom).2112Selain [bidang input umum](#common-input-fields), SubagentStart hooks menerima `agent_id` dengan pengenal unik untuk subagent dan `agent_type` dengan nama agent yang matcher filter.

2083 2113 

2084```json theme={null}2114```json theme={null}

2085{2115{


2561Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, CwdChanged hooks dapat mengembalikan `watchPaths` untuk secara dinamis menetapkan path file mana yang [FileChanged](#filechanged) pantau:2591Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, CwdChanged hooks dapat mengembalikan `watchPaths` untuk secara dinamis menetapkan path file mana yang [FileChanged](#filechanged) pantau:

2562 2592 

2563| Bidang | Deskripsi |2593| Bidang | Deskripsi |

2564| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2594| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2565| `watchPaths` | Array path absolut. Menggantikan daftar watch dinamis saat ini (path dari konfigurasi `matcher` Anda selalu dipantau). Mengembalikan array kosong menghapus daftar dinamis, yang khas saat memasuki direktori baru |2595| `watchPaths` | Array path absolut. Menggantikan daftar watch dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Mengembalikan array kosong menghapus daftar dinamis, yang khas saat memasuki direktori baru |

2566 2596 

2567CwdChanged hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir perubahan direktori.2597CwdChanged hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir perubahan direktori.

2568 2598 


2586Selain [bidang input umum](#common-input-fields), FileChanged hooks menerima `file_path` dan `event`.2616Selain [bidang input umum](#common-input-fields), FileChanged hooks menerima `file_path` dan `event`.

2587 2617 

2588| Bidang | Deskripsi |2618| Bidang | Deskripsi |

2589| :---------- | :------------------------------------------------------------------------------------------------------ |2619| :---------- | :--------------------------------------------------------------------------------------------------------------------------------- |

2590| `file_path` | Path absolut ke file yang berubah |2620| `file_path` | Path absolut ke file yang berubah |

2591| `event` | Apa yang terjadi: `"change"` (file dimodifikasi), `"add"` (file dibuat), atau `"unlink"` (file dihapus) |2621| `event` | Apa yang terjadi: `"change"` untuk file yang dimodifikasi, `"add"` untuk file yang dibuat, atau `"unlink"` untuk file yang dihapus |

2592 2622 

2593```json theme={null}2623```json theme={null}

2594{2624{


2608Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, FileChanged hooks dapat mengembalikan `watchPaths` untuk secara dinamis memperbarui path file mana yang dipantau:2638Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, FileChanged hooks dapat mengembalikan `watchPaths` untuk secara dinamis memperbarui path file mana yang dipantau:

2609 2639 

2610| Bidang | Deskripsi |2640| Bidang | Deskripsi |

2611| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2641| :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2612| `watchPaths` | Array path absolut. Menggantikan daftar watch dinamis saat ini (path dari konfigurasi `matcher` Anda selalu dipantau). Gunakan ini ketika skrip hook Anda menemukan file tambahan untuk dipantau berdasarkan file yang berubah |2642| `watchPaths` | Array path absolut. Menggantikan daftar watch dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Gunakan ini ketika skrip hook Anda menemukan file tambahan untuk dipantau berdasarkan file yang berubah |

2613 2643 

2614FileChanged hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir perubahan file dari terjadi.2644FileChanged hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir perubahan file dari terjadi.

2615 2645 


2617 WorktreeCreate2647 WorktreeCreate

2618</h3>2648</h3>

2619 2649 

2620Ketika Anda menjalankan `claude --worktree` atau [subagent menggunakan `isolation: "worktree"`](/id/sub-agents#choose-the-subagent-scope), Claude Code membuat salinan kerja terisolasi menggunakan `git worktree`. Jika Anda mengonfigurasi hook WorktreeCreate, itu menggantikan perilaku git default, memungkinkan Anda menggunakan sistem kontrol versi berbeda seperti SVN, Perforce, atau Mercurial.2650Dijalankan ketika worktree sedang dibuat, baik dari `claude --worktree` atau dari [subagent menggunakan `isolation: "worktree"`](/id/sub-agents#choose-the-subagent-scope). Secara default Claude Code membuat salinan kerja terisolasi dengan `git worktree`. Mengonfigurasi hook WorktreeCreate menggantikan perilaku git default itu, memungkinkan Anda menggunakan sistem kontrol versi berbeda seperti SVN, Perforce, atau Mercurial.

2621 2651 

2622Karena hook menggantikan perilaku default sepenuhnya, [`.worktreeinclude`](/id/worktrees#copy-gitignored-files-into-worktrees) tidak diproses. Jika Anda perlu menyalin file konfigurasi lokal seperti `.env` ke worktree baru, lakukan di dalam skrip hook Anda.2652Karena hook menggantikan perilaku default sepenuhnya, [`.worktreeinclude`](/id/worktrees#copy-gitignored-files-into-worktrees) tidak diproses. Jika Anda perlu menyalin file konfigurasi lokal seperti `.env` ke worktree baru, lakukan di dalam skrip hook Anda.

2623 2653 


2648 WorktreeCreate input2678 WorktreeCreate input

2649</h4>2679</h4>

2650 2680 

2651Selain [bidang input umum](#common-input-fields), WorktreeCreate hooks menerima bidang `name`. Ini adalah pengenal slug untuk worktree baru, baik ditentukan oleh pengguna atau auto-generated (misalnya, `bold-oak-a3f2`).2681Selain [bidang input umum](#common-input-fields), WorktreeCreate hooks menerima bidang `name`. Ini adalah pengenal slug untuk worktree baru, baik ditentukan oleh pengguna atau auto-generated, misalnya `bold-oak-a3f2`.

2652 2682 

2653```json theme={null}2683```json theme={null}

2654{2684{


2675 WorktreeRemove2705 WorktreeRemove

2676</h3>2706</h3>

2677 2707 

2678Pasangan cleanup untuk [WorktreeCreate](#worktreecreate). Hook ini dijalankan ketika worktree sedang dihapus, baik ketika Anda keluar dari sesi `--worktree` dan memilih untuk menghapusnya, atau ketika subagent dengan `isolation: "worktree"` selesai. Untuk worktrees berbasis git, Claude menangani cleanup secara otomatis dengan `git worktree remove`. Jika Anda mengonfigurasi hook WorktreeCreate untuk sistem kontrol versi non-git, pasangkan dengan hook WorktreeRemove untuk menangani cleanup. Tanpanya, direktori worktree ditinggalkan di disk.2708Dijalankan ketika worktree sedang dihapus, baik ketika Anda keluar dari sesi `--worktree` dan memilih untuk menghapusnya, atau ketika subagent dengan `isolation: "worktree"` selesai. Ini adalah pasangan cleanup untuk [WorktreeCreate](#worktreecreate).

2709 

2710Untuk git-based worktrees, Claude Code menangani cleanup secara otomatis dengan `git worktree remove`. Jika Anda mengonfigurasi hook WorktreeCreate untuk sistem kontrol versi non-git, pasangkan dengan hook WorktreeRemove untuk menangani cleanup. Tanpanya, direktori worktree ditinggalkan di disk.

2679 2711 

2680Claude Code meneruskan path yang dikembalikan oleh WorktreeCreate sebagai `worktree_path` dalam input hook. Contoh ini membaca path itu dan menghapus direktori:2712Claude Code meneruskan path yang dikembalikan oleh WorktreeCreate sebagai `worktree_path` dalam input hook. Contoh ini membaca path itu dan menghapus direktori:

2681 2713 


2835 2867 

2836Selain [bidang input umum](#common-input-fields), Elicitation hooks menerima `mcp_server_name`, `message`, dan bidang opsional `mode`, `url`, `elicitation_id`, dan `requested_schema`.2868Selain [bidang input umum](#common-input-fields), Elicitation hooks menerima `mcp_server_name`, `message`, dan bidang opsional `mode`, `url`, `elicitation_id`, dan `requested_schema`.

2837 2869 

2838Untuk form-mode elicitation (kasus paling umum):2870Untuk form-mode elicitation, kasus paling umum:

2839 2871 

2840```json theme={null}2872```json theme={null}

2841{2873{


2856}2888}

2857```2889```

2858 2890 

2859Untuk URL-mode elicitation (autentikasi berbasis browser):2891Untuk URL-mode elicitation, digunakan untuk autentikasi berbasis browser:

2860 2892 

2861```json theme={null}2893```json theme={null}

2862{2894{


3064 3096 

3065Jika Anda memerlukan kontrol yang lebih halus pada event apa pun, gunakan [command hook](#command-hook-fields) dengan bidang per-event yang dijelaskan dalam [Decision control](#decision-control).3097Jika Anda memerlukan kontrol yang lebih halus pada event apa pun, gunakan [command hook](#command-hook-fields) dengan bidang per-event yang dijelaskan dalam [Decision control](#decision-control).

3066 3098 

3067<h3 id="example-multi-criteria-stop-hook">3099<h3 id="check-multiple-conditions-before-stopping">

3068 Contoh: Multi-criteria Stop hook3100 Periksa beberapa kondisi sebelum berhenti

3069</h3>3101</h3>

3070 3102 

3071Hook `Stop` ini menggunakan prompt detail untuk memeriksa tiga kondisi sebelum mengizinkan Claude berhenti. Jika `"ok"` adalah `false`, Claude terus bekerja dengan alasan yang disediakan sebagai instruksi berikutnya. Hooks `SubagentStop` menggunakan format yang sama untuk mengevaluasi apakah [subagent](/id/sub-agents) harus berhenti:3103Hook `Stop` ini menggunakan prompt detail untuk memeriksa tiga kondisi sebelum mengizinkan Claude berhenti. Hooks `SubagentStop` menggunakan format yang sama untuk mengevaluasi apakah [subagent](/id/sub-agents) harus berhenti. Jika `"ok"` adalah `false`, Claude terus bekerja dengan alasan yang disediakan sebagai instruksi berikutnya:

3072 3104 

3073```json theme={null}3105```json theme={null}

3074{3106{


3192 3224 

3193Notifikasi penyelesaian async hook ditekan secara default. Untuk melihatnya, aktifkan mode verbose dengan `Ctrl+O` atau mulai Claude Code dengan `--verbose`.3225Notifikasi penyelesaian async hook ditekan secara default. Untuk melihatnya, aktifkan mode verbose dengan `Ctrl+O` atau mulai Claude Code dengan `--verbose`.

3194 3226 

3195<h3 id="example-run-tests-after-file-changes">3227<h3 id="run-tests-after-file-changes">

3196 Contoh: jalankan tests setelah perubahan file3228 Jalankan tests setelah perubahan file

3197</h3>3229</h3>

3198 3230 

3199Hook ini memulai test suite di latar belakang setiap kali Claude menulis file, kemudian melaporkan hasil kembali ke Claude ketika tests selesai. Simpan skrip ini ke `.claude/hooks/run-tests-async.sh` dalam proyek Anda dan buat dapat dijalankan dengan `chmod +x`:3231Hook ini memulai test suite di latar belakang setiap kali Claude menulis file, kemudian melaporkan hasil kembali ke Claude ketika tests selesai. Simpan skrip ini ke `.claude/hooks/run-tests-async.sh` dalam proyek Anda dan buat dapat dijalankan dengan `chmod +x`:


3287 Windows PowerShell tool3319 Windows PowerShell tool

3288</h2>3320</h2>

3289 3321 

3290Di Windows, Anda dapat menjalankan hook individual dalam PowerShell dengan menetapkan `"shell": "powershell"` pada command hook. Hooks spawn PowerShell secara langsung, jadi ini bekerja terlepas dari apakah `CLAUDE_CODE_USE_POWERSHELL_TOOL` diatur. Claude Code auto-detects `pwsh.exe` (PowerShell 7+) dengan fallback ke `powershell.exe` (5.1).3322Di Windows, Anda dapat menjalankan hook individual dalam PowerShell dengan menetapkan `"shell": "powershell"` pada command hook. Hooks spawn PowerShell secara langsung, jadi ini bekerja terlepas dari apakah `CLAUDE_CODE_USE_POWERSHELL_TOOL` diatur. Claude Code auto-detects `pwsh.exe`, executable PowerShell 7 dan yang lebih baru, dan fallback ke `powershell.exe` untuk Windows PowerShell 5.1.

3291 3323 

3292```json theme={null}3324```json theme={null}

3293{3325{


3308}3340}

3309```3341```

3310 3342 

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.3343Untuk mereferensikan root proyek dari perintah bentuk shell PowerShell, tulis `${CLAUDE_PROJECT_DIR}` atau `$env:CLAUDE_PROJECT_DIR`. Mulai dari v2.1.198, Claude Code menulis ulang placeholder `${CLAUDE_PROJECT_DIR}`, `${CLAUDE_PLUGIN_ROOT}`, dan `${CLAUDE_PLUGIN_DATA}` dalam perintah bentuk shell PowerShell ke bentuk `${env:NAME}` PowerShell, baik hook didefinisikan dalam `settings.json`, plugin, atau skill. PowerShell kemudian menyelesaikan nilai dari lingkungan yang diekspor setelah parsing, jadi placeholder bekerja di dalam string dengan tanda kutip ganda tetapi tidak di dalam string dengan tanda kutip tunggal, di mana PowerShell tidak pernah memperluas variabel.

3344 

3345Sebelum v2.1.198, penulisan ulang ini hanya berlaku untuk plugin hooks. Pada versi yang lebih awal, hook `settings.json` memerlukan bentuk `$env:` atau [exec form](#exec-form-and-shell-form), di mana `${CLAUDE_PROJECT_DIR}` diganti di setiap elemen `args` terlepas dari di mana hook didefinisikan.

3346 

3347Jangan tulis ejaan bare `$CLAUDE_PROJECT_DIR` dalam hook PowerShell. PowerShell menguraikannya sebagai variabel lokal yang tidak terdefinisi dan menyelesaikannya ke `$null`, yang meninggalkan jalur skrip tanpa awalan root proyeknya. Claude Code tidak menulis ulang bentuk itu; sebaliknya, ia mencatat peringatan dalam [debug log](#debug-hooks).

3312 3348 

3313Contoh di bawah menunjukkan hook `settings.json` yang menjalankan skrip proyek dengan bentuk `$env:`:3349Contoh di bawah menunjukkan hook `settings.json` yang menjalankan skrip proyek dengan bentuk `$env:`, yang bekerja di setiap versi:

3314 3350 

3315```json theme={null}3351```json theme={null}

3316{3352{

hooks-guide.md +37 −33

Details

87 87 

88Hooks memungkinkan Anda menjalankan kode pada titik-titik kunci dalam siklus hidup Claude Code: format file setelah edit, blokir perintah sebelum dijalankan, kirim notifikasi ketika Claude memerlukan input, injeksi konteks saat awal sesi, dan banyak lagi. Untuk daftar lengkap acara hook, lihat [Hooks reference](/id/hooks#hook-lifecycle).88Hooks memungkinkan Anda menjalankan kode pada titik-titik kunci dalam siklus hidup Claude Code: format file setelah edit, blokir perintah sebelum dijalankan, kirim notifikasi ketika Claude memerlukan input, injeksi konteks saat awal sesi, dan banyak lagi. Untuk daftar lengkap acara hook, lihat [Hooks reference](/id/hooks#hook-lifecycle).

89 89 

90Setiap contoh mencakup blok konfigurasi siap pakai yang Anda tambahkan ke [file pengaturan](#configure-hook-location). Pola paling umum:90Setiap contoh mencakup blok konfigurasi siap pakai yang Anda tambahkan ke [file pengaturan](#configure-hook-location).

91 

92* [Dapatkan notifikasi ketika Claude memerlukan input](#get-notified-when-claude-needs-input)

93* [Auto-format kode setelah edit](#auto-format-code-after-edits)

94* [Blokir edit ke file yang dilindungi](#block-edits-to-protected-files)

95* [Re-inject konteks setelah compaction](#re-inject-context-after-compaction)

96* [Audit perubahan konfigurasi](#audit-configuration-changes)

97* [Muat ulang lingkungan ketika direktori atau file berubah](#reload-environment-when-directory-or-files-change)

98* [Auto-approve prompt izin tertentu](#auto-approve-specific-permission-prompts)

99 91 

100Untuk contoh produksi hooks yang menjalankan review model terpisah dan mengirimkan temuan kembali ke sesi, lihat [bagaimana plugin `security-guidance` terintegrasi dengan Claude Code](/id/security-guidance#how-the-plugin-integrates-with-claude-code).92Untuk contoh produksi hooks yang menjalankan review model terpisah dan mengirimkan temuan kembali ke sesi, lihat [bagaimana plugin `security-guidance` terintegrasi dengan Claude Code](/id/security-guidance#how-the-plugin-integrates-with-claude-code).

101 93 


182Matcher kosong `matcher` aktif pada semua jenis notifikasi. Untuk aktif hanya pada acara tertentu, atur ke salah satu nilai berikut:174Matcher kosong `matcher` aktif pada semua jenis notifikasi. Untuk aktif hanya pada acara tertentu, atur ke salah satu nilai berikut:

183 175 

184| Matcher | Aktif ketika |176| Matcher | Aktif ketika |

185| :--------------------- | :------------------------------------------------------ |177| :--------------------- | :--------------------------------------------------------------------------------------------------- |

186| `permission_prompt` | Claude memerlukan Anda untuk menyetujui penggunaan alat |178| `permission_prompt` | Claude memerlukan Anda untuk menyetujui penggunaan alat |

187| `idle_prompt` | Claude selesai dan menunggu prompt berikutnya Anda |179| `idle_prompt` | Claude selesai dan menunggu prompt berikutnya Anda |

188| `auth_success` | Autentikasi selesai |180| `auth_success` | Autentikasi selesai |

189| `elicitation_dialog` | Server MCP membuka formulir elicitation |181| `elicitation_dialog` | Server MCP membuka formulir elicitation |

190| `elicitation_complete` | Formulir elicitation MCP dikirimkan atau ditutup |182| `elicitation_complete` | Formulir elicitation MCP dikirimkan atau ditutup |

191| `elicitation_response` | Respons elicitation MCP dikirim kembali ke server |183| `elicitation_response` | Respons elicitation MCP dikirim kembali ke server |

184| `agent_needs_input` | Sesi latar belakang mulai menunggu input Anda. Hanya aktif saat [agent view](/id/agent-view) terbuka |

185| `agent_completed` | Sesi latar belakang selesai atau gagal. Hanya aktif saat [agent view](/id/agent-view) terbuka |

186 

187Matcher `agent_needs_input` dan `agent_completed` memerlukan Claude Code v2.1.198 atau lebih baru.

192 188 

193Ketik `/hooks` dan pilih `Notification` untuk mengonfirmasi hook terdaftar. Untuk skema acara lengkap, lihat [Notification reference](/id/hooks#notification).189Ketik `/hooks` dan pilih `Notification` untuk mengonfirmasi hook terdaftar. Untuk skema acara lengkap, lihat [Notification reference](/id/hooks#notification).

194 190 


198 194 

199Jalankan [Prettier](https://prettier.io/) secara otomatis pada setiap file yang Claude edit, sehingga pemformatan tetap konsisten tanpa intervensi manual.195Jalankan [Prettier](https://prettier.io/) secara otomatis pada setiap file yang Claude edit, sehingga pemformatan tetap konsisten tanpa intervensi manual.

200 196 

201Hook ini menggunakan acara `PostToolUse` dengan matcher `Edit|Write`, sehingga hanya berjalan setelah alat pengeditan file. {/* min-version: 2.1.191 */}Pada Claude Code v2.1.191 atau lebih baru Anda juga dapat menulis matcher sebagai `Edit,Write`, karena `|` dan `,` adalah pemisah daftar yang dapat dipertukarkan untuk matcher nama alat pada versi tersebut. Perintah mengekstrak jalur file yang diedit dengan [`jq`](https://jqlang.github.io/jq/) dan meneruskannya ke Prettier. Tambahkan ini ke `.claude/settings.json` di root proyek Anda:197Hook ini menggunakan acara `PostToolUse` dengan matcher `Edit|Write`, sehingga hanya berjalan setelah alat pengeditan file. Perintah mengekstrak jalur file yang diedit dengan [`jq`](https://jqlang.github.io/jq/) dan meneruskannya ke Prettier. Tambahkan ini ke `.claude/settings.json` di root proyek Anda:

202 198 

203```json theme={null}199```json theme={null}

204{200{


218}214}

219```215```

220 216 

217Pada Claude Code v2.1.191 atau lebih baru Anda juga dapat menulis matcher sebagai `Edit,Write`, karena `|` dan `,` adalah pemisah daftar yang dapat dipertukarkan untuk matcher nama alat pada versi tersebut.

218 

221<Note>219<Note>

222 Contoh Bash di halaman ini menggunakan `jq` untuk parsing JSON. Instal dengan `brew install jq` (macOS), `apt-get install jq` (Debian/Ubuntu), atau lihat [`jq` downloads](https://jqlang.github.io/jq/download/).220 Contoh Bash di halaman ini menggunakan `jq` untuk parsing JSON. Instal dengan `brew install jq` di macOS, `apt-get install jq` di Debian dan Ubuntu, atau lihat [`jq` downloads](https://jqlang.github.io/jq/download/).

223</Note>221</Note>

224 222 

225<h3 id="block-edits-to-protected-files">223<h3 id="block-edits-to-protected-files">


254 ```252 ```

255 </Step>253 </Step>

256 254 

257 <Step title="Buat skrip dapat dieksekusi (macOS/Linux)">255 <Step title="Buat skrip dapat dieksekusi di macOS dan Linux">

258 Skrip hook harus dapat dieksekusi agar Claude Code dapat menjalankannya:256 Skrip hook harus dapat dieksekusi agar Claude Code dapat menjalankannya:

259 257 

260 ```bash theme={null}258 ```bash theme={null}


378 376 

379Jalankan `direnv allow` sekali di setiap direktori yang memiliki `.envrc` sehingga direnv diizinkan untuk memuatnya. Jika Anda menggunakan devbox atau nix sebagai gantinya direnv, pola yang sama berfungsi dengan `devbox shellenv` atau `devbox global shellenv` sebagai pengganti `direnv export bash`.377Jalankan `direnv allow` sekali di setiap direktori yang memiliki `.envrc` sehingga direnv diizinkan untuk memuatnya. Jika Anda menggunakan devbox atau nix sebagai gantinya direnv, pola yang sama berfungsi dengan `devbox shellenv` atau `devbox global shellenv` sebagai pengganti `direnv export bash`.

380 378 

381Untuk bereaksi terhadap file spesifik daripada setiap perubahan direktori, gunakan `FileChanged` dengan `matcher` yang mencantumkan nama file yang akan dipantau, dipisahkan dengan `|`. Untuk membangun daftar pantau, nilai ini dibagi menjadi nama file literal daripada dievaluasi sebagai regex. Lihat [FileChanged](/id/hooks#filechanged) untuk cara nilai yang sama juga memfilter hook mana yang berjalan ketika file berubah. Contoh ini memantau `.envrc` dan `.env` di direktori kerja:379Untuk bereaksi terhadap file spesifik daripada setiap perubahan direktori, gunakan `FileChanged` dengan `matcher` yang mencantumkan nama file yang akan dipantau, dipisahkan dengan `|`. Ketika membangun daftar pantau, Claude Code membagi nilai ini menjadi nama file literal daripada mengevaluasinya sebagai regex. Lihat [FileChanged](/id/hooks#filechanged) untuk cara nilai yang sama juga memfilter hook mana yang berjalan ketika file berubah. Contoh ini memantau `.envrc` dan `.env` di direktori kerja:

382 380 

383```json theme={null}381```json theme={null}

384{382{


558}556}

559```557```

560 558 

561Skrip Anda dapat mengurai JSON itu dan bertindak atas bidang apa pun. Hook `UserPromptSubmit` mendapatkan teks `prompt` sebagai gantinya, hook `SessionStart` mendapatkan `source` (startup, resume, clear, compact), dan seterusnya. Lihat [Common input fields](/id/hooks#common-input-fields) dalam referensi untuk bidang bersama, dan bagian setiap acara untuk skema spesifik acara.559Skrip Anda dapat mengurai JSON itu dan bertindak atas bidang apa pun. Hook `UserPromptSubmit` mendapatkan teks `prompt` sebagai gantinya, hook `SessionStart` mendapatkan `source` dari `startup`, `resume`, `clear`, atau `compact`, dan seterusnya. Lihat [Common input fields](/id/hooks#common-input-fields) dalam referensi untuk bidang bersama, dan bagian setiap acara untuk skema spesifik acara.

562 560 

563<h4 id="hook-output">561<h4 id="hook-output">

564 Hook output562 Hook output

565</h4>563</h4>

566 564 

567Skrip Anda memberi tahu Claude Code apa yang harus dilakukan selanjutnya dengan menulis ke stdout atau stderr dan keluar dengan kode spesifik. Misalnya, hook `PreToolUse` yang ingin memblokir perintah:565Skrip Anda memberi tahu Claude Code apa yang harus dilakukan selanjutnya dengan menulis ke stdout atau stderr dan keluar dengan kode spesifik. Hook `PreToolUse` berikut memblokir perintah:

568 566 

569```bash theme={null}567```bash theme={null}

570#!/bin/bash568#!/bin/bash


619 617 

620Acara lain menggunakan pola keputusan berbeda. Misalnya, hook `PostToolUse` dan `Stop` menggunakan bidang `decision: "block"` tingkat atas, sementara `PermissionRequest` menggunakan `hookSpecificOutput.decision.behavior`. Lihat [summary table](/id/hooks#decision-control) dalam referensi untuk rincian lengkap berdasarkan acara.618Acara lain menggunakan pola keputusan berbeda. Misalnya, hook `PostToolUse` dan `Stop` menggunakan bidang `decision: "block"` tingkat atas, sementara `PermissionRequest` menggunakan `hookSpecificOutput.decision.behavior`. Lihat [summary table](/id/hooks#decision-control) dalam referensi untuk rincian lengkap berdasarkan acara.

621 619 

622Untuk hook `UserPromptSubmit`, gunakan `additionalContext` sebagai gantinya untuk menyuntikkan teks ke dalam konteks Claude. Hook berbasis prompt (`type: "prompt"`) menangani output secara berbeda: lihat [Prompt-based hooks](#prompt-based-hooks).620Untuk hook `UserPromptSubmit`, gunakan `additionalContext` sebagai gantinya untuk menyuntikkan teks ke dalam konteks Claude.

621 

622Hooks dengan `type: "prompt"` menangani output secara berbeda: lihat [Prompt-based hooks](#prompt-based-hooks).

623 623 

624<h3 id="filter-hooks-with-matchers">624<h3 id="filter-hooks-with-matchers">

625 Filter hooks dengan matchers625 Filter hooks dengan matchers

626</h3>626</h3>

627 627 

628Tanpa matcher, hook aktif pada setiap kemunculan acaranya. Matchers memungkinkan Anda mempersempit itu. Misalnya, jika Anda ingin menjalankan formatter hanya setelah edit file (bukan setelah setiap panggilan alat), tambahkan matcher ke hook `PostToolUse` Anda:628Tanpa matcher, hook aktif pada setiap kemunculan acaranya. Matchers memungkinkan Anda mempersempit itu. Misalnya, jika Anda ingin menjalankan formatter hanya setelah edit file, bukan setelah setiap panggilan alat, tambahkan matcher ke hook `PostToolUse` Anda:

629 629 

630```json theme={null}630```json theme={null}

631{631{


656| `SessionStart` | cara sesi dimulai | `startup`, `resume`, `clear`, `compact` |656| `SessionStart` | cara sesi dimulai | `startup`, `resume`, `clear`, `compact` |

657| `Setup` | flag CLI mana yang memicu setup | `init`, `maintenance` |657| `Setup` | flag CLI mana yang memicu setup | `init`, `maintenance` |

658| `SessionEnd` | mengapa sesi berakhir | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |658| `SessionEnd` | mengapa sesi berakhir | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |

659| `Notification` | jenis notifikasi | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |659| `Notification` | jenis notifikasi | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response`, `agent_needs_input`, `agent_completed` |

660| `SubagentStart` | jenis agen | `general-purpose`, `Explore`, `Plan`, atau nama agen khusus |660| `SubagentStart` | jenis agen | `general-purpose`, `Explore`, `Plan`, atau nama agen khusus |

661| `PreCompact`, `PostCompact` | apa yang memicu compaction | `manual`, `auto` |661| `PreCompact`, `PostCompact` | apa yang memicu compaction | `manual`, `auto` |

662| `SubagentStop` | jenis agen | nilai yang sama seperti `SubagentStart` |662| `SubagentStop` | jenis agen | nilai yang sama seperti `SubagentStart` |


669| `UserPromptExpansion` | nama perintah | nama skill atau perintah Anda |669| `UserPromptExpansion` | nama perintah | nama skill atau perintah Anda |

670| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `MessageDisplay` | tidak ada dukungan matcher | selalu aktif pada setiap kemunculan |670| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `MessageDisplay` | tidak ada dukungan matcher | selalu aktif pada setiap kemunculan |

671 671 

672Beberapa contoh lagi menunjukkan matchers pada jenis acara berbeda:672Tab di bawah menunjukkan beberapa matchers lagi pada jenis acara berbeda.

673 673 

674<Tabs>674<Tabs>

675 <Tab title="Catat setiap perintah Bash">675 <Tab title="Catat setiap perintah Bash">


719 </Tab>719 </Tab>

720 720 

721 <Tab title="Bersihkan saat akhir sesi">721 <Tab title="Bersihkan saat akhir sesi">

722 Acara `SessionEnd` mendukung matchers pada alasan sesi berakhir. Hook ini hanya aktif pada `clear` (ketika Anda menjalankan `/clear`), bukan pada keluar normal:722 Acara `SessionEnd` mendukung matchers pada alasan sesi berakhir. Hook ini hanya aktif pada alasan `clear`, diatur ketika Anda menjalankan `/clear`, bukan pada keluar normal:

723 723 

724 ```json theme={null}724 ```json theme={null}

725 {725 {


753 753 

754Bidang `if` menggunakan [sintaks aturan izin](/id/permissions) untuk memfilter hooks berdasarkan nama alat dan argumen bersama-sama, sehingga proses hook hanya muncul ketika panggilan alat cocok. Ini melampaui `matcher`, yang memfilter pada tingkat grup berdasarkan nama alat saja.754Bidang `if` menggunakan [sintaks aturan izin](/id/permissions) untuk memfilter hooks berdasarkan nama alat dan argumen bersama-sama, sehingga proses hook hanya muncul ketika panggilan alat cocok. Ini melampaui `matcher`, yang memfilter pada tingkat grup berdasarkan nama alat saja.

755 755 

756Misalnya, untuk menjalankan hook hanya ketika Claude menggunakan perintah `git` daripada semua perintah Bash:756Misalnya, konfigurasi ini menjalankan hook hanya ketika Claude menggunakan perintah `git` daripada semua perintah Bash:

757 757 

758```json theme={null}758```json theme={null}

759{759{


805| [Plugin](/id/plugins) `hooks/hooks.json` | Ketika plugin diaktifkan | Ya, dikemas dengan plugin |805| [Plugin](/id/plugins) `hooks/hooks.json` | Ketika plugin diaktifkan | Ya, dikemas dengan plugin |

806| [Skill](/id/skills) atau [agent](/id/sub-agents) frontmatter | Saat skill atau agent aktif | Ya, didefinisikan dalam file komponen |806| [Skill](/id/skills) atau [agent](/id/sub-agents) frontmatter | Saat skill atau agent aktif | Ya, didefinisikan dalam file komponen |

807 807 

808Jalankan [`/hooks`](/id/hooks#the-%2Fhooks-menu) di Claude Code untuk menjelajahi semua hooks yang dikonfigurasi dikelompokkan berdasarkan acara. Untuk menonaktifkan hooks, atur `"disableAllHooks": true` dalam file pengaturan Anda. Hooks yang dikonfigurasi dalam pengaturan terkelola masih berjalan kecuali `disableAllHooks` juga diatur di sana.808Jalankan [`/hooks`](/id/hooks#the-%2Fhooks-menu) di Claude Code untuk menjelajahi semua hooks yang dikonfigurasi dikelompokkan berdasarkan acara.

809 

810Untuk menonaktifkan hooks, atur `"disableAllHooks": true` dalam file pengaturan Anda. Hooks yang dikonfigurasi dalam pengaturan terkelola masih berjalan kecuali `disableAllHooks` juga diatur di sana.

809 811 

810Jika Anda mengedit file pengaturan secara langsung saat Claude Code berjalan, file watcher biasanya mengambil perubahan hook secara otomatis.812Jika Anda mengedit file pengaturan secara langsung saat Claude Code berjalan, file watcher biasanya mengambil perubahan hook secara otomatis.

811 813 


925 Keterbatasan927 Keterbatasan

926</h3>928</h3>

927 929 

928* Hook perintah berkomunikasi melalui stdout, stderr, dan kode keluar saja. Mereka tidak dapat memicu perintah `/` atau panggilan alat. Teks yang dikembalikan melalui `additionalContext` disuntikkan sebagai pengingat sistem yang Claude baca sebagai teks biasa. HTTP hooks berkomunikasi melalui badan respons sebagai gantinya.930Pertimbangkan batasan-batasan ini saat merancang hooks:

931 

932* Command hooks berkomunikasi melalui stdout, stderr, dan kode keluar saja. Mereka tidak dapat memicu perintah `/` atau panggilan alat. Teks yang dikembalikan melalui `additionalContext` disuntikkan sebagai pengingat sistem yang Claude baca sebagai teks biasa. HTTP hooks berkomunikasi melalui badan respons sebagai gantinya.

929* Timeout hook bervariasi menurut jenis. Timpa per hook dengan bidang `timeout` dalam detik.933* Timeout hook bervariasi menurut jenis. Timpa per hook dengan bidang `timeout` dalam detik.

930 * `command`, `http`, `mcp_tool`: 10 menit. `UserPromptSubmit` menurunkan ini menjadi 30 detik, dan `MessageDisplay` menurunkan ini menjadi 10 detik.934 * `command`, `http`, `mcp_tool`: 10 menit. `UserPromptSubmit` menurunkan ini menjadi 30 detik, dan `MessageDisplay` menurunkan ini menjadi 10 detik.

931 * `prompt`: 30 detik.935 * `prompt`: 30 detik.

932 * `agent`: 60 detik.936 * `agent`: 60 detik.

933* Hook `PostToolUse` tidak dapat membatalkan tindakan karena alat sudah dieksekusi.937* Hook `PostToolUse` tidak dapat membatalkan tindakan karena alat sudah dieksekusi.

934* Hook `PermissionRequest` tidak aktif dalam [mode non-interaktif](/id/headless) (`-p`). Gunakan hook `PreToolUse` untuk keputusan izin otomatis.938* Hook `PermissionRequest` tidak aktif dalam [mode non-interaktif](/id/headless) dengan flag `-p`. Gunakan hook `PreToolUse` untuk keputusan izin otomatis.

935* Hook `Stop` aktif kapan pun Claude selesai merespons, bukan hanya pada penyelesaian tugas. Mereka tidak aktif pada interupsi pengguna. Kesalahan API menjalankan [StopFailure](/id/hooks#stopfailure) sebagai gantinya.939* Hook `Stop` aktif kapan pun Claude selesai merespons, bukan hanya pada penyelesaian tugas. Mereka tidak aktif pada interupsi pengguna. Kesalahan API menjalankan [StopFailure](/id/hooks#stopfailure) sebagai gantinya.

936* Ketika beberapa hook PreToolUse mengembalikan [`updatedInput`](/id/hooks#pretooluse) untuk menulis ulang argumen alat, yang terakhir selesai menang. Karena hooks berjalan secara paralel, urutannya tidak deterministik. Hindari memiliki lebih dari satu hook memodifikasi input alat yang sama.940* Ketika beberapa hook `PreToolUse` mengembalikan [`updatedInput`](/id/hooks#pretooluse) untuk menulis ulang argumen alat, yang terakhir selesai menang. Karena hooks berjalan secara paralel, urutannya tidak deterministik. Hindari memiliki lebih dari satu hook memodifikasi input alat yang sama.

937 941 

938<h3 id="hooks-and-permission-modes">942<h3 id="hooks-and-permission-modes">

939 Hooks dan mode izin943 Hooks dan mode izin

940</h3>944</h3>

941 945 

942Hook PreToolUse aktif sebelum pemeriksaan mode izin apa pun. Hook yang mengembalikan `permissionDecision: "deny"` memblokir alat bahkan dalam mode `bypassPermissions` atau dengan `--dangerously-skip-permissions`. Ini memungkinkan Anda menegakkan kebijakan yang pengguna tidak dapat lewati dengan mengubah mode izin mereka.946Hook `PreToolUse` aktif sebelum pemeriksaan mode izin apa pun. Hook yang mengembalikan `permissionDecision: "deny"` memblokir alat bahkan dalam mode `bypassPermissions` atau dengan `--dangerously-skip-permissions`. Ini memungkinkan Anda menegakkan kebijakan yang pengguna tidak dapat lewati dengan mengubah mode izin mereka.

943 947 

944Kebalikannya tidak benar: hook yang mengembalikan `"allow"` tidak melewati aturan deny dari pengaturan. Hooks dapat mengetatkan pembatasan tetapi tidak melonggarkan mereka melampaui apa yang aturan izin izinkan.948Kebalikannya tidak benar: hook yang mengembalikan `"allow"` tidak melewati aturan deny dari pengaturan. Hooks dapat mengetatkan pembatasan tetapi tidak melonggarkan mereka melampaui apa yang aturan izin izinkan.

945 949 


950Hook dikonfigurasi tetapi tidak pernah dieksekusi.954Hook dikonfigurasi tetapi tidak pernah dieksekusi.

951 955 

952* Jalankan `/hooks` dan konfirmasi hook muncul di bawah acara yang benar956* Jalankan `/hooks` dan konfirmasi hook muncul di bawah acara yang benar

953* Periksa bahwa pola matcher cocok dengan nama alat dengan tepat (matcher peka huruf besar-kecil)957* Periksa bahwa pola matcher cocok dengan nama alat dengan tepat. Matchers peka huruf besar-kecil

954* Verifikasi Anda memicu jenis acara yang benar (misalnya, `PreToolUse` aktif sebelum eksekusi alat, `PostToolUse` aktif setelah)958* Verifikasi Anda memicu jenis acara yang benar: `PreToolUse` aktif sebelum eksekusi alat, `PostToolUse` aktif setelah

955* Jika menggunakan hook `PermissionRequest` dalam mode non-interaktif (`-p`), beralih ke `PreToolUse` sebagai gantinya959* Jika menggunakan hook `PermissionRequest` dalam mode non-interaktif dengan flag `-p`, beralih ke `PreToolUse` sebagai gantinya

956 960 

957<h3 id="hook-error-in-output">961<h3 id="hook-error-in-output">

958 Hook error dalam output962 Hook error dalam output


976Anda mengedit file pengaturan tetapi hooks tidak muncul dalam menu.980Anda mengedit file pengaturan tetapi hooks tidak muncul dalam menu.

977 981 

978* Edit file biasanya diambil secara otomatis. Jika belum muncul setelah beberapa detik, file watcher mungkin melewatkan perubahan: mulai ulang sesi Anda untuk memaksa reload.982* Edit file biasanya diambil secara otomatis. Jika belum muncul setelah beberapa detik, file watcher mungkin melewatkan perubahan: mulai ulang sesi Anda untuk memaksa reload.

979* Verifikasi JSON Anda valid (trailing commas dan comments tidak diizinkan)983* Verifikasi JSON Anda valid: trailing commas dan comments tidak diizinkan

980* Konfirmkan file pengaturan berada di lokasi yang benar: `.claude/settings.json` untuk hook proyek, `~/.claude/settings.json` untuk hook global984* Konfirmkan file pengaturan berada di lokasi yang benar: `.claude/settings.json` untuk hook proyek, `~/.claude/settings.json` untuk hook global

981 985 

982<h3 id="stop-hook-hits-the-block-cap">986<h3 id="stop-hook-hits-the-block-cap">


985 989 

986Claude terus bekerja daripada berhenti, kemudian mengakhiri giliran dengan peringatan bahwa Stop hook memblokir terlalu banyak kali berturut-turut.990Claude terus bekerja daripada berhenti, kemudian mengakhiri giliran dengan peringatan bahwa Stop hook memblokir terlalu banyak kali berturut-turut.

987 991 

988Claude Code menimpa Stop hook setelah memblokir 8 kali berturut-turut tanpa kemajuan. Skrip hook Anda perlu memeriksa apakah sudah memicu kelanjutan. Parse bidang `stop_hook_active` dari input JSON dan keluar lebih awal jika `true`:992Claude Code menimpa Stop hook setelah memblokir delapan kali berturut-turut tanpa kemajuan. Skrip hook Anda perlu memeriksa apakah sudah memicu kelanjutan. Parse bidang `stop_hook_active` dari input JSON dan keluar lebih awal jika `true`:

989 993 

990```bash theme={null}994```bash theme={null}

991#!/bin/bash995#!/bin/bash


1004 1008 

1005Claude Code menampilkan kesalahan parsing JSON meskipun skrip hook Anda mengeluarkan JSON yang valid.1009Claude Code menampilkan kesalahan parsing JSON meskipun skrip hook Anda mengeluarkan JSON yang valid.

1006 1010 

1007Ketika Claude Code menjalankan hook perintah bentuk shell (satu tanpa `args`), ia menelurkan `sh -c` pada macOS dan Linux atau Git Bash pada Windows secara default. Shell ini non-interaktif, tetapi Git Bash dan beberapa konfigurasi (seperti `BASH_ENV` menunjuk ke `~/.bashrc`) masih bersumber dari profil Anda. Jika profil itu berisi pernyataan `echo` tanpa syarat, output itu ditambahkan ke JSON hook Anda:1011Ketika Claude Code menjalankan hook perintah bentuk shell, satu tanpa `args`, ia menelurkan `sh -c` pada macOS dan Linux atau Git Bash pada Windows secara default. Shell ini non-interaktif, tetapi Git Bash dan beberapa konfigurasi, seperti `BASH_ENV` menunjuk ke `~/.bashrc`, masih bersumber dari profil Anda. Jika profil itu berisi pernyataan `echo` tanpa syarat, output itu ditambahkan ke JSON hook Anda:

1008 1012 

1009```text theme={null}1013```text theme={null}

1010Shell ready on arm641014Shell ready on arm64

Details

210Perintah bawaan juga memandu Anda melalui setup:210Perintah bawaan juga memandu Anda melalui setup:

211 211 

212* `/init` memandu Anda membuat CLAUDE.md untuk proyek Anda212* `/init` memandu Anda membuat CLAUDE.md untuk proyek Anda

213* `/agents` membantu Anda mengonfigurasi subagents kustom

214* `/doctor` mendiagnosis masalah umum dengan instalasi Anda213* `/doctor` mendiagnosis masalah umum dengan instalasi Anda

215 214 

216<h3 id="it’s-a-conversation">215<h3 id="it’s-a-conversation">

Details

106 Blok atribusi prompt sistem106 Blok atribusi prompt sistem

107</h2>107</h2>

108 108 

109Claude Code menambahkan blok atribusi pendek ke prompt sistem yang berisi versi klien dan sidik jari yang berasal dari percakapan. Endpoint `api.anthropic.com` menghapus blok sebelum memproses, jadi tidak mempengaruhi prompt caching pihak pertama; upstream lain apa pun menerimanya sebagai bagian dari prompt. Anthropic dan endpoint Claude penyedia cloud membacanya untuk atribusi, jadi untuk menghapusnya atur [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/id/env-vars) daripada menghapusnya di gateway.109Claude Code menambahkan blok atribusi pendek ke prompt sistem yang berisi versi klien dan sidik jari yang berasal dari percakapan. Endpoint `api.anthropic.com` menghapus blok sebelum memproses ketika tiba tidak berubah sebagai blok sistem pertama, jadi tidak mempengaruhi prompt caching pihak pertama. Upstream lain apa pun menerimanya sebagai bagian dari prompt.

110 

111Strip bersifat posisional, jadi hanya berfungsi ketika gateway meneruskan array `system` tanpa perubahan. Untuk menjaga blok keluar dari prompt tanpa kehilangan konten sistem lainnya:

112 

113* Teruskan array `system` persis seperti yang diterima, menjaga blok tetap pertama: menambahkan blok sistem lain, mengurutkan ulang array, atau mengonversinya menjadi string tunggal mengalahkan strip, dan blok kemudian mencapai model dan kunci cache prompt.

114* Jaga blok dalam entri array-nya sendiri: endpoint memperlakukan blok yang digabungkan yang dimulai dengan header atribusi sebagai atribusi sepenuhnya dan menghapus semua yang digabungkan ke dalamnya, termasuk sisa prompt sistem.

115* Jika gateway Anda harus membentuk ulang konten sistem, atur [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/id/env-vars) sehingga Claude Code menghilangkan blok. Anthropic dan endpoint Claude penyedia cloud membacanya untuk atribusi, jadi hilangkan di klien daripada menghapusnya atau memindahkannya di gateway.

116 

117Permintaan yang mencapai endpoint tanpa dimodifikasi tidak terpengaruh.

110 118 

111{/* min-version: 2.1.181 */}Dari Claude Code v2.1.181, blok stabil untuk seumur hidup percakapan ketika permintaan merutekan melalui URL dasar kustom, jadi cache prompt gateway-side yang dikunci pada body permintaan lengkap bekerja tanpa menonaktifkannya. Sebelum v2.1.181 blok menyertakan token per-permintaan; pada versi tersebut, atur `CLAUDE_CODE_ATTRIBUTION_HEADER=0` jika gateway Anda mengimplementasikan cache seperti itu.119{/* min-version: 2.1.181 */}Dari Claude Code v2.1.181, blok stabil untuk seumur hidup percakapan ketika permintaan merutekan melalui URL dasar kustom, jadi cache prompt gateway-side yang dikunci pada body permintaan lengkap bekerja tanpa menonaktifkannya. Sebelum v2.1.181 blok menyertakan token per-permintaan; pada versi tersebut, atur `CLAUDE_CODE_ATTRIBUTION_HEADER=0` jika gateway Anda mengimplementasikan cache seperti itu.

112 120 

mcp.md +43 −0

Details

1041 Jika Anda sering mengalami peringatan output dengan server MCP tertentu yang tidak Anda kontrol, pertimbangkan untuk meningkatkan batas `MAX_MCP_OUTPUT_TOKENS`. Anda juga dapat meminta penulis server untuk menambahkan anotasi `anthropic/maxResultSizeChars` atau untuk membuat halaman respons mereka. Anotasi tidak berpengaruh pada alat yang mengembalikan konten gambar; untuk itu, menaikkan `MAX_MCP_OUTPUT_TOKENS` adalah satu-satunya opsi.1041 Jika Anda sering mengalami peringatan output dengan server MCP tertentu yang tidak Anda kontrol, pertimbangkan untuk meningkatkan batas `MAX_MCP_OUTPUT_TOKENS`. Anda juga dapat meminta penulis server untuk menambahkan anotasi `anthropic/maxResultSizeChars` atau untuk membuat halaman respons mereka. Anotasi tidak berpengaruh pada alat yang mengembalikan konten gambar; untuk itu, menaikkan `MAX_MCP_OUTPUT_TOKENS` adalah satu-satunya opsi.

1042</Warning>1042</Warning>

1043 1043 

1044<h2 id="tool-input-schemas-with-a-root-level-combinator">

1045 Skema input alat dengan combinator tingkat root

1046</h2>

1047 

1048Beberapa server MCP mendeklarasikan skema input alat sebagai union JSON Schema, dengan `anyOf`, `oneOf`, atau `allOf` di tingkat atas skema. Claude API tidak menerima kata kunci tersebut di root skema. Itu menerima combinator yang bersarang di dalam `properties`, yang Claude Code kirim tanpa perubahan.

1049 

1050Mulai dari Claude Code v2.1.195, alat dengan combinator tingkat root tetap tersedia. Sebelum mengirim alat ke API, Claude Code meratakan skema menjadi satu objek dan menambahkan kalimat ke deskripsi alat yang memberi tahu Claude grup parameter mana yang termasuk bersama:

1051 

1052* `allOf`: properti dari setiap cabang digabungkan, dan daftar `required` setiap cabang masih berlaku

1053* `anyOf` dan `oneOf`: properti dari setiap cabang digabungkan, dan daftar `required` setiap cabang dijelaskan dalam deskripsi alat alih-alih ditegakkan oleh skema

1054 

1055Server Anda menerima argumen apa pun yang dipilih Claude, jadi terus validasi kombinasi sisi server.

1056 

1057Ketika Claude Code tidak dapat menghasilkan skema yang diterima API, atau pada deployment yang tidak menerima konfigurasi jarak jauh yang mengaktifkan penulisan ulang, seperti mesin offline, itu melewati alat itu, mencatat alasan dalam log server, dan meninggalkan alat server lainnya tersedia. Versi lebih awal dari v2.1.195 melewati setiap alat yang skema input-nya memiliki `anyOf`, `oneOf`, atau `allOf` tingkat root.

1058 

1059<h2 id="require-approval-for-a-specific-tool">

1060 Memerlukan persetujuan untuk alat tertentu

1061</h2>

1062 

1063Jika Anda membangun server MCP, Anda dapat menandai alat sebagai memerlukan persetujuan eksplisit pada setiap panggilan dengan menetapkan `_meta["anthropic/requiresUserInteraction"]` ke `true` dalam entri `tools/list` alat. Nilainya harus boolean JSON `true`; nilai lain diabaikan.

1064 

1065Claude Code menampilkan prompt izin alat itu pada setiap panggilan, bahkan dalam mode izin `acceptEdits`, `auto`, dan `bypassPermissions` [permission modes](/id/permissions#permission-modes), dan tidak menawarkan opsi "jangan tanya lagi" untuk itu. [Aturan izin](/id/permissions#permission-rule-syntax) yang cocok dengan alat tidak melewati prompt baik. Dalam mode `dontAsk`, yang tidak pernah meminta, Claude Code menolak panggilan sebagai gantinya.

1066 

1067Prompt harus mencapai seseorang. Dalam mode non-interaktif dengan [`--permission-prompt-tool`](/id/cli-reference#cli-flags), hasil `allow` dari alat prompt untuk alat yang ditandai dikonversi menjadi deny dengan pesan `MCP tool requires user interaction; not supported via --permission-prompt-tool`. Callback [`canUseTool`](/id/agent-sdk/permissions) Agent SDK menerima panggilan ini dan dapat menyetujuinya, karena host SDK diharapkan menunjukkannya kepada pengguna.

1068 

1069Gunakan ini untuk alat yang prompt izinnya adalah poin itu sendiri, seperti langkah persetujuan atau pemberian akses di mana persetujuan otomatis berarti tidak ada manusia yang pernah setuju. Alat lain dari server yang sama menjaga perilaku izin normal mereka.

1070 

1071Entri `tools/list` berikut menandai satu alat sebagai selalu memerlukan persetujuan.

1072 

1073```json theme={null}

1074{

1075 "name": "grant_access",

1076 "description": "Requests access to a protected resource",

1077 "_meta": {

1078 "anthropic/requiresUserInteraction": true

1079 }

1080}

1081```

1082 

1083Anotasi `anthropic/requiresUserInteraction` memerlukan Claude Code v2.1.199 atau lebih baru. Versi sebelumnya mengabaikannya dan menerapkan alur izin standar.

1084 

1085Ketika sesi terhubung ke [Remote Control](/id/remote-control) atau host SDK, Claude Code menandai permintaan izin sebagai memerlukan interaksi pengguna, sehingga klien menampilkan prompt izin alat untuk Anda jawab alih-alih tindakan persetujuan satu ketukan.

1086 

1044<h2 id="respond-to-mcp-elicitation-requests">1087<h2 id="respond-to-mcp-elicitation-requests">

1045 Tanggapi permintaan elicitasi MCP1088 Tanggapi permintaan elicitasi MCP

1046</h2>1089</h2>

memory.md +1 −1

Details

235- Sertakan komentar dokumentasi OpenAPI235- Sertakan komentar dokumentasi OpenAPI

236```236```

237 237 

238Aturan tanpa bidang `paths` dimuat tanpa syarat dan berlaku untuk semua file. Aturan bersyarat jalur dipicu ketika Claude membaca file yang cocok dengan pola, bukan pada setiap penggunaan alat.238Aturan tanpa bidang `paths` dimuat tanpa syarat dan berlaku untuk semua file. Aturan bersyarat jalur dipicu ketika Claude membaca file yang cocok dengan pola, bukan pada setiap penggunaan alat. Sejak v2.1.198, pencocokan juga berfungsi ketika Claude mencapai file melalui jalur symlink ke direktori proyek, misalnya dalam checkout yang disymlink.

239 239 

240Gunakan pola glob di bidang `paths` untuk mencocokkan file berdasarkan ekstensi, direktori, atau kombinasi apa pun:240Gunakan pola glob di bidang `paths` untuk mencocokkan file berdasarkan ekstensi, direktori, atau kombinasi apa pun:

241 241 

model-config.md +84 −31

Details

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, atau ke [model default organisasi](#organization-default-model) ketika admin telah menetapkan satu. 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 |


84* `Enter`: beralih model dan simpan sebagai default Anda84* `Enter`: beralih model dan simpan sebagai default Anda

85* `s`: beralih model hanya untuk sesi ini85* `s`: beralih model hanya untuk sesi ini

86 86 

87Mengetik `/model <name>` langsung berperilaku seperti `Enter`. Pengaturan proyek dan yang dikelola masih memiliki prioritas dan diterapkan kembali pada peluncuran berikutnya.87Mengetik `/model <name>` langsung berperilaku seperti `Enter`. Pengaturan proyek dan yang dikelola masih memiliki prioritas dan diterapkan kembali pada peluncuran berikutnya. {/* min-version: 2.1.196 */}Sebuah [model default organisasi](#organization-default-model) yang admin Anda telah konfigurasi untuk mengganti pilihan pengguna juga diterapkan kembali pada peluncuran berikutnya.

88 88 

89Di v2.1.144 hingga v2.1.152, `/model` hanya berlaku untuk sesi saat ini dan `d` di pemilih menyimpan default.89Di v2.1.144 hingga v2.1.152, `/model` hanya berlaku untuk sesi saat ini dan `d` di pemilih menyimpan default.

90 90 


130* **Model sesi utama**: `/model`, flag `--model`, variabel lingkungan `ANTHROPIC_MODEL`, pengaturan `model`, dan model yang dipulihkan ketika [melanjutkan sesi](#setting-your-model)130* **Model sesi utama**: `/model`, flag `--model`, variabel lingkungan `ANTHROPIC_MODEL`, pengaturan `model`, dan model yang dipulihkan ketika [melanjutkan sesi](#setting-your-model)

131* **Resolusi alias**: {/* min-version: 2.1.176 */}variabel lingkungan `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL`, dan `ANTHROPIC_DEFAULT_FABLE_MODEL` tidak dapat mengarahkan ulang alias yang diizinkan ke model di luar daftar131* **Resolusi alias**: {/* min-version: 2.1.176 */}variabel lingkungan `ANTHROPIC_DEFAULT_OPUS_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL`, dan `ANTHROPIC_DEFAULT_FABLE_MODEL` tidak dapat mengarahkan ulang alias yang diizinkan ke model di luar daftar

132* **Mode cepat**: {/* min-version: 2.1.176 */}`/fast` menolak untuk beralih ketika akan secara implisit beralih ke model Opus di luar daftar, dengan pesan "is not in your organization's allowed models"132* **Mode cepat**: {/* min-version: 2.1.176 */}`/fast` menolak untuk beralih ketika akan secara implisit beralih ke model Opus di luar daftar, dengan pesan "is not in your organization's allowed models"

133* **Model subagent**: bidang `model` dalam frontmatter [subagent](/id/sub-agents#choose-a-model), parameter `model` dari alat Agent, pemilih model di `/agents`, dan `CLAUDE_CODE_SUBAGENT_MODEL`133* **Model subagent**: bidang `model` dalam frontmatter [subagent](/id/sub-agents#choose-a-model), parameter `model` dari alat Agent, `CLAUDE_CODE_SUBAGENT_MODEL`, dan, pada v2.1.197 dan lebih awal, pemilih model di wizard `/agents` {/* max-version: 2.1.197 */}

134* **Model skill dan command**: frontmatter `model` dalam [skills dan commands](/id/skills)134* **Model skill dan command**: frontmatter `model` dalam [skills dan commands](/id/skills)

135* **Model advisor**: pengaturan [`advisorModel`](/id/advisor) yang dikonfigurasi dan flag `--advisor`135* **Model advisor**: pengaturan [`advisorModel`](/id/advisor) yang dikonfigurasi dan flag `--advisor`

136* **Model background agent**: model yang dipilih dalam [dispatch picker](/id/agent-view)136* **Model background agent**: model yang dipilih dalam [dispatch picker](/id/agent-view)

137 137 

138Beralih ke model yang diblokir dengan `/model` ditolak dengan kesalahan, sementara flag `--model` yang diblokir, `ANTHROPIC_MODEL`, atau nilai pengaturan `model` diganti saat startup dengan peringatan yang menyebutkan model yang diminta dan model pengganti, dan sesi dimulai pada model default. Penggantian subagent, skill, atau command yang diblokir kembali ke model yang diwariskan atau default daripada gagal dalam permintaan; pengaturan `advisorModel` yang diblokir menonaktifkan advisor untuk sesi, sementara nilai flag `--advisor` yang diblokir keluar dengan kesalahan saat peluncuran. Model yang dikecualikan disembunyikan dari pemilih `/model`.138Beralih ke model yang diblokir dengan `/model` ditolak dengan kesalahan, sementara flag `--model` yang diblokir, `ANTHROPIC_MODEL`, atau nilai pengaturan `model` diganti saat startup dengan peringatan yang menyebutkan model yang diminta dan model pengganti, dan sesi dimulai pada model default. Penggantian subagent, skill, atau command yang diblokir kembali ke model yang diwariskan atau default daripada gagal dalam permintaan; pengaturan `advisorModel` yang diblokir menonaktifkan advisor untuk sesi, sementara nilai flag `--advisor` yang diblokir keluar dengan kesalahan saat peluncuran. Model yang dikecualikan disembunyikan dari pemilih `/model`. {/* min-version: 2.1.199 */}Mulai dari v2.1.199, ID model lengkap dalam daftar yang tidak memiliki baris pemilih bawaan, seperti versi yang lebih lama yang ditetapkan daftar, muncul di pemilih `/model` sebagai baris berlabel miliknya sendiri. Pada versi sebelumnya ID tersebut hanya dapat dipilih dengan mengetik `/model <id>`.

139 139 

140Perubahan model otomatis diperiksa dengan cara yang sama: elemen dari [rantai model fallback](#fallback-model-chains) di luar daftar izin dihapus, peningkatan mode rencana seperti [`opusplan`](#opusplan-model-setting) ke model yang dikecualikan dilewati sehingga perencanaan berlanjut pada model sesi, dan [fallback model otomatis](#automatic-model-fallback) yang targetnya dikecualikan tidak berjalan, sehingga permintaan yang ditandai berakhir dengan penolakan. Mengaktifkan [mode cepat](/id/fast-mode) ditolak ketika model yang akan dijalankan sesi setelahnya berada di luar daftar izin.140Perubahan model otomatis diperiksa dengan cara yang sama: elemen dari [rantai model fallback](#fallback-model-chains) di luar daftar izin dihapus, peningkatan mode rencana seperti [`opusplan`](#opusplan-model-setting) ke model yang dikecualikan dilewati sehingga perencanaan berlanjut pada model sesi, dan [fallback model otomatis](#automatic-model-fallback) yang targetnya dikecualikan tidak berjalan, sehingga permintaan yang ditandai berakhir dengan penolakan. Mengaktifkan [mode cepat](/id/fast-mode) ditolak ketika model yang akan dijalankan sesi setelahnya berada di luar daftar izin.

141 141 


167 Perilaku model default167 Perilaku model default

168</h3>168</h3>

169 169 

170Opsi Default di pemilih model tidak dipengaruhi oleh `availableModels` kecuali [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) juga diatur. Dengan sendirinya, `availableModels` membiarkan Default tersedia, diselesaikan ke default runtime sistem [berdasarkan tingkat langganan pengguna](#default-model-setting). Jika default tingkat adalah model yang ingin Anda batasi, atur `enforceAvailableModels` juga.170Opsi Default di pemilih model tidak dipengaruhi oleh `availableModels` kecuali [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) juga diatur. Dengan sendirinya, `availableModels` membiarkan Default tersedia, diselesaikan ke [default runtime sistem](#default-model-setting) untuk akun. Jika default itu adalah model yang ingin Anda batasi, atur `enforceAvailableModels` juga.

171 171 

172Array `availableModels` yang kosong tidak pernah melibatkan penegakan Default-model: dengan `availableModels: []`, pilihan model bernama diblokir tetapi model Default untuk jenis akun tetap dapat digunakan terlepas dari `enforceAvailableModels`.172Array `availableModels` yang kosong tidak pernah melibatkan penegakan Default-model: dengan `availableModels: []`, pilihan model bernama diblokir tetapi model Default untuk jenis akun tetap dapat digunakan terlepas dari `enforceAvailableModels`.

173 173 


184}184}

185```185```

186 186 

187Ketika model default untuk jenis akun pengguna tidak ada dalam daftar izin, opsi Default malah diselesaikan ke entri pertama `availableModels` yang menamai model yang diizinkan dan tersedia, dan baris Default pemilih `/model` menunjukkan model tersebut. Ini berlaku di mana pun default dicapai: startup sesi, memilih Default di `/model`, kata kunci `"default"` dalam [rantai model fallback](#fallback-model-chains), dan fallback yang digunakan ketika pilihan yang dikecualikan dihapus.187Opsi Default diselesaikan ke akun-jenis default, atau ke [model default organisasi](#organization-default-model) ketika admin telah menetapkan satu. Ketika model itu tidak ada dalam daftar izin, opsi Default malah diselesaikan ke entri pertama `availableModels` yang menamai model yang diizinkan dan tersedia, dan baris Default pemilih `/model` menunjukkan model tersebut. Ini berlaku di mana pun default dicapai: startup sesi, memilih Default di `/model`, kata kunci `"default"` dalam [rantai model fallback](#fallback-model-chains), dan fallback yang digunakan ketika pilihan yang dikecualikan dihapus.

188 188 

189`enforceAvailableModels` tidak berpengaruh ketika `availableModels` tidak diatur atau kosong: dengan `availableModels: []`, model Default untuk jenis akun tetap dapat digunakan, sehingga pengaturan tidak dapat mengunci pengguna dari setiap model. Ketika `availableModels` tidak kosong tetapi tidak ada entri yang diselesaikan ke model yang diizinkan dan tersedia, penegakan menurun dan Default jatuh kembali ke default jenis akun, dengan peringatan yang hanya terlihat di bawah `--debug`. Pertahankan setidaknya satu entri yang dijamin tersedia dalam daftar untuk menghindari ini.189`enforceAvailableModels` tidak berpengaruh ketika `availableModels` tidak diatur atau kosong: dengan `availableModels: []`, model Default untuk jenis akun tetap dapat digunakan, sehingga pengaturan tidak dapat mengunci pengguna dari setiap model. Ketika `availableModels` tidak kosong tetapi tidak ada entri yang diselesaikan ke model yang diizinkan dan tersedia, penegakan menurun dan Default jatuh kembali ke default jenis akun, dengan peringatan yang hanya terlihat di bawah `--debug`. Pertahankan setidaknya satu entri yang dijamin tersedia dalam daftar untuk menghindari ini.

190 190 


194 Kontrol model yang dijalankan pengguna194 Kontrol model yang dijalankan pengguna

195</h3>195</h3>

196 196 

197Pengaturan `model` adalah pilihan awal, bukan penegakan. Ini menetapkan model mana yang aktif ketika sesi dimulai, tetapi pengguna masih dapat membuka `/model` dan memilih Default, yang diselesaikan ke default sistem untuk tingkat mereka terlepas dari apa yang `model` diatur, kecuali [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) mengarahkannya ulang.197Pengaturan `model` adalah pilihan awal, bukan penegakan. Ini menetapkan model mana yang aktif ketika sesi dimulai, tetapi pengguna masih dapat membuka `/model` dan memilih Default, yang diselesaikan ke default sistem untuk [runtime default](#default-model-setting) terlepas dari apa yang `model` diatur, kecuali [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) mengarahkannya ulang.

198 198 

199Untuk sepenuhnya mengontrol pengalaman model, gabungkan pengaturan ini:199Untuk sepenuhnya mengontrol pengalaman model, gabungkan pengaturan ini:

200 200 


244 244 

245Model 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.245Model 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.

246 246 

247Dua 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.247Pembatasan berlaku org-wide atau per role:

248 

249* Menonaktifkan model di tingkat organisasi menghapusnya untuk setiap anggota.

250* Akses tingkat role memberikan model yang berbeda ke role kustom yang berbeda, dan anggota yang memiliki beberapa role dapat menggunakan model apa pun yang diizinkan salah satu role mereka.

251* Model Haiku selalu tersedia dan tidak dapat dinonaktifkan, jadi setiap anggota menyimpan setidaknya satu model yang dapat digunakan.

252* Perubahan akses berlaku org-wide dalam sekitar satu menit; pemilih `/model` mencerminkannya saat sesi berikutnya dimulai.

253 

254Kedua 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 [gateway LLM](/id/llm-gateway). Sesi di Bedrock, Vertex AI, Foundry, dan Claude Platform di AWS tidak menerimanya, jadi gunakan `availableModels` di penyedia tersebut.

255 

256<h2 id="organization-default-model">

257 Model default organisasi

258</h2>

259 

260{/* plan-availability: feature=org-default-model plans=enterprise */}

261 

262Admin organisasi pada paket Claude Enterprise dapat menetapkan model default untuk anggota Claude Code dari konsol admin claude.ai, untuk seluruh organisasi atau per role kustom. Ketika satu diatur, opsi Default diselesaikan ke model itu alih-alih [default jenis akun](#default-model-setting). Memerlukan Claude Code v2.1.196 atau lebih baru.

263 

264Baris Default di pemilih `/model` menampilkan nama model default organisasi dengan label Org default. Label membaca Org default apakah admin menetapkan default untuk seluruh organisasi atau untuk role Anda. Default role mencakup anggota role kustom itu dan mengambil alih default organisasi-lebar; ketika beberapa role Anda menetapkan default yang berbeda, model paling mampu berlaku.

265 

266Model default organisasi adalah titik awal, bukan pembatasan, dan pilihan model lainnya mengambil alih atasnya:

267 

268* flag `--model` dan variabel lingkungan `ANTHROPIC_MODEL`

269* nilai `model` dalam [pengaturan terkelola](/id/settings#settings-files) atau disediakan melalui `--settings`

270* nilai `model` dalam pengaturan pengguna, proyek, atau lokal Anda, termasuk model yang Anda simpan dengan `/model`

271 

272Admin juga dapat mengonfigurasi model default organisasi untuk mengganti pilihan pengguna. Dengan override aktif, ia mengambil alih nilai `model` dalam pengaturan pengguna, proyek, dan lokal, jadi model yang Anda simpan dengan `/model` berlaku untuk sesi saat ini dan model default organisasi kembali pada peluncuran berikutnya. Ketika pilihan Anda berbeda, `/model` menampilkan `Your organization's default (<model>) applies on restart`. Flag `--model`, `ANTHROPIC_MODEL`, pengaturan terkelola, dan `--settings` masih mengambil alih bahkan dengan override aktif. Override tersedia untuk set organisasi terbatas; tanyakan tim akun Anthropic Anda tentang ketersediaan.

273 

274Untuk membatasi model mana yang dapat dipilih anggota, gunakan [pembatasan model organisasi](#organization-model-restrictions) atau [`availableModels`](#restrict-model-selection) sebagai gantinya.

275 

276Claude Code membaca model default organisasi sekali saat startup, jadi default yang diubah admin pertengahan sesi berlaku pada peluncuran berikutnya.

277 

278Ketika model default organisasi tidak mengganti pilihan pengguna, peluncuran interaktif pertama setelah admin mengubahnya menghapus kunci `model` dari pengaturan pengguna Anda sekali, sehingga default baru berlaku. Ini tidak mengubah apa pun lagi dalam file, dan model yang Anda simpan dengan `/model` setelah peluncuran itu disimpan.

279 

280Model default organisasi melewati pemeriksaan pembatasan yang sama seperti model Default lainnya sebelum diadopsi:

281 

282* [`availableModels`](#restrict-model-selection) dengan sendirinya tidak pernah membatasi opsi Default, jadi model default organisasi di luar daftar izin masih berlaku. Ketika [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) juga diatur, model default organisasi di luar daftar izin dipetakan ulang ke entri daftar izin pertama, seperti Default lainnya

283* model default organisasi yang [pembatasan model organisasi](#organization-model-restrictions) tolak untuk akun Anda diganti dengan model yang paling baru diizinkan dalam keluarganya, atau keluarga biaya lebih rendah ketika setiap versi itu dibatasi

284* model default organisasi yang tidak tersedia untuk akun Anda sama sekali, seperti Fable 5 di bawah [zero data retention](/id/zero-data-retention), dilewati, dan opsi Default diselesaikan ke default jenis akun

285 

286Mulai dari v2.1.199, ketika model default organisasi adalah keluarga model yang berbeda dari default biasa jenis akun Anda, pemilih `/model` menyimpan baris terpisah untuk keluarga biasa itu, sehingga Anda masih dapat beralih ke itu untuk sesi. Di v2.1.196 hingga v2.1.198 baris itu hilang dari pemilih.

287 

288Model default organisasi dikirimkan ke sesi yang diautentikasi dengan API Anthropic. Sesi di penyebaran [gateway LLM](/id/llm-gateway), Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan Claude Platform di AWS tidak menerimanya. Untuk menetapkan default pada penyebaran itu, gunakan kunci `model` dalam [pengaturan terkelola](/id/settings#settings-files) sebagai gantinya.

289 

290<h2 id="organization-effort-limits">

291 Batas usaha organisasi

292</h2>

293 

294{/* plan-availability: feature=org-effort-limits plans=enterprise */}

295 

296Admin organisasi pada paket Claude Enterprise dapat menetapkan tingkat [usaha](#adjust-effort-level) maksimum per model untuk setiap role kustom, bersama [pembatasan model organisasi](#organization-model-restrictions) tingkat role. Tingkat di atas batas tidak ditawarkan di pemilih `/effort`, dan menamai tingkat lebih tinggi dengan `--effort` atau `/effort` berjalan pada batas sebagai gantinya. Dalam sesi interaktif dan lari `--print` teks biasa, peringatan menyebutkan tingkat yang diminta dan diterapkan; dengan output `json` atau `stream-json` atau di agen latar belakang, penjepit berlaku diam-diam. Batas adalah per model, jadi beralih model dapat mengubah tingkat mana yang tersedia. Ketika beberapa role Anda memberikan model yang sama, batas paling permisif berlaku. Memerlukan Claude Code v2.1.195 atau lebih baru.

297 

298Batas usaha dikirimkan bersama [pembatasan model organisasi](#organization-model-restrictions) dan mengikuti ketersediaan penyedia yang sama: sesi di Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan Claude Platform di AWS tidak menerimanya.

248 299 

249<h2 id="special-model-behavior">300<h2 id="special-model-behavior">

250 Perilaku model khusus301 Perilaku model khusus


263 314 

264Enterprise pay-as-you-go berarti organisasi Enterprise yang ditagihkan berdasarkan penggunaan daripada kursi langganan.315Enterprise pay-as-you-go berarti organisasi Enterprise yang ditagihkan berdasarkan penggunaan daripada kursi langganan.

265 316 

266Ketika pengaturan terkelola [memberlakukan allowlist untuk model Default](#enforce-the-allowlist-for-the-default-model) dan default jenis akun tidak ada dalam `availableModels`, `default` diselesaikan ke Default yang diberlakukan daripada default jenis akun di atas.317Ketika admin telah menetapkan [model default organisasi](#organization-default-model), `default` diselesaikan ke model itu sebagai gantinya dari default jenis akun di atas. Memerlukan Claude Code v2.1.196 atau lebih baru.

318 

319Ketika pengaturan terkelola [memberlakukan allowlist untuk model Default](#enforce-the-allowlist-for-the-default-model) dan default jenis akun tidak ada dalam `availableModels`, `default` diselesaikan ke Default yang diberlakukan daripada default jenis akun di atas. Ketika keduanya berlaku, model default organisasi menggantikan default jenis akun terlebih dahulu dan penegakan kemudian berlaku untuk itu: model default organisasi yang diizinkan disimpan, sementara yang di luar daftar diselesaikan ke Default yang diberlakukan.

267 320 

268Fable 5 bukan model default pada jenis akun apa pun. Sesi menggunakan Fable 5 hanya setelah Anda memilihnya, dengan `/model fable`, pengaturan `model`, atau alias `best` di mana Fable 5 tersedia. Memilihnya dengan `/model` menyimpannya sebagai model yang dipilih dalam pengaturan pengguna Anda, sehingga sesi berikutnya dimulai pada Fable 5 sampai Anda mengubah model.321Fable 5 bukan model default pada jenis akun apa pun. Sesi menggunakan Fable 5 hanya setelah Anda memilihnya, dengan `/model fable`, pengaturan `model`, atau alias `best` di mana Fable 5 tersedia. Memilihnya dengan `/model` menyimpannya sebagai model yang dipilih dalam pengaturan pengguna Anda, sehingga sesi berikutnya dimulai pada Fable 5 sampai Anda mengubah model.

269 322 


285Untuk pendekatan hibrida di mana Claude memutuskan di tengah-tugas kapan harus berkonsultasi dengan model kedua daripada beralih di batas rencana, lihat [advisor tool](/id/advisor).338Untuk pendekatan hibrida di mana Claude memutuskan di tengah-tugas kapan harus berkonsultasi dengan model kedua daripada beralih di batas rencana, lihat [advisor tool](/id/advisor).

286 339 

287<h3 id="fallback-model-chains">340<h3 id="fallback-model-chains">

288 Fallback model chains341 Rantai model fallback

289</h3>342</h3>

290 343 

291Ketika model utama kelebihan beban, tidak tersedia, atau mengembalikan kesalahan server yang tidak dapat dicoba ulang lainnya, Claude Code dapat beralih ke model fallback daripada gagal permintaan. Kesalahan autentikasi, penagihan, batas laju, ukuran permintaan, dan transportasi tidak pernah memicu switch; mereka mengikuti retry dan penanganan kesalahan normal mereka.344Ketika model utama kelebihan beban, tidak tersedia, atau mengembalikan kesalahan server yang tidak dapat dicoba ulang lainnya, Claude Code dapat beralih ke model fallback daripada gagal permintaan. Kesalahan autentikasi, penagihan, batas laju, ukuran permintaan, dan transportasi tidak pernah memicu switch; mereka mengikuti retry dan penanganan kesalahan normal mereka.


314* **Outside the allowlist**: elemen yang tidak diizinkan oleh [`availableModels`](#restrict-model-selection) dijatuhkan saat chain dibaca dan tidak pernah dicoba.367* **Outside the allowlist**: elemen yang tidak diizinkan oleh [`availableModels`](#restrict-model-selection) dijatuhkan saat chain dibaca dan tidak pernah dicoba.

315 368 

316<h3 id="automatic-model-fallback">369<h3 id="automatic-model-fallback">

317 Automatic model fallback370 Fallback model otomatis

318</h3>371</h3>

319 372 

320Bagian ini mencakup fallback berbasis konten dari Fable 5. Untuk fallback berbasis ketersediaan ketika model kelebihan beban atau tidak tersedia, lihat [Fallback model chains](#fallback-model-chains).373Bagian ini mencakup fallback berbasis konten dari Fable 5. Untuk fallback berbasis ketersediaan ketika model kelebihan beban atau tidak tersedia, lihat [Rantai model fallback](#fallback-model-chains).

321 374 

322Fable 5 berjalan dengan pengklasifikasi keamanan untuk konten keamanan siber dan biologi. Ketika pengklasifikasi menandai permintaan, Claude Code menjalankan kembali permintaan itu pada model Opus default dan menampilkan pemberitahuan dalam transkrip: Opus 4.8 pada Anthropic API dan penyebaran [LLM gateway](/id/llm-gateway), atau Opus 4.7 pada [Claude Platform di AWS](/id/claude-platform-on-aws).375Fable 5 berjalan dengan pengklasifikasi keamanan untuk konten keamanan siber dan biologi. Ketika pengklasifikasi menandai permintaan, Claude Code menjalankan kembali permintaan itu pada model Opus default dan menampilkan pemberitahuan dalam transkrip: Opus 4.8 pada Anthropic API dan penyebaran [gateway LLM](/id/llm-gateway), atau Opus 4.7 pada [Claude Platform di AWS](/id/claude-platform-on-aws).

323 376 

324Sesi kemudian berlanjut pada model Opus itu. Untuk kembali ke Fable 5, jalankan `/model fable`.377Sesi kemudian berlanjut pada model Opus itu. Untuk kembali ke Fable 5, jalankan `/model fable`.

325 378 

326Target fallback diperiksa terhadap [`availableModels`](#restrict-model-selection). Ketika diblokir, tidak ada fallback yang terjadi. Penolakan muncul sebagai kesalahan normal dan model sesi tidak berubah.379Target fallback diperiksa terhadap [`availableModels`](#restrict-model-selection). Ketika diblokir, tidak ada fallback yang terjadi. Penolakan muncul sebagai kesalahan normal dan model sesi tidak berubah.

327 380 

328<h4 id="check-what-triggered-fallback">381<h4 id="check-what-triggered-fallback">

329 Check what triggered fallback382 Periksa apa yang memicu fallback

330</h4>383</h4>

331 384 

332Fallback dapat memicu pada permintaan pertama sesi, sebelum Anda mengirim apa pun yang tidak biasa, karena permintaan pertama membawa konteks workspace seperti konten CLAUDE.md dan status git Anda. Repositori yang berisi materi keamanan atau biologi dapat memicu pengklasifikasi pada konteks itu saja.385Fallback dapat memicu pada permintaan pertama sesi, sebelum Anda mengirim apa pun yang tidak biasa, karena permintaan pertama membawa konteks workspace seperti konten CLAUDE.md dan status git Anda. Repositori yang berisi materi keamanan atau biologi dapat memicu pengklasifikasi pada konteks itu saja.


334Untuk memeriksa apakah kustomisasi adalah pemicu, mulai sesi dengan `claude --safe-mode`, yang menonaktifkan kustomisasi seperti CLAUDE.md, skills, MCP servers, dan hooks. Status git dan nama direktori bukan kustomisasi dan masih disertakan.387Untuk memeriksa apakah kustomisasi adalah pemicu, mulai sesi dengan `claude --safe-mode`, yang menonaktifkan kustomisasi seperti CLAUDE.md, skills, MCP servers, dan hooks. Status git dan nama direktori bukan kustomisasi dan masih disertakan.

335 388 

336<h4 id="ask-before-switching">389<h4 id="ask-before-switching">

337 Ask before switching390 Tanyakan sebelum beralih

338</h4>391</h4>

339 392 

340Untuk memutuskan apa yang terjadi setiap kali permintaan ditandai, daripada beralih secara otomatis, jalankan `/config` dan matikan "switch models when a message is flagged". Permintaan yang ditandai kemudian menjeda sesi dengan dua opsi: beralih ke model Opus, atau edit prompt dan coba ulang pada Fable 5.393Untuk memutuskan apa yang terjadi setiap kali permintaan ditandai, daripada beralih secara otomatis, jalankan `/config` dan matikan "switch models when a message is flagged". Permintaan yang ditandai kemudian menjeda sesi dengan dua opsi: beralih ke model Opus, atau edit prompt dan coba ulang pada Fable 5.


343 396 

344* Jika kedua model menandai permintaan yang sama, Anda dapat mengedit prompt dan mencoba ulang, atau memulai sesi baru.397* Jika kedua model menandai permintaan yang sama, Anda dapat mengedit prompt dan mencoba ulang, atau memulai sesi baru.

345* Pada sesi mobile [Claude Code di web](/id/claude-code-on-the-web), pengeditan dan pengulangan tidak didukung. Beralih model, atau lanjutkan sesi dari browser desktop atau aplikasi desktop.398* Pada sesi mobile [Claude Code di web](/id/claude-code-on-the-web), pengeditan dan pengulangan tidak didukung. Beralih model, atau lanjutkan sesi dari browser desktop atau aplikasi desktop.

346* Dalam [non-interactive mode](/id/cli-reference#cli-flags) dan integrasi SDK yang tidak dapat menampilkan prompt, permintaan yang ditandai mengakhiri giliran dengan penolakan sebagai gantinya.399* Dalam [mode non-interaktif](/id/cli-reference#cli-flags) dan integrasi SDK yang tidak dapat menampilkan prompt, permintaan yang ditandai mengakhiri giliran dengan penolakan sebagai gantinya.

347* Ketika target fallback diblokir oleh [`availableModels`](#restrict-model-selection), prompt tidak ditampilkan. Permintaan yang ditandai berakhir dengan penolakan, sama seperti fallback otomatis ketika target diblokir.400* Ketika target fallback diblokir oleh [`availableModels`](#restrict-model-selection), prompt tidak ditampilkan. Permintaan yang ditandai berakhir dengan penolakan, sama seperti fallback otomatis ketika target diblokir.

348 401 

349<h4 id="enable-fallback-on-bedrock-vertex-ai-and-foundry">402<h4 id="enable-fallback-on-bedrock-vertex-ai-and-foundry">

350 Enable fallback on Bedrock, Vertex AI, and Foundry403 Aktifkan fallback di Bedrock, Vertex AI, dan Foundry

351</h4>404</h4>

352 405 

353Pada [Amazon Bedrock](/id/amazon-bedrock), [Google Vertex AI](/id/google-vertex-ai), dan [Microsoft Foundry](/id/microsoft-foundry), ID model spesifik penyedia, jadi fallback otomatis hanya beroperasi ketika Claude Code dapat mengidentifikasi kedua model yang terlibat:406Pada [Amazon Bedrock](/id/amazon-bedrock), [Google Vertex AI](/id/google-vertex-ai), dan [Microsoft Foundry](/id/microsoft-foundry), ID model spesifik penyedia, jadi fallback otomatis hanya beroperasi ketika Claude Code dapat mengidentifikasi kedua model yang terlibat:


358Jika salah satu model tidak dapat diidentifikasi, Claude Code tidak beralih secara otomatis. Permintaan yang ditandai berakhir dengan pesan penolakan, dan Anda dapat beralih model dengan [`/model`](#setting-your-model) dan coba ulang. Untuk mengaktifkan fallback otomatis pada penyedia ini, atur `ANTHROPIC_DEFAULT_FABLE_MODEL` ke ID model Fable 5 Anda dan `ANTHROPIC_DEFAULT_OPUS_MODEL` ke ID model Opus 4.8 Anda.411Jika salah satu model tidak dapat diidentifikasi, Claude Code tidak beralih secara otomatis. Permintaan yang ditandai berakhir dengan pesan penolakan, dan Anda dapat beralih model dengan [`/model`](#setting-your-model) dan coba ulang. Untuk mengaktifkan fallback otomatis pada penyedia ini, atur `ANTHROPIC_DEFAULT_FABLE_MODEL` ke ID model Fable 5 Anda dan `ANTHROPIC_DEFAULT_OPUS_MODEL` ke ID model Opus 4.8 Anda.

359 412 

360<h4 id="security-research-and-biology-workloads">413<h4 id="security-research-and-biology-workloads">

361 Security research and biology workloads414 Beban kerja penelitian keamanan dan biologi

362</h4>415</h4>

363 416 

364Beban kerja dalam keamanan ofensif atau biologi, termasuk penetration testing, latihan Capture the Flag (CTF), dan basis kode yang berdekatan dengan biologi, memicu fallback sering, sering pada permintaan pertama. Untuk pekerjaan biologi substansial, harapkan hampir semua permintaan untuk dialihkan.417Beban kerja dalam keamanan ofensif atau biologi, termasuk penetration testing, latihan Capture the Flag (CTF), dan basis kode yang berdekatan dengan biologi, memicu fallback sering, sering pada permintaan pertama. Untuk pekerjaan biologi substansial, harapkan hampir semua permintaan untuk dialihkan.


366Ini adalah routing yang diharapkan untuk domain ini, bukan bendera akun. Jika organisasi Anda membutuhkan kemampuan kelas Fable untuk pekerjaan ini, tanyakan kepada tim akun Anthropic Anda tentang program akses terpercaya.419Ini adalah routing yang diharapkan untuk domain ini, bukan bendera akun. Jika organisasi Anda membutuhkan kemampuan kelas Fable untuk pekerjaan ini, tanyakan kepada tim akun Anthropic Anda tentang program akses terpercaya.

367 420 

368<h3 id="adjust-effort-level">421<h3 id="adjust-effort-level">

369 Adjust effort level422 Sesuaikan tingkat usaha

370</h3>423</h3>

371 424 

372[Effort levels](https://platform.claude.com/docs/en/build-with-claude/effort) mengontrol penalaran adaptif, yang memungkinkan model memutuskan apakah dan berapa banyak untuk berpikir pada setiap langkah berdasarkan kompleksitas tugas. Usaha lebih rendah lebih cepat dan lebih murah untuk tugas-tugas langsung, sementara usaha lebih tinggi memberikan penalaran lebih dalam untuk masalah kompleks.425[Tingkat usaha](https://platform.claude.com/docs/en/build-with-claude/effort) mengontrol penalaran adaptif, yang memungkinkan model memutuskan apakah dan berapa banyak untuk berpikir pada setiap langkah berdasarkan kompleksitas tugas. Usaha lebih rendah lebih cepat dan lebih murah untuk tugas-tugas langsung, sementara usaha lebih tinggi memberikan penalaran lebih dalam untuk masalah kompleks.

373 426 

374Tingkat usaha yang tersedia tergantung pada model. Model yang tidak tercantum di sini tidak mendukung usaha:427Tingkat usaha yang tersedia tergantung pada model. Model yang tidak tercantum di sini tidak mendukung usaha:

375 428 


379| Sonnet 5, Opus 4.8, dan Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |432| Sonnet 5, Opus 4.8, dan Opus 4.7 | `low`, `medium`, `high`, `xhigh`, `max` |

380| Opus 4.6 dan Sonnet 4.6 | `low`, `medium`, `high`, `max` |433| Opus 4.6 dan Sonnet 4.6 | `low`, `medium`, `high`, `max` |

381 434 

382Jika 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.435Jika 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. Organisasi Anda juga dapat membatasi tingkat mana yang tersedia untuk model; lihat [Batas usaha organisasi](#organization-effort-limits).

383 436 

384Usaha default adalah `high` pada Fable 5, Sonnet 5, Opus 4.8, Opus 4.6, dan Sonnet 4.6, dan `xhigh` pada Opus 4.7.437Usaha default adalah `high` pada Fable 5, Sonnet 5, Opus 4.8, Opus 4.6, dan Sonnet 4.6, dan `xhigh` pada Opus 4.7.

385 438 


390Menu `/effort` juga menawarkan `ultracode`. Ultracode adalah pengaturan Claude Code daripada tingkat usaha model: ia mengirim `xhigh` ke model dan selain itu memiliki Claude mengorkestra [alur kerja dinamis](/id/workflows) untuk tugas-tugas substansial. Ini berlaku untuk sesi saat ini saja. Atur melalui `/effort`, atau teruskan `"ultracode": true` melalui `--settings` atau permintaan kontrol Agent SDK. Ini bukan bagian dari pengaturan `effortLevel`, flag `--effort`, atau `CLAUDE_CODE_EFFORT_LEVEL`.443Menu `/effort` juga menawarkan `ultracode`. Ultracode adalah pengaturan Claude Code daripada tingkat usaha model: ia mengirim `xhigh` ke model dan selain itu memiliki Claude mengorkestra [alur kerja dinamis](/id/workflows) untuk tugas-tugas substansial. Ini berlaku untuk sesi saat ini saja. Atur melalui `/effort`, atau teruskan `"ultracode": true` melalui `--settings` atau permintaan kontrol Agent SDK. Ini bukan bagian dari pengaturan `effortLevel`, flag `--effort`, atau `CLAUDE_CODE_EFFORT_LEVEL`.

391 444 

392<h4 id="choose-an-effort-level">445<h4 id="choose-an-effort-level">

393 Choose an effort level446 Pilih tingkat usaha

394</h4>447</h4>

395 448 

396Setiap tingkat menukar pengeluaran token terhadap kemampuan. Default cocok untuk sebagian besar tugas coding; sesuaikan ketika Anda menginginkan keseimbangan yang berbeda.449Setiap tingkat menukar pengeluaran token terhadap kemampuan. Default cocok untuk sebagian besar tugas coding; sesuaikan ketika Anda menginginkan keseimbangan yang berbeda.

397 450 

398| Level | When to use it |451| Level | Kapan menggunakannya |

399| :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |452| :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

400| `low` | Cadangkan untuk tugas pendek, terbatas, sensitif latensi yang tidak sensitif intelijen |453| `low` | Cadangkan untuk tugas pendek, terbatas, sensitif latensi yang tidak sensitif intelijen |

401| `medium` | Mengurangi penggunaan token untuk pekerjaan sensitif biaya yang dapat menukar beberapa intelijen |454| `medium` | Mengurangi penggunaan token untuk pekerjaan sensitif biaya yang dapat menukar beberapa intelijen |


407Skala usaha dikalibrasi per model, jadi nama tingkat yang sama tidak mewakili nilai yang sama di seluruh model.460Skala usaha dikalibrasi per model, jadi nama tingkat yang sama tidak mewakili nilai yang sama di seluruh model.

408 461 

409<h4 id="use-ultrathink-for-one-off-deep-reasoning">462<h4 id="use-ultrathink-for-one-off-deep-reasoning">

410 Use ultrathink for one-off deep reasoning463 Gunakan ultrathink untuk penalaran mendalam sekali jalan

411</h4>464</h4>

412 465 

413Sertakan `ultrathink` di mana saja dalam prompt Anda untuk meminta penalaran lebih dalam pada giliran itu tanpa mengubah pengaturan usaha sesi Anda. Claude Code mengenali kata kunci dan menambahkan instruksi dalam konteks. Tingkat usaha yang dikirim ke API tidak berubah. Frasa lain seperti "think", "think hard", dan "think more" dilewatkan sebagai teks prompt biasa dan tidak dikenali sebagai kata kunci.466Sertakan `ultrathink` di mana saja dalam prompt Anda untuk meminta penalaran lebih dalam pada giliran itu tanpa mengubah pengaturan usaha sesi Anda. Claude Code mengenali kata kunci dan menambahkan instruksi dalam konteks. Tingkat usaha yang dikirim ke API tidak berubah. Frasa lain seperti "think", "think hard", dan "think more" dilewatkan sebagai teks prompt biasa dan tidak dikenali sebagai kata kunci.

414 467 

415<h4 id="set-the-effort-level">468<h4 id="set-the-effort-level">

416 Set the effort level469 Atur tingkat usaha

417</h4>470</h4>

418 471 

419Anda dapat mengubah usaha melalui salah satu dari berikut ini:472Anda dapat mengubah usaha melalui salah satu dari berikut ini:


430Slider usaha muncul dalam `/model` ketika model yang didukung dipilih. Tingkat usaha saat ini juga ditampilkan di sebelah logo dan spinner, misalnya "with low effort", sehingga Anda dapat mengkonfirmasi pengaturan mana yang aktif tanpa membuka `/model`.483Slider usaha muncul dalam `/model` ketika model yang didukung dipilih. Tingkat usaha saat ini juga ditampilkan di sebelah logo dan spinner, misalnya "with low effort", sehingga Anda dapat mengkonfirmasi pengaturan mana yang aktif tanpa membuka `/model`.

431 484 

432<h4 id="adaptive-reasoning-and-fixed-thinking-budgets">485<h4 id="adaptive-reasoning-and-fixed-thinking-budgets">

433 Adaptive reasoning and fixed thinking budgets486 Penalaran adaptif dan anggaran pemikiran tetap

434</h4>487</h4>

435 488 

436Penalaran 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.489Penalaran 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.


440Di 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).493Di 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).

441 494 

442<h3 id="extended-thinking">495<h3 id="extended-thinking">

443 Extended thinking496 Pemikiran diperluas

444</h3>497</h3>

445 498 

446Pemikiran diperluas adalah penalaran yang Claude keluarkan sebelum merespons. Pada model yang mendukung [penalaran adaptif](#adjust-effort-level), tingkat usaha adalah kontrol utama untuk berapa banyak pemikiran yang terjadi; pengaturan di bawah ini menghidupkan atau mematikan pemikiran dan mengontrol cara tampilannya.499Pemikiran diperluas adalah penalaran yang Claude keluarkan sebelum merespons. Pada model yang mendukung [penalaran adaptif](#adjust-effort-level), tingkat usaha adalah kontrol utama untuk berapa banyak pemikiran yang terjadi; pengaturan di bawah ini menghidupkan atau mematikan pemikiran dan mengontrol cara tampilannya.

447 500 

448| Control | How to set it |501| Control | Cara menetapkannya |

449| :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |502| :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

450| Toggle untuk sesi saat ini | Tekan `Option+T` di macOS atau `Alt+T` di Windows dan Linux |503| Toggle untuk sesi saat ini | Tekan `Option+T` di macOS atau `Alt+T` di Windows dan Linux |

451| Atur default global | Jalankan `/config` dan toggle thinking mode. Disimpan sebagai `alwaysThinkingEnabled` dalam `~/.claude/settings.json` |504| Atur default global | Jalankan `/config` dan toggle thinking mode. Disimpan sebagai `alwaysThinkingEnabled` dalam `~/.claude/settings.json` |


456Output pemikiran dilipat secara default. Tekan `Ctrl+O` untuk toggle verbose mode dan lihat penalaran sebagai teks miring abu-abu. Sesi interaktif pada Anthropic API menerima blok pemikiran yang diredaksi secara default, jadi atur `showThinkingSummaries: true` dalam [pengaturan](/id/settings) jika Anda menginginkan ringkasan lengkap yang tersedia saat Anda memperluas. Anda dikenakan biaya untuk semua token pemikiran yang dihasilkan, bahkan ketika dilipat atau diredaksi.509Output pemikiran dilipat secara default. Tekan `Ctrl+O` untuk toggle verbose mode dan lihat penalaran sebagai teks miring abu-abu. Sesi interaktif pada Anthropic API menerima blok pemikiran yang diredaksi secara default, jadi atur `showThinkingSummaries: true` dalam [pengaturan](/id/settings) jika Anda menginginkan ringkasan lengkap yang tersedia saat Anda memperluas. Anda dikenakan biaya untuk semua token pemikiran yang dihasilkan, bahkan ketika dilipat atau diredaksi.

457 510 

458<h3 id="extended-context">511<h3 id="extended-context">

459 Extended context512 Konteks diperluas

460</h3>513</h3>

461 514 

462Fable 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.515Fable 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.


473 526 

474Jendela konteks 1M menggunakan harga model standar tanpa premium untuk token di luar 200K. Untuk paket di mana konteks diperluas disertakan dengan langganan Anda, penggunaan tetap tercakup oleh langganan Anda. Untuk paket yang mengakses konteks diperluas melalui penggunaan tambahan, token ditagihkan ke penggunaan tambahan.527Jendela konteks 1M menggunakan harga model standar tanpa premium untuk token di luar 200K. Untuk paket di mana konteks diperluas disertakan dengan langganan Anda, penggunaan tetap tercakup oleh langganan Anda. Untuk paket yang mengakses konteks diperluas melalui penggunaan tambahan, token ditagihkan ke penggunaan tambahan.

475 528 

476Jika akun Anda mendukung konteks 1M, opsi muncul di pemilih model (`/model`) dalam versi terbaru Claude Code. Jika Anda tidak melihatnya, coba mulai ulang sesi Anda.529Jika akun Anda mendukung konteks 1M, opsi muncul di pemilih `/model` dalam versi terbaru Claude Code. Jika Anda tidak melihatnya, coba mulai ulang sesi Anda.

477 530 

478Anda juga dapat menggunakan akhiran `[1m]` dengan alias model atau nama model lengkap:531Anda juga dapat menggunakan akhiran `[1m]` dengan alias model atau nama model lengkap:

479 532 


494 547 

495Dua konfigurasi menganggarkan jendela pada 200K sebagai gantinya dan melakukan auto-compact pada batas itu:548Dua konfigurasi menganggarkan jendela pada 200K sebagai gantinya dan melakukan auto-compact pada batas itu:

496 549 

497* **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]`.550* **Gateway LLM**: 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]`.

498* **`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`**: memperlakukan sesi Sonnet 5 sebagai memiliki jendela 200K, untuk penyebaran yang perlu membatasi konteks.551* **`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`**: memperlakukan sesi Sonnet 5 sebagai memiliki jendela 200K, untuk penyebaran yang perlu membatasi konteks.

499 552 

500<h2 id="checking-your-current-model">553<h2 id="checking-your-current-model">

Details

1186 1186 

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

1188 1188 

1189Atribut `attempt` pada acara mencatat berapa banyak upaya yang dilakukan secara total. `CLAUDE_CODE_MAX_RETRIES` default ke 10 dan dibatasi pada 15. Ketika permintaan menghabiskan semua retry pada kesalahan transien, `attempt` sama dengan satu lebih dari batas efektif tersebut: 11 secara default, dan tidak pernah lebih dari 16. Nilai yang lebih rendah menunjukkan kesalahan yang tidak dapat dicoba ulang seperti respons `400`.1189Atribut `attempt` pada acara mencatat berapa banyak upaya yang dilakukan secara total. `CLAUDE_CODE_MAX_RETRIES` default ke 10 dan dibatasi pada 15; {/* min-version: 2.1.199 */}sejak v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` menaikkan default dan menghapus batas. Ketika permintaan menghabiskan semua retry pada kesalahan transien, `attempt` sama dengan satu lebih dari batas efektif tersebut: 11 secara default, dan tidak pernah lebih dari 16 kecuali watchdog diatur. Nilai yang lebih rendah menunjukkan kesalahan yang tidak dapat dicoba ulang seperti respons `400`.

1190 1190 

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

1192 1192 

Details

237* Force push, atau push langsung ke `main`237* Force push, atau push langsung ke `main`

238* {/* min-version: 2.1.182 */}`git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop`, atau `git stash clear`, yang pengklasifikasi asumsikan akan membuang perubahan yang belum dikomit238* {/* min-version: 2.1.182 */}`git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop`, atau `git stash clear`, yang pengklasifikasi asumsikan akan membuang perubahan yang belum dikomit

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* {/* min-version: 2.1.198 */}}Dari v2.1.198, `git commit --amend` ketika commit di HEAD sudah didorong. Reword hanya pesan tidak diblokir: `--amend -m` tanpa apa pun yang baru dipentaskan, pada commit yang dibuat Claude selama sesi ini

240* `terraform destroy`, `pulumi destroy`, `cdk destroy`, atau `terragrunt destroy`, dan menerapkan rencana yang menghancurkan sumber daya241* `terraform destroy`, `pulumi destroy`, `cdk destroy`, atau `terragrunt destroy`, dan menerapkan rencana yang menghancurkan sumber daya

241 242 

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.243Claude 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.


251* Shell interaktif atau port-forward ke target jarak jauh sensitif252* Shell interaktif atau port-forward ke target jarak jauh sensitif

252* Membuka terowongan atau shell terbalik yang membuat layanan lokal dapat dijangkau dari internet publik253* Membuka terowongan atau shell terbalik yang membuat layanan lokal dapat dijangkau dari internet publik

253* Mencetak kredensial atau token langsung ke transkrip atau file254* Mencetak kredensial atau token langsung ke transkrip atau file

254* Mengakses lokasi PII atau data yang diatur, atau menyalin data keluar dari satu255* Mengakses lokasi yang tercantum sebagai lokasi data sensitif di [lingkungan](/id/auto-mode-config#define-trusted-infrastructure) Anda, atau menyalin data keluar dari satu. {/* min-version: 2.1.198 */}Mulai dari v2.1.198 ini juga memblokir pengiriman data dari satu ke audiens yang entri kecualikan

255* Merutekan instalasi paket di sekitar registri paket internal Anda ke registri publik256* Merutekan instalasi paket di sekitar registri paket internal Anda ke registri publik. {/* min-version: 2.1.198 */}Mulai dari v2.1.198, ini juga berlaku ketika Anda telah memberi tahu Claude bahwa registri internal atau mirror ada dalam percakapan, bukan hanya ketika satu tercantum di lingkungan Anda

256* Menjalankan perintah dengan bendera yang melucuti penjaga keselamatan, seperti `--insecure`257* Menjalankan perintah dengan bendera yang melucuti penjaga keselamatan, seperti `--insecure`

258* Meluncurkan loop agen otonom yang berjalan tanpa persetujuan manusia atau sandbox, seperti yang dimulai dengan `--dangerously-skip-permissions` atau `--no-sandbox`. {/* min-version: 2.1.198 */}Mulai dari v2.1.198 ini juga mencakup menjalankan agen pihak ketiga atau harness eval dengan isolasi dan persetujuan per-tindakan dinonaktifkan, seperti runner yang dimulai dengan `--yes-always`

257* Tindakan browser [Claude di Chrome](/id/chrome) yang dapat mengirim konten halaman, cookie, atau kredensial off-origin259* Tindakan browser [Claude di Chrome](/id/chrome) yang dapat mengirim konten halaman, cookie, atau kredensial off-origin

258 260 

261Claude Code v2.1.198 dan lebih baru juga memblokir ini secara default:

262 

263* Menghapus file di `/tmp`, `$TMPDIR`, atau direktori scratch atau cache bersama lainnya dengan wildcard, glob, atau filter usia daripada dengan jalur bernama spesifik

264* Termasuk detail sensitif dalam konten yang dikirim, diunggah, dipublikasikan, atau ditulis ke orang lain atau sistem bersama, ketika pesan Anda sendiri tidak mengotorisasi detail tersebut untuk penerima itu

265* Mengirim keystroke ke pane tmux Claude Code sendiri untuk menjalankan antarmukanya sendiri, yang pengklasifikasi perlakukan sebagai Claude mengubah izin atau pengawasannya sendiri

266 

259**Diizinkan secara default**:267**Diizinkan secara default**:

260 268 

261* Operasi file lokal di direktori kerja Anda269* Operasi file lokal di direktori kerja Anda


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 sama280* 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 nama281* Navigasi [Claude di Chrome](/id/chrome) ke domain internal terpercaya, localhost, atau URL yang Anda beri nama

274 282 

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).283Permintaan akses jaringan sandbox dirutekan melalui pengklasifikasi daripada diizinkan secara default. {/* min-version: 2.1.198 */}Mulai dari v2.1.198, pengklasifikasi menggunakan kembali vonis untuk host dan port jaringan daripada menjalankan ulang pada setiap koneksi:

284 

285* Izin digunakan kembali sampai konten baru memasuki percakapan, di mana titik host itu diperiksa lagi

286* Di CLI interaktif, penolakan dijatuhkan ketika giliran berakhir

287* Di [mode non-interaktif](/id/headless) dan sesi Agent SDK tidak ada batas giliran, jadi penolakan digunakan kembali untuk sisa jalannya

288* Mengubah mode izin atau aturan Anda menjatuhkan semua vonis yang di-cache

289 

290Jalankan `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).

276 291 

277<h3 id="boundaries-you-state-in-conversation">292<h3 id="boundaries-you-state-in-conversation">

278 Batas yang Anda nyatakan dalam percakapan293 Batas yang Anda nyatakan dalam percakapan


300 315 

301 1. Tindakan yang cocok dengan [aturan allow atau deny Anda](/id/permissions#manage-permissions) diselesaikan segera, kecuali penulisan ke [jalur yang dilindungi](#protected-paths), yang dirutekan ke pengklasifikasi bahkan ketika aturan allow cocok316 1. Tindakan yang cocok dengan [aturan allow atau deny Anda](/id/permissions#manage-permissions) diselesaikan segera, kecuali penulisan ke [jalur yang dilindungi](#protected-paths), yang dirutekan ke pengklasifikasi bahkan ketika aturan allow cocok

302 2. Tindakan read-only dan pengeditan file di direktori kerja Anda disetujui otomatis, kecuali penulisan ke [jalur yang dilindungi](#protected-paths)317 2. Tindakan read-only dan pengeditan file di direktori kerja Anda disetujui otomatis, kecuali penulisan ke [jalur yang dilindungi](#protected-paths)

303 3. Semuanya yang lain pergi ke pengklasifikasi318 3. Semuanya yang lain pergi ke pengklasifikasi. {/* min-version: 2.1.199 */}Mulai dari v2.1.199, alat MCP yang ditandai dengan [`_meta["anthropic/requiresUserInteraction"]`](/id/mcp#require-approval-for-a-specific-tool) melewati pengklasifikasi dan meminta Anda secara langsung, jadi langkah persetujuan tidak pernah disetujui otomatis atas nama penulis alat

304 4. Jika pengklasifikasi memblokir, Claude menerima alasan dan mencoba alternatif319 4. Jika pengklasifikasi memblokir, Claude menerima alasan dan mencoba alternatif

305 320 

306 Saat memasuki mode otomatis, aturan allow luas yang memberikan eksekusi kode arbitrer dijatuhkan:321 Saat memasuki mode otomatis, aturan allow luas yang memberikan eksekusi kode arbitrer dijatuhkan:


326 </Accordion>341 </Accordion>

327 342 

328 <Accordion title="Biaya dan latensi">343 <Accordion title="Biaya dan latensi">

329 Pengklasifikasi berjalan pada model yang dikonfigurasi server yang independen dari pilihan `/model` Anda, jadi beralih model tidak mengubah ketersediaan pengklasifikasi. Panggilan pengklasifikasi dihitung terhadap penggunaan token Anda. Setiap pemeriksaan mengirim sebagian dari transkrip ditambah tindakan yang tertunda, menambahkan perjalanan bolak-balik sebelum eksekusi. Pembacaan dan pengeditan direktori kerja di luar jalur yang dilindungi melewati pengklasifikasi, jadi overhead terutama berasal dari perintah shell dan operasi jaringan.344 Pengklasifikasi berjalan pada model yang dikonfigurasi server yang independen dari pilihan `/model` Anda, jadi beralih model tidak mengubah ketersediaan pengklasifikasi. Panggilan pengklasifikasi dihitung terhadap penggunaan token Anda. Setiap pemeriksaan mengirim sebagian dari transkrip ditambah tindakan yang tertunda, menambahkan perjalanan bolak-balik sebelum eksekusi. Pembacaan dan pengeditan direktori kerja di luar jalur yang dilindungi melewati pengklasifikasi, jadi overhead terutama berasal dari perintah shell dan operasi jaringan. {/* min-version: 2.1.198 */}Mulai dari v2.1.198, vonis jaringan sandbox untuk host dan port digunakan kembali daripada diklasifikasi ulang pada setiap koneksi, jadi koneksi berulang ke host yang sama tidak masing-masing menambahkan pemeriksaan. [Apa yang diblokir pengklasifikasi secara default](#what-the-classifier-blocks-by-default) menjelaskan berapa lama izin dan penolakan berlangsung.

330 </Accordion>345 </Accordion>

331</AccordionGroup>346</AccordionGroup>

332 347 


334 Izinkan hanya alat yang telah disetujui sebelumnya dengan mode dontAsk349 Izinkan hanya alat yang telah disetujui sebelumnya dengan mode dontAsk

335</h2>350</h2>

336 351 

337Mode `dontAsk` auto-deny setiap panggilan alat yang akan meminta sebaliknya. Hanya tindakan yang cocok dengan aturan `permissions.allow` Anda dan [perintah Bash read-only](/id/permissions#read-only-commands) yang dapat dijalankan; aturan [`ask` eksplisit](/id/permissions#manage-permissions) ditolak daripada meminta. Ini membuat mode sepenuhnya non-interaktif untuk pipeline CI atau lingkungan terbatas di mana Anda pre-define dengan tepat apa yang Claude boleh lakukan. Sesi cloud di [Claude Code di web](/id/claude-code-on-the-web) mengabaikan `defaultMode: "dontAsk"`; lihat [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) untuk detail.352Mode `dontAsk` auto-deny setiap panggilan alat yang akan meminta sebaliknya. Bilah status menunjukkan `⏵⏵ don't ask on` saat mode ini aktif. Hanya tindakan yang cocok dengan aturan `permissions.allow` Anda dan [perintah Bash read-only](/id/permissions#read-only-commands) yang dapat dijalankan; aturan [`ask` eksplisit](/id/permissions#manage-permissions) ditolak daripada meminta. {/* min-version: 2.1.199 */}Mulai dari v2.1.199, alat MCP yang ditandai dengan [`_meta["anthropic/requiresUserInteraction"]`](/id/mcp#require-approval-for-a-specific-tool) juga ditolak dalam mode ini bahkan ketika aturan allow cocok dengannya, karena kartu persetujuannya memerlukan jawaban yang tidak akan pernah dikumpulkan mode ini. Ini membuat mode sepenuhnya non-interaktif untuk pipeline CI atau lingkungan terbatas di mana Anda pre-define dengan tepat apa yang Claude boleh lakukan. Sesi cloud di [Claude Code di web](/id/claude-code-on-the-web) mengabaikan `defaultMode: "dontAsk"`; lihat [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) untuk detail.

338 353 

339Atur saat startup dengan flag:354Atur saat startup dengan flag:

340 355 


346 Lewati semua pemeriksaan dengan mode bypassPermissions361 Lewati semua pemeriksaan dengan mode bypassPermissions

347</h2>362</h2>

348 363 

349Mode `bypassPermissions` menonaktifkan prompt izin dan pemeriksaan keamanan sehingga panggilan alat dijalankan segera. Sejak v2.1.126 ini mencakup penulisan ke [jalur yang dilindungi](#protected-paths), yang versi sebelumnya masih meminta. Aturan [ask](/id/permissions#manage-permissions) yang eksplisit masih memaksa prompt dalam mode ini, dan penghapusan yang menargetkan akar sistem file atau direktori home, seperti `rm -rf /` dan `rm -rf ~`, masih meminta sebagai pemutus sirkuit terhadap kesalahan model. Hanya gunakan mode ini di lingkungan terisolasi seperti kontainer, VM, atau dev container tanpa akses internet, di mana Claude Code tidak dapat merusak sistem host Anda.364Mode `bypassPermissions` menonaktifkan prompt izin dan pemeriksaan keamanan sehingga panggilan alat dijalankan segera. Sejak v2.1.126 ini mencakup penulisan ke [jalur yang dilindungi](#protected-paths), yang versi sebelumnya masih meminta. Aturan [ask](/id/permissions#manage-permissions) yang eksplisit masih memaksa prompt dalam mode ini, dan penghapusan yang menargetkan akar sistem file atau direktori home, seperti `rm -rf /` dan `rm -rf ~`, masih meminta sebagai pemutus sirkuit terhadap kesalahan model. {/* min-version: 2.1.199 */}Sejak v2.1.199, alat MCP yang ditandai dengan [`_meta["anthropic/requiresUserInteraction"]`](/id/mcp#require-approval-for-a-specific-tool) juga masih meminta. Hanya gunakan mode ini di lingkungan terisolasi seperti kontainer, VM, atau dev container tanpa akses internet, di mana Claude Code tidak dapat merusak sistem host Anda.

350 365 

351Anda tidak dapat memasukkan `bypassPermissions` dari sesi yang dimulai tanpa salah satu flag yang mengaktifkan; restart dengan salah satu untuk mengaktifkannya:366Anda tidak dapat memasukkan `bypassPermissions` dari sesi yang dimulai tanpa salah satu flag yang mengaktifkan; restart dengan salah satu untuk mengaktifkannya:

352 367 

permissions.md +14 −3

Details

272Aturan 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:

273 273 

274| Pola | Arti | Contoh | Cocok |274| Pola | Arti | Contoh | Cocok |

275| -------------------- | ----------------------------------------- | -------------------------------- | ------------------------------ |275| -------------------- | ----------------------------------------- | -------------------------------- | ---------------------------------------------------- |

276| `//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/**` |

277| `~/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` |

278| `/path` | Jalur relatif terhadap akar proyek | `Edit(/src/**/*.ts)` | `<project root>/src/**/*.ts` |278| `/path` | Jalur relatif terhadap sumber pengaturan | `Edit(/src/**/*.ts)` | `<project root>/src/**/*.ts` dalam pengaturan proyek |

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

280 280 

281<Warning>281<Warning>

282 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. Garis miring tunggal terkemuka berlabuh di sumber pengaturan, bukan akar sistem file. Gunakan `//Users/alice/file` untuk jalur absolut.

283</Warning>283</Warning>

284 284 

285Pola `/path` berlabuh di direktori yang terkait dengan file pengaturan yang mendefinisikannya, jadi aturan yang sama cocok dengan lokasi berbeda tergantung di mana Anda menempatkannya:

286 

287| Aturan didefinisikan dalam | `/path` diselesaikan ke |

288| :------------------------------------------------------------ | :------------------------- |

289| Pengaturan proyek atau lokal, seperti `.claude/settings.json` | `<project root>/path` |

290| Pengaturan pengguna di `~/.claude/settings.json` | `~/.claude/path` |

291| File yang dilewatkan dengan `--settings <file>` | `<directory of file>/path` |

292| Flag CLI, `/permissions`, atau aturan sesi | `<original cwd>/path` |

293 

294Aturan deny seperti `Read(/secrets/**)` dalam pengaturan pengguna memblokir `~/.claude/secrets/**`, bukan direktori `secrets` dalam proyek Anda. Untuk menulis aturan dalam pengaturan pengguna yang berlaku di dalam setiap proyek, gunakan jalur absolut `//` atau jalur relatif home `~/` sebagai gantinya.

295 

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`.296Di 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`.

286 297 

287Contoh:298Contoh:

plugins.md +2 −2

Details

352Saat Anda membuat perubahan pada plugin Anda, jalankan `/reload-plugins` untuk mengambil pembaruan tanpa memulai ulang. Ini memuat ulang plugins, skills, agents, hooks, plugin MCP servers, dan plugin LSP servers. Uji komponen plugin Anda:352Saat Anda membuat perubahan pada plugin Anda, jalankan `/reload-plugins` untuk mengambil pembaruan tanpa memulai ulang. Ini memuat ulang plugins, skills, agents, hooks, plugin MCP servers, dan plugin LSP servers. Uji komponen plugin Anda:

353 353 

354* Coba skills Anda dengan `/plugin-name:skill-name`354* Coba skills Anda dengan `/plugin-name:skill-name`

355* Periksa bahwa agents muncul di `/agents`355* Periksa bahwa agents muncul di `/context` di bawah Custom Agents, atau @-mention salah satu dengan nama scoped-nya

356* Verifikasi hooks bekerja seperti yang diharapkan356* Verifikasi hooks bekerja seperti yang diharapkan

357 357 

358<Tip>358<Tip>


502 claude --plugin-dir ./my-plugin502 claude --plugin-dir ./my-plugin

503 ```503 ```

504 504 

505 Uji setiap komponen: jalankan commands Anda, periksa agents muncul di `/agents`, dan verifikasi hooks dipicu dengan benar.505 Uji setiap komponen: jalankan commands Anda, periksa agents muncul di `/context`, dan verifikasi hooks dipicu dengan benar.

506 </Step>506 </Step>

507</Steps>507</Steps>

508 508 

Details

79 79 

80**Titik integrasi**:80**Titik integrasi**:

81 81 

82* Agents muncul di antarmuka `/agents`82* Agents muncul di typeahead [@-mention](/id/sub-agents#invoke-subagents-explicitly) dengan nama yang diberi scope, seperti `my-plugin:code-reviewer`, setelah plugin diaktifkan

83* Claude dapat memanggil agents secara otomatis berdasarkan konteks tugas83* Claude dapat memanggil agents secara otomatis berdasarkan konteks tugas

84* Agents dapat dipanggil secara manual oleh pengguna84* Agents dapat dipanggil secara manual oleh pengguna

85* Plugin agents bekerja bersama agents Claude bawaan85* Plugin agents bekerja bersama agents Claude bawaan

sandboxing.md +43 −5

Details

198 Lindungi kredensial198 Lindungi kredensial

199</h3>199</h3>

200 200 

201Pengaturan `sandbox.credentials` mendeklarasikan file kredensial dan variabel lingkungan yang tidak boleh diakses oleh perintah sandboxed. Jalur file yang terdaftar ditolak untuk pembacaan di dalam sandbox, blok yang sama yang diterapkan `filesystem.denyRead`, dan variabel lingkungan yang terdaftar dihapus sebelum setiap perintah sandboxed berjalan. Blok `credentials` khusus menjaga aturan kredensial dikelompokkan dengan penghapusan variabel lingkungan dan terpisah dari aturan filesystem umum. Memerlukan Claude Code v2.1.187 atau lebih baru.201Pengaturan `sandbox.credentials` mendeklarasikan file kredensial dan variabel lingkungan yang harus dilindungi dari perintah sandboxed. Setiap entri memberi nama jalur file atau variabel lingkungan dan `mode`. Blok `credentials` khusus menjaga aturan kredensial dikelompokkan bersama dan terpisah dari aturan filesystem umum. Memerlukan Claude Code v2.1.187 atau lebih baru.

202 

203Untuk entri dengan `"mode": "deny"`, jalur file ditolak untuk pembacaan di dalam sandbox, pembatasan yang sama yang diterapkan `filesystem.denyRead`, dan variabel lingkungan tidak diatur sebelum setiap perintah sandboxed berjalan.

202 204 

203Contoh di bawah memblokir pembacaan file kredensial AWS dan direktori SSH serta menghapus `GITHUB_TOKEN` dan `NPM_TOKEN` dari lingkungan perintah sandboxed:205Contoh di bawah memblokir pembacaan file kredensial AWS dan direktori SSH serta menghapus `GITHUB_TOKEN` dan `NPM_TOKEN` dari lingkungan perintah sandboxed:

204 206 


220}222}

221```223```

222 224 

223Setiap entri membawa `"mode": "deny"`, yang merupakan satu-satunya nilai yang didukung. Bidang `mode` eksplisit menjaga skema kompatibel ke depan dengan mode masa depan. Jalur file mengikuti [aturan awalan](/id/settings#sandbox-path-prefixes) yang sama dengan pengaturan `sandbox.filesystem.*`, dan entri dari setiap [settings scope](/id/settings#settings-precedence) digabungkan. Karena satu-satunya mode adalah `deny`, scope apa pun dapat menambahkan pembatasan tetapi tidak ada yang dapat menghapusnya.225Entri file hanya mendukung `"mode": "deny"`. Entri variabel lingkungan juga menerima `"mode": "mask"`, dijelaskan di bawah.

226 

227Jalur file mengikuti [aturan awalan](/id/settings#sandbox-path-prefixes) yang sama dengan pengaturan `sandbox.filesystem.*`, dan entri `deny` dari setiap [settings scope](/id/settings#settings-precedence) digabungkan. Entri `deny` hanya pernah mempersempit akses, jadi scope apa pun dapat menambahkan satu, tetapi tidak ada scope yang dapat menghapus satu yang ditambahkan scope lain.

224 228 

225Tidak ada daftar penolakan kredensial bawaan, jadi hanya file dan variabel yang Anda daftarkan yang dibatasi. Pengaturan ini mempengaruhi perintah Bash sandboxed saja. Untuk menghapus kredensial Anthropic dan penyedia cloud dari semua subprocess terlepas dari sandboxing, atur [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/id/env-vars).229Tidak ada daftar penolakan kredensial bawaan, jadi hanya file dan variabel yang Anda daftarkan yang dibatasi. Pengaturan ini mempengaruhi perintah Bash sandboxed saja. Untuk menghapus kredensial Anthropic dan penyedia cloud dari semua subprocess terlepas dari sandboxing, atur [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/id/env-vars).

226 230 

231<h4 id="mask-environment-variables">

232 Topeng variabel lingkungan

233</h4>

234 

235`"mode": "mask"` melindungi kredensial sambil membuat alat yang mengotentikasi dengannya tetap berfungsi. `deny` menghapus variabel sepenuhnya, yang juga merusak alat yang membutuhkannya, seperti `gh` atau `npm`. Memerlukan Claude Code v2.1.199 atau lebih baru.

236 

237Dengan `mask`, perintah sandboxed melihat nilai sentinel per-sesi sebagai gantinya dari yang asli. Ketika permintaan meninggalkan sandbox untuk salah satu `injectHosts` kredensial, [sandbox proxy](#network-isolation) mengganti sentinel dengan nilai asli. Perintah dan apa pun yang dicatat tidak pernah memegang kredensial asli, tetapi permintaannya tetap mengotentikasi.

238 

239Proxy mengganti kredensial di dalam konten permintaan, jadi harus melihatnya. Atur [`network.tlsTerminate`](/id/settings#sandbox-settings) sehingga proxy menghentikan HTTPS itu sendiri. Tanpa itu, masking gagal tertutup: perintah masih hanya melihat sentinel, tetapi sentinel mencapai server tidak berubah dan otentikasi gagal. Claude Code melaporkan kesalahan konfigurasi ini saat startup dan dalam `/doctor`.

240 

241Contoh di bawah topeng dua token. `GH_TOKEN` diganti hanya pada permintaan ke `api.github.com`, sementara `NPM_TOKEN` tidak memiliki `injectHosts` dan diganti pada permintaan ke setiap host dalam `network.allowedDomains`. Setiap entri `injectHosts` itu sendiri harus dicakup oleh `network.allowedDomains`.

242 

243```json theme={null}

244{

245 "sandbox": {

246 "enabled": true,

247 "network": {

248 "tlsTerminate": {},

249 "allowedDomains": ["*.github.com", "registry.npmjs.org"]

250 },

251 "credentials": {

252 "envVars": [

253 { "name": "GH_TOKEN", "mode": "mask", "injectHosts": ["api.github.com"] },

254 { "name": "NPM_TOKEN", "mode": "mask" }

255 ]

256 }

257 }

258}

259```

260 

261Tidak seperti `deny`, masking mengotorisasi proxy untuk mengirim kredensial asli Anda ke host yang terdaftar, jadi itu dihormati hanya dari pengaturan yang Anda atau administrator Anda kontrol: pengaturan pengguna, pengaturan terkelola, dan bendera CLI `--settings`. Entri `mask`, `network.tlsTerminate`, dan [`credentials.allowPlaintextInject`](/id/settings#sandbox-settings) dalam `.claude/settings.json` atau `.claude/settings.local.json` repositori diabaikan.

262 

263Ketika variabel yang sama terdaftar dengan `deny` dalam scope apa pun, `deny` mengambil prioritas.

264 

227<h2 id="how-sandboxing-works">265<h2 id="how-sandboxing-works">

228 Cara sandboxing bekerja266 Cara sandboxing bekerja

229</h2>267</h2>


254* **Cakupan komprehensif**: pembatasan berlaku untuk semua skrip, program, dan subprocess yang dihasilkan oleh perintah292* **Cakupan komprehensif**: pembatasan berlaku untuk semua skrip, program, dan subprocess yang dihasilkan oleh perintah

255 293 

256<Note>294<Note>

257 Proxy bawaan memberlakukan allowlist berdasarkan hostname yang diminta dan tidak menghentikan atau memeriksa lalu lintas TLS. Lihat [Security limitations](#security-limitations) untuk implikasi desain ini, dan [Custom proxy configuration](#custom-proxy-configuration) jika model ancaman Anda memerlukan inspeksi TLS.295 Proxy bawaan memberlakukan allowlist berdasarkan hostname yang diminta dan, secara default, tidak menghentikan atau memeriksa lalu lintas TLS. {/* min-version: 2.1.199 */}Pengaturan eksperimental [`network.tlsTerminate`](/id/settings#sandbox-settings), tersedia di Claude Code v2.1.199 dan yang lebih baru, membuat proxy bawaan menghentikan TLS itu sendiri, yang [`mask` credential entries](#protect-credentials) memerlukan. Lihat [Security limitations](#security-limitations) untuk implikasi default, dan [Custom proxy configuration](#custom-proxy-configuration) jika model ancaman Anda memerlukan inspeksi TLS.

258</Note>296</Note>

259 297 

260<h3 id="os-level-enforcement">298<h3 id="os-level-enforcement">


411 Keterbatasan keamanan449 Keterbatasan keamanan

412</h3>450</h3>

413 451 

414* **Penyaringan jaringan**: sistem penyaringan jaringan beroperasi dengan membatasi domain yang diizinkan untuk terhubung oleh proses. Proxy bawaan tidak menghentikan atau melakukan inspeksi TLS pada lalu lintas keluar, sehingga isi koneksi terenkripsi tidak diperiksa. Anda bertanggung jawab untuk memastikan bahwa hanya domain tepercaya yang diizinkan dalam kebijakan Anda.452* **Penyaringan jaringan**: sandbox membatasi domain mana yang dapat terhubung oleh proses. Secara default, proxy bawaan tidak menghentikan atau melakukan inspeksi TLS pada lalu lintas keluar, sehingga isi koneksi terenkripsi tidak diperiksa. Pengaturan eksperimental [`network.tlsTerminate`](/id/settings#sandbox-settings) menghentikan TLS di proxy untuk [substitusi kredensial `mask`](#protect-credentials) tetapi tidak menambahkan penyaringan konten. Anda bertanggung jawab untuk memastikan bahwa hanya domain tepercaya yang diizinkan dalam kebijakan Anda.

415 453 

416<Warning>454<Warning>

417 Mengizinkan domain luas seperti `github.com` dapat membuat jalur untuk eksfiltrasi data. Karena proxy membuat keputusan izin dari hostname yang disediakan klien tanpa memeriksa TLS, kode yang berjalan di dalam sandbox berpotensi dapat menggunakan [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) atau teknik serupa untuk menjangkau host di luar allowlist. Jika model ancaman Anda memerlukan jaminan yang lebih kuat, konfigurasikan [custom proxy](#custom-proxy-configuration) yang menghentikan TLS dan memeriksa lalu lintas, dan instal sertifikat CA-nya di dalam sandbox. Isolasi jaringan yang lebih kuat dan sadar TLS adalah area pengembangan aktif.455 Mengizinkan domain luas seperti `github.com` dapat membuat jalur untuk eksfiltrasi data. Karena proxy membuat keputusan izin dari hostname yang disediakan klien tanpa memeriksa TLS, kode yang berjalan di dalam sandbox berpotensi dapat menggunakan [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) atau teknik serupa untuk menjangkau host di luar allowlist. Jika model ancaman Anda memerlukan jaminan yang lebih kuat, konfigurasikan [custom proxy](#custom-proxy-configuration) yang menghentikan TLS dan memeriksa lalu lintas, dan instal sertifikat CA-nya di dalam sandbox. Isolasi jaringan yang lebih kuat dan sadar TLS adalah area pengembangan aktif.


439 477 

440* **Alat file bawaan**: Read, Edit, dan Write menggunakan sistem izin secara langsung daripada berjalan melalui sandbox. Lihat [permissions](/id/permissions).478* **Alat file bawaan**: Read, Edit, dan Write menggunakan sistem izin secara langsung daripada berjalan melalui sandbox. Lihat [permissions](/id/permissions).

441* **Penggunaan komputer**: ketika Claude membuka aplikasi dan mengontrol layar Anda, itu berjalan di desktop aktual Anda daripada di lingkungan terisolasi. Prompt izin per-aplikasi membatasi setiap aplikasi. Lihat [computer use in the CLI](/id/computer-use) atau [computer use in Desktop](/id/desktop#let-claude-use-your-computer).479* **Penggunaan komputer**: ketika Claude membuka aplikasi dan mengontrol layar Anda, itu berjalan di desktop aktual Anda daripada di lingkungan terisolasi. Prompt izin per-aplikasi membatasi setiap aplikasi. Lihat [computer use in the CLI](/id/computer-use) atau [computer use in Desktop](/id/desktop#let-claude-use-your-computer).

442* **Variabel lingkungan**: perintah Bash sandboxed mewarisi lingkungan proses induk secara default, termasuk kredensial apa pun yang ditetapkan di sana. Gunakan [`sandbox.credentials`](#protect-credentials) untuk menghapus variabel tertentu untuk perintah sandboxed, atau atur [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/id/env-vars) untuk menghapus kredensial Anthropic dan penyedia cloud dari semua subprocess.480* **Variabel lingkungan**: perintah Bash sandboxed mewarisi lingkungan proses induk secara default, termasuk kredensial apa pun yang ditetapkan di sana. Gunakan [`sandbox.credentials`](#protect-credentials) untuk menghapus atau menutupi variabel tertentu untuk perintah sandboxed, atau atur [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/id/env-vars) untuk menghapus kredensial Anthropic dan penyedia cloud dari semua subprocess.

443* **Subagents**: [subagents](/id/sub-agents) berjalan dalam proses yang sama dengan sesi induk dan menggunakan konfigurasi sandbox yang sama. Perintah Bash di dalam subagent di-sandbox ketika sandboxing diaktifkan dalam sesi induk.481* **Subagents**: [subagents](/id/sub-agents) berjalan dalam proses yang sama dengan sesi induk dan menggunakan konfigurasi sandbox yang sama. Perintah Bash di dalam subagent di-sandbox ketika sandboxing diaktifkan dalam sesi induk.

444 482 

445<Warning>483<Warning>

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, `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.156Dalam tingkat terkelola, [`policyHelper`](/id/settings#compute-managed-settings-with-a-policy-helper) yang dikonfigurasi mendahului setiap sumber terkelola lainnya, termasuk pengaturan yang dikelola server: outputnya menjadi satu-satunya konfigurasi terkelola untuk jalankan.

157 

158Jika tidak, Claude Code menggunakan sumber pertama yang mengirimkan konfigurasi non-kosong. 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. Jika pengaturan yang dikelola server tidak mengirimkan apa pun, pengaturan yang dikelola endpoint berlaku.

159 

160Satu 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.

157 161 

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.162Jika 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 163 


171 175 

172**Peluncuran berikutnya dengan pengaturan yang di-cache:**176**Peluncuran berikutnya dengan pengaturan yang di-cache:**

173 177 

174* Pengaturan yang di-cache berlaku segera pada startup178* Pengaturan yang di-cache berlaku segera pada startup, kecuali untuk variabel lingkungan transport, routing, dan autentikasi yang dijelaskan di bawah

175* Claude Code mengambil pengaturan segar di latar belakang179* Claude Code mengambil pengaturan segar di latar belakang

176* Pengaturan yang di-cache bertahan melalui kegagalan jaringan180* Pengaturan yang di-cache bertahan melalui kegagalan jaringan. Variabel lingkungan yang ditahan tetap ditahan hingga pengambilan berhasil

181 

182Mulai dari v2.1.198, Claude Code menahan tiga kategori variabel dalam blok `env` yang di-cache hingga server mengonfirmasi payload untuk sesi. Ini mencegah nilai proxy yang di-cache, otoritas sertifikat, endpoint, atau kredensial dari mengarahkan ulang, mencegat, atau melakukan autentikasi ulang pengambilan pengaturan yang mengonfirmasi payload. Pengerasan hanya berlaku pada cache pengaturan yang diambil server: [pengaturan yang dikelola endpoint](/id/settings#settings-files) yang digunakan melalui MDM atau `managed-settings.json` tidak terpengaruh. Kategori yang ditahan adalah:

183 

184* Konfigurasi proxy dan TLS, seperti `HTTPS_PROXY`, `NODE_EXTRA_CA_CERTS`, dan variabel sertifikat klien mTLS `CLAUDE_CODE_CLIENT_CERT` dan `CLAUDE_CODE_CLIENT_KEY`

185* Routing API dan pemilihan penyedia, termasuk `ANTHROPIC_BASE_URL`, variabel pemilihan penyedia seperti `CLAUDE_CODE_USE_BEDROCK` dan `CLAUDE_CODE_USE_VERTEX`, dan URL endpoint penyedia seperti `ANTHROPIC_BEDROCK_BASE_URL`

186* Kredensial autentikasi, seperti `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, dan `CLAUDE_CODE_OAUTH_TOKEN`

187 

188Setiap kunci lain dalam blok `env` yang di-cache, seperti telemetri dan konfigurasi OpenTelemetry, berlaku pada startup seperti sebelumnya. Setelah pengambilan berhasil, variabel yang ditahan berlaku untuk sisa sesi.

189 

190Jika organisasi Anda memerlukan proxy untuk menjangkau `api.anthropic.com`, atur di lingkungan shell atau di [pengaturan pengguna](/id/settings#settings-files) daripada hanya di blok `env` terkelola. Peluncuran pertama tidak memiliki cache, jadi sumber-sumber tersebut sudah diperlukan untuk pengambilan awal.

177 191 

178Claude Code menerapkan pembaruan pengaturan secara otomatis tanpa restart, kecuali untuk pengaturan lanjutan seperti konfigurasi OpenTelemetry, yang memerlukan restart penuh untuk berlaku.192Claude Code menerapkan pembaruan pengaturan secara otomatis tanpa restart, kecuali untuk pengaturan lanjutan seperti konfigurasi OpenTelemetry, yang memerlukan restart penuh untuk berlaku.

179 193 


207}221}

208```222```

209 223 

210Anda juga dapat mengatur kunci ini dalam profil MDM yang [dikelola endpoint](/id/settings#settings-files) atau file `managed-settings.json` sistem untuk memberlakukan perilaku tertutup gagal pada peluncuran pertama, sebelum payload server apa pun telah dikirimkan. Mulai dari v2.1.191, flag ini adalah pengecualian terhadap [aturan prioritas](#settings-precedence) di atas: flag ini dihormati ketika diatur dalam sumber terkelola apa pun bahkan jika payload yang di-cache yang dikelola server juga ada, sehingga nilai yang dikirimkan MDM tidak diabaikan ketika pengaturan yang dikelola server ada. Pengambilan pengaturan juga mengirimkan header `Cache-Control: no-cache` sehingga proxy HTTP perantara tidak melayani respons yang sudah usang.224Anda juga dapat mengatur kunci ini dalam profil MDM yang [dikelola endpoint](/id/settings#settings-files) atau file `managed-settings.json` sistem untuk memberlakukan perilaku tertutup gagal pada peluncuran pertama, sebelum payload server apa pun telah dikirimkan. Mulai dari v2.1.191, flag ini adalah pengecualian terhadap [aturan prioritas](#settings-precedence) di atas: flag ini dihormati ketika diatur dalam sumber terkelola apa pun bahkan jika payload yang di-cache yang dikelola server juga ada, sehingga nilai yang dikirimkan MDM tidak diabaikan ketika pengaturan yang dikelola server ada.

225 

226Pengambilan pengaturan juga mengirimkan header `Cache-Control: no-cache` sehingga proxy HTTP perantara tidak melayani respons yang sudah usang.

211 227 

212Sebelum mengaktifkan pengaturan ini, pastikan kebijakan jaringan Anda memungkinkan konektivitas ke `api.anthropic.com`. Jika endpoint tersebut tidak dapat dijangkau, CLI keluar pada startup dan pengguna tidak dapat memulai Claude Code.228Sebelum mengaktifkan pengaturan ini, pastikan kebijakan jaringan Anda memungkinkan konektivitas ke `api.anthropic.com`. Jika endpoint tersebut tidak dapat dijangkau, CLI keluar pada startup dan pengguna tidak dapat memulai Claude Code.

213 229 


217 Dialog persetujuan keamanan233 Dialog persetujuan keamanan

218</h3>234</h3>

219 235 

220Pengaturan tertentu yang dapat menimbulkan risiko keamanan memerlukan persetujuan pengguna eksplisit sebelum diterapkan:236Pengaturan tertentu yang dapat menimbulkan risiko keamanan memerlukan persetujuan pengguna eksplisit sebelum Claude Code menerapkannya:

221 237 

222* **Pengaturan perintah shell**: pengaturan yang menjalankan perintah shell238* **Pengaturan perintah shell**: pengaturan yang menjalankan perintah shell

223* **Variabel lingkungan kustom**: variabel yang tidak ada dalam daftar aman yang diketahui239* **Variabel lingkungan kustom**: variabel yang tidak ada dalam daftar aman yang diketahui


234 Ketersediaan platform250 Ketersediaan platform

235</h2>251</h2>

236 252 

237Pengaturan yang dikelola server memerlukan koneksi langsung ke `api.anthropic.com`, dan pengiriman memerlukan sesi untuk melakukan autentikasi dengan login OAuth organisasi atau kunci API yang dikonfigurasi secara langsung: kunci yang dikembalikan oleh skrip [`apiKeyHelper`](/id/settings#available-settings) tidak memicu pengambilan pengaturan. Pengaturan yang dikelola server tidak tersedia saat menggunakan penyedia model pihak ketiga:253Pengaturan yang dikelola server memerlukan koneksi langsung ke `api.anthropic.com`, dan pengiriman memerlukan sesi untuk melakukan autentikasi dengan login OAuth organisasi atau kunci API yang dikonfigurasi secara langsung. Kunci yang dikembalikan oleh skrip [`apiKeyHelper`](/id/settings#available-settings) tidak memicu pengambilan pengaturan.

254 

255Pengaturan yang dikelola server tidak tersedia saat menggunakan penyedia model pihak ketiga:

238 256 

239* Amazon Bedrock257* Amazon Bedrock

240* Google Vertex AI258* Google Vertex AI


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.277Pengaturan 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.

260 278 

261| Skenario | Perilaku |279| Skenario | Perilaku |

262| :---------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |280| :---------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

263| Pengguna mengedit file pengaturan yang di-cache | File yang dirusak berlaku pada startup, tetapi pengaturan yang benar dipulihkan pada pengambilan server berikutnya |281| Pengguna mengedit file pengaturan yang di-cache | File yang dirusak berlaku pada startup, tetapi pengaturan yang benar dipulihkan pada pengambilan server berikutnya. Mulai dari v2.1.198, variabel lingkungan transport, API-routing, dan autentikasi dalam blok `env` adalah [ditahan sampai server mengonfirmasi payload](#fetch-and-caching-behavior) |

264| Pengguna menghapus file pengaturan yang di-cache | Perilaku peluncuran pertama terjadi: pengaturan mengambil secara asinkron dengan jendela yang tidak diterapkan singkat |282| 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 |283| 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 |284| Pengguna menjalankan versi Claude Code yang lebih lama | Versi yang mendahului pengaturan yang dikelola server tidak mengambil atau menerapkannya |

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) |285| API tidak tersedia | Pengaturan yang di-cache berlaku jika tersedia, jika tidak pengaturan terkelola tidak diterapkan sampai pengambilan yang berhasil berikutnya. Mulai dari v2.1.198, variabel lingkungan transport, API-routing, dan autentikasi dalam blok `env` yang di-cache adalah [ditahan pada kegagalan pengambilan](#fetch-and-caching-behavior); sisa cache masih berlaku. Dengan `forceRemoteSettingsRefresh: true`, CLI keluar sebagai gantinya melanjutkan, kecuali untuk [subperintah `claude auth`](#enforce-fail-closed-startup) |

268| Pengguna melakukan autentikasi dengan organisasi yang berbeda | Pengaturan tidak dikirimkan untuk akun di luar organisasi yang dikelola |286| Pengguna melakukan autentikasi dengan organisasi yang berbeda | Pengaturan tidak dikirimkan untuk akun di luar organisasi yang dikelola |

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 |287| 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 |288| Lalu lintas jaringan dicegat atau dialihkan | Validasi TLS yang dinonaktifkan atau lalu lintas yang dicegat dapat mengubah pengaturan yang diterima klien |

sessions.md +2 −0

Details

97/branch try-streaming-approach97/branch try-streaming-approach

98```98```

99 99 

100Jika Anda menghilangkan nama, Claude Code memberi nama cabang baru setelah prompt pertama dalam percakapan. Mulai dari v2.1.198 ini juga berlaku setelah [compaction](/id/how-claude-code-works#when-context-fills-up); versi sebelumnya kembali ke nama literal `Branched conversation` alih-alih melihat melampaui ringkasan compaction ke prompt pertama asli.

101 

100Dari baris perintah, gabungkan `--continue` atau `--resume` dengan `--fork-session`:102Dari baris perintah, gabungkan `--continue` atau `--resume` dengan `--fork-session`:

101 103 

102```bash theme={null}104```bash theme={null}

settings.md +17 −4

Details

398Konfigurasikan perilaku sandboxing lanjutan. Sandboxing mengisolasi perintah bash dari sistem file dan jaringan Anda. Lihat [Sandboxing](/id/sandboxing) untuk detail.398Konfigurasikan perilaku sandboxing lanjutan. Sandboxing mengisolasi perintah bash dari sistem file dan jaringan Anda. Lihat [Sandboxing](/id/sandboxing) untuk detail.

399 399 

400| Kunci | Deskripsi | Contoh |400| Kunci | Deskripsi | Contoh |

401| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------- |401| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

402| `enabled` | Aktifkan bash sandboxing (macOS, Linux, dan WSL2). Default: false | `true` |402| `enabled` | Aktifkan bash sandboxing (macOS, Linux, dan WSL2). Default: false | `true` |

403| `failIfUnavailable` | Keluar dengan kesalahan saat startup jika `sandbox.enabled` adalah true tetapi sandbox tidak dapat dimulai (dependensi yang hilang atau platform yang tidak didukung). Saat false (default), peringatan ditampilkan dan perintah berjalan tanpa sandbox. Dimaksudkan untuk penyebaran pengaturan yang dikelola yang memerlukan sandboxing sebagai gerbang keras | `true` |403| `failIfUnavailable` | Keluar dengan kesalahan saat startup jika `sandbox.enabled` adalah true tetapi sandbox tidak dapat dimulai (dependensi yang hilang atau platform yang tidak didukung). Saat false (default), peringatan ditampilkan dan perintah berjalan tanpa sandbox. Dimaksudkan untuk penyebaran pengaturan yang dikelola yang memerlukan sandboxing sebagai gerbang keras | `true` |

404| `autoAllowBashIfSandboxed` | Secara otomatis menyetujui perintah bash saat sandboxed. Default: true | `true` |404| `autoAllowBashIfSandboxed` | Secara otomatis menyetujui perintah bash saat sandboxed. Default: true | `true` |


409| `filesystem.denyRead` | Jalur di mana perintah sandboxed tidak dapat membaca. Array digabungkan di seluruh semua cakupan pengaturan. Juga digabungkan dengan jalur dari aturan izin `Read(...)` deny. | `["~/.aws/credentials"]` |409| `filesystem.denyRead` | Jalur di mana perintah sandboxed tidak dapat membaca. Array digabungkan di seluruh semua cakupan pengaturan. Juga digabungkan dengan jalur dari aturan izin `Read(...)` deny. | `["~/.aws/credentials"]` |

410| `filesystem.allowRead` | Jalur untuk mengizinkan kembali pembacaan dalam region `denyRead`. Memiliki prioritas atas `denyRead`. Array digabungkan di seluruh semua cakupan pengaturan. Gunakan ini untuk membuat pola akses baca khusus workspace. | `["."]` |410| `filesystem.allowRead` | Jalur untuk mengizinkan kembali pembacaan dalam region `denyRead`. Memiliki prioritas atas `denyRead`. Array digabungkan di seluruh semua cakupan pengaturan. Gunakan ini untuk membuat pola akses baca khusus workspace. | `["."]` |

411| `filesystem.allowManagedReadPathsOnly` | (Pengaturan yang dikelola saja) Hanya jalur `filesystem.allowRead` dari pengaturan yang dikelola yang dihormati. `denyRead` masih digabungkan dari semua sumber. Default: false | `true` |411| `filesystem.allowManagedReadPathsOnly` | (Pengaturan yang dikelola saja) Hanya jalur `filesystem.allowRead` dari pengaturan yang dikelola yang dihormati. `denyRead` masih digabungkan dari semua sumber. Default: false | `true` |

412| `credentials.files` | File kredensial atau direktori yang perintah sandboxed tidak dapat membaca. Menerapkan blokir baca yang sama seperti `filesystem.denyRead`; kunci terpisah menjaga jalur kredensial dikelompokkan dengan `credentials.envVars` dan terpisah dari aturan sistem file umum. Setiap entri adalah `{ "path": "...", "mode": "deny" }`. Jalur menggunakan [prefiks](#sandbox-path-prefixes) yang sama seperti pengaturan `filesystem.*`. Array digabungkan di seluruh semua cakupan pengaturan. Hanya `deny` yang didukung. Memerlukan Claude Code v2.1.187 atau lebih baru. | `[{ "path": "~/.aws/credentials", "mode": "deny" }]` |412| `credentials.files` | {/* min-version: 2.1.187 */}File kredensial atau direktori yang perintah sandboxed tidak dapat membaca. Menerapkan blokir baca yang sama seperti `filesystem.denyRead`; kunci terpisah menjaga jalur kredensial dikelompokkan dengan `credentials.envVars` dan terpisah dari aturan sistem file umum. Setiap entri adalah `{ "path": "...", "mode": "deny" }`, dan `deny` adalah satu-satunya mode yang didukung untuk file. Jalur menggunakan [prefiks](#sandbox-path-prefixes) yang sama seperti pengaturan `filesystem.*`. Array digabungkan di seluruh semua cakupan pengaturan. Memerlukan Claude Code v2.1.187 atau lebih baru. | `[{ "path": "~/.aws/credentials", "mode": "deny" }]` |

413| `credentials.envVars` | Variabel lingkungan untuk tidak diatur sebelum menjalankan perintah sandboxed. Setiap entri adalah `{ "name": "...", "mode": "deny" }`. Array digabungkan di seluruh semua cakupan pengaturan. Hanya `deny` yang didukung. Memerlukan Claude Code v2.1.187 atau lebih baru. | `[{ "name": "GITHUB_TOKEN", "mode": "deny" }]` |413| `credentials.envVars` | {/* min-version: 2.1.187 */}Variabel lingkungan untuk [melindungi dari perintah sandboxed](/id/sandboxing#protect-credentials). Setiap entri memiliki `name` dan `mode`; nama harus dimulai dengan huruf atau garis bawah dan hanya berisi huruf, digit, dan garis bawah. `deny` menghapus variabel dari lingkungan perintah sandboxed. Memerlukan Claude Code v2.1.187 atau lebih baru. {/* min-version: 2.1.199 */}`mask` mengganti variabel dengan nilai sentinel per-sesi di dalam sandbox sementara proxy sandbox mengganti nilai nyata pada permintaan keluar ke `injectHosts` entri itu; memerlukan `network.tlsTerminate` dan Claude Code v2.1.199 atau lebih baru. Entri `mask` hanya dihormati dari pengaturan pengguna, yang dikelola, atau CLI `--settings`, bukan dari `.claude/settings.json` atau `.claude/settings.local.json`. Array digabungkan di seluruh semua cakupan pengaturan, dan `deny` memiliki prioritas saat variabel yang sama muncul dengan kedua mode. | `[{ "name": "GITHUB_TOKEN", "mode": "deny" }]` |

414| `credentials.envVars[].injectHosts` | Host di mana proxy sandbox mengganti nilai nyata dari entri `mask`. Setiap host juga harus dicakup oleh `network.allowedDomains`, baik tepat atau dengan wildcard. Saat tidak diatur, proxy mengganti nilai pada permintaan ke setiap host dalam `network.allowedDomains`. Diterima tetapi diabaikan saat `mode` adalah `deny`. Memerlukan Claude Code v2.1.199 atau lebih baru. {/* min-version: 2.1.199 */} | `["api.github.com"]` |

415| `credentials.allowPlaintextInject` | Izinkan substitusi `mask` pada permintaan HTTP biasa serta HTTPS yang dihentikan TLS. Pada HTTP biasa identitas upstream tidak diverifikasi dan kredensial berjalan dalam cleartext, jadi biarkan ini mati di luar jaringan uji terpercaya. Hanya dihormati dari pengaturan pengguna, yang dikelola, atau CLI `--settings`, bukan dari `.claude/settings.json` atau `.claude/settings.local.json`. Default: false. Memerlukan Claude Code v2.1.199 atau lebih baru. {/* min-version: 2.1.199 */} | `true` |

414| `network.allowUnixSockets` | (macOS saja) Jalur soket Unix yang dapat diakses dalam sandbox. Diabaikan di Linux dan WSL2, di mana filter seccomp tidak dapat memeriksa jalur soket; gunakan `allowAllUnixSockets` sebagai gantinya. | `["~/.ssh/agent-socket"]` |416| `network.allowUnixSockets` | (macOS saja) Jalur soket Unix yang dapat diakses dalam sandbox. Diabaikan di Linux dan WSL2, di mana filter seccomp tidak dapat memeriksa jalur soket; gunakan `allowAllUnixSockets` sebagai gantinya. | `["~/.ssh/agent-socket"]` |

415| `network.allowAllUnixSockets` | Izinkan semua koneksi soket Unix dalam sandbox. Di Linux dan WSL2 ini adalah satu-satunya cara untuk mengizinkan soket Unix, karena melewati filter seccomp yang sebaliknya memblokir panggilan `socket(AF_UNIX, ...)`. Default: false | `true` |417| `network.allowAllUnixSockets` | Izinkan semua koneksi soket Unix dalam sandbox. Di Linux dan WSL2 ini adalah satu-satunya cara untuk mengizinkan soket Unix, karena melewati filter seccomp yang sebaliknya memblokir panggilan `socket(AF_UNIX, ...)`. Default: false | `true` |

416| `network.allowLocalBinding` | Izinkan pengikatan ke port localhost (macOS saja). Default: false | `true` |418| `network.allowLocalBinding` | Izinkan pengikatan ke port localhost (macOS saja). Default: false | `true` |


420| `network.allowManagedDomainsOnly` | (Pengaturan yang dikelola saja) Hanya `allowedDomains` dan aturan allow `WebFetch(domain:...)` dari pengaturan yang dikelola yang dihormati. Domain dari pengaturan pengguna, proyek, dan lokal diabaikan. Domain yang tidak diizinkan diblokir secara otomatis tanpa meminta pengguna. Domain yang ditolak masih dihormati dari semua sumber. Default: false | `true` |422| `network.allowManagedDomainsOnly` | (Pengaturan yang dikelola saja) Hanya `allowedDomains` dan aturan allow `WebFetch(domain:...)` dari pengaturan yang dikelola yang dihormati. Domain dari pengaturan pengguna, proyek, dan lokal diabaikan. Domain yang tidak diizinkan diblokir secara otomatis tanpa meminta pengguna. Domain yang ditolak masih dihormati dari semua sumber. Default: false | `true` |

421| `network.httpProxyPort` | Port proxy HTTP yang digunakan jika Anda ingin membawa proxy Anda sendiri. Jika tidak ditentukan, Claude akan menjalankan proxy-nya sendiri. | `8080` |423| `network.httpProxyPort` | Port proxy HTTP yang digunakan jika Anda ingin membawa proxy Anda sendiri. Jika tidak ditentukan, Claude akan menjalankan proxy-nya sendiri. | `8080` |

422| `network.socksProxyPort` | Port proxy SOCKS5 yang digunakan jika Anda ingin membawa proxy Anda sendiri. Jika tidak ditentukan, Claude akan menjalankan proxy-nya sendiri. | `8081` |424| `network.socksProxyPort` | Port proxy SOCKS5 yang digunakan jika Anda ingin membawa proxy Anda sendiri. Jika tidak ditentukan, Claude akan menjalankan proxy-nya sendiri. | `8081` |

425| `network.tlsTerminate` | Eksperimental. Hentikan TLS di dalam proxy sandbox sehingga dapat membaca konten permintaan HTTPS. Diperlukan untuk substitusi kredensial `mask` [](/id/sandboxing#protect-credentials). Atur `{}` untuk menghasilkan otoritas sertifikat ephemeral untuk sesi, atau atur `caCertPath` dan `caKeyPath` untuk menggunakan milik Anda sendiri. Hanya dihormati dari pengaturan pengguna, yang dikelola, atau CLI `--settings`, bukan dari `.claude/settings.json` atau `.claude/settings.local.json`. Memerlukan Claude Code v2.1.199 atau lebih baru. {/* min-version: 2.1.199 */} | `{}` |

423| `enableWeakerNestedSandbox` | Aktifkan sandbox yang lebih lemah untuk lingkungan Docker tanpa hak istimewa (Linux dan WSL2 saja). **Mengurangi keamanan.** Default: false | `true` |426| `enableWeakerNestedSandbox` | Aktifkan sandbox yang lebih lemah untuk lingkungan Docker tanpa hak istimewa (Linux dan WSL2 saja). **Mengurangi keamanan.** Default: false | `true` |

424| `enableWeakerNetworkIsolation` | (macOS saja) Izinkan akses ke layanan kepercayaan TLS sistem (`com.apple.trustd.agent`) dalam sandbox. Diperlukan untuk tools berbasis Go seperti `gh`, `gcloud`, dan `terraform` untuk memverifikasi sertifikat TLS saat menggunakan `httpProxyPort` dengan proxy MITM dan CA khusus. **Mengurangi keamanan** dengan membuka jalur eksfiltrasi data potensial. Default: false | `true` |427| `enableWeakerNetworkIsolation` | (macOS saja) Izinkan akses ke layanan kepercayaan TLS sistem (`com.apple.trustd.agent`) dalam sandbox. Diperlukan untuk tools berbasis Go seperti `gh`, `gcloud`, dan `terraform` untuk memverifikasi sertifikat TLS saat menggunakan `httpProxyPort` dengan proxy MITM dan CA khusus. **Mengurangi keamanan** dengan membuka jalur eksfiltrasi data potensial. Default: false | `true` |

425| `allowAppleEvents` | (macOS saja) Izinkan perintah sandboxed mengirim Apple Events. Diperlukan untuk `open`, `osascript`, dan tools yang membuka URL di browser, yang sebaliknya gagal dengan error `-600`. **Menghapus isolasi eksekusi kode.** Perintah sandboxed dapat meluncurkan aplikasi lain tanpa sandbox dengan tidak ada prompt pengguna; mereka juga dapat mengirim perintah AppleScript ke aplikasi yang sedang berjalan seperti Terminal, tunduk pada prompt persetujuan otomasi per-app macOS (TCC). Hanya dihormati dari pengaturan pengguna, yang dikelola, atau CLI, bukan dari pengaturan proyek. Default: false | `true` |428| `allowAppleEvents` | (macOS saja) Izinkan perintah sandboxed mengirim Apple Events. Diperlukan untuk `open`, `osascript`, dan tools yang membuka URL di browser, yang sebaliknya gagal dengan error `-600`. **Menghapus isolasi eksekusi kode.** Perintah sandboxed dapat meluncurkan aplikasi lain tanpa sandbox dengan tidak ada prompt pengguna; mereka juga dapat mengirim perintah AppleScript ke aplikasi yang sedang berjalan seperti Terminal, tunduk pada prompt persetujuan otomasi per-app macOS (TCC). Hanya dihormati dari pengaturan pengguna, yang dikelola, atau CLI, bukan dari pengaturan proyek. Default: false | `true` |


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))6631. **Pengaturan yang dikelola** ([yang dikelola server](/id/server-managed-settings), [kebijakan tingkat MDM/OS](#configuration-scopes), atau [pengaturan yang dikelola](/id/settings#settings-files))

661 * Kebijakan yang digunakan oleh IT melalui pengiriman server, profil konfigurasi MDM, kebijakan registry, atau file pengaturan yang dikelola664 * Kebijakan yang digunakan oleh IT melalui pengiriman server, profil konfigurasi MDM, kebijakan registry, atau file pengaturan yang dikelola

662 * Tidak dapat ditimpa oleh tingkat apa pun, termasuk argumen baris perintah665 * Tidak dapat ditimpa oleh tingkat apa pun, termasuk argumen baris perintah

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.666 * Dalam tingkat yang dikelola, hanya satu sumber yang digunakan dan yang lain diabaikan daripada digabungkan. Prioritas, tertinggi terlebih dahulu:

667 * Output [`policyHelper`](#compute-managed-settings-with-a-policy-helper): ketika dikonfigurasi, ini adalah satu-satunya sumber yang dikelola yang digunakan

668 * Remote (pengaturan yang dikelola server claude.ai atau kebijakan yang dikirimkan [Claude apps gateway](/id/claude-apps-gateway))

669 * Kebijakan tingkat MDM/OS

670 * Berbasis file (`managed-settings.d/*.json` dan `managed-settings.json`, digabungkan bersama)

671 * Registry HKCU (Windows saja)

672 * Beberapa kunci adalah pengecualian, dihormati ketika sumber yang dikelola yang dikontrol admin apa pun menetapkannya daripada hanya sumber pemenang. Sumber registry HKCU yang dapat ditulis pengguna dikecualikan. Kunci pengecualian adalah:

673 * kunci sandbox lock `sandbox.network.allowManagedDomainsOnly` dan `sandbox.filesystem.allowManagedReadPathsOnly`, dengan daftar putih terkait mereka

674 * `allowAllClaudeAiMcps`

675 * jalur binary sandbox `sandbox.bwrapPath` dan `sandbox.socatPath`

676 * [`forceRemoteSettingsRefresh`](/id/server-managed-settings)

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

665 678 

6662. **Argumen baris perintah**6792. **Argumen baris perintah**

setup.md +1 −1

Details

453 Instal dengan npm453 Instal dengan npm

454</h3>454</h3>

455 455 

456Anda juga dapat menginstal Claude Code sebagai paket npm global. Paket memerlukan [Node.js 18 atau lebih baru](https://nodejs.org/en/download).456Anda juga dapat menginstal Claude Code sebagai paket npm global. Mulai dari v2.1.198, paket npm memerlukan [Node.js 22 atau lebih baru](https://nodejs.org/en/download). Pada versi Node.js yang lebih lama, npm mencetak peringatan `EBADENGINE` selama instalasi daripada gagal; instalasi selesai dan `claude` masih berjalan, karena paket mengunduh biner asli yang tidak menggunakan Node.js Anda saat runtime.

457 457 

458```bash theme={null}458```bash theme={null}

459npm install -g @anthropic-ai/claude-code459npm install -g @anthropic-ai/claude-code

skills.md +4 −0

Details

443 443 

444Jika Anda menginvokasinya skill dengan argumen tetapi skill tidak menyertakan `$ARGUMENTS`, Claude Code menambahkan `ARGUMENTS: <your input>` ke akhir konten skill sehingga Claude masih melihat apa yang Anda ketik.444Jika Anda menginvokasinya skill dengan argumen tetapi skill tidak menyertakan `$ARGUMENTS`, Claude Code menambahkan `ARGUMENTS: <your input>` ke akhir konten skill sehingga Claude masih melihat apa yang Anda ketik.

445 445 

446Anda juga dapat menumpuk beberapa skills di awal satu pesan. Mulai dari v2.1.199, mengetik `/code-review /fix-issue 123` memuat kedua skills dan meneruskan teks trailing `123` sebagai `$ARGUMENTS` ke masing-masing. Dalam versi sebelumnya, hanya skill pertama yang dimuat dan menerima `/fix-issue 123` sebagai teks argumen literal.

447 

448Claude Code memperluas skill pertama ditambah hingga lima lagi yang ditumpuk setelahnya. Ekspansi berhenti pada token pertama yang bukan skill yang dapat diinvokasinya inline, jadi skill yang berjalan sebagai [subagent yang di-fork](#run-skills-in-a-subagent) atau yang argumennya mungkin sendiri dimulai dengan perintah slash, seperti `/loop`, juga berakhir di sana; token itu dan semuanya setelahnya menjadi teks argumen untuk setiap skill yang diperluas.

449 

446Untuk mengakses argumen individual berdasarkan posisi, gunakan `$ARGUMENTS[N]` atau yang lebih pendek `$N`:450Untuk mengakses argumen individual berdasarkan posisi, gunakan `$ARGUMENTS[N]` atau yang lebih pendek `$N`:

447 451 

448```yaml theme={null}452```yaml theme={null}

sub-agents.md +88 −66

Details

24 24 

25Claude menggunakan deskripsi setiap subagent untuk memutuskan kapan mendelegasikan tugas. Ketika Anda membuat subagent, tulis deskripsi yang jelas sehingga Claude tahu kapan menggunakannya.25Claude menggunakan deskripsi setiap subagent untuk memutuskan kapan mendelegasikan tugas. Ketika Anda membuat subagent, tulis deskripsi yang jelas sehingga Claude tahu kapan menggunakannya.

26 26 

27Claude Code mencakup beberapa subagent bawaan seperti **Explore**, **Plan**, dan **general-purpose**. Anda juga dapat membuat subagent khusus untuk menangani tugas tertentu.27Claude Code mencakup beberapa subagent bawaan seperti Explore, Plan, dan general-purpose. Anda juga dapat membuat subagent khusus untuk menangani tugas tertentu.

28 28 

29<h2 id="built-in-subagents">29<h2 id="built-in-subagents">

30 Subagent bawaan30 Subagent bawaan


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, yang cepat dan latensi rendah41 * **Model**: mewarisi dari percakapan utama, dibatasi pada Opus di Claude API, jadi Explore tidak pernah berjalan pada model yang lebih mahal daripada yang sudah Anda pilih untuk sesi

42 * **Tools**: alat hanya-baca; Write dan Edit ditolak42 * **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 Mulai dari v2.1.198, Explore mewarisi model percakapan utama alih-alih selalu berjalan pada Haiku. Di Claude API, model yang diwarisi dibatasi pada Opus: percakapan utama pada tingkat yang lebih tinggi menjalankan Explore pada Opus, dan percakapan utama pada Sonnet atau Haiku menjalankan Explore pada model yang sama. Di penyedia lain apa pun, seperti [Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau Claude Platform on AWS](/id/third-party-integrations), Explore mewarisi model percakapan utama secara langsung.

46 

47 [User atau project subagent](#choose-the-subagent-scope) bernama `Explore` menggantikan yang bawaan dan menyimpan bidang `model` miliknya sendiri, jadi tentukan satu dengan `model: haiku` untuk menjaga eksplorasi pada model dengan biaya lebih rendah.

48 

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.49 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 50 

47 Saat memanggil Explore, Claude menentukan tingkat ketelitian: **quick** untuk pencarian yang ditargetkan, **medium** untuk eksplorasi seimbang, atau **very thorough** untuk analisis komprehensif.51 Saat memanggil Explore, Claude menentukan tingkat ketelitian: **quick** untuk pencarian yang ditargetkan, **medium** untuk eksplorasi seimbang, atau **very thorough** untuk analisis komprehensif.


77 </Tab>81 </Tab>

78</Tabs>82</Tabs>

79 83 

80Subagent bawaan selalu terdaftar dalam sesi interaktif. Untuk membatasi mereka:84Subagent bawaan terdaftar secara default dalam sesi interaktif. Untuk membatasi mereka:

81 85 

82* Untuk memblokir tipe bawaan tertentu, tambahkan ke `permissions.deny` seperti yang ditunjukkan dalam [Nonaktifkan subagent tertentu](#disable-specific-subagents).86* 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).87* Untuk mencegah Claude mendelegasikan ke subagent apa pun, tolak alat `Agent` itu sendiri dengan [`permissions.deny`](/id/permissions#tool-specific-permission-rules).

88* Untuk menghapus hanya subagent bawaan `Explore` dan `Plan`, atur [`CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS=1`](/id/env-vars). Claude membaca dan mengeksplorasi file secara langsung alih-alih mendelegasikan ke mereka. Memerlukan Claude Code v2.1.198 atau lebih baru.

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

85 90 

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.91Selain 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.


89 Quickstart: buat subagent pertama Anda94 Quickstart: buat subagent pertama Anda

90</h2>95</h2>

91 96 

92Subagent didefinisikan dalam file Markdown dengan frontmatter YAML. Anda dapat [membuatnya secara manual](#write-subagent-files) atau menggunakan perintah `/agents`.97Subagent adalah file Markdown dengan frontmatter YAML. Untuk membuat satu, minta Claude menulisnya untuk Anda, atau [tulis file sendiri](#write-subagent-files).

98 

99{/* min-version: 2.1.198 */}Mulai dari v2.1.198, perintah `/agents` tidak lagi membuka wizard pembuatan interaktif; menjalankannya mencetak pengingat untuk meminta Claude atau mengedit `.claude/agents/` secara langsung. File subagent, bidang frontmatter, dan lokasi `.claude/agents/` dan `~/.claude/agents/` tidak berubah; hanya wizard terminal yang dihapus.

93 100 

94Panduan ini memandu Anda melalui pembuatan subagent tingkat pengguna dengan perintah `/agents`. Subagent meninjau kode dan menyarankan perbaikan untuk basis kode.101Panduan ini membuat subagent tingkat pengguna yang meninjau kode dan menyarankan perbaikan.

95 102 

96<Steps>103<Steps>

97 <Step title="Buka antarmuka subagent">104 <Step title="Minta Claude membuat subagent">

98 Di Claude Code, jalankan:105 Di Claude Code, jelaskan subagent yang Anda inginkan dan di mana menyimpannya:

99 106 

100 ```text wrap theme={null}107 ```text wrap theme={null}

101 /agents108 Create a personal code-improver subagent in ~/.claude/agents/ that scans

109 files and suggests improvements for readability, performance, and best

110 practices. It should explain each issue, show the current code, and

111 provide an improved version. Make it read-only and have it use Sonnet.

102 ```112 ```

103 </Step>

104 113 

105 <Step title="Pilih lokasi">114 Claude menulis file dengan `name`, `description`, daftar `tools`, `model`, dan system prompt.

106 Beralih ke tab **Library**, pilih **Create new agent**, kemudian pilih **Personal**. Ini menyimpan subagent ke `~/.claude/agents/` sehingga tersedia di semua proyek Anda.

107 </Step>115 </Step>

108 116 

109 <Step title="Hasilkan dengan Claude">117 <Step title="Tinjau file">

110 Pilih **Generate with Claude**. Ketika diminta, jelaskan subagent:118 Buka `~/.claude/agents/code-improver.md` dan konfirmasi frontmatter sesuai dengan yang Anda minta. Hasilnya terlihat seperti ini:

111 119 

112 ```text wrap theme={null}120 ```markdown theme={null}

113 A code improvement agent that scans files and suggests improvements121 ---

114 for readability, performance, and best practices. It should explain122 name: code-improver

115 each issue, show the current code, and provide an improved version.123 description: Scans files and suggests improvements for readability, performance, and best practices. Use after writing or modifying code.

124 tools: Read, Grep, Glob

125 model: sonnet

126 ---

127 

128 You are a code improvement specialist. For each issue you find, explain

129 the problem, show the current code, and provide an improved version.

116 ```130 ```

117 131 

118 Claude menghasilkan pengenal, deskripsi, dan prompt sistem untuk Anda.132 Karena file berada di `~/.claude/agents/`, subagent tersedia di setiap proyek di mesin Anda. Untuk membatasi ke satu proyek saja, pindahkan ke direktori `.claude/agents/` proyek tersebut. [Pilih cakupan subagent](#choose-the-subagent-scope) membandingkan keduanya.

119 </Step>

120 

121 <Step title="Pilih alat">

122 Untuk reviewer hanya-baca, batalkan pilihan semuanya kecuali **Read-only tools**. Jika Anda membiarkan semua alat dipilih, subagent mewarisi semua alat yang tersedia untuk percakapan utama.

123 </Step>

124 

125 <Step title="Pilih model">

126 Pilih model mana yang digunakan subagent. Untuk agen contoh ini, pilih **Sonnet**, yang menyeimbangkan kemampuan dan kecepatan untuk menganalisis pola kode.

127 </Step>

128 

129 <Step title="Pilih warna">

130 Pilih warna latar belakang untuk subagent. Ini membantu Anda mengidentifikasi subagent mana yang berjalan di UI.

131 </Step>

132 

133 <Step title="Konfigurasi memori">

134 Pilih **User scope** untuk memberikan subagent [direktori memori persisten](#enable-persistent-memory) di `~/.claude/agent-memory/`. Subagent menggunakan ini untuk mengumpulkan wawasan di seluruh percakapan, seperti pola basis kode dan masalah berulang. Pilih **None** jika Anda tidak ingin subagent mempertahankan pembelajaran.

135 </Step>133 </Step>

136 134 

137 <Step title="Simpan dan coba">135 <Step title="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:136 Minta Claude mendelegasikan ke subagent baru:

139 137 

140 ```text wrap theme={null}138 ```text wrap theme={null}

141 Use the code-improver agent to suggest improvements in this project139 Use the code-improver agent to suggest improvements in this project

142 ```140 ```

143 141 

144 Claude mendelegasikan ke subagent baru Anda, yang memindai basis kode dan mengembalikan saran perbaikan.142 Claude mendelegasikan ke subagent baru Anda, yang memindai basis kode dan mengembalikan saran perbaikan.

143 

144 Jika Claude tidak dapat menemukan subagent baru, mulai ulang Claude Code dan coba lagi. Ini terjadi hanya ketika `~/.claude/agents/` tidak ada sebelum sesi dimulai, karena sesi yang berjalan tidak mendeteksi direktori `agents` yang baru dibuat.

145 </Step>145 </Step>

146</Steps>146</Steps>

147 147 

148Anda sekarang memiliki subagent yang dapat Anda gunakan di proyek apa pun di mesin Anda untuk menganalisis basis kode dan menyarankan perbaikan.148Anda sekarang memiliki subagent yang dapat Anda gunakan di proyek apa pun di mesin Anda untuk menganalisis basis kode dan menyarankan perbaikan.

149 149 

150Anda juga dapat membuat subagent secara manual sebagai file Markdown, mendefinisikannya melalui flag CLI, atau mendistribusikannya melalui plugins. Bagian berikut mencakup semua opsi konfigurasi.150Anda juga dapat menulis file subagent secara manual, mendefinisikannya melalui flag CLI, atau mendistribusikannya melalui plugins. Bagian berikut mencakup semua opsi konfigurasi.

151 

152<Note>

153 Pada Claude Code v2.1.197 dan lebih awal, `/agents` membuka wizard interaktif dengan tab **Running** yang mencantumkan subagent aktif dan tab **Library** untuk membuat, mengedit, dan menghapusnya. {/* max-version: 2.1.197 */}

154</Note>

151 155 

152<h2 id="configure-subagents">156<h2 id="configure-subagents">

153 Konfigurasi subagent157 Konfigurasi subagent

154</h2>158</h2>

155 159 

156<h3 id="use-the-/agents-command">160Lokasi file subagent menentukan siapa yang dapat mengaksesnya, dan frontmatter-nya menentukan apa yang dapat dilakukannya. Bagian ini mencakup di mana file subagent berada dan setiap bidang yang didukungnya.

157 Gunakan perintah /agents

158</h3>

159 

160Perintah `/agents` membuka antarmuka bertab untuk mengelola subagent. Tab **Running** menunjukkan subagent langsung dan yang baru selesai serta memungkinkan Anda membuka atau menghentikannya. Tab **Library** memungkinkan Anda:

161 

162* Melihat semua subagent yang tersedia (bawaan, pengguna, proyek, dan plugin)

163* Membuat subagent baru dengan setup terpandu atau generasi Claude

164* Mengedit konfigurasi subagent yang ada dan akses alat

165* Menghapus subagent khusus

166* Melihat subagent mana yang aktif ketika duplikat ada

167 

168Ini adalah cara yang direkomendasikan untuk membuat dan mengelola subagent. Untuk pembuatan manual atau otomasi, Anda juga dapat menambahkan file subagent secara langsung.

169 161 

170<h3 id="choose-the-subagent-scope">162<h3 id="choose-the-subagent-scope">

171 Pilih cakupan subagent163 Pilih cakupan subagent

172</h3>164</h3>

173 165 

174Subagent adalah file Markdown dengan frontmatter YAML. Simpan mereka di lokasi berbeda tergantung cakupan. Ketika beberapa subagent berbagi nama yang sama, lokasi prioritas lebih tinggi menang.166Simpan file subagent di lokasi berbeda tergantung pada cakupan. Ketika beberapa subagent berbagi nama yang sama, Claude Code menggunakan yang dari lokasi dengan prioritas lebih tinggi.

175 167 

176| Lokasi | Cakupan | Prioritas | Cara membuat |168| Lokasi | Cakupan | Prioritas | Cara membuat |

177| :------------------------- | :----------------------- | :------------ | :----------------------------------------------------- |169| :------------------------- | :----------------------- | :------------ | :----------------------------------------------------- |

178| Pengaturan terkelola | Seluruh organisasi | 1 (tertinggi) | Digunakan melalui [pengaturan terkelola](/id/settings) |170| Pengaturan terkelola | Seluruh organisasi | 1 (tertinggi) | Digunakan melalui [pengaturan terkelola](/id/settings) |

179| Flag CLI `--agents` | Sesi saat ini | 2 | Lewatkan JSON saat meluncurkan Claude Code |171| Flag CLI `--agents` | Sesi saat ini | 2 | Lewatkan JSON saat meluncurkan Claude Code |

180| `.claude/agents/` | Proyek saat ini | 3 | Interaktif atau manual |172| `.claude/agents/` | Proyek saat ini | 3 | Tanyakan Claude, atau buat file secara manual |

181| `~/.claude/agents/` | Semua proyek Anda | 4 | Interaktif atau manual |173| `~/.claude/agents/` | Semua proyek Anda | 4 | Tanyakan Claude, atau buat file secara manual |

182| Direktori `agents/` plugin | Tempat plugin diaktifkan | 5 (terendah) | Diinstal dengan [plugins](/id/plugins) |174| Direktori `agents/` plugin | Tempat plugin diaktifkan | 5 (terendah) | Diinstal dengan [plugins](/id/plugins) |

183 175 

184**Subagent proyek** (`.claude/agents/`) ideal untuk subagent khusus untuk basis kode. Periksa mereka ke kontrol versi sehingga tim Anda dapat menggunakannya dan meningkatkannya secara kolaboratif.176**Subagent proyek** (`.claude/agents/`) ideal untuk subagent khusus untuk basis kode. Periksa mereka ke kontrol versi sehingga tim Anda dapat menggunakannya dan meningkatkannya secara kolaboratif.


239 231 

240**Subagent terkelola** digunakan oleh administrator organisasi. Tempatkan file markdown dalam `.claude/agents/` di dalam [direktori pengaturan terkelola](/id/settings#settings-files), menggunakan format frontmatter yang sama dengan subagent proyek dan pengguna. Definisi terkelola mengambil alih subagent proyek dan pengguna dengan nama yang sama.232**Subagent terkelola** digunakan oleh administrator organisasi. Tempatkan file markdown dalam `.claude/agents/` di dalam [direktori pengaturan terkelola](/id/settings#settings-files), menggunakan format frontmatter yang sama dengan subagent proyek dan pengguna. Definisi terkelola mengambil alih subagent proyek dan pengguna dengan nama yang sama.

241 233 

242**Subagent plugin** berasal dari [plugins](/id/plugins) yang telah Anda instal. Mereka muncul di `/agents` bersama subagent khusus Anda. Lihat [referensi komponen plugin](/id/plugins-reference#agents) untuk detail tentang membuat subagent plugin.234**Subagent plugin** berasal dari [plugins](/id/plugins) yang telah Anda instal. Mereka dimuat bersama subagent khusus Anda dan muncul dalam typeahead @-mention di bawah nama yang dibatasi cakupan mereka. Lihat [referensi komponen plugin](/id/plugins-reference#agents) untuk detail tentang membuat subagent plugin.

243 235 

244<Note>236<Note>

245 Untuk alasan keamanan, subagent plugin tidak mendukung bidang frontmatter `hooks`, `mcpServers`, atau `permissionMode`. Bidang-bidang ini diabaikan saat memuat agen dari plugin. Jika Anda membutuhkannya, salin file agen ke dalam `.claude/agents/` atau `~/.claude/agents/`. Anda juga dapat menambahkan aturan ke [`permissions.allow`](/id/settings#permission-settings) dalam `settings.json` atau `settings.local.json`, tetapi aturan-aturan ini berlaku untuk seluruh sesi, bukan hanya subagent plugin.237 Untuk alasan keamanan, subagent plugin tidak mendukung bidang frontmatter `hooks`, `mcpServers`, atau `permissionMode`. Bidang-bidang ini diabaikan saat memuat agen dari plugin. Jika Anda membutuhkannya, salin file agen ke dalam `.claude/agents/` atau `~/.claude/agents/`. Anda juga dapat menambahkan aturan ke [`permissions.allow`](/id/settings#permission-settings) dalam `settings.json` atau `settings.local.json`, tetapi aturan-aturan ini berlaku untuk seluruh sesi, bukan hanya subagent plugin.


254File subagent menggunakan frontmatter YAML untuk konfigurasi, diikuti oleh prompt sistem dalam Markdown:246File subagent menggunakan frontmatter YAML untuk konfigurasi, diikuti oleh prompt sistem dalam Markdown:

255 247 

256<Note>248<Note>

257 Subagent dimuat saat awal sesi. Jika Anda menambah atau mengedit file subagent secara langsung di disk, restart sesi Anda untuk memuatnya. Subagent yang dibuat melalui antarmuka `/agents` berlaku segera tanpa restart.249 Claude Code memantau `~/.claude/agents/` dan `.claude/agents/`. Ketika Anda menambah atau mengedit file subagent di disk, atau meminta Claude untuk menulis satu untuk Anda, Claude Code mendeteksi perubahan dalam beberapa detik dan delegasi berikutnya menggunakan definisi yang diperbarui, tanpa perlu restart.

250 

251 Dua kasus masih memerlukan restart:

252 

253 * Pemantau hanya mencakup direktori yang ada ketika sesi dimulai, jadi setelah membuat file agen pertama cakupan dalam direktori `agents` baru, restart untuk memuatnya.

254 * Sesi yang dimulai dengan `--disable-slash-commands` tidak memantau direktori ini sama sekali.

258</Note>255</Note>

259 256 

260```markdown theme={null}257```markdown theme={null}


292| `mcpServers` | Tidak | [MCP servers](/id/mcp) tersedia untuk subagent ini. Setiap entri adalah nama server yang mereferensikan server yang sudah dikonfigurasi (misalnya, `"slack"`) atau definisi inline dengan nama server sebagai kunci dan [konfigurasi MCP server](/id/mcp#installing-mcp-servers) lengkap sebagai nilai. Diabaikan untuk [subagent plugin](#choose-the-subagent-scope) |289| `mcpServers` | Tidak | [MCP servers](/id/mcp) tersedia untuk subagent ini. Setiap entri adalah nama server yang mereferensikan server yang sudah dikonfigurasi (misalnya, `"slack"`) atau definisi inline dengan nama server sebagai kunci dan [konfigurasi MCP server](/id/mcp#installing-mcp-servers) lengkap sebagai nilai. Diabaikan untuk [subagent plugin](#choose-the-subagent-scope) |

293| `hooks` | Tidak | [Lifecycle hooks](#define-hooks-for-subagents) yang dibatasi pada subagent ini. Diabaikan untuk [subagent plugin](#choose-the-subagent-scope) |290| `hooks` | Tidak | [Lifecycle hooks](#define-hooks-for-subagents) yang dibatasi pada subagent ini. Diabaikan untuk [subagent plugin](#choose-the-subagent-scope) |

294| `memory` | Tidak | [Cakupan memori persisten](#enable-persistent-memory): `user`, `project`, atau `local`. Memungkinkan pembelajaran lintas sesi |291| `memory` | Tidak | [Cakupan memori persisten](#enable-persistent-memory): `user`, `project`, atau `local`. Memungkinkan pembelajaran lintas sesi |

295| `background` | Tidak | Atur ke `true` untuk selalu menjalankan subagent ini sebagai [background task](#run-subagents-in-foreground-or-background). Default: `false` |292| `background` | Tidak | Atur ke `true` untuk selalu menjalankan subagent ini sebagai [background task](#run-subagents-in-foreground-or-background), bahkan ketika Claude memerlukan hasilnya segera. Ketika tidak diatur, Claude memilih, dan {/* min-version: 2.1.198 */}sejak v2.1.198 itu menjalankan subagent di latar belakang secara default |

296| `effort` | Tidak | Tingkat usaha ketika subagent ini aktif. Menimpa tingkat usaha sesi. Default: mewarisi dari sesi. Opsi: `low`, `medium`, `high`, `xhigh`, `max`; tingkat yang tersedia tergantung pada model |293| `effort` | Tidak | Tingkat usaha ketika subagent ini aktif. Menimpa tingkat usaha sesi. Default: mewarisi dari sesi. Opsi: `low`, `medium`, `high`, `xhigh`, `max`; tingkat yang tersedia tergantung pada model |

297| `isolation` | Tidak | Atur ke `worktree` untuk menjalankan subagent dalam [git worktree](/id/worktrees) sementara, memberikannya salinan repositori yang terisolasi yang bercabang secara default dari [cabang default](/id/worktrees#choose-the-base-branch) Anda daripada `HEAD` sesi induk. Worktree secara otomatis dibersihkan jika subagent tidak membuat perubahan |294| `isolation` | Tidak | Atur ke `worktree` untuk menjalankan subagent dalam [git worktree](/id/worktrees) sementara, memberikannya salinan repositori yang terisolasi yang bercabang secara default dari [cabang default](/id/worktrees#choose-the-base-branch) Anda daripada `HEAD` sesi induk. Worktree secara otomatis dibersihkan jika subagent tidak membuat perubahan |

298| `color` | Tidak | Warna tampilan untuk subagent dalam daftar tugas dan transkrip. Menerima `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, atau `cyan` |295| `color` | Tidak | Warna tampilan untuk subagent dalam daftar tugas dan transkrip. Menerima `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, atau `cyan` |


318 315 

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.316{/* 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 317 

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.318Claude Code memeriksa variabel lingkungan, parameter per-invokasi, dan nilai frontmatter terhadap daftar allowlist [`availableModels`](/id/model-config#restrict-model-selection) organisasi Anda. Nilai yang diselesaikan ke model yang dikecualikan dilewati dan subagent berjalan pada model yang diwarisi sebagai gantinya.

319 

320{/* min-version: 2.1.198 */}Sejak v2.1.198, subagent juga mewarisi konfigurasi [extended thinking](/id/model-config#extended-thinking) percakapan utama: jika thinking aktif dalam sesi Anda, itu aktif untuk subagent, dan jika itu mati, itu tetap mati. Tidak ada pengaturan thinking per-subagent. Sebelum v2.1.198, subagent berjalan dengan extended thinking dinonaktifkan terlepas dari pengaturan percakapan utama.

322 321 

323<h3 id="control-subagent-capabilities">322<h3 id="control-subagent-capabilities">

324 Kontrol kemampuan subagent323 Kontrol kemampuan subagent


338* `ScheduleWakeup`337* `ScheduleWakeup`

339* `WaitForMcpServers`338* `WaitForMcpServers`

340 339 

341Untuk membatasi alat, gunakan bidang `tools` (allowlist) atau bidang `disallowedTools` (denylist). Contoh ini menggunakan `tools` untuk secara eksklusif mengizinkan Read, Grep, Glob, dan Bash. Subagent tidak dapat mengedit file, menulis file, atau menggunakan alat MCP apa pun:340Untuk membatasi alat, gunakan bidang `tools` sebagai allowlist atau bidang `disallowedTools` sebagai denylist. Contoh ini menggunakan `tools` untuk secara eksklusif mengizinkan Read, Grep, Glob, dan Bash. Subagent tidak dapat mengedit file, menulis file, atau menggunakan alat MCP apa pun:

342 341 

343```yaml theme={null}342```yaml theme={null}

344---343---


432Use the Playwright tools to navigate, screenshot, and interact with pages.431Use the Playwright tools to navigate, screenshot, and interact with pages.

433```432```

434 433 

435Definisi inline menggunakan skema yang sama dengan entri server `.mcp.json` (`stdio`, `http`, `sse`, `ws`), dikunci dengan nama server.434Definisi inline menggunakan skema yang sama dengan entri server `.mcp.json`, dikunci dengan nama server, dan mendukung jenis `stdio`, `http`, `sse`, dan `ws`.

436 435 

437Untuk menjaga MCP server di luar percakapan utama sepenuhnya dan menghindari deskripsi alatnya mengonsumsi konteks di sana, tentukan secara inline di sini daripada di `.mcp.json`. Subagent mendapatkan alat; percakapan induk tidak.436Untuk menjaga MCP server di luar percakapan utama sepenuhnya dan menghindari deskripsi alatnya mengonsumsi konteks di sana, tentukan secara inline di sini daripada di `.mcp.json`. Subagent mendapatkan alat; percakapan induk tidak.

438 437 


528 Tips memori persisten527 Tips memori persisten

529</h5>528</h5>

530 529 

531* `project` adalah cakupan default yang direkomendasikan. Ini membuat pengetahuan subagent dapat dibagikan melalui kontrol versi. Gunakan `user` ketika pengetahuan subagent berlaku secara luas di seluruh proyek, atau `local` ketika pengetahuan tidak boleh diperiksa ke dalam kontrol versi.530* `project` adalah cakupan default yang direkomendasikan. Ini membuat pengetahuan subagent dapat dibagikan melalui kontrol versi.

532* Minta subagent untuk berkonsultasi dengan memorinya sebelum memulai pekerjaan: "Review PR ini, dan periksa memori Anda untuk pola yang telah Anda lihat sebelumnya."531* Minta subagent untuk berkonsultasi dengan memorinya sebelum memulai pekerjaan: "Review PR ini, dan periksa memori Anda untuk pola yang telah Anda lihat sebelumnya."

533* Minta subagent untuk memperbarui memorinya setelah menyelesaikan tugas: "Sekarang setelah Anda selesai, simpan apa yang Anda pelajari ke memori Anda." Seiring waktu, ini membangun basis pengetahuan yang membuat subagent lebih efektif.532* Minta subagent untuk memperbarui memorinya setelah menyelesaikan tugas: "Sekarang setelah Anda selesai, simpan apa yang Anda pelajari ke memori Anda." Seiring waktu, ini membangun basis pengetahuan yang membuat subagent lebih efektif.

534* Sertakan instruksi memori langsung dalam file markdown subagent sehingga secara proaktif mempertahankan basis pengetahuannya sendiri:533* Sertakan instruksi memori langsung dalam file markdown subagent sehingga secara proaktif mempertahankan basis pengetahuannya sendiri:


776* **Subagent foreground** memblokir percakapan utama sampai selesai. Prompt izin dilewatkan kepada Anda saat muncul.775* **Subagent foreground** memblokir percakapan utama sampai selesai. Prompt izin dilewatkan kepada Anda saat muncul.

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

778 777 

779Claude memutuskan apakah akan menjalankan subagent di foreground atau background berdasarkan tugas. Anda juga dapat:778{/* min-version: 2.1.198 */}Mulai dari v2.1.198, subagent berjalan di background secara default. Claude menjalankan subagent di foreground ketika memerlukan hasil sebelum melanjutkan. Default mengubah di mana subagent berjalan, bukan apa yang diizinkan untuk dilakukan: subagent background masih menampilkan setiap prompt izin di sesi utama Anda. Sebelum v2.1.198, Claude memilih antara foreground dan background berdasarkan tugas.

780 779 

781* Minta Claude untuk "run this in the background"780Anda juga dapat mengarahkan ini sendiri:

781 

782* Minta Claude untuk menjalankan tugas di background atau di foreground

782* Tekan **Ctrl+B** untuk menempatkan tugas yang sedang berjalan di background783* Tekan **Ctrl+B** untuk menempatkan tugas yang sedang berjalan di background

783 784 

784Untuk menonaktifkan semua fungsionalitas background task, atur variabel lingkungan `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` ke `1`. Lihat [Environment variables](/id/env-vars).785Untuk menonaktifkan semua fungsionalitas background task, atur variabel lingkungan `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` ke `1`. Lihat [Environment variables](/id/env-vars).

785 786 

786Ketika [`CLAUDE_CODE_FORK_SUBAGENT`](#fork-the-current-conversation) diatur ke `1`, setiap spawn subagent berjalan di background terlepas dari bidang `background`. Prompt izin dari subagent background ini muncul di sesi utama Anda seperti dijelaskan di atas.787Ketika [`CLAUDE_CODE_FORK_SUBAGENT`](#fork-the-current-conversation) diatur ke `1`, setiap spawn subagent berjalan di background dan bidang frontmatter `background` tidak berpengaruh, karena fork mode menghapus parameter `run_in_background` dari alat `Agent`. `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` mengambil alih fork mode dan menjaga spawn subagent di foreground.

788 

789<h3 id="api-errors-in-subagents">

790 Kesalahan API dalam subagent

791</h3>

792 

793{/* min-version: 2.1.199 */}Mulai dari v2.1.199, subagent yang berjalan berakhir pada kesalahan API, seperti batas penggunaan atau kesalahan server berulang, melaporkan kegagalan itu kembali ke Claude daripada mengembalikan teks kesalahan seolah-olah itu adalah temuan subagent. Apa yang Claude terima tergantung di mana subagent berjalan:

794 

795* **Foreground**: jika batas laju, kelebihan beban, atau kesalahan server memotong subagent yang sudah menghasilkan output, alat Agent mengembalikan output parsial itu dengan catatan bahwa subagent dipotong dan tidak menyelesaikan tugasnya. Jika tidak, panggilan alat gagal dengan [`Agent terminated early due to an API error`](/id/errors#agent-terminated-early-due-to-an-api-error), diikuti oleh detail kesalahan.

796* **Background**: subagent ditandai gagal, dan pesan yang Claude terima saat berakhir menyebutkan kesalahan API dan menyertakan output terakhir subagent, jadi pekerjaan parsial tidak hilang.

797 

798Setelah kesalahan API yang mendasar hilang, minta Claude untuk mencoba ulang tugas atau [lanjutkan subagent](#resume-subagents).

787 799 

788<h3 id="common-patterns">800<h3 id="common-patterns">

789 Pola umum801 Pola umum


854 866 

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.867{/* 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.

856 868 

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.869Subagent bersarang dikonfigurasi dengan cara yang sama seperti subagent tingkat atas dan diselesaikan dari [scope](#choose-the-subagent-scope) yang sama.

870 

871Panel 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`.

858 872 

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.873Kedalaman 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.

860 874 


894 908 

895Subagent yang dilanjutkan mempertahankan riwayat percakapan lengkap mereka, termasuk semua panggilan alat sebelumnya, hasil, dan penalaran. Subagent melanjutkan tepat di mana ia berhenti daripada memulai segar.909Subagent yang dilanjutkan mempertahankan riwayat percakapan lengkap mereka, termasuk semua panggilan alat sebelumnya, hasil, dan penalaran. Subagent melanjutkan tepat di mana ia berhenti daripada memulai segar.

896 910 

897Ketika subagent selesai, Claude menerima ID agennya. Agen bawaan Explore dan Plan adalah one-shot dan tidak mengembalikan ID agen, jadi mereka tidak dapat dilanjutkan; gunakan `general-purpose` atau subagent khusus ketika Anda perlu melanjutkan pekerjaan. Claude menggunakan alat `SendMessage` dengan ID agen sebagai bidang `to` untuk melanjutkannya. Alat `SendMessage` selalu tersedia untuk melanjutkan subagent berdasarkan ID atau nama agen. Pesan protokol tim terstruktur seperti `shutdown_request` dan `plan_approval_response` memerlukan [tim agen](/id/agent-teams) untuk diaktifkan.911Ketika subagent selesai, Claude menerima ID agennya. Agen bawaan Explore dan Plan adalah one-shot dan tidak mengembalikan ID agen, jadi mereka tidak dapat dilanjutkan; gunakan `general-purpose` atau subagent khusus ketika Anda perlu melanjutkan pekerjaan.

912 

913Claude menggunakan alat `SendMessage` dengan ID agen atau nama agen sebagai bidang `to` untuk melanjutkannya. `SendMessage` tidak memerlukan [tim agen](/id/agent-teams) untuk diaktifkan; hanya pesan protokol tim terstruktur seperti `shutdown_request` dan `plan_approval_response` yang melakukannya.

898 914 

899Untuk melanjutkan subagent, minta Claude untuk melanjutkan pekerjaan sebelumnya:915Untuk melanjutkan subagent, minta Claude untuk melanjutkan pekerjaan sebelumnya:

900 916 


908 924 

909Jika subagent yang dihentikan menerima `SendMessage`, ia auto-resume di background tanpa memerlukan invokasi `Agent` baru.925Jika subagent yang dihentikan menerima `SendMessage`, ia auto-resume di background tanpa memerlukan invokasi `Agent` baru.

910 926 

927{/* min-version: 2.1.199 */}Mulai dari v2.1.199, `SendMessage` memeriksa bahwa nama masih merujuk ke agen yang sama yang dicapai sebelumnya dalam percakapan. Jika agen yang lebih baru telah mengambil nama, seperti agen background yang di-spawn ulang yang menggunakannya kembali, Claude Code menolak pengiriman daripada mengirimkannya ke agen yang salah, dan kesalahan melaporkan agen mana yang sekarang dicapai nama sehingga Claude dapat menargetkan ulang. Untuk mencapai agen sebelumnya sementara masih berjalan, Claude mengalamatkannya dengan ID agen dari hasil spawn. Pemeriksaan dibatasi pada percakapan saat ini dan direset pada `/clear`.

928 

929{/* min-version: 2.1.198 */}Mulai dari v2.1.198, subagent memperlakukan pesan dari agen yang meluncurkannya sebagai arahan tugas normal, termasuk koreksi kursus mid-task, dan bertindak atas mereka dalam pengaturan izin mereka sendiri. Dua batas masih berlaku terlepas dari siapa yang mengirim pesan: tidak ada pesan dari agen apa pun yang dihitung sebagai persetujuan Anda untuk prompt izin yang tertunda, dan tidak ada pesan agen yang dapat mengubah pengaturan izin subagent, `CLAUDE.md`, atau konfigurasi. Hanya sistem izin atau pesan Anda sendiri yang dapat memberikan persetujuan.

930 

911Anda juga dapat meminta Claude untuk ID agen jika Anda ingin mereferensikannya secara eksplisit, atau temukan ID dalam file transkrip di `~/.claude/projects/{project}/{sessionId}/subagents/`. Setiap transkrip disimpan sebagai `agent-{agentId}.jsonl`.931Anda juga dapat meminta Claude untuk ID agen jika Anda ingin mereferensikannya secara eksplisit, atau temukan ID dalam file transkrip di `~/.claude/projects/{project}/{sessionId}/subagents/`. Setiap transkrip disimpan sebagai `agent-{agentId}.jsonl`.

912 932 

913Transkrip subagent bertahan secara independen dari percakapan utama:933Transkrip subagent bertahan secara independen dari percakapan utama:


975| `x` | Tutup fork yang selesai atau hentikan yang sedang berjalan |995| `x` | Tutup fork yang selesai atau hentikan yang sedang berjalan |

976| `Esc` | Kembalikan fokus ke input prompt |996| `Esc` | Kembalikan fokus ke input prompt |

977 997 

998Dengan transkrip fork atau subagent terbuka, pesan tindak lanjut dan [skills](/id/skills) pergi ke agen tersebut, tetapi perintah bawaan masih berjalan dalam percakapan utama Anda. {/* min-version: 2.1.199 */}Mulai dari v2.1.199, mengetik `/model` atau `/fast` dalam tampilan itu menampilkan pemberitahuan bahwa itu mengubah model percakapan utama atau mode cepat, bukan agen yang dilihat, daripada menjalankannya secara diam-diam.

999 

978<h3 id="how-forks-differ-from-named-subagents">1000<h3 id="how-forks-differ-from-named-subagents">

979 Bagaimana fork berbeda dari subagent bernama1001 Bagaimana fork berbeda dari subagent bernama

980</h3>1002</h3>


1018 Peninjau kode1040 Peninjau kode

1019</h3>1041</h3>

1020 1042 

1021Subagent hanya-baca yang meninjau kode tanpa memodifikasinya. Contoh ini menunjukkan cara merancang subagent yang terfokus dengan akses alat terbatas (tidak ada Edit atau Write) dan prompt terperinci yang menentukan dengan tepat apa yang harus dicari dan cara memformat output.1043Subagent hanya-baca yang meninjau kode tanpa memodifikasinya. Contoh ini menunjukkan cara merancang subagent yang terfokus dengan akses alat terbatas yang mengecualikan Edit dan Write, dan prompt terperinci yang menentukan dengan tepat apa yang harus dicari dan cara memformat output.

1022 1044 

1023```markdown theme={null}1045```markdown theme={null}

1024---1046---

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 API199* [Claude apps gateway](/id/claude-apps-gateway), gateway yang di-host sendiri yang menambahkan sign-in IdP di depan Amazon Bedrock, Claude Platform on AWS, Google Vertex AI, Microsoft Foundry, atau Anthropic API

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

201* [Claude Platform on AWS](/id/claude-platform-on-aws)201* [Claude Platform on AWS](/id/claude-platform-on-aws)

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

tools-reference.md +22 −12

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. Pada paket Team dan Enterprise, Anda dapat membagikannya di dalam organisasi Anda. {/* plan-availability: feature=artifacts plans=pro,max,team,enterprise providers=anthropic */}Memerlukan paket Pro, Max, 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. Pada paket Team dan Enterprise, Anda dapat membagikannya di dalam organisasi Anda. {/* plan-availability: feature=artifacts plans=pro,max,team,enterprise providers=anthropic */}Memerlukan paket Pro, Max, 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. {/* min-version: 2.1.198 */}Sejak v2.1.198, jika Anda tidak merespons dalam 60 detik dialog akan ditutup dengan sendirinya: dialog akan mengirimkan opsi apa pun yang sudah Anda pilih dan memberitahu Claude bahwa Anda mungkin jauh dari keyboard, sehingga Claude melanjutkan dengan penilaian sendiri dan dapat menanyakan kembali nanti. Hitungan mundur muncul selama 20 detik terakhir. Setiap penekanan tombol membuat dialog tetap terbuka, begitu juga dengan jendela yang terfokus pada terminal yang melaporkan fokus. Atur variabel lingkungan [`CLAUDE_AFK_TIMEOUT_MS`](/id/env-vars#variables) untuk mengubah berapa lama Claude Code menunggu, atau ke nilai besar seperti `86400000`, 24 jam, untuk membuat pertanyaan tetap terbuka saat Anda pergi. Timeout ini hanya berlaku untuk pertanyaan pilihan ganda `AskUserQuestion`; prompt izin, termasuk persetujuan paket, tidak pernah auto-resolve saat idle | Tidak |

18| `Bash` | Menjalankan perintah shell di lingkungan Anda. Lihat [perilaku Bash tool](#bash-tool-behavior) | Ya |18| `Bash` | Menjalankan perintah shell di lingkungan Anda. Lihat [perilaku Bash tool](#bash-tool-behavior) | Ya |

19| `CronCreate` | Menjadwalkan prompt berulang atau satu kali dalam sesi saat ini. Tugas bersifat session-scoped dan dipulihkan pada `--resume` atau `--continue` jika belum kadaluarsa. Lihat [tugas terjadwal](/id/scheduled-tasks) | Tidak |19| `CronCreate` | Menjadwalkan prompt berulang atau satu kali dalam sesi saat ini. Tugas bersifat session-scoped dan dipulihkan pada `--resume` atau `--continue` jika belum kadaluarsa. Lihat [tugas terjadwal](/id/scheduled-tasks) | Tidak |

20| `CronDelete` | Membatalkan tugas terjadwal berdasarkan ID | Tidak |20| `CronDelete` | Membatalkan tugas terjadwal berdasarkan ID | 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| `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. {/* min-version: 2.1.199 */}Sejak v2.1.199, temuan juga dapat membawa slug `category` opsional, seperti `correctness` atau `test-coverage`, ditampilkan di sebelah lokasi file dalam daftar yang dirender | 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| `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 |

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 |40| `SendMessage` | Mengirim pesan ke anggota [agent team](/id/agent-teams), atau [melanjutkan subagent](/id/sub-agents#resume-subagents) berdasarkan ID agennya atau nama. Subagent yang dihentikan secara otomatis melanjutkan di latar belakang. Pesan protokol tim terstruktur memerlukan agent teams. Penerima tidak pernah memperlakukan pesan dari agen lain sebagai persetujuan atau persetujuan Anda. {/* min-version: 2.1.198 */}Sejak v2.1.198, subagent memperlakukan pesan dari agen yang meluncurkannya sebagai arahan tugas normal daripada sebagai permintaan peer. {/* min-version: 2.1.199 */}Sejak v2.1.199, pengiriman ke nama yang sekarang diselesaikan ke agen berbeda daripada yang dilakukan sebelumnya dalam percakapan ditolak daripada dikirimkan; lihat [Resume subagents](/id/sub-agents#resume-subagents) | 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 |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 |

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

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


45| `TaskGet` | Mengambil detail lengkap untuk tugas tertentu | Tidak |45| `TaskGet` | Mengambil detail lengkap untuk tugas tertentu | Tidak |

46| `TaskList` | Mencantumkan semua tugas dengan status saat ini mereka | Tidak |46| `TaskList` | Mencantumkan semua tugas dengan status saat ini mereka | Tidak |

47| `TaskOutput` | (Tidak digunakan lagi) Mengambil output dari tugas latar belakang. Lebih suka `Read` pada jalur file output tugas | Tidak |47| `TaskOutput` | (Tidak digunakan lagi) Mengambil output dari tugas latar belakang. Lebih suka `Read` pada jalur file output tugas | Tidak |

48| `TaskStop` | Membunuh tugas latar belakang yang sedang berjalan berdasarkan ID | Tidak |48| `TaskStop` | Menghentikan tugas latar belakang yang sedang berjalan berdasarkan ID. {/* min-version: 2.1.198 */}Sejak v2.1.198, juga menerima [rekan tim agent-team](/id/agent-teams) atau agen latar belakang bernama berdasarkan ID agen atau nama | Tidak |

49| `TaskUpdate` | Memperbarui status tugas, dependensi, detail, atau menghapus tugas | Tidak |49| `TaskUpdate` | Memperbarui status tugas, dependensi, detail, atau menghapus tugas | Tidak |

50| `TodoWrite` | {/* min-version: 2.1.142 */}Mengelola daftar periksa tugas sesi. Dinonaktifkan secara default sejak v2.1.142 mendukung `TaskCreate`, `TaskGet`, `TaskList`, dan `TaskUpdate`. Atur `CLAUDE_CODE_ENABLE_TASKS=0` untuk mengaktifkan kembali | Tidak |50| `TodoWrite` | {/* min-version: 2.1.142 */}Mengelola daftar periksa tugas sesi. Dinonaktifkan secara default sejak v2.1.142 mendukung `TaskCreate`, `TaskGet`, `TaskList`, dan `TaskUpdate`. Atur `CLAUDE_CODE_ENABLE_TASKS=0` untuk mengaktifkan kembali | Tidak |

51| `ToolSearch` | Mencari dan memuat tools tertunda saat [pencarian tool](/id/mcp#scale-with-mcp-tool-search) diaktifkan | Tidak |51| `ToolSearch` | Mencari dan memuat tools tertunda saat [pencarian tool](/id/mcp#scale-with-mcp-tool-search) diaktifkan | Tidak |

52| `WaitForMcpServers` | {/* min-version: 2.1.142 */}Menunggu satu atau lebih [server MCP](/id/mcp) yang masih terhubung di latar belakang, sehingga permintaan dapat menggunakan tools mereka tanpa memulai ulang sesi. Claude memanggilnya ketika server yang diperlukan belum terhubung. Hanya muncul saat [pencarian tool](/id/mcp#scale-with-mcp-tool-search) dinonaktifkan, karena `ToolSearch` menangani penundaan saat diaktifkan | Tidak |52| `WaitForMcpServers` | Menunggu satu atau lebih [server MCP](/id/mcp) yang masih terhubung di latar belakang, sehingga permintaan dapat menggunakan tools mereka tanpa memulai ulang sesi. Claude memanggilnya ketika server yang diperlukan belum terhubung. Hanya muncul saat [pencarian tool](/id/mcp#scale-with-mcp-tool-search) dinonaktifkan, karena `ToolSearch` menangani penundaan saat diaktifkan | Tidak |

53| `WebFetch` | Mengambil konten dari URL yang ditentukan. Lihat [perilaku WebFetch tool](#webfetch-tool-behavior) | Ya |53| `WebFetch` | Mengambil konten dari URL yang ditentukan. Lihat [perilaku WebFetch tool](#webfetch-tool-behavior) | Ya |

54| `WebSearch` | Melakukan pencarian web. Lihat [perilaku WebSearch tool](#websearch-tool-behavior) | Ya |54| `WebSearch` | Melakukan pencarian web. Lihat [perilaku WebSearch tool](#websearch-tool-behavior) | Ya |

55| `Workflow` | Menjalankan [dynamic workflow](/id/workflows): skrip yang mengorkestra banyak subagent di latar belakang dan mengembalikan satu hasil yang dikonsolidasikan | Ya |55| `Workflow` | Menjalankan [dynamic workflow](/id/workflows): skrip yang mengorkestra banyak subagent di latar belakang dan mengembalikan satu hasil yang dikonsolidasikan | Ya |


91 Perilaku Agent tool91 Perilaku Agent tool

92</h2>92</h2>

93 93 

94Agent tool menjalankan subagent dalam jendela konteks terpisah. Subagent bekerja melalui tugasnya secara otonom, kemudian mengembalikan hasil teks tunggal ke percakapan induk. Induk tidak melihat panggilan tool atau output perantara subagent, hanya hasil akhir itu. Untuk membatasi berapa banyak turn subagent berjalan, atur `maxTurns` dalam [definisi subagent](/id/sub-agents#supported-frontmatter-fields).94Agent tool menjalankan subagent dalam jendela konteks terpisah. Subagent bekerja melalui tugasnya secara otonom, kemudian mengembalikan hasil teks tunggal ke percakapan induk. Induk tidak melihat panggilan tool atau output perantara subagent, hanya hasil akhir itu.

95 

96Untuk membatasi berapa banyak turn subagent berjalan, atur `maxTurns` dalam [definisi subagent](/id/sub-agents#supported-frontmatter-fields).

95 97 

96Agent tool yang sama juga meluncurkan [subagent yang di-fork](/id/sub-agents#fork-the-current-conversation) ketika mode fork diaktifkan. Fork mewarisi percakapan induk penuh daripada memulai segar, selalu berjalan di latar belakang, dan masih menampilkan prompt izin di terminal Anda. Sisa bagian ini menjelaskan subagent bernama.98Agent tool yang sama juga meluncurkan [subagent yang di-fork](/id/sub-agents#fork-the-current-conversation) ketika mode fork diaktifkan. Fork mewarisi percakapan induk penuh daripada memulai segar, selalu berjalan di latar belakang, dan masih menampilkan prompt izin di terminal Anda. Sisa bagian ini menjelaskan subagent bernama.

97 99 


102* **Hanya `disallowedTools`**: subagent mendapatkan setiap tool induk kecuali yang tercantum.104* **Hanya `disallowedTools`**: subagent mendapatkan setiap tool induk kecuali yang tercantum.

103* **Keduanya diatur**: `disallowedTools` mengambil alih. Tool yang tercantum di keduanya dihapus.105* **Keduanya diatur**: `disallowedTools` mengambil alih. Tool yang tercantum di keduanya dihapus.

104 106 

105Meluncurkan subagent tidak sendiri meminta izin. Panggilan tool subagent sendiri diperiksa terhadap aturan izin Anda saat berjalan:107Meluncurkan subagent tidak sendiri meminta izin. Claude Code memeriksa panggilan tool subagent sendiri terhadap aturan izin Anda saat berjalan.

108 

109{/* min-version: 2.1.198 */}Sejak v2.1.198, subagent berjalan di latar belakang secara default; Claude menjalankan satu di foreground ketika membutuhkan hasil sebelum melanjutkan.

106 110 

107* **Subagent foreground** menampilkan prompt izin yang sama yang akan Anda lihat dalam percakapan utama, pada saat setiap panggilan tool terjadi.111* **Subagent foreground** menampilkan prompt izin yang sama yang akan Anda lihat dalam percakapan utama, pada saat setiap panggilan tool terjadi.

108* **Subagent background** {/* min-version: 2.1.186 */}menampilkan prompt izin dalam sesi utama Anda sejak v2.1.186. Prompt menunjukkan subagent mana yang meminta, dan menekan Esc menolak panggilan tool itu saja tanpa menghentikan subagent. Sebelum v2.1.186, subagent background secara otomatis menolak panggilan tool apa pun yang sebaliknya akan meminta dan melanjutkan tanpa tool itu.112* **Subagent background** {/* min-version: 2.1.186 */}menampilkan prompt izin dalam sesi utama Anda sejak v2.1.186. Prompt menunjukkan subagent mana yang meminta, dan menekan Esc menolak panggilan tool itu saja tanpa menghentikan subagent. Sebelum v2.1.186, subagent background secara otomatis menolak panggilan tool apa pun yang sebaliknya akan meminta dan melanjutkan tanpa tool itu.


266 PowerShell tool270 PowerShell tool

267</h2>271</h2>

268 272 

269PowerShell tool memungkinkan Claude menjalankan perintah PowerShell secara native. Di Windows, ini berarti perintah berjalan di PowerShell daripada merutekan melalui Git Bash. Di Windows tanpa Git Bash, tool diaktifkan secara otomatis. Di Windows dengan Git Bash terinstal, tool sedang diluncurkan secara progresif. Di Linux, macOS, dan WSL, tool bersifat opt-in.273PowerShell tool memungkinkan Claude menjalankan perintah PowerShell secara native. Di Windows, ini berarti perintah berjalan di PowerShell daripada merutekan melalui Git Bash. Bagaimana tool menjadi tersedia tergantung pada platform Anda:

274 

275* **Windows tanpa Git Bash**: tool diaktifkan secara otomatis.

276* **Windows dengan Git Bash terinstal**: tool sedang diluncurkan secara progresif.

277* **Linux, macOS, dan WSL**: tool bersifat opt-in.

270 278 

271<h3 id="enable-the-powershell-tool">279<h3 id="enable-the-powershell-tool">

272 Aktifkan PowerShell tool280 Aktifkan PowerShell tool


286 294 

287Di Windows, Claude Code secara otomatis mendeteksi `pwsh.exe` untuk PowerShell 7+ dengan fallback ke `powershell.exe` untuk PowerShell 5.1. Ketika tool diaktifkan, Claude memperlakukan PowerShell sebagai shell utama. Bash tool tetap tersedia untuk skrip POSIX ketika Git Bash terinstal.295Di Windows, Claude Code secara otomatis mendeteksi `pwsh.exe` untuk PowerShell 7+ dengan fallback ke `powershell.exe` untuk PowerShell 5.1. Ketika tool diaktifkan, Claude memperlakukan PowerShell sebagai shell utama. Bash tool tetap tersedia untuk skrip POSIX ketika Git Bash terinstal.

288 296 

289Claude Code menjalankan PowerShell dengan `-ExecutionPolicy Bypass` pada cakupan proses saja, sehingga skrip `.ps1` dan impor modul berfungsi pada instalasi Windows default tanpa mengubah kebijakan mesin. Bypass cakupan proses tidak mengganti Group Policy `MachinePolicy` atau `UserPolicy`, sehingga lockdown perusahaan masih berlaku. Untuk menghormati kebijakan eksekusi efektif mesin sebagai gantinya, atur `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1`.297Claude Code menjalankan PowerShell dengan `-ExecutionPolicy Bypass` pada cakupan proses saja, sehingga skrip `.ps1` dan impor modul berfungsi pada instalasi Windows default tanpa mengubah kebijakan mesin. Bypass cakupan proses tidak mengganti Group Policy `MachinePolicy` atau `UserPolicy`, sehingga kebijakan perusahaan masih berlaku. Untuk menghormati kebijakan eksekusi efektif mesin sebagai gantinya, atur `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1`.

290 298 

291<h3 id="shell-selection-in-settings-hooks-and-skills">299<h3 id="shell-selection-in-settings-hooks-and-skills">

292 Pemilihan shell dalam pengaturan, hooks, dan skills300 Pemilihan shell dalam pengaturan, hooks, dan skills


346 354 

347Aturan `WebFetch(domain:...)` eksplisit dalam `deny`, `ask`, atau `allow` mengambil alih set yang telah disetujui sebelumnya, jadi Anda dapat memblokir domain yang telah disetujui sebelumnya atau memerlukan prompt untuknya.355Aturan `WebFetch(domain:...)` eksplisit dalam `deny`, `ask`, atau `allow` mengambil alih set yang telah disetujui sebelumnya, jadi Anda dapat memblokir domain yang telah disetujui sebelumnya atau memerlukan prompt untuknya.

348 356 

349WebFetch menetapkan header `User-Agent` yang dimulai dengan `Claude-User`, dan header `Accept` yang lebih suka Markdown daripada HTML sehingga server yang mendukung negosiasi konten dapat mengembalikan Markdown secara langsung. Aturan jaringan [Sandbox](/id/sandboxing) dikonfigurasi secara terpisah, jadi domain yang ingin dijangkau proses sandboxed masih memerlukan aturan izin sandbox eksplisit.357WebFetch menetapkan header `User-Agent` yang dimulai dengan `Claude-User`, dan header `Accept` yang lebih suka Markdown daripada HTML sehingga server yang mendukung negosiasi konten dapat mengembalikan Markdown secara langsung.

358 

359Anda mengonfigurasi aturan jaringan [sandbox](/id/sandboxing) secara terpisah, jadi domain yang ingin dijangkau proses sandboxed masih memerlukan aturan izin sandbox eksplisit.

350 360 

351<h2 id="websearch-tool-behavior">361<h2 id="websearch-tool-behavior">

352 Perilaku WebSearch tool362 Perilaku WebSearch tool


361Aturan izin WebSearch tidak mengambil specifier. Entri `WebSearch` telanjang dalam `allow` atau `deny` adalah satu-satunya bentuk.371Aturan izin WebSearch tidak mengambil specifier. Entri `WebSearch` telanjang dalam `allow` atau `deny` adalah satu-satunya bentuk.

362 372 

363<Note>373<Note>

364 WebSearch tersedia di Claude API dan Microsoft Foundry. Di Google Cloud Vertex AI berfungsi dengan model Claude 4 dan model yang lebih baru, termasuk Opus, Sonnet, dan Haiku. Amazon Bedrock tidak mengekspos tool web search sisi server.374 WebSearch tersedia di Claude API, [Claude Platform on AWS](/id/claude-platform-on-aws), dan Microsoft Foundry. Di Google Cloud Vertex AI berfungsi dengan model Claude 4 dan model yang lebih baru, termasuk Opus, Sonnet, dan Haiku. Amazon Bedrock tidak mengekspos tool web search sisi server.

365</Note>375</Note>

366 376 

367<h2 id="write-tool-behavior">377<h2 id="write-tool-behavior">

worktrees.md +2 −0

Details

36 36 

37Anda juga dapat meminta Claude untuk "bekerja dalam worktree" selama sesi, dan itu akan membuat satu dengan tool [`EnterWorktree`](/id/tools-reference). Setelah berada dalam worktree, Claude dapat beralih langsung ke worktree lain di bawah `.claude/worktrees/` dengan memanggil `EnterWorktree` dengan jalur target. Worktree sebelumnya tetap berada di disk tanpa disentuh.37Anda juga dapat meminta Claude untuk "bekerja dalam worktree" selama sesi, dan itu akan membuat satu dengan tool [`EnterWorktree`](/id/tools-reference). Setelah berada dalam worktree, Claude dapat beralih langsung ke worktree lain di bawah `.claude/worktrees/` dengan memanggil `EnterWorktree` dengan jalur target. Worktree sebelumnya tetap berada di disk tanpa disentuh.

38 38 

39{/* min-version: 2.1.198 */}Mulai dari v2.1.198, memasuki atau keluar dari worktree juga memindahkan transkrip sesi ke penyimpanan proyek direktori tersebut, dengan cara yang sama seperti [`/cd`](/id/commands) melakukannya, sehingga `/desktop` dan `--resume` menemukan sesi di sana setelahnya. Worktrees yang dibuat oleh hook [`WorktreeCreate`](#non-git-version-control) dikecualikan dan menyimpan transkrip di direktori peluncuran.

40 

39Sebelum menggunakan `--worktree` secara interaktif di direktori untuk pertama kalinya, terima dialog kepercayaan workspace dengan menjalankan `claude` sekali di direktori tersebut. Jika kepercayaan belum diterima, `--worktree` keluar dengan kesalahan dan meminta Anda untuk menjalankan `claude` di direktori terlebih dahulu. Jalankan non-interaktif dengan `-p` melewati [pemeriksaan kepercayaan](/id/security), jadi `claude -p --worktree` melanjutkan tanpanya.41Sebelum menggunakan `--worktree` secara interaktif di direktori untuk pertama kalinya, terima dialog kepercayaan workspace dengan menjalankan `claude` sekali di direktori tersebut. Jika kepercayaan belum diterima, `--worktree` keluar dengan kesalahan dan meminta Anda untuk menjalankan `claude` di direktori terlebih dahulu. Jalankan non-interaktif dengan `-p` melewati [pemeriksaan kepercayaan](/id/security), jadi `claude -p --worktree` melanjutkan tanpanya.

40 42 

41<Tip>43<Tip>