SpyBara
Go Premium

Documentation 2026-11-09 23:02 UTC to 2026-11-10 21:57 UTC

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

advisor.md +1 −1

Details

160* **Penagihan API**: Anda membayar tarif input dan output model advisor untuk token advisor160* **Penagihan API**: Anda membayar tarif input dan output model advisor untuk token advisor

161* **Paket berlangganan**: penggunaan advisor dihitung terhadap batas penggunaan paket Anda, kecuali bahwa advisor Fable ditagih ke [kredit penggunaan](https://code.claude.com/docs/id/model-config.md#fable-and-usage-credits) pada paket di mana penggunaan Fable melakukannya161* **Paket berlangganan**: penggunaan advisor dihitung terhadap batas penggunaan paket Anda, kecuali bahwa advisor Fable ditagih ke [kredit penggunaan](https://code.claude.com/docs/id/model-config.md#fable-and-usage-credits) pada paket di mana penggunaan Fable melakukannya

162 162 

163Jika akun Anda memerlukan persetujuan kredit penggunaan, advisor Fable tidak ditagih apa pun sebelum Anda memberikannya, karena Claude Code [tidak menerapkan pilihan](#fable-advisor-and-usage-credits) sampai saat itu.163Untuk cara kerja advisor Fable dengan kredit penggunaan, lihat [Advisor Fable dan kredit penggunaan](#fable-advisor-and-usage-credits).

164 164 

165Claude memanggil advisor pada titik keputusan daripada pada setiap giliran, jadi memasangkan model utama yang lebih cepat dengan advisor yang lebih kuat biasanya biaya lebih rendah daripada menjalankan model yang lebih kuat di seluruh. Penggunaan advisor dihitung terhadap total sesi yang ditampilkan oleh [`/usage`](https://code.claude.com/docs/id/costs#track-your-costs).165Claude memanggil advisor pada titik keputusan daripada pada setiap giliran, jadi memasangkan model utama yang lebih cepat dengan advisor yang lebih kuat biasanya biaya lebih rendah daripada menjalankan model yang lebih kuat di seluruh. Penggunaan advisor dihitung terhadap total sesi yang ditampilkan oleh [`/usage`](https://code.claude.com/docs/id/costs#track-your-costs).

166 166 

Details

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

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

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

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

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

252 252 

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

Details

1858 1858 

1859### `TaskStartedMessage`1859### `TaskStartedMessage`

1860 1860 

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

1862 1862 

1863```python theme={null}1863```python theme={null}

1864@dataclass1864@dataclass


1878| `uuid` | `str` | Pengenal pesan unik |1878| `uuid` | `str` | Pengenal pesan unik |

1879| `session_id` | `str` | Pengenal sesi |1879| `session_id` | `str` | Pengenal sesi |

1880| `tool_use_id` | `str \| None` | ID penggunaan tool yang terkait |1880| `tool_use_id` | `str \| None` | ID penggunaan tool yang terkait |

1881| `task_type` | `str \| None` | Jenis tugas latar belakang: `"local_bash"` untuk Bash dan Monitor watches di background, `"local_agent"`, atau `"remote_agent"` |1881| `task_type` | `str \| None` | Jenis tugas latar belakang, seperti `"local_bash"` untuk Bash dan Monitor watches di background, `"local_agent"` untuk subagent, `"mcp_task"` untuk [panggilan tool MCP di latar belakang](https://code.claude.com/docs/id/mcp.md#automatic-backgrounding-of-long-tool-calls), atau `"remote_agent"` |

1882 1882 

1883### `TaskUsage`1883### `TaskUsage`

1884 1884 

Details

12 12 

13## Mengapa output terstruktur?13## Mengapa output terstruktur?

14 14 

15Agen mengembalikan teks bentuk bebas secara default, yang berfungsi untuk obrolan tetapi tidak ketika Anda perlu menggunakan output secara terprogram. Output terstruktur memberi Anda data yang diketik yang dapat Anda teruskan langsung ke logika aplikasi, database, atau komponen UI Anda.15Agent mengembalikan teks bentuk bebas secara default, yang cocok untuk percakapan tetapi tidak ketika Anda perlu menggunakan output tersebut secara terprogram. Output terstruktur memberi Anda data bertipe yang dapat Anda teruskan langsung ke logika aplikasi, basis data, atau komponen UI Anda.

16 16 

17Pertimbangkan aplikasi resep di mana agen mencari web dan membawa kembali resep. Tanpa output terstruktur, Anda mendapatkan teks bentuk bebas yang perlu Anda parsing sendiri. Dengan output terstruktur, Anda menentukan bentuk yang Anda inginkan dan mendapatkan data yang diketik yang dapat Anda gunakan langsung di aplikasi Anda.17Bayangkan sebuah aplikasi resep di mana agent mencari di web dan membawa kembali resep. Tanpa output terstruktur, Anda mendapatkan teks bentuk bebas yang perlu Anda parsing sendiri. Dengan output terstruktur, Anda mendefinisikan bentuk yang Anda inginkan dan mendapatkan data bertipe yang dapat Anda gunakan langsung di aplikasi Anda.

18 18 

19> [accordion] Tanpa output terstruktur19> [accordion] Tanpa output terstruktur

20>20>

21> ```text theme={null}21> ```text theme={null}

22> Berikut adalah resep kue cokelat chip klasik!22> Here's a classic chocolate chip cookie recipe!

23>23>

24> **Kue Cokelat Chip**24> **Chocolate Chip Cookies**

25> Waktu persiapan: 15 menit | Waktu memasak: 10 menit25> Prep time: 15 minutes | Cook time: 10 minutes

26>26>

27> Bahan-bahan:27> Ingredients:

28> - 2 1/4 cangkir tepung serbaguna28> - 2 1/4 cups all-purpose flour

29> - 1 cangkir mentega, dilunakkan29> - 1 cup butter, softened

30> ...30> ...

31> ```31> ```

32>32>

33> Untuk menggunakan ini di aplikasi Anda, Anda perlu mengurai judul, mengonversi "15 menit" menjadi angka, memisahkan bahan dari instruksi, dan menangani pemformatan yang tidak konsisten di seluruh respons.33> Untuk menggunakan ini di aplikasi Anda, Anda perlu mem-parsing judulnya, mengonversi "15 minutes" menjadi angka, memisahkan bahan dari instruksi, dan menangani format yang tidak konsisten di berbagai respons.

34 34 

35> [accordion] Dengan output terstruktur35> [accordion] Dengan output terstruktur

36>36>

37> ```jsonc theme={null}37> ```jsonc theme={null}

38> {38> {

39> "name": "Kue Cokelat Chip",39> "name": "Chocolate Chip Cookies",

40> "prep_time_minutes": 15,40> "prep_time_minutes": 15,

41> "cook_time_minutes": 10,41> "cook_time_minutes": 10,

42> "ingredients": [42> "ingredients": [

43> { "item": "tepung serbaguna", "amount": 2.25, "unit": "cangkir" },43> { "item": "all-purpose flour", "amount": 2.25, "unit": "cups" },

44> { "item": "mentega, dilunakkan", "amount": 1, "unit": "cangkir" }44> { "item": "butter, softened", "amount": 1, "unit": "cup" }

45> // ...45> // ...

46> ],46> ],

47> "steps": ["Panaskan oven hingga 375°F", "Kocok mentega dan gula" /* ... */]47> "steps": ["Preheat oven to 375°F", "Cream butter and sugar" /* ... */]

48> }48> }

49> ```49> ```

50>50>

51> Data yang diketik yang dapat Anda gunakan langsung di UI Anda.51> Data bertipe yang dapat Anda gunakan langsung di UI Anda.

52 52 

53## Mulai cepat53## Mulai cepat

54 54 

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

56 56 

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

58 58 

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

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

61 61 

62// Tentukan bentuk data yang ingin Anda kembalikan62// Definisikan bentuk data yang ingin Anda terima kembali

63const schema = {63const schema = {

64 type: "object",64 type: "object",

65 properties: {65 properties: {


72 72 

73try {73try {

74 for await (const message of query({74 for await (const message of query({

75 prompt: "Teliti Anthropic dan berikan informasi perusahaan utama",75 prompt: "Research Anthropic and provide key company information",

76 options: {76 options: {

77 outputFormat: {77 outputFormat: {

78 type: "json_schema",78 type: "json_schema",


80 }80 }

81 }81 }

82 })) {82 })) {

83 // Pesan hasil berisi structured_output dengan data yang divalidasi83 // Pesan hasil berisi structured_output dengan data tervalidasi

84 if (message.type === "result" && message.subtype === "success" && message.structured_output) {84 if (message.type === "result" && message.subtype === "success" && !message.is_error && message.structured_output) {

85 console.log(message.structured_output);85 console.log(message.structured_output);

86 // { company_name: "Anthropic", founded_year: 2021, headquarters: "San Francisco, CA" }86 // { company_name: "Anthropic", founded_year: 2021, headquarters: "San Francisco, CA" }

87 }87 }

88 }88 }

89} catch (error) {89} catch (error) {

90 // query() sekali jalan melempar setelah menghasilkan hasil kesalahan, seperti90 // query() sekali jalan akan melempar error setelah menghasilkan hasil error, seperti

91 // error_max_structured_output_retries; lihat bagian Penanganan kesalahan.91 // error_max_structured_output_retries; lihat bagian Penanganan error.

92 console.error(`Sesi berakhir dengan kesalahan: ${error}`);92 console.error(`Session ended with an error: ${error}`);

93}93}

94```94```

95 95 


97import asyncio97import asyncio

98from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage98from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

99 99 

100# Tentukan bentuk data yang ingin Anda kembalikan100# Definisikan bentuk data yang ingin Anda terima kembali

101schema = {101schema = {

102 "type": "object",102 "type": "object",

103 "properties": {103 "properties": {


112async def main():112async def main():

113 try:113 try:

114 async for message in query(114 async for message in query(

115 prompt="Teliti Anthropic dan berikan informasi perusahaan utama",115 prompt="Research Anthropic and provide key company information",

116 options=ClaudeAgentOptions(116 options=ClaudeAgentOptions(

117 output_format={"type": "json_schema", "schema": schema}117 output_format={"type": "json_schema", "schema": schema}

118 ),118 ),

119 ):119 ):

120 # Pesan hasil berisi structured_output dengan data yang divalidasi120 # Pesan hasil berisi structured_output dengan data tervalidasi

121 if isinstance(message, ResultMessage) and message.structured_output:121 if (

122 isinstance(message, ResultMessage)

123 and not message.is_error

124 and message.structured_output

125 ):

122 print(message.structured_output)126 print(message.structured_output)

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

124 except Exception as error:128 except Exception as error:

125 # query() sekali jalan memunculkan exception setelah menghasilkan hasil kesalahan, seperti129 # query() sekali jalan akan memunculkan error setelah menghasilkan hasil error, seperti

126 # error_max_structured_output_retries; lihat bagian Penanganan kesalahan.130 # error_max_structured_output_retries; lihat bagian Penanganan error.

127 print(f"Sesi berakhir dengan kesalahan: {error}")131 print(f"Session ended with an error: {error}")

128 132 

129 133 

130asyncio.run(main())134asyncio.run(main())


173 }177 }

174 }178 }

175 })) {179 })) {

176 if (message.type === "result" && message.subtype === "success" && message.structured_output) {180 if (message.type === "result" && message.subtype === "success" && !message.is_error && message.structured_output) {

177 // Validate and get fully typed result181 // Validate and get fully typed result

178 const parsed = FeaturePlan.safeParse(message.structured_output);182 const parsed = FeaturePlan.safeParse(message.structured_output);

179 if (parsed.success) {183 if (parsed.success) {


223 }227 }

224 ),228 ),

225 ):229 ):

226 if isinstance(message, ResultMessage) and message.structured_output:230 if (

231 isinstance(message, ResultMessage)

232 and not message.is_error

233 and message.structured_output

234 ):

227 # Validate and get fully typed result235 # Validate and get fully typed result

228 plan = FeaturePlan.model_validate(message.structured_output)236 plan = FeaturePlan.model_validate(message.structured_output)

229 print(f"Feature: {plan.feature_name}")237 print(f"Feature: {plan.feature_name}")


254 262 

255Kata kunci `format`, seperti `"format": "email"`, diterima sebagai anotasi dan tidak diberlakukan oleh validator SDK. Sebelum v2.1.205, skema apa pun yang berisi `format` dianggap tidak valid.263Kata kunci `format`, seperti `"format": "email"`, diterima sebagai anotasi dan tidak diberlakukan oleh validator SDK. Sebelum v2.1.205, skema apa pun yang berisi `format` dianggap tidak valid.

256 264 

257## Contoh: agen pelacakan TODO265## Contoh: agent pelacak TODO

258 266 

259Contoh ini menunjukkan bagaimana output terstruktur bekerja dengan penggunaan alat multi-langkah. Agen perlu menemukan komentar TODO dalam basis kode, kemudian mencari informasi git blame untuk masing-masing. Agen secara mandiri memutuskan alat mana yang akan digunakan (Grep untuk mencari, Bash untuk menjalankan perintah git) dan menggabungkan hasil menjadi respons terstruktur tunggal.267Contoh ini menunjukkan cara kerja output terstruktur dengan penggunaan tool multi-langkah. Agent perlu menemukan komentar TODO dalam codebase, lalu mencari informasi git blame untuk masing-masing komentar tersebut. Agent secara mandiri memutuskan tool mana yang akan digunakan (Grep untuk mencari, Bash untuk menjalankan perintah git) dan menggabungkan hasilnya menjadi satu respons terstruktur.

260 268 

261Skema mencakup bidang opsional (`author` dan `date`) karena informasi git blame mungkin tidak tersedia untuk semua file. Agen mengisi apa yang dapat ditemukannya dan menghilangkan sisanya.269Skema ini menyertakan field opsional (`author` dan `date`) karena informasi git blame mungkin tidak tersedia untuk semua file. Agent mengisi apa yang dapat ditemukannya dan menghilangkan sisanya.

262 270 

263```typescript TypeScript theme={null}271```typescript TypeScript theme={null}

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

265 273 

266// Tentukan struktur untuk ekstraksi TODO274// Definisikan struktur untuk ekstraksi TODO

267const todoSchema = {275const todoSchema = {

268 type: "object",276 type: "object",

269 properties: {277 properties: {


286 required: ["todos", "total_count"]294 required: ["todos", "total_count"]

287};295};

288 296 

289// Agen menggunakan Grep untuk menemukan TODO, Bash untuk mendapatkan informasi git blame297// Agent menggunakan Grep untuk menemukan TODO, Bash untuk mendapatkan info git blame

290try {298try {

291 for await (const message of query({299 for await (const message of query({

292 prompt: "Temukan semua komentar TODO dalam basis kode ini dan identifikasi siapa yang menambahkannya",300 prompt: "Find all TODO comments in this codebase and identify who added them",

293 options: {301 options: {

294 outputFormat: {302 outputFormat: {

295 type: "json_schema",303 type: "json_schema",


297 }305 }

298 }306 }

299 })) {307 })) {

300 if (message.type === "result" && message.subtype === "success" && message.structured_output) {308 if (message.type === "result" && message.subtype === "success" && !message.is_error && message.structured_output) {

301 const data = message.structured_output as { total_count: number; todos: Array<{ file: string; line: number; text: string; author?: string; date?: string }> };309 const data = message.structured_output as { total_count: number; todos: Array<{ file: string; line: number; text: string; author?: string; date?: string }> };

302 console.log(`Ditemukan ${data.total_count} TODO`);310 console.log(`Found ${data.total_count} TODOs`);

303 data.todos.forEach((todo) => {311 data.todos.forEach((todo) => {

304 console.log(`${todo.file}:${todo.line} - ${todo.text}`);312 console.log(`${todo.file}:${todo.line} - ${todo.text}`);

305 if (todo.author) {313 if (todo.author) {

306 console.log(` Ditambahkan oleh ${todo.author} pada ${todo.date}`);314 console.log(` Added by ${todo.author} on ${todo.date}`);

307 }315 }

308 });316 });

309 }317 }

310 }318 }

311} catch (error) {319} catch (error) {

312 // Kueri query() sekali jalan melempar setelah menghasilkan hasil kesalahan, seperti320 // query() sekali jalan akan melempar error setelah menghasilkan hasil error, seperti

313 // error_max_structured_output_retries; lihat bagian Penanganan kesalahan.321 // error_max_structured_output_retries; lihat bagian Penanganan error.

314 console.error(`Sesi berakhir dengan kesalahan: ${error}`);322 console.error(`Session ended with an error: ${error}`);

315}323}

316```324```

317 325 


319import asyncio327import asyncio

320from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage328from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

321 329 

322# Tentukan struktur untuk ekstraksi TODO330# Definisikan struktur untuk ekstraksi TODO

323todo_schema = {331todo_schema = {

324 "type": "object",332 "type": "object",

325 "properties": {333 "properties": {


344 352 

345 353 

346async def main():354async def main():

347 # Agen menggunakan Grep untuk menemukan TODO, Bash untuk mendapatkan informasi git blame355 # Agent menggunakan Grep untuk menemukan TODO, Bash untuk mendapatkan info git blame

348 try:356 try:

349 async for message in query(357 async for message in query(

350 prompt="Temukan semua komentar TODO dalam basis kode ini dan identifikasi siapa yang menambahkannya",358 prompt="Find all TODO comments in this codebase and identify who added them",

351 options=ClaudeAgentOptions(359 options=ClaudeAgentOptions(

352 output_format={"type": "json_schema", "schema": todo_schema}360 output_format={"type": "json_schema", "schema": todo_schema}

353 ),361 ),

354 ):362 ):

355 if isinstance(message, ResultMessage) and message.structured_output:363 if (

364 isinstance(message, ResultMessage)

365 and not message.is_error

366 and message.structured_output

367 ):

356 data = message.structured_output368 data = message.structured_output

357 print(f"Ditemukan {data['total_count']} TODO")369 print(f"Found {data['total_count']} TODOs")

358 for todo in data["todos"]:370 for todo in data["todos"]:

359 print(f"{todo['file']}:{todo['line']} - {todo['text']}")371 print(f"{todo['file']}:{todo['line']} - {todo['text']}")

360 if "author" in todo:372 if "author" in todo:

361 print(f" Ditambahkan oleh {todo['author']} pada {todo['date']}")373 print(f" Added by {todo['author']} on {todo['date']}")

362 except Exception as error:374 except Exception as error:

363 # Kueri query() sekali jalan melempar setelah menghasilkan hasil kesalahan, seperti375 # query() sekali jalan akan memunculkan exception setelah menghasilkan hasil error, seperti

364 # error_max_structured_output_retries; lihat bagian Penanganan kesalahan.376 # error_max_structured_output_retries; lihat bagian Penanganan error.

365 print(f"Sesi berakhir dengan kesalahan: {error}")377 print(f"Session ended with an error: {error}")

366 378 

367 379 

368asyncio.run(main())380asyncio.run(main())


379 391 

380Jika aplikasi Anda menampilkan atau mencatat panggilan tool, lewati panggilan yang bernama `StructuredOutput` agar mekanisme ini tidak muncul sebagai langkah yang dipilih oleh agent. Blok `tool_result` tidak membawa nama tool, hanya `tool_use_id` dari panggilan yang dijawabnya, jadi cocokkan nilai tersebut dengan `id` dari setiap panggilan yang Anda lewati.392Jika aplikasi Anda menampilkan atau mencatat panggilan tool, lewati panggilan yang bernama `StructuredOutput` agar mekanisme ini tidak muncul sebagai langkah yang dipilih oleh agent. Blok `tool_result` tidak membawa nama tool, hanya `tool_use_id` dari panggilan yang dijawabnya, jadi cocokkan nilai tersebut dengan `id` dari setiap panggilan yang Anda lewati.

381 393 

382## Penanganan kesalahan394## Penanganan error

383 395 

384Pembuatan output terstruktur dapat gagal ketika agent tidak dapat menghasilkan JSON yang valid sesuai dengan skema Anda. Ini biasanya terjadi ketika skema terlalu kompleks untuk tugas, tugas itu sendiri ambigu, atau agent mencapai batas retry-nya saat mencoba memperbaiki kesalahan validasi. Ini juga dapat terjadi tanpa ada kegagalan validasi: [fallback model](https://code.claude.com/docs/id/model-config.md#automatic-model-fallback) dapat menarik kembali output yang sudah selesai di tengah aliran, dan jika tidak ada retry yang menggantinya, jalannya berakhir dengan kesalahan yang sama. Periksa daftar `errors` pada pesan hasil kesalahan untuk membedakan dua penyebab tersebut sebelum men-debug skema Anda.396Pembuatan output terstruktur dapat gagal ketika agent tidak dapat menghasilkan JSON valid yang sesuai dengan skema Anda. Hal ini biasanya terjadi ketika skema terlalu kompleks untuk tugas tersebut, tugas itu sendiri ambigu, atau agent mencapai batas retry saat mencoba memperbaiki error validasi. Hal ini juga dapat terjadi tanpa kegagalan validasi apa pun: sebuah [model fallback](https://code.claude.com/docs/id/model-config.md#automatic-model-fallback) dapat menarik kembali output yang sudah selesai di tengah stream, dan jika tidak ada retry yang menggantikannya, eksekusi berakhir dengan error yang sama. Periksa daftar `errors` pada pesan hasil error untuk membedakan kedua penyebab tersebut sebelum melakukan debugging pada skema Anda.

385 397 

386Ketika kesalahan terjadi, pesan hasil memiliki `subtype` yang menunjukkan apa yang salah:398Periksa `subtype` pada pesan hasil:

387 399 

388| Subtype | Arti |400| Subtype | Arti |

389| - | - |401| - | - |

390| `success` | Output dihasilkan dan divalidasi dengan berhasil |402| `success` | Eksekusi berakhir tanpa subtype error |

391| `error_max_structured_output_retries` | Tidak ada output yang valid yang bertahan setelah beberapa percobaan (kegagalan validasi, atau penarikan fallback model tanpa retry yang berhasil) |403| `error_max_structured_output_retries` | Tidak ada output valid yang tersisa setelah beberapa kali percobaan (kegagalan validasi, atau penarikan kembali akibat model fallback tanpa retry yang berhasil) |

404 

405Subtype `success` dengan sendirinya tidak berarti eksekusi menghasilkan jawaban. Anggap hasil sebagai kegagalan ketika `is_error` pada hasil bernilai `true` atau `structured_output` tidak ada:

406 

407* **`is_error` pada hasil bernilai `true`**: misalnya, permintaan model terakhir berakhir dengan error API atau penolakan. Jangan gunakan nilai `structured_output` pada hasil seperti itu.

408* **`structured_output` tidak ada**: untuk menemukan penyebabnya, lihat [structured\_output is None but the result says success](https://code.claude.com/docs/id/agent-sdk/troubleshooting.md#structured_output-is-none-but-the-result-says-success)

392 409 

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

394 411 

395```typescript TypeScript theme={null}412```typescript TypeScript theme={null}

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


415 }432 }

416 })) {433 })) {

417 if (msg.type === "result") {434 if (msg.type === "result") {

418 if (msg.subtype === "success" && msg.structured_output) {435 if (msg.subtype === "success" && !msg.is_error && msg.structured_output) {

419 // Gunakan output yang divalidasi436 // Gunakan output yang telah divalidasi

420 console.log(msg.structured_output);437 console.log(msg.structured_output);

421 } else if (msg.subtype === "error_max_structured_output_retries") {438 } else if (msg.subtype === "error_max_structured_output_retries") {

422 console.error("Tidak dapat menghasilkan output yang valid");439 console.error("Could not produce valid output");

423 } else {440 } else {

424 console.error("Jalannya berakhir tanpa output terstruktur");441 console.error("Run ended with an error or without a structured output");

425 }442 }

426 }443 }

427 }444 }

428} catch (error) {445} catch (error) {

429 // Sebuah query() single-shot melempar setelah menghasilkan pesan hasil kesalahan. Jika446 // query() sekali jalan akan melempar error setelah menghasilkan hasil error. Jika

430 // kegagalannya adalah hasil kesalahan, cabang subtype kesalahan di atas telah447 // kegagalannya berupa hasil error, cabang subtype error di atas telah

431 // sudah berjalan; kegagalan koneksi atau proses tidak menghasilkan pesan hasil.448 // dijalankan; kegagalan koneksi atau proses tidak menghasilkan pesan hasil.

432 console.log(`Sesi berakhir dengan kesalahan: ${error}`);449 console.log(`Session ended with an error: ${error}`);

433}450}

434```451```

435 452 


456 ),473 ),

457 ):474 ):

458 if isinstance(message, ResultMessage):475 if isinstance(message, ResultMessage):

459 if message.subtype == "success" and message.structured_output:476 if (

460 # Gunakan output yang divalidasi477 message.subtype == "success"

478 and not message.is_error

479 and message.structured_output

480 ):

481 # Gunakan output yang telah divalidasi

461 print(message.structured_output)482 print(message.structured_output)

462 elif message.subtype == "error_max_structured_output_retries":483 elif message.subtype == "error_max_structured_output_retries":

463 print("Tidak dapat menghasilkan output yang valid")484 print("Could not produce valid output")

464 else:485 else:

465 print("Jalannya berakhir tanpa output terstruktur")486 print("Run ended with an error or without a structured output")

466 except Exception as error:487 except Exception as error:

467 # Sebuah query() single-shot menaikkan setelah menghasilkan pesan hasil kesalahan. Jika488 # query() sekali jalan akan memunculkan error setelah menghasilkan hasil error. Jika

468 # kegagalannya adalah hasil kesalahan, cabang subtype kesalahan di atas telah489 # kegagalannya berupa hasil error, cabang subtype error di atas telah

469 # sudah berjalan; kegagalan koneksi atau proses tidak menghasilkan pesan hasil.490 # dijalankan; kegagalan koneksi atau proses tidak menghasilkan pesan hasil.

470 print(f"Sesi berakhir dengan kesalahan: {error}")491 print(f"Session ended with an error: {error}")

471 492 

472 493 

473asyncio.run(main())494asyncio.run(main())

474```495```

475 496 

476**Tips untuk menghindari kesalahan:**497**Tips untuk menghindari error:**

477 498 

478* **Jaga skema tetap fokus.** Skema yang bersarang dalam dengan banyak bidang yang diperlukan lebih sulit untuk dipenuhi. Mulai sederhana dan tambahkan kompleksitas sesuai kebutuhan.499* **Jaga agar skema tetap terfokus.** Skema yang bersarang dalam dengan banyak field wajib lebih sulit dipenuhi. Mulailah dengan yang sederhana dan tambahkan kompleksitas sesuai kebutuhan.

479* **Cocokkan skema dengan tugas.** Jika tugas mungkin tidak memiliki semua informasi yang diperlukan skema Anda, buat bidang tersebut opsional.500* **Sesuaikan skema dengan tugas.** Jika tugas mungkin tidak memiliki semua informasi yang diperlukan oleh skema Anda, jadikan field tersebut opsional.

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

481 502 

482## Sumber daya terkait503## Sumber daya terkait

483 504 

Details

142 142 

143Pesan hasil dapat berakhir dengan `subtype: "success"` sementara `structured_output` adalah `None` di Python atau `undefined` di TypeScript. Jalankan selesai, tetapi tidak ada output yang divalidasi.143Pesan hasil dapat berakhir dengan `subtype: "success"` sementara `structured_output` adalah `None` di Python atau `undefined` di TypeScript. Jalankan selesai, tetapi tidak ada output yang divalidasi.

144 144 

145Perlakukan hasil ini sebagai kegagalan dalam kode aplikasi. Periksa baik bahwa `subtype` adalah `success` dan bahwa `structured_output` ada sebelum menggunakannya. Bagian [Error handling](https://code.claude.com/docs/id/agent-sdk/structured-outputs.md#error-handling) menunjukkan pola ini untuk kedua SDK. Kemudian periksa penyebab-penyebab berikut:145Perlakukan hasil ini sebagai kegagalan dalam kode aplikasi. Bagian [Error handling](https://code.claude.com/docs/id/agent-sdk/structured-outputs.md#error-handling) menunjukkan pola ini untuk kedua SDK. Kemudian periksa penyebab-penyebab berikut:

146 146 

147* **Permintaan yang ditolak oleh Claude**: untuk mendeteksi kasus ini dalam kode Anda, periksa `stop_reason` pada pesan hasil untuk nilai `"refusal"`. Untuk langkah yang dapat dicoba selanjutnya, lihat [Usage Policy refusal](https://code.claude.com/docs/id/errors.md#usage-policy-refusal).147* **Permintaan yang ditolak oleh Claude**: untuk mendeteksi kasus ini dalam kode Anda, periksa `stop_reason` pada pesan hasil untuk nilai `"refusal"`. Untuk langkah yang dapat dicoba selanjutnya, lihat [Usage Policy refusal](https://code.claude.com/docs/id/errors.md#usage-policy-refusal).

148* **Skema yang tidak dapat dipenuhi output apa pun**: misalnya, string yang `minLength`-nya lebih besar daripada `maxLength`-nya. Jika `structured_output` berulang kali tidak ada dengan skema yang Anda yakini benar, cari batasan yang saling bertentangan. Jika Anda tidak menemukannya, sederhanakan skema sampai output tervalidasi, kemudian perkenalkan kembali batasan Anda satu per satu.148* **Skema yang tidak dapat dipenuhi output apa pun**: misalnya, string yang `minLength`-nya lebih besar daripada `maxLength`-nya. Jika `structured_output` berulang kali tidak ada dengan skema yang Anda yakini benar, cari batasan yang saling bertentangan. Jika Anda tidak menemukannya, sederhanakan skema sampai output tervalidasi, kemudian perkenalkan kembali batasan Anda satu per satu.

Details

500| Properti | Tipe | Default | Deskripsi |500| Properti | Tipe | Default | Deskripsi |

501| :- | :- | :- | :- |501| :- | :- | :- | :- |

502| `abortController` | `AbortController` | `new AbortController()` | Controller untuk membatalkan operasi |502| `abortController` | `AbortController` | `new AbortController()` | Controller untuk membatalkan operasi |

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

504| `agent` | `string` | `undefined` | Nama agent untuk thread utama. Agent harus didefinisikan dalam opsi `agents` atau dalam pengaturan |504| `agent` | `string` | `undefined` | Nama agent untuk thread utama. Agent harus didefinisikan dalam opsi `agents` atau dalam pengaturan |

505| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Mendefinisikan subagent secara terprogram |505| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Mendefinisikan subagent secara terprogram |

506| `agentProgressSummaries` | `boolean` | `false` | Jika `true`, buat ringkasan progres satu baris untuk subagent dan teruskan pada event [`task_progress`](#sdktaskprogressmessage) melalui field `summary`. Berlaku untuk subagent latar depan dan latar belakang |506| `agentProgressSummaries` | `boolean` | `false` | Jika `true`, buat ringkasan progres satu baris untuk subagent dan teruskan pada event [`task_progress`](#sdktaskprogressmessage) melalui field `summary`. Berlaku untuk subagent latar depan dan latar belakang |

507| `allowDangerouslySkipPermissions` | `boolean` | `false` | Aktifkan bypass izin. Diperlukan saat menggunakan `permissionMode: 'bypassPermissions'`, baik saat startup maupun nanti melalui `setPermissionMode()`. Lihat [plan mode](https://code.claude.com/docs/id/agent-sdk/permissions.md#plan-mode-plan) untuk cara opsi ini berinteraksi dengan `permissionMode: 'plan'` |507| `allowDangerouslySkipPermissions` | `boolean` | `false` | Mengaktifkan pelewatan izin. Diperlukan saat menggunakan `permissionMode: 'bypassPermissions'`, baik saat startup maupun nanti melalui `setPermissionMode()`. Lihat [plan mode](https://code.claude.com/docs/id/agent-sdk/permissions.md#plan-mode-plan) untuk cara interaksinya dengan `permissionMode: 'plan'` |

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

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

510| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Fungsi izin kustom, hanya dipanggil ketika [alur izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated) berakhir pada permintaan izin. Tidak dipanggil untuk panggilan yang disetujui otomatis oleh `allowedTools`, aturan allow, atau `permissionMode`. Aturan allow tidak menyetujui terlebih dahulu [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves). Lihat [`CanUseTool`](#canusetool) untuk detail |510| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Fungsi izin kustom, dipanggil hanya ketika [alur izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated) berlanjut ke permintaan izin. Tidak dipanggil untuk panggilan yang disetujui otomatis oleh `allowedTools`, aturan allow, atau `permissionMode`. Aturan allow tidak menyetujui terlebih dahulu [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves). Lihat [`CanUseTool`](#canusetool) untuk detail |

511| `continue` | `boolean` | `false` | Melanjutkan percakapan terbaru |511| `continue` | `boolean` | `false` | Melanjutkan percakapan terbaru |

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

513| `debug` | `boolean` | `false` | Aktifkan mode debug untuk proses Claude Code |513| `debug` | `boolean` | `false` | Mengaktifkan mode debug untuk proses Claude Code |

514| `debugFile` | `string` | `undefined` | Tulis log debug ke path file tertentu. Secara implisit mengaktifkan mode debug |514| `debugFile` | `string` | `undefined` | Menulis log debug ke jalur file tertentu. Secara implisit mengaktifkan mode debug |

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

516| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `undefined` | Mengontrol seberapa besar effort yang dikerahkan Claude dalam responsnya. Bekerja bersama adaptive thinking untuk memandu kedalaman thinking. Lihat [menyesuaikan tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) |516| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `undefined` | Mengontrol seberapa besar effort yang dikerahkan Claude dalam responsnya. Bekerja dengan adaptive thinking untuk memandu kedalaman thinking. Lihat [menyesuaikan tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) |

517| `enableFileCheckpointing` | `boolean` | `false` | Aktifkan pelacakan perubahan file untuk rewind. Lihat [File checkpointing](https://code.claude.com/docs/id/agent-sdk/file-checkpointing.md) |517| `enableFileCheckpointing` | `boolean` | `false` | Mengaktifkan pelacakan perubahan file untuk rewind. Lihat [File checkpointing](https://code.claude.com/docs/id/agent-sdk/file-checkpointing.md) |

518| `env` | `Record<string, string \| undefined>` | `process.env` | Environment variable. Jika diatur, ini menggantikan environment subprocess alih-alih digabungkan dengan `process.env`, jadi teruskan `{ ...process.env, YOUR_VAR: 'value' }` untuk mempertahankan variabel warisan seperti `PATH`. Lihat [Menangani respons API yang lambat atau macet](#handle-slow-or-stalled-api-responses) untuk contoh pola ini, dan [Environment variable](https://code.claude.com/docs/id/env-vars.md) untuk variabel yang dibaca oleh CLI yang mendasarinya. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |518| `env` | `Record<string, string \| undefined>` | `process.env` | Environment variable. Jika ditetapkan, ini menggantikan lingkungan subprocess alih-alih digabungkan dengan `process.env`, jadi teruskan `{ ...process.env, YOUR_VAR: 'value' }` untuk mempertahankan variabel warisan seperti `PATH`. Lihat [Menangani respons API yang lambat atau macet](#handle-slow-or-stalled-api-responses) untuk contoh pola ini, dan [Environment variable](https://code.claude.com/docs/id/env-vars.md) untuk variabel yang dibaca oleh CLI yang mendasarinya. Tetapkan `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |

519| `executable` | `'bun' \| 'deno' \| 'node'` | Terdeteksi otomatis | Runtime JavaScript yang digunakan |519| `executable` | `'bun' \| 'deno' \| 'node'` | Terdeteksi otomatis | Runtime JavaScript yang digunakan |

520| `executableArgs` | `string[]` | `[]` | Argumen yang diteruskan ke executable |520| `executableArgs` | `string[]` | `[]` | Argumen yang diteruskan ke executable |

521| `extraArgs` | `Record<string, string \| null>` | `{}` | Argumen tambahan |521| `extraArgs` | `Record<string, string \| null>` | `{}` | Argumen tambahan |

522| `fallbackModel` | `string` | `undefined` | Model yang digunakan jika model utama gagal. Menerima daftar yang dipisahkan koma. Untuk urutan dan batasnya, lihat [Rantai model fallback](https://code.claude.com/docs/id/model-config.md#fallback-model-chains). Untuk panduan, lihat [Memilih model](https://code.claude.com/docs/id/agent-sdk/configuration.md#choose-a-model) |522| `fallbackModel` | `string` | `undefined` | Model yang digunakan jika model utama gagal. Menerima daftar yang dipisahkan koma. Untuk urutan dan batasnya, lihat [Rantai model fallback](https://code.claude.com/docs/id/model-config.md#fallback-model-chains). Untuk panduan, lihat [Memilih model](https://code.claude.com/docs/id/agent-sdk/configuration.md#choose-a-model) |

523| `forkSession` | `boolean` | `false` | Saat melanjutkan dengan `resume`, lakukan fork ke ID sesi baru alih-alih melanjutkan sesi asli |523| `forkSession` | `boolean` | `false` | Saat melanjutkan dengan `resume`, lakukan fork ke ID sesi baru alih-alih melanjutkan sesi asli |

524| `forwardSubagentText` | `boolean` | `false` | Teruskan teks dan thinking block subagent sebagai pesan assistant dan user dengan `parent_tool_use_id` yang diatur, sehingga konsumen dapat merender transkrip bersarang. Tanpa opsi ini, Claude Code menghilangkan teks dan thinking block dari subagent yang berjalan di [latar depan](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background). Untuk subagent bersarang, skill dengan `context: fork`, dan versi Claude Code yang dibutuhkan masing-masing, lihat [Mengikuti pesan subagent](https://code.claude.com/docs/id/headless.md#follow-subagent-messages) |524| `forwardSubagentText` | `boolean` | `false` | Meneruskan teks dan thinking block subagent sebagai pesan assistant dan user dengan `parent_tool_use_id` ditetapkan, sehingga konsumen dapat merender transkrip bersarang. Tanpa opsi ini, Claude Code menghilangkan teks dan thinking block dari subagent yang berjalan di [latar depan](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background). Untuk subagent bersarang, skill dengan `context: fork`, dan versi Claude Code yang dibutuhkan masing-masing, lihat [Mengikuti pesan subagent](https://code.claude.com/docs/id/headless.md#follow-subagent-messages) |

525| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Callback hook untuk event |525| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Callback hook untuk event |

526| `includeHookEvents` | `boolean` | `false` | Sertakan event siklus hidup hook dalam stream pesan sebagai [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage), dan [`SDKHookResponseMessage`](#sdkhookresponsemessage). Event siklus hidup untuk hook `SessionStart` dan `Setup` selalu disertakan dan tidak memerlukan opsi ini. Beberapa event hook, seperti `Notification`, `SessionEnd`, `PreCompact`, dan `PostCompact`, tidak pernah menghasilkan `SDKHookStartedMessage`, bahkan dengan opsi ini. Untuk event tersebut, Claude Code tetap memancarkan `SDKHookProgressMessage` selama hook perintah yang berjalan lebih dari satu detik menghasilkan output, dan memancarkan `SDKHookResponseMessage` hanya ketika hook [yang berjalan di latar belakang](https://code.claude.com/docs/id/hooks.md#run-hooks-in-the-background) selesai |526| `includeHookEvents` | `boolean` | `false` | Menyertakan event siklus hidup hook dalam stream pesan sebagai [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage), dan [`SDKHookResponseMessage`](#sdkhookresponsemessage). Event siklus hidup untuk hook `SessionStart` dan `Setup` selalu disertakan dan tidak memerlukan opsi ini. Beberapa event hook, seperti `Notification`, `SessionEnd`, `PreCompact`, dan `PostCompact`, tidak pernah menghasilkan `SDKHookStartedMessage`, bahkan dengan opsi ini. Untuk event tersebut, Claude Code tetap memancarkan `SDKHookProgressMessage` selama hook perintah yang berjalan lebih dari satu detik menghasilkan output, dan memancarkan `SDKHookResponseMessage` hanya ketika hook [yang berjalan di latar belakang](https://code.claude.com/docs/id/hooks.md#run-hooks-in-the-background) selesai |

527| `includePartialMessages` | `boolean` | `false` | Sertakan event pesan parsial |527| `includePartialMessages` | `boolean` | `false` | Menyertakan event pesan parsial |

528| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Timeout dalam milidetik untuk setiap panggilan `sessionStore.load()` dan `sessionStore.listSubkeys()` selama materialisasi resume. Jika adapter tidak selesai dalam jendela waktu ini, query gagal alih-alih menggantung. Diabaikan jika `sessionStore` tidak diatur |528| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Timeout dalam milidetik untuk setiap panggilan `sessionStore.load()` dan `sessionStore.listSubkeys()` selama materialisasi resume. Jika adapter tidak selesai dalam jendela waktu ini, query gagal alih-alih menggantung. Diabaikan ketika `sessionStore` tidak ditetapkan |

529| `managedSettings` | `Settings` | `undefined` | Pengaturan tingkat kebijakan yang disediakan proses host Anda ke sesi yang di-spawn. Pada mesin dengan pengaturan terkelola yang di-deploy admin, Claude Code mengabaikan pengaturan ini kecuali sumber terkelola dengan prioritas tertinggi milik admin mengatur `parentSettingsBehavior: 'merge'`, dan tidak pernah menggabungkannya selama [`policyHelper`](https://code.claude.com/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola. Nilai yang digabungkan melewati filter yang hanya bersifat membatasi; [Membatasi pengaturan induk](https://code.claude.com/docs/id/claude-apps-gateway#restrict-parent-settings) membahas apa yang diloloskan filter dan kunci `allowManaged*Only`. Host yang mengatur [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/id/env-vars) memiliki tiga kunci yang justru dibaca langsung dari payload ini: [konfigurasi model](https://code.claude.com/docs/id/model-config.md#restrict-model-selection)-nya pada Claude Code v2.1.222 atau lebih baru, [`modelPricing`](https://code.claude.com/docs/id/settings-reference#modelpricing) ketika tidak ada sumber terkelola yang mengaturnya pada v2.1.246 atau lebih baru, dan entri env `ENABLE_TOOL_SEARCH`-nya pada v2.1.247 atau lebih baru |529| `managedSettings` | `Settings` | `undefined` | Pengaturan tingkat kebijakan yang disediakan proses host Anda ke sesi yang di-spawn. Pada mesin dengan pengaturan terkelola yang di-deploy oleh admin, Claude Code mengabaikannya kecuali jika sumber terkelola berprioritas tertinggi milik admin menetapkan `parentSettingsBehavior: 'merge'`, dan tidak pernah menggabungkannya selama [`policyHelper`](https://code.claude.com/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola. Nilai yang digabungkan melewati filter yang hanya bersifat membatasi; [Membatasi pengaturan induk](https://code.claude.com/docs/id/claude-apps-gateway#restrict-parent-settings) menjelaskan apa yang diterima filter dan penguncian `allowManaged*Only`. Host yang menetapkan [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/id/env-vars) justru membaca tiga kunci langsung dari payload ini: [konfigurasi model](https://code.claude.com/docs/id/model-config.md#restrict-model-selection) miliknya pada Claude Code v2.1.222 atau lebih baru, [`modelPricing`](https://code.claude.com/docs/id/settings-reference#modelpricing) ketika tidak ada sumber terkelola yang menetapkannya pada v2.1.246 atau lebih baru, dan entri env `ENABLE_TOOL_SEARCH` miliknya pada v2.1.247 atau lebih baru |

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

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

532| `maxTurns` | `number` | `undefined` | Maksimum [giliran](https://code.claude.com/docs/id/agent-sdk/agent-loop.md#turns-and-messages) agentik |532| `maxTurns` | `number` | `undefined` | Jumlah maksimum [giliran](https://code.claude.com/docs/id/agent-sdk/agent-loop.md#turns-and-messages) agentic |

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

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

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

536| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Mendefinisikan format output untuk hasil agent. Lihat [Output terstruktur](https://code.claude.com/docs/id/agent-sdk/structured-outputs.md) untuk detail |536| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Mendefinisikan format output untuk hasil agent. Lihat [Output terstruktur](https://code.claude.com/docs/id/agent-sdk/structured-outputs.md) untuk detail |

537| `outputStyle` | `string` | `undefined` | Bukan field `Options`. Atur `outputStyle` dalam objek [`settings`](https://code.claude.com/docs/id/settings) inline atau file pengaturan sebagai gantinya. Lihat [Mengaktifkan gaya output](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#activate-an-output-style) |537| `outputStyle` | `string` | `undefined` | Bukan field `Options`. Tetapkan `outputStyle` di objek [`settings`](https://code.claude.com/docs/id/settings) inline atau file pengaturan sebagai gantinya. Lihat [Mengaktifkan gaya output](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#activate-an-output-style) |

538| `pathToClaudeCodeExecutable` | `string` | Diselesaikan otomatis dari binary native yang dibundel | Path ke executable Claude Code. Hanya diperlukan jika dependensi opsional dilewati saat instalasi atau platform Anda tidak termasuk dalam set yang didukung |538| `pathToClaudeCodeExecutable` | `string` | Di-resolve otomatis dari binary native yang dibundel | Jalur ke executable Claude Code. Hanya diperlukan jika dependensi opsional dilewati saat instalasi atau platform Anda tidak termasuk dalam set yang didukung |

539| `permissionMode` | [`PermissionMode`](#permissionmode) | `undefined` | Mode izin untuk sesi. Jika Anda menghilangkannya dan tidak ada hal lain yang mengatur mode izin, seperti pengaturan [`permissions.defaultMode`](https://code.claude.com/docs/id/settings-reference#permissions-defaultmode), sesi dimulai dalam `default`. Lihat [Mode izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#permission-modes) |539| `permissionMode` | [`PermissionMode`](#permissionmode) | `undefined` | Mode izin untuk sesi. Jika Anda menghilangkannya dan tidak ada hal lain yang menetapkan mode izin, seperti pengaturan [`permissions.defaultMode`](https://code.claude.com/docs/id/settings-reference#permissions-defaultmode), sesi dimulai dalam `default`. Lihat [Mode izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#permission-modes) |

540| `permissionPromptToolName` | `string` | `undefined` | Nama tool MCP untuk permintaan izin |540| `permissionPromptToolName` | `string` | `undefined` | Nama tool MCP untuk permintaan izin |

541| `permissionPrompts` | `'host' \| 'none'` | `'host'` | Siapa yang menjawab permintaan izin: `'host'` mengarahkannya ke callback [`canUseTool`](#canusetool) Anda atau tool `permissionPromptToolName`, dan `'none'` [menolak panggilan yang seharusnya memunculkan permintaan izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated). Memerlukan Claude Code v2.1.259 atau lebih baru |541| `permissionPrompts` | `'host' \| 'none'` | `'host'` | Siapa yang menjawab permintaan izin: `'host'` mengarahkannya ke callback [`canUseTool`](#canusetool) Anda atau tool `permissionPromptToolName`, dan `'none'` [menolak panggilan yang seharusnya memunculkan permintaan izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated). Memerlukan Claude Code v2.1.259 atau lebih baru |

542| `persistSession` | `boolean` | `true` | Jika `false`, menonaktifkan persistensi sesi ke disk. Sesi tidak dapat dilanjutkan nanti |542| `persistSession` | `boolean` | `true` | Jika `false`, menonaktifkan persistensi sesi ke disk. Sesi tidak dapat dilanjutkan nanti |

543| `planModeInstructions` | `string` | `undefined` | Instruksi alur kerja kustom untuk plan mode. Ketika `permissionMode` adalah `'plan'`, string ini menggantikan isi alur kerja plan mode default. CLI tetap membungkusnya dengan pembuka penegakan read-only dan footer protokol ExitPlanMode |543| `planModeInstructions` | `string` | `undefined` | Instruksi alur kerja kustom untuk plan mode. Ketika `permissionMode` adalah `'plan'`, string ini menggantikan isi alur kerja plan mode default. CLI tetap membungkusnya dengan pembuka penegakan read-only dan footer protokol ExitPlanMode |

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

545| `projectConfigRoot` | `string` | `undefined` | Path absolut dari checkout tepercaya yang worktree-nya adalah `cwd`. Claude Code membaca pengaturan proyek, `.mcp.json`, serta perintah, agent, skill, workflow, routine, dan gaya output `.claude/` milik proyek dari direktori ini alih-alih `cwd`, dan mengatur `CLAUDE_PROJECT_DIR` ke direktori ini. Hook, skrip pembantu seperti `apiKeyHelper`, dan server MCP stdio dimulai dengan direktori ini sebagai direktori kerjanya. File `CLAUDE.md` dan `.claude/rules/` tetap dimuat dari `cwd`. Memerlukan Claude Code v2.1.275 atau lebih baru |545| `projectConfigRoot` | `string` | `undefined` | Jalur absolut dari checkout tepercaya yang memiliki `cwd` sebagai worktree-nya. Claude Code membaca pengaturan proyek, `.mcp.json`, serta perintah, agent, skill, workflow, routine, dan gaya output di `.claude/` proyek dari direktori ini alih-alih dari `cwd`, dan menetapkan `CLAUDE_PROJECT_DIR` ke direktori tersebut. Hook, skrip pembantu seperti `apiKeyHelper`, dan server MCP stdio dimulai dengan direktori ini sebagai direktori kerjanya. File `CLAUDE.md` dan `.claude/rules/` tetap dimuat dari `cwd`. Memerlukan Claude Code v2.1.275 atau lebih baru |

546| `promptSuggestions` | `boolean` | `false` | Aktifkan saran prompt. Setelah satu giliran, Claude Code memancarkan pesan `prompt_suggestion` yang membawa prediksi prompt pengguna berikutnya. Claude Code tidak menghasilkan saran untuk beberapa giliran, seperti ketika akun Anda mendekati atau telah mencapai batas penggunaan. Lihat [Kapan Claude Code melewati saran](https://code.claude.com/docs/id/interactive-mode.md#when-claude-code-skips-suggestions) |546| `promptSuggestions` | `boolean` | `false` | Mengaktifkan saran prompt. Setelah satu giliran, Claude Code memancarkan pesan `prompt_suggestion` yang membawa prediksi prompt pengguna berikutnya. Claude Code tidak menghasilkan saran untuk beberapa giliran, seperti ketika akun Anda mendekati atau telah mencapai batas penggunaan. Lihat [Kapan Claude Code melewati saran](https://code.claude.com/docs/id/interactive-mode.md#when-claude-code-skips-suggestions) |

547| `resume` | `string` | `undefined` | ID sesi yang akan dilanjutkan |547| `resume` | `string` | `undefined` | ID sesi yang akan dilanjutkan |

548| `resumeDropsTurn` | `string` | `undefined` | Bersama `resumeSessionAt`: UUID prompt dari giliran yang ingin dibuang oleh resume yang memotong. Claude Code menolak resume ketika rentang yang dibuang berisi apa pun yang tidak dapat diatribusikan ke giliran tersebut, seperti pesan antrean yang terserap atau notifikasi tugas, dan menyebutkan flag `--resume-drops-turn` dalam pesan penolakan. Hanya resume Agent SDK dan mode print yang membaca pasangan ini. Memerlukan Claude Code v2.1.223 atau lebih baru |548| `resumeDropsTurn` | `string` | `undefined` | Bersama `resumeSessionAt`: UUID prompt dari giliran yang hendak dibuang oleh resume yang memotong. Claude Code menolak resume ketika rentang yang dibuang berisi apa pun yang tidak dapat diatribusikan ke giliran tersebut, seperti pesan antrean yang terserap atau notifikasi tugas, dan menyebutkan flag `--resume-drops-turn` dalam pesan penolakan. Hanya resume Agent SDK dan mode print yang membaca pasangan ini. Memerlukan Claude Code v2.1.223 atau lebih baru |

549| `resumeSessionAt` | `string` | `undefined` | Lanjutkan sesi pada UUID pesan tertentu |549| `resumeSessionAt` | `string` | `undefined` | Melanjutkan sesi pada UUID pesan tertentu |

550| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Konfigurasikan perilaku sandbox secara terprogram. Lihat [Pengaturan sandbox](#sandboxsettings) untuk detail |550| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Mengonfigurasi perilaku sandbox secara terprogram. Lihat [Pengaturan sandbox](#sandboxsettings) untuk detail |

551| `sessionId` | `string` | Dibuat otomatis | Gunakan UUID tertentu untuk sesi alih-alih membuatnya secara otomatis |551| `sessionId` | `string` | Dibuat otomatis | Menggunakan UUID tertentu untuk sesi alih-alih membuatnya secara otomatis |

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

553| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Mode flush untuk `sessionStore`. Diabaikan jika `sessionStore` tidak diatur |553| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Mode flush untuk `sessionStore`. Diabaikan ketika `sessionStore` tidak ditetapkan |

554| `settings` | `string \| Settings` | `undefined` | Objek [pengaturan](https://code.claude.com/docs/id/settings.md) inline, path file pengaturan, atau string JSON inline. Mengisi lapisan flag-settings dalam [urutan prioritas](https://code.claude.com/docs/id/settings.md#settings-precedence). Ubah saat runtime dengan [`applyFlagSettings()`](#applyflagsettings) |554| `settings` | `string \| Settings` | `undefined` | Objek [pengaturan](https://code.claude.com/docs/id/settings.md) inline, jalur file pengaturan, atau string JSON inline. Mengisi lapisan flag-settings dalam [urutan prioritas](https://code.claude.com/docs/id/settings.md#settings-precedence). Ubah saat runtime dengan [`applyFlagSettings()`](#applyflagsettings) |

555| `settingSources` | [`SettingSource`](#settingsource)`[]` | Default CLI (semua sumber) | Mengontrol pengaturan filesystem mana yang dimuat. Teruskan `[]` untuk menonaktifkan pengaturan user, project, dan local. [Kebijakan yang dikelola endpoint](https://code.claude.com/docs/id/managed-settings.md#delivery-mechanisms) tetap dimuat; pengaturan yang dikelola server diambil ketika sesi melakukan autentikasi dengan kredensial organisasi pada [konfigurasi yang memenuhi syarat](https://code.claude.com/docs/id/server-managed-settings.md#platform-availability). Lihat [Menggunakan fitur Claude Code](https://code.claude.com/docs/id/agent-sdk/claude-code-features.md#what-settingsources-does-not-control) |555| `settingSources` | [`SettingSource`](#settingsource)`[]` | Default CLI (semua sumber) | Mengontrol pengaturan filesystem mana yang dimuat. Teruskan `[]` untuk menonaktifkan pengaturan user, project, dan local. [Kebijakan yang dikelola endpoint](https://code.claude.com/docs/id/managed-settings.md#delivery-mechanisms) tetap dimuat; pengaturan terkelola server diambil ketika sesi diautentikasi dengan kredensial organisasi pada [konfigurasi yang memenuhi syarat](https://code.claude.com/docs/id/server-managed-settings.md#platform-availability). Lihat [Menggunakan fitur Claude Code](https://code.claude.com/docs/id/agent-sdk/claude-code-features.md#what-settingsources-does-not-control) |

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

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

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

559| `strictMcpConfig` | `boolean` | `false` | Gunakan hanya server yang diteruskan dalam `mcpServers` dan abaikan `.mcp.json` proyek, pengaturan pengguna, server MCP yang disediakan plugin, dan [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai) |559| `strictMcpConfig` | `boolean` | `false` | Hanya menggunakan server yang diteruskan dalam `mcpServers` dan mengabaikan `.mcp.json` proyek, pengaturan pengguna, server MCP yang disediakan plugin, dan [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai) |

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

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

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

563| `title` | `string` | `undefined` | Judul tampilan untuk sesi. Saat melanjutkan melalui `resume` atau `continue`, judul tersimpan dari sesi yang dilanjutkan diutamakan; gunakan [`renameSession()`](#renamesession) untuk mengganti judul sesi yang sudah ada |563| `title` | `string` | `undefined` | Judul tampilan untuk sesi. Saat melanjutkan melalui `resume` atau `continue`, judul tersimpan dari sesi yang dilanjutkan diutamakan; gunakan [`renameSession()`](#renamesession) untuk mengganti judul sesi yang sudah ada |

564| `toolAliases` | `Record<string, string>` | `undefined` | Petakan nama tool bawaan ke nama tool MCP sehingga Claude memanggil implementasi MCP Anda sebagai pengganti tool bawaan. Misalnya, `{ Bash: 'mcp__workspace__bash' }` |564| `toolAliases` | `Record<string, string>` | `undefined` | Memetakan nama tool bawaan ke nama tool MCP sehingga Claude memanggil implementasi MCP Anda sebagai pengganti tool bawaan. Misalnya, `{ Bash: 'mcp__workspace__bash' }` |

565| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | Konfigurasi untuk perilaku tool bawaan. Lihat [`ToolConfig`](#toolconfig) untuk detail |565| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | Konfigurasi untuk perilaku tool bawaan. Lihat [`ToolConfig`](#toolconfig) untuk detail |

566| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Konfigurasi tool. Teruskan array nama tool atau gunakan preset untuk mendapatkan tool default Claude Code |566| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Konfigurasi tool. Teruskan array nama tool atau gunakan preset untuk mendapatkan tool default Claude Code |

567| `verbatimPrompts` | `boolean` | `false` | Kirimkan setiap prompt sebagaimana tertulis. SDK mengirim setiap pesan pengguna dengan `client_composed: true`. Lihat [`client_composed`](#sdkusermessage) untuk hal-hal yang dilewati Claude Code pada pesan tersebut. Gunakan opsi ini ketika teks prompt Anda menyertakan konten yang tidak diketik oleh pengguna akhir. Untuk kontrol per giliran, biarkan nonaktif dan atur `client_composed` pada pesan streaming individual sebagai gantinya. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru dan Claude Code v2.1.248 atau lebih baru; versi Claude Code yang dibundel dengan versi SDK tersebut memenuhi persyaratan Claude Code |567| `verbatimPrompts` | `boolean` | `false` | Mengirimkan setiap prompt sebagaimana ditulis. SDK mengirim setiap pesan pengguna dengan `client_composed: true`. Lihat [`client_composed`](#sdkusermessage) untuk hal-hal yang dilewati Claude Code pada pesan tersebut. Gunakan opsi ini ketika teks prompt Anda menyertakan konten yang tidak diketik oleh pengguna akhir. Untuk kontrol per giliran, biarkan opsi ini nonaktif dan tetapkan `client_composed` pada masing-masing pesan yang di-stream sebagai gantinya. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru dan Claude Code v2.1.248 atau lebih baru; versi Claude Code yang dibundel dengan versi SDK tersebut memenuhi persyaratan Claude Code |

568 568 

569#### Menangani respons API yang lambat atau macet569#### Menangani respons API yang lambat atau macet

570 570 

571Subprocess CLI membaca beberapa environment variable yang mengontrol timeout API dan deteksi kemacetan. Teruskan melalui opsi `env`:571Subprocess CLI membaca beberapa environment variable yang mengontrol timeout API dan deteksi kemacetan. Teruskan variabel tersebut melalui opsi `env`:

572 572 

573```typescript theme={null}573```typescript theme={null}

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


587```587```

588 588 

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

590* `CLAUDE_CODE_MAX_RETRIES`: jumlah retry API maksimum. Default `10`, dibatasi hingga `15`. Setiap retry mendapatkan jendela `API_TIMEOUT_MS` sendiri.590* `CLAUDE_CODE_MAX_RETRIES`: jumlah maksimum retry API. Default `10`, dibatasi hingga `15`. Setiap retry mendapatkan jendela `API_TIMEOUT_MS` sendiri.

591 591 

592 Untuk eksekusi tanpa pengawasan yang perlu menunggu gangguan yang lebih lama, atur [`CLAUDE_CODE_RETRY_WATCHDOG=1`](https://code.claude.com/docs/id/errors#tune-retry-behavior): opsi ini mencoba ulang error kapasitas sementara tanpa batas dan, pada Claude Code v2.1.199 atau lebih baru, menaikkan default untuk error sementara lainnya menjadi `300` serta menghapus batas pada variabel ini.592 Untuk eksekusi tanpa pengawasan yang perlu menunggu selama gangguan yang lebih lama, tetapkan [`CLAUDE_CODE_RETRY_WATCHDOG=1`](https://code.claude.com/docs/id/errors#tune-retry-behavior): ini mencoba ulang error kapasitas sementara tanpa batas dan, pada Claude Code v2.1.199 atau lebih baru, menaikkan default untuk error sementara lainnya menjadi `300` serta menghapus batas pada variabel ini.

593* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog kemacetan untuk subagent. Selama stream watchdog aktif, defaultnya adalah `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ditambah 5 menit, yang berjumlah `600000` kecuali Anda menaikkan variabel tersebut. Dengan stream watchdog nonaktif, defaultnya adalah `600000`. Sebelum v2.1.257, defaultnya selalu `600000`.593* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog kemacetan untuk subagent. Selama watchdog stream aktif, defaultnya adalah `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ditambah 5 menit, yang berjumlah `600000` kecuali Anda menaikkan variabel tersebut. Dengan watchdog stream nonaktif, defaultnya adalah `600000`. Sebelum v2.1.257, defaultnya selalu `600000`.

594 594 

595 Timer di-reset pada setiap event stream. Saat terjadi kemacetan, Claude Code membatalkan subagent dan melaporkan kemacetan tersebut ke induknya. Untuk subagent latar belakang, Claude Code juga menandai tugas sebagai gagal dan melampirkan hasil parsial apa pun.595 Timer di-reset pada setiap event stream. Saat terjadi kemacetan, Claude Code membatalkan subagent dan melaporkan kemacetan tersebut ke induknya. Untuk subagent latar belakang, Claude Code juga menandai tugas sebagai gagal dan melampirkan hasil parsial apa pun.

596* `CLAUDE_ENABLE_STREAM_WATCHDOG` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: stream watchdog yang membatalkan permintaan ketika header telah tiba tetapi body respons berhenti di-streaming. Watchdog aktif secara default untuk semua penyedia; atur `CLAUDE_ENABLE_STREAM_WATCHDOG=0` untuk menonaktifkannya. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` memiliki default `300000` dan dibatasi pada nilai minimum tersebut. Setelah pembatalan, [Retry otomatis](https://code.claude.com/docs/id/errors.md#automatic-retries) membahas apa yang dilakukan Claude Code, berdasarkan seberapa jauh respons telah berjalan.596* `CLAUDE_ENABLE_STREAM_WATCHDOG` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: watchdog stream yang membatalkan permintaan ketika header sudah tiba tetapi isi respons berhenti di-stream. Watchdog aktif secara default untuk semua penyedia; tetapkan `CLAUDE_ENABLE_STREAM_WATCHDOG=0` untuk menonaktifkannya. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` memiliki default `300000` dan dibatasi minimal pada nilai tersebut. Setelah pembatalan, [Retry otomatis](https://code.claude.com/docs/id/errors.md#automatic-retries) menjelaskan apa yang dilakukan Claude Code, berdasarkan seberapa jauh respons telah berjalan.

597 597 

598 Selama watchdog menunggu respons yang ditahan terbuka oleh gateway di belakang `ANTHROPIC_BASE_URL` dengan ping keep-alive, host yang mengatur `includePartialMessages` terus menerima [event stream](#sdkpartialassistantmessage) `ping`, jadi baca frame tersebut sebagai tanda aktif alih-alih menghentikan sesi karena timeout saat tidak ada aktivitas. Sebelum v2.1.257, frame tersebut berhenti 5 menit setelah event stream nyata terakhir.598 Selama watchdog menunggu respons yang ditahan terbuka oleh gateway di belakang `ANTHROPIC_BASE_URL` dengan ping keep-alive, host yang menetapkan `includePartialMessages` terus menerima [event stream](#sdkpartialassistantmessage) `ping`, jadi baca frame tersebut sebagai tanda bahwa koneksi masih hidup alih-alih menghentikan sesi karena timeout akibat tidak ada aktivitas. Sebelum v2.1.257, frame tersebut berhenti 5 menit setelah event stream nyata terakhir.

599 599 

600### Objek `Query`600### Objek `Query`

601 601 


660 660 

661| Metode | Deskripsi |661| Metode | Deskripsi |

662| :- | :- |662| :- | :- |

663| `interrupt()` | Menginterupsi query. Hanya tersedia dalam mode input streaming. Ketika CLI mengiklankan kapabilitas `interrupt_receipt_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage), metode ini diselesaikan dengan [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) yang mencantumkan pesan-pesan yang tertunda saat interupsi tiba. Diselesaikan dengan `undefined` pada CLI sebelum v2.1.205 |663| `interrupt()` | Menginterupsi query. Hanya tersedia dalam mode input streaming. Ketika CLI mengiklankan kapabilitas `interrupt_receipt_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage), di-resolve dengan [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) yang mencantumkan pesan yang tertunda saat interupsi tiba. Di-resolve ke `undefined` pada CLI sebelum v2.1.205 |

664| `rewindFiles(userMessageId, options?)` | Memulihkan file ke keadaannya pada pesan pengguna yang ditentukan. Teruskan `{ dryRun: true }` untuk melihat pratinjau perubahan. Memerlukan `enableFileCheckpointing: true`. Lihat [File checkpointing](https://code.claude.com/docs/id/agent-sdk/file-checkpointing.md) |664| `rewindFiles(userMessageId, options?)` | Memulihkan file ke keadaannya pada pesan pengguna yang ditentukan. Teruskan `{ dryRun: true }` untuk meninjau perubahan terlebih dahulu. Memerlukan `enableFileCheckpointing: true`. Lihat [File checkpointing](https://code.claude.com/docs/id/agent-sdk/file-checkpointing.md) |

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

666| `setModel()` | Mengubah model (hanya tersedia dalam mode input streaming). Meneruskan `undefined` atau string `"default"` mereset ke [model default Claude Code](https://code.claude.com/docs/id/model-config.md). Sesi dalam mode `auto` [berubah ke mode `default`](https://code.claude.com/docs/id/agent-sdk/permissions#auto-mode-auto) jika model baru tidak mendukung auto mode |666| `setModel()` | Mengubah model (hanya tersedia dalam mode input streaming). Meneruskan `undefined` atau string `"default"` mengembalikan ke [model default Claude Code](https://code.claude.com/docs/id/model-config.md). Sesi dalam mode `auto` [berubah ke mode `default`](https://code.claude.com/docs/id/agent-sdk/permissions#auto-mode-auto) jika model baru tidak mendukung auto mode |

667| `setMaxThinkingTokens()` | *Tidak digunakan lagi:* Gunakan opsi `thinking` sebagai gantinya. Mengubah token thinking maksimum. Meneruskan `null` mereset thinking ke default sesi: override di tengah sesi dihapus, dan thinking tetap nonaktif untuk sesi yang menonaktifkannya |667| `setMaxThinkingTokens()` | *Deprecated:* Gunakan opsi `thinking` sebagai gantinya. Mengubah token thinking maksimum. Meneruskan `null` mengembalikan thinking ke default sesi: override di tengah sesi dihapus, dan thinking tetap nonaktif untuk sesi yang menonaktifkannya |

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

669| `updateSettings(source, settings)` | Menulis satu kunci yang ada dalam allowlist ke file pengaturan lokal proyek atau file pengaturan pengguna Anda, sehingga nilainya bertahan untuk sesi berikutnya. Lihat [`updateSettings()`](#updatesettings). Memerlukan TypeScript SDK v0.3.257 atau lebih baru, yang membundel Claude Code v2.1.257 |669| `updateSettings(source, settings)` | Menulis satu kunci yang ada dalam allowlist ke file pengaturan lokal proyek atau file pengaturan pengguna Anda, sehingga nilainya tetap tersimpan untuk sesi berikutnya. Lihat [`updateSettings()`](#updatesettings). Memerlukan TypeScript SDK v0.3.257 atau lebih baru, yang membundel Claude Code v2.1.257 |

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

671| `reinitialize()` | Mengirim ulang permintaan kontrol `initialize` ke CLI yang sedang berjalan dan mengembalikan hasil baru alih-alih hasil koneksi pertama yang di-cache. Gunakan setelah terjadi celah transport, seperti menyambung kembali ke sesi setelah terputus, sehingga permintaan izin yang tertunda mencapai callback `canUseTool` Anda lagi. Buat callback bersifat idempoten per ID permintaan, karena permintaan yang responsnya hilang akan dikirim lagi. Memerlukan Claude Code v2.1.195 atau lebih baru |671| `reinitialize()` | Mengirim ulang permintaan kontrol `initialize` ke CLI yang sedang berjalan dan mengembalikan hasil baru alih-alih hasil koneksi pertama yang di-cache. Gunakan setelah terjadi jeda transport, seperti menyambung kembali ke sesi setelah terputus, agar permintaan izin yang tertunda kembali mencapai callback `canUseTool` Anda. Buat callback tersebut idempoten per ID permintaan, karena permintaan yang responsnya hilang akan dikirim lagi. Memerlukan Claude Code v2.1.195 atau lebih baru |

672| `supportedCommands()` | Mengembalikan perintah yang tersedia. Sejak Agent SDK v0.3.216 daftar ini mencerminkan perubahan perintah di tengah sesi; lihat [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage) |672| `supportedCommands()` | Mengembalikan perintah yang tersedia. Sejak Agent SDK v0.3.216, daftar ini mencerminkan perubahan perintah di tengah sesi; lihat [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage) |

673| `supportedModels()` | Mengembalikan model yang tersedia beserta info tampilan |673| `supportedModels()` | Mengembalikan model yang tersedia beserta info tampilan |

674| `supportedAgents()` | Mengembalikan subagent yang tersedia sebagai [`AgentInfo`](#agentinfo)`[]` |674| `supportedAgents()` | Mengembalikan subagent yang tersedia sebagai [`AgentInfo`](#agentinfo)`[]` |

675| `mcpServerStatus()` | Mengembalikan status server MCP yang terhubung sebagai [`McpServerStatus`](#mcpserverstatus)`[]` |675| `mcpServerStatus()` | Mengembalikan status server MCP yang terhubung sebagai [`McpServerStatus`](#mcpserverstatus)`[]` |

676| `getContextUsage(opts?)` | Mengembalikan [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) yang merinci penggunaan context window sesi berdasarkan kategori, skill, dan tool. Dengan `detail` default, respons ini menyertakan data yang ditampilkan `/context` dalam sesi interaktif, yang dihitung dengan permintaan API penghitungan token yang tidak muncul dalam aliran pesan; lihat [bagaimana permintaan ini ditangani](#sdkcontrolgetcontextusageresponse). [Opsi `detail`](#sdkcontrolgetcontextusageresponse) memerlukan Agent SDK v0.3.257 atau lebih baru |676| `getContextUsage(opts?)` | Mengembalikan [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) yang merinci penggunaan context window sesi berdasarkan kategori, skill, dan tool. Dengan `detail` default, hasilnya mencakup data yang ditampilkan `/context` dalam sesi interaktif, yang dihitung dengan permintaan API penghitungan token yang tidak muncul dalam stream pesan; lihat [cara permintaan ini ditangani](#sdkcontrolgetcontextusageresponse). [Opsi `detail`](#sdkcontrolgetcontextusageresponse) memerlukan Agent SDK v0.3.257 atau lebih baru |

677| `readFile(path, options?)` | Membaca file dari filesystem sesi. Claude Code meresolusi path terhadap `cwd`; [Apa yang dapat dibaca `readFile()`](#what-readfile-can-read) mencantumkan file yang dilayaninya. Teruskan `{ maxBytes }` untuk mengubah batas baca (default 1 MB, maksimum 10 MB) dan `{ encoding: 'base64' }` untuk file biner seperti gambar. Diselesaikan dengan [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), atau `null` jika izin ditolak, file tidak ada, atau terjadi error transport. Memerlukan TypeScript SDK v0.2.121 atau lebih baru |677| `readFile(path, options?)` | Membaca file dari filesystem sesi. Claude Code me-resolve jalur relatif terhadap `cwd`; [Apa yang dapat dibaca `readFile()`](#what-readfile-can-read) mencantumkan file yang dilayaninya. Teruskan `{ maxBytes }` untuk mengubah batas baca (default 1 MB, maksimum 10 MB) dan `{ encoding: 'base64' }` untuk file biner seperti gambar. Di-resolve dengan [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), atau `null` saat izin ditolak, file tidak ada, atau terjadi error transport. Memerlukan TypeScript SDK v0.2.121 atau lebih baru |

678| `reloadPlugins(options?)` | Memuat ulang plugin dari disk, sehingga plugin yang Anda instal atau edit di tengah sesi mencapai sesi yang sedang berjalan. Resolve dengan [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse) yang mencantumkan perintah, subagent, plugin, dan status server MCP sesi. Memerlukan Agent SDK v0.2.85 atau lebih baru. [Opsi `holdOnCacheImpact`](#sdkcontrolreloadpluginsresponse) memerlukan Agent SDK v0.3.268 atau lebih baru. [Opsi `addPlugins`](#load-more-plugin-folders-with-addplugins) memerlukan Agent SDK v0.3.301 atau lebih baru |678| `reloadPlugins(options?)` | Memuat ulang plugin dari disk, sehingga plugin yang Anda instal atau edit di tengah sesi mencapai sesi yang sedang berjalan. Di-resolve dengan [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse) yang mencantumkan perintah, subagent, plugin, dan status server MCP sesi. Memerlukan Agent SDK v0.2.85 atau lebih baru. [Opsi `holdOnCacheImpact`](#sdkcontrolreloadpluginsresponse) memerlukan Agent SDK v0.3.268 atau lebih baru. [Opsi `addPlugins`](#load-more-plugin-folders-with-addplugins) memerlukan Agent SDK v0.3.301 atau lebih baru |

679| `reloadSkills()` | Memuat ulang skill dari disk, sehingga skill yang Anda tambahkan atau edit di tengah sesi menjadi tersedia bagi sesi yang sedang berjalan. Diselesaikan dengan [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) yang mencantumkan skill yang tersedia setelah pemuatan ulang. Memerlukan Agent SDK v0.3.163 atau lebih baru |679| `reloadSkills()` | Memuat ulang skill dari disk, sehingga skill yang Anda tambahkan atau edit di tengah sesi menjadi tersedia untuk sesi yang sedang berjalan. Di-resolve dengan [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) yang mencantumkan skill yang tersedia setelah pemuatan ulang. Memerlukan Agent SDK v0.3.163 atau lebih baru |

680| `reloadOutputStyles()` | Membaca ulang [gaya output](https://code.claude.com/docs/id/output-styles.md) dari disk, sehingga file gaya yang Anda tambahkan atau edit di tengah sesi menjadi tersedia bagi sesi yang sedang berjalan. Diselesaikan dengan [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse) yang mencantumkan nama gaya yang tersedia setelah pemuatan ulang. Memerlukan Agent SDK v0.3.261 atau lebih baru |680| `reloadOutputStyles()` | Membaca ulang [gaya output](https://code.claude.com/docs/id/output-styles.md) dari disk, sehingga file gaya yang Anda tambahkan atau edit di tengah sesi menjadi tersedia untuk sesi yang sedang berjalan. Di-resolve dengan [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse) yang mencantumkan nama gaya yang tersedia setelah pemuatan ulang. Memerlukan Agent SDK v0.3.261 atau lebih baru |

681| `seedReadState(path, mtime)` | Menandai file sebagai sudah dibaca sehingga Edit berikutnya tidak gagal dengan `File has not been read yet`. Lihat [`seedReadState()`](#seedreadstate). Memerlukan TypeScript SDK v0.2.83 atau lebih baru |681| `seedReadState(path, mtime)` | Menandai file sebagai sudah dibaca sehingga Edit berikutnya tidak gagal dengan `File has not been read yet`. Lihat [`seedReadState()`](#seedreadstate). Memerlukan TypeScript SDK v0.2.83 atau lebih baru |

682| `accountInfo()` | Mengembalikan informasi akun |682| `accountInfo()` | Mengembalikan informasi akun |

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

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

685| `setMcpServers(servers)` | Mengganti server MCP yang dikelola metode ini: server yang ditambahkan melaluinya dan [server SDK in-process](#createsdkmcpserver). Diselesaikan dengan [`McpSetServersResult`](#mcpsetserversresult) yang menyebutkan server mana yang ditambahkan dan dihapus, serta error apa pun; bagian tersebut menjelaskan server lain mana yang tetap terhubung |685| `setMcpServers(servers)` | Mengganti server MCP yang dikelola metode ini: server yang ditambahkan melaluinya dan [server SDK in-process](#createsdkmcpserver). Di-resolve dengan [`McpSetServersResult`](#mcpsetserversresult) yang menyebutkan server mana yang ditambahkan dan dihapus, serta error apa pun; bagian tersebut menjelaskan server lain mana yang tetap terhubung |

686| `setMcpPermissionModeOverride(serverName, mode)` | Menimpa mode izin untuk tool satu server MCP dengan mode yang lebih ketat daripada mode sesi, atau menghapus override dengan `null`. Hanya tersedia dalam mode input streaming. Lihat [`setMcpPermissionModeOverride()`](#setmcppermissionmodeoverride). Memerlukan TypeScript SDK v0.3.187 atau lebih baru |686| `setMcpPermissionModeOverride(serverName, mode)` | Menimpa mode izin untuk tool dari satu server MCP dengan mode yang lebih ketat daripada mode sesi, atau menghapus override dengan `null`. Hanya tersedia dalam mode input streaming. Lihat [`setMcpPermissionModeOverride()`](#setmcppermissionmodeoverride). Memerlukan TypeScript SDK v0.3.187 atau lebih baru |

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

688| `streamInput(stream)` | Melakukan streaming pesan input ke query untuk percakapan multi-giliran |688| `streamInput(stream)` | Men-stream pesan input ke query untuk percakapan multi-giliran |

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

690| `backgroundTasks(toolUseId?)` | Memindahkan perintah Bash dan subagent yang sedang berjalan dan ditunggu oleh giliran ke latar belakang, sama seperti menekan Ctrl+B di terminal interaktif. Lihat [`backgroundTasks()`](#backgroundtasks). Memerlukan TypeScript SDK v0.2.139 atau lebih baru |690| `backgroundTasks(toolUseId?)` | Memindahkan perintah Bash dan subagent yang sedang berjalan dan ditunggu oleh giliran ke latar belakang, sama seperti menekan Ctrl+B di terminal interaktif. Lihat [`backgroundTasks()`](#backgroundtasks). Memerlukan TypeScript SDK v0.2.139 atau lebih baru |

691| `close()` | Menutup query dan menghentikan proses yang mendasarinya. Mengakhiri query secara paksa dan membersihkan semua resource |691| `close()` | Menutup query dan menghentikan proses yang mendasarinya. Mengakhiri query secara paksa dan membersihkan semua resource |

692 692 

693#### `setMcpPermissionModeOverride()`693#### `setMcpPermissionModeOverride()`

694 694 

695Menimpa mode izin untuk tool satu server MCP dengan mode yang lebih ketat daripada mode sesi, atau menghapus override dengan `null`. Gunakan ketika sesi berjalan dalam mode yang melewati permintaan izin per tindakan tetapi tool satu server tetap harus ditinjau. Memerlukan TypeScript SDK v0.3.187 atau lebih baru.695Menimpa mode izin untuk tool dari satu server MCP dengan mode yang lebih ketat daripada mode sesi, atau menghapus override dengan `null`. Gunakan ketika sesi berjalan dalam mode yang melewati permintaan izin per tindakan tetapi tool dari satu server tetap perlu ditinjau. Memerlukan TypeScript SDK v0.3.187 atau lebih baru.

696 696 

697Teruskan salah satu dari tiga nilai sebagai `mode`:697Teruskan salah satu dari tiga nilai sebagai `mode`:

698 698 

699* `'default'`: Claude Code mengevaluasi panggilan tool server tersebut seperti yang dilakukan [Manual mode](https://code.claude.com/docs/id/permission-modes.md#available-modes).699* `'default'`: Claude Code mengevaluasi panggilan tool dari server tersebut seperti yang dilakukan [mode Manual](https://code.claude.com/docs/id/permission-modes.md#available-modes).

700* `'auto'`: Claude Code mengarahkan panggilan tool server tersebut melalui pengklasifikasi [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode). Claude Code menolak nilai ini ketika pengklasifikasi tidak tersedia untuk sesi.700* `'auto'`: Claude Code mengarahkan panggilan tool dari server tersebut melalui pengklasifikasi [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode). Claude Code menolak nilai ini ketika pengklasifikasi tidak tersedia untuk sesi.

701* `null`: menghapus override.701* `null`: menghapus override.

702 702 

703Override hanya berlaku selama sesi berada dalam mode yang melewati permintaan izin per tindakan: `bypassPermissions` atau `auto`. Dalam mode sesi lainnya, Claude Code mengabaikan override, sehingga override tidak pernah dapat memperluas apa yang diizinkan sesi.703Override hanya berlaku selama sesi berada dalam mode yang melewati permintaan izin per tindakan: `bypassPermissions` atau `auto`. Dalam mode sesi lainnya, Claude Code mengabaikan override, sehingga override tidak pernah dapat memperluas apa yang diizinkan sesi.

704 704 

705Promise resolve dengan `{ warning }` ketika belum ada server dengan nama tersebut yang diketahui. Claude Code tetap menyimpan override dan menerapkannya begitu server dengan nama yang persis sama terhubung, sehingga peringatan tersebut merupakan pemeriksaan salah ketik, bukan kegagalan.705Promise di-resolve dengan `{ warning }` ketika belum ada server dengan nama tersebut yang dikenal. Claude Code tetap menyimpan override dan menerapkannya begitu server dengan nama yang persis sama terhubung, jadi peringatan tersebut adalah pemeriksaan salah ketik, bukan kegagalan.

706 706 

707Hanya tersedia dalam mode input streaming, batasan yang sama seperti `setModel()` dan `setPermissionMode()`.707Hanya tersedia dalam mode input streaming, batasan yang sama seperti `setModel()` dan `setPermissionMode()`.

708 708 


710 710 

711Menandai file sebagai sudah dibaca sehingga Edit berikutnya tidak gagal dengan `File has not been read yet`. Gunakan ketika aplikasi Anda telah membuang hasil `Read` sebelumnya dari konteks percakapan dan Claude akan mengedit file tersebut berikutnya. Memerlukan TypeScript SDK v0.2.83 atau lebih baru.711Menandai file sebagai sudah dibaca sehingga Edit berikutnya tidak gagal dengan `File has not been read yet`. Gunakan ketika aplikasi Anda telah membuang hasil `Read` sebelumnya dari konteks percakapan dan Claude akan mengedit file tersebut berikutnya. Memerlukan TypeScript SDK v0.2.83 atau lebih baru.

712 712 

713Teruskan `mtime` sebagai waktu modifikasi file pada saat pembacaan sebelumnya, dalam milidetik utuh sejak epoch, misalnya `Math.floor(stat.mtimeMs)`. Jika file di disk berubah setelah waktu tersebut, Claude Code melewatkan penandaan.713Teruskan `mtime` sebagai waktu modifikasi file pada saat pembacaan sebelumnya, dalam milidetik bulat sejak epoch, misalnya `Math.floor(stat.mtimeMs)`. Jika file di disk berubah setelah waktu tersebut, Claude Code melewati penandaan.

714 714 

715Promise resolve baik file ditandai maupun tidak, sehingga promise yang resolve tidak memberi tahu Anda mana yang terjadi.715Promise di-resolve baik file ditandai maupun tidak, sehingga promise yang di-resolve tidak memberi tahu Anda mana yang terjadi.

716 716 

717#### `backgroundTasks()`717#### `backgroundTasks()`

718 718 

719Memindahkan perintah Bash dan subagent yang sedang berjalan dan ditunggu oleh giliran ke latar belakang, sama seperti menekan Ctrl+B di terminal interaktif. Teruskan `toolUseId` dari sebuah panggilan tool untuk memindahkan ke latar belakang hanya perintah Bash atau subagent yang dimulai oleh panggilan tersebut, atau hilangkan untuk memindahkan setiap tugas latar depan ke latar belakang. Memerlukan TypeScript SDK v0.2.139 atau lebih baru.719Memindahkan perintah Bash dan subagent yang sedang berjalan dan ditunggu oleh giliran ke latar belakang, sama seperti menekan Ctrl+B di terminal interaktif. Teruskan `toolUseId` dari suatu panggilan tool untuk memindahkan ke latar belakang hanya perintah Bash atau subagent yang dimulai oleh panggilan tersebut, atau hilangkan untuk memindahkan setiap tugas latar depan ke latar belakang. Memerlukan TypeScript SDK v0.2.139 atau lebih baru.

720 720 

721Setiap panggilan tool yang dipindahkan ke latar belakang segera kembali ke Claude dengan hasil berjalan-di-latar-belakang, giliran berlanjut, dan Claude Code memancarkan [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) ketika tugas selesai.721Setiap panggilan tool yang dipindahkan ke latar belakang segera kembali ke Claude dengan hasil yang menyatakan bahwa tugas berjalan di latar belakang, giliran berlanjut, dan Claude Code memancarkan [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) ketika tugas selesai.

722 722 

723Dalam sesi yang mengaktifkan tugas latar belakang, promise resolve ke boolean:723Dalam sesi yang mengaktifkan tugas latar belakang, promise di-resolve ke boolean:

724 724 

725* **`true`**: sebuah tugas dipindahkan ke latar belakang, atau Anda menghilangkan `toolUseId`.725* **`true`**: suatu tugas dipindahkan ke latar belakang, atau Anda menghilangkan `toolUseId`.

726* **`false`**: `toolUseId` yang Anda teruskan tidak cocok dengan tugas latar depan mana pun.726* **`false`**: `toolUseId` yang Anda teruskan tidak cocok dengan tugas latar depan mana pun.

727 727 

728Jika tugas latar belakang dinonaktifkan untuk sesi, seperti dengan [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/id/env-vars), promise akan reject dan tidak ada yang dipindahkan ke latar belakang.728Jika tugas latar belakang dinonaktifkan untuk sesi, seperti dengan [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/id/env-vars), promise justru ditolak dan tidak ada yang dipindahkan ke latar belakang.

729 729 

730#### `applyFlagSettings()`730#### `applyFlagSettings()`

731 731 


733 733 

734Hanya beberapa kunci yang berlaku di tengah sesi:734Hanya beberapa kunci yang berlaku di tengah sesi:

735 735 

736* **Diterapkan pada giliran berikutnya**: `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Mengganti `agent` juga menerapkan override model dan hook agent tersebut pada giliran berikutnya. System prompt-nya diterapkan pada giliran berikutnya. Dalam sesi yang [menggunakan ulang system prompt yang direkam](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#change-the-prompt-of-an-existing-session), system prompt tersebut diterapkan setelah sesi di-compact.736* **Diterapkan pada giliran berikutnya**: `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Mengganti `agent` juga menerapkan override model dan hook milik agent tersebut pada giliran berikutnya. System prompt-nya diterapkan pada giliran berikutnya. Dalam sesi yang [menggunakan ulang system prompt yang direkam](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#change-the-prompt-of-an-existing-session), system prompt tersebut diterapkan setelah sesi di-compact.

737* **Diterapkan selama giliran saat ini**: `model`. Jika Anda mengganti `model` saat Claude sedang mengerjakan satu giliran, respons yang sedang dihasilkan Claude selesai dengan model lama, dan sisa giliran, dimulai dari panggilan berikutnya yang dilakukan Claude Code ke model, menggunakan model baru. Subagent mempertahankan modelnya sendiri. Sebelum v2.1.212, penggantian di tengah giliran menunggu hingga giliran berikutnya.737* **Diterapkan selama giliran saat ini**: `model`. Jika Anda mengganti `model` saat Claude sedang mengerjakan suatu giliran, respons yang sedang dihasilkan Claude diselesaikan dengan model lama, dan sisa giliran, dimulai dari panggilan berikutnya yang dilakukan Claude Code ke model, menggunakan model baru. Subagent mempertahankan model masing-masing. Sebelum v2.1.212, penggantian di tengah giliran menunggu hingga giliran berikutnya.

738* **Diterapkan paling lambat pada giliran berikutnya**: `effortLevel`. Tingkat tersebut berlaku sejak panggilan Claude Code berikutnya ke model. Jika [mengubah effort mempertahankan prompt cache](https://code.claude.com/docs/id/prompt-caching.md#changing-effort-level), seperti pada Claude Opus 5.5 dengan kunci API atau langganan Claude, perkirakan perubahan tersebut berlaku pada giliran berikutnya.738* **Diterapkan paling lambat pada giliran berikutnya**: `effortLevel`. Tingkat tersebut berlaku mulai dari panggilan berikutnya yang dilakukan Claude Code ke model. Jika [mengubah effort mempertahankan cache prompt](https://code.claude.com/docs/id/prompt-caching.md#changing-effort-level), seperti pada Claude Opus 5.5 dengan kunci API atau langganan Claude, perkirakan perubahan tersebut berlaku pada giliran berikutnya.

739* **Tidak berpengaruh di tengah sesi**: opsi system prompt. Opsi ini diresolusi sekali saat startup, sehingga sesi yang sedang berjalan mempertahankan nilai asli meskipun panggilan berhasil. Untuk mengubahnya, mulai sesi baru.739* **Tidak berpengaruh di tengah sesi**: opsi system prompt. Opsi ini di-resolve sekali saat startup, sehingga sesi yang sedang berjalan mempertahankan nilai aslinya meskipun panggilan berhasil. Untuk mengubahnya, mulai sesi baru.

740 740 

741`effortLevel` menerima nama [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level). Kunci ini juga menerima `"ultracode"`, yang meminta effort `xhigh` dengan [ultracode](https://code.claude.com/docs/id/workflows.md#let-claude-decide-with-ultracode) aktif. `applyFlagSettings()` mendeklarasikan `effortLevel` tanpa nilai tersebut, jadi di TypeScript teruskan `{ ultracode: true, effortLevel: "xhigh" }` untuk hasil yang sama, atau kunci [`ultracode`](https://code.claude.com/docs/id/settings-reference#ultracode) saja untuk mengaktifkan ultracode pada tingkat effort sesi saat ini. Nilai `ultracode` memerlukan Claude Code v2.1.203 atau lebih baru dan hanya diterima oleh `applyFlagSettings()`, bukan oleh kunci `effortLevel` dalam file pengaturan. Sebelum v2.1.284, kunci `ultracode` saja juga mengatur tingkat menjadi `xhigh`.741`effortLevel` menerima nama [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level). Kunci ini juga menerima `"ultracode"`, yang meminta effort `xhigh` dengan [ultracode](https://code.claude.com/docs/id/workflows.md#let-claude-decide-with-ultracode) aktif. `applyFlagSettings()` mendeklarasikan `effortLevel` tanpa nilai tersebut, jadi di TypeScript teruskan `{ ultracode: true, effortLevel: "xhigh" }` untuk hasil yang sama, atau kunci [`ultracode`](https://code.claude.com/docs/id/settings-reference#ultracode) saja untuk mengaktifkan ultracode pada tingkat effort sesi saat ini. Nilai `ultracode` memerlukan Claude Code v2.1.203 atau lebih baru dan hanya diterima oleh `applyFlagSettings()`, bukan oleh kunci `effortLevel` dalam file pengaturan. Sebelum v2.1.284, kunci `ultracode` saja juga menetapkan tingkat ke `xhigh`.

742 742 

743Nilai-nilai tersebut ditulis ke lapisan flag-settings, digabungkan di atas apa yang diatur oleh opsi `settings` inline dari `query()` saat startup. Ini adalah tingkatan yang sama yang disebut opsi terprogram oleh [bagian prioritas di halaman ini](#settings-precedence). `effortLevel` adalah pengecualian: tingkat yang Anda berikan menggantikan tingkat dari `--effort` atau pengaturan, termasuk pengaturan terkelola, sebagaimana ditunjukkan oleh [urutan resolusi effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level).743Nilai-nilai tersebut ditulis ke lapisan flag-settings, digabungkan di atas apa yang ditetapkan oleh opsi `settings` inline dari `query()` saat startup. Ini adalah tingkat yang sama yang disebut opsi terprogram oleh [bagian prioritas di halaman ini](#settings-precedence). `effortLevel` merupakan pengecualian: tingkat yang Anda teruskan menggantikan tingkat dari `--effort` atau pengaturan, termasuk pengaturan terkelola, seperti yang ditunjukkan oleh [urutan resolusi effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level).

744 744 

745Panggilan berturut-turut melakukan penggabungan dangkal pada kunci tingkat atas. Panggilan kedua dengan `{ permissions: {...} }` menggantikan seluruh objek `permissions` dari panggilan sebelumnya alih-alih menggabungkannya secara mendalam.745Panggilan berturut-turut melakukan shallow-merge pada kunci tingkat atas. Panggilan kedua dengan `{ permissions: {...} }` menggantikan seluruh objek `permissions` dari panggilan sebelumnya alih-alih melakukan deep-merge ke dalamnya.

746 746 

747Untuk menghapus kunci yang Anda atur dengan `applyFlagSettings()`, teruskan `null` untuk kunci tersebut. Sebagian besar kunci kemudian kembali terlebih dahulu ke nilai yang diatur opsi `settings` dari `query()` saat startup, lalu ke sumber dengan prioritas lebih rendah. `model` yang dihapus di-reset ke [model default Claude Code](https://code.claude.com/docs/id/model-config.md), bahkan ketika file pengaturan mengatur `model`. Meneruskan `undefined` tidak berpengaruh karena serialisasi JSON menghapusnya.747Untuk menghapus kunci yang Anda tetapkan dengan `applyFlagSettings()`, teruskan `null` untuk kunci tersebut. Sebagian besar kunci kemudian kembali terlebih dahulu ke nilai yang ditetapkan oleh opsi `settings` dari `query()` saat startup, lalu ke sumber dengan prioritas lebih rendah. `model` yang dihapus kembali ke [model default Claude Code](https://code.claude.com/docs/id/model-config.md), bahkan ketika file pengaturan menetapkan `model`. Meneruskan `undefined` tidak berpengaruh karena serialisasi JSON membuangnya.

748 748 

749Tiga kunci selain `model` mereset state sesi alih-alih kembali ke nilai sebelumnya:749Tiga kunci selain `model` me-reset status sesi alih-alih kembali ke nilai fallback:

750 750 

751* `effortLevel: null` mengembalikan sesi ke tingkat effort default model, bukan ke opsi `effort` dari `query()` atau `effortLevel` dari file pengaturan.751* `effortLevel: null` mengembalikan sesi ke tingkat effort default model, bukan ke opsi `effort` dari `query()` atau `effortLevel` dari file pengaturan.

752* `agent: null` menjalankan thread utama tanpa agent, dimulai dari giliran berikutnya, alih-alih memulihkan opsi `agent` dari `query()` atau `agent` dari file pengaturan. Jika agent yang dihapus telah menerapkan modelnya sendiri, sesi kembali ke model yang diresolusinya saat startup.752* `agent: null` menjalankan thread utama tanpa agent, dimulai dari giliran berikutnya, alih-alih memulihkan opsi `agent` dari `query()` atau `agent` dari file pengaturan. Jika agent yang dihapus telah menerapkan modelnya sendiri, sesi kembali ke model yang di-resolve saat startup.

753* `ultracode: null` mematikan ultracode, sama seperti `false`, alih-alih memulihkan nilai `ultracode` dari file pengaturan. Sesi mempertahankan tingkat effort saat ini, jadi teruskan `effortLevel` dalam panggilan yang sama untuk mengubahnya.753* `ultracode: null` menonaktifkan ultracode, sama seperti `false`, alih-alih memulihkan nilai `ultracode` dari file pengaturan. Sesi mempertahankan tingkat effort saat ini, jadi teruskan `effortLevel` dalam panggilan yang sama untuk mengubahnya.

754 754 

755Hanya tersedia dalam mode input streaming, batasan yang sama seperti `setModel()` dan `setPermissionMode()`.755Hanya tersedia dalam mode input streaming, batasan yang sama seperti `setModel()` dan `setPermissionMode()`.

756 756 

757Contoh di bawah mengganti model aktif di tengah sesi, lalu menghapus override sehingga model di-reset ke [model default Claude Code](https://code.claude.com/docs/id/model-config.md).757Contoh di bawah ini mengganti model aktif di tengah sesi, lalu menghapus override sehingga model kembali ke [model default Claude Code](https://code.claude.com/docs/id/model-config.md).

758 758 

759```typescript theme={null}759```typescript theme={null}

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


774 774 

775#### `updateSettings()`775#### `updateSettings()`

776 776 

777Menulis satu kunci yang ada dalam allowlist ke file pengaturan di disk, sehingga nilainya bertahan untuk sesi berikutnya yang memuat sumber tersebut. Setiap sumber menerima satu kunci, dengan nilai string:777Menulis satu kunci yang ada dalam allowlist ke file pengaturan di disk, sehingga nilainya tetap tersimpan untuk sesi berikutnya yang memuat sumber tersebut. Setiap sumber menerima satu kunci, dengan nilai string:

778 778 

779* **`"localSettings"`**: menerima `outputStyle` dan menggabungkannya ke dalam file pengaturan lokal proyek, `.claude/settings.local.json`. Gaya baru berlaku pada permintaan berikutnya dari sesi.779* **`"localSettings"`**: menerima `outputStyle` dan menggabungkannya ke dalam file pengaturan lokal proyek, `.claude/settings.local.json`. Gaya baru berlaku pada permintaan sesi berikutnya.

780* **`"userSettings"`**: menerima `effortLevel` dan menyimpannya sebagai [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) default untuk model sesi saat ini, di bawah [`modelSettings`](https://code.claude.com/docs/id/settings-reference#modelsettings) dalam file pengaturan pengguna Anda. Meneruskan `max` tidak menulis apa pun, karena `max` hanya berlaku untuk sesi. Sesi yang sedang berjalan tetap mempertahankan tingkat effort saat ini, jadi panggil [`applyFlagSettings()`](#applyflagsettings) jika Anda juga ingin mengubahnya. Sumber ini memerlukan TypeScript SDK v0.3.277 atau lebih baru, yang membundel Claude Code v2.1.277.780* **`"userSettings"`**: menerima `effortLevel` dan menyimpannya sebagai [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) default untuk model sesi saat ini, di bawah [`modelSettings`](https://code.claude.com/docs/id/settings-reference#modelsettings) dalam file pengaturan pengguna Anda. Meneruskan `max` tidak menulis apa pun, karena `max` hanya berlaku untuk sesi. Sesi yang sedang berjalan tetap mempertahankan tingkat effort saat ini dalam kedua kasus, jadi panggil [`applyFlagSettings()`](#applyflagsettings) jika Anda juga ingin mengubahnya. Sumber ini memerlukan TypeScript SDK v0.3.277 atau lebih baru, yang membundel Claude Code v2.1.277.

781 781 

782Panggilan ditolak ketika permintaan membawa kunci lain, ketika sesi berjalan melalui transport remote, dan ketika [`settingSources`](#options) sesi mengecualikan sumber yang Anda sebutkan. Menghapus kunci tidak didukung.782Panggilan ditolak ketika permintaan membawa kunci lain, ketika sesi berjalan melalui transport remote, dan ketika [`settingSources`](#options) sesi tidak menyertakan sumber yang Anda sebutkan. Menghapus kunci tidak didukung.

783 783 

784#### `toggleMcpServer()`784#### `toggleMcpServer()`

785 785 

786Menonaktifkan server akan memutus koneksinya dan menghapus tool-nya dari sesi. Untuk server yang Anda tambahkan di tengah sesi dan untuk server in-process, hal ini bergantung pada versi Claude Code Anda:786Menonaktifkan server akan memutuskan koneksinya dan menghapus tool-nya dari sesi. Untuk server yang Anda tambahkan di tengah sesi dan untuk server in-process, hal ini bergantung pada versi Claude Code Anda:

787 787 

788* Server stdio, SSE, atau HTTP yang Anda tambahkan di tengah sesi dengan `setMcpServers()`: penghapusan tool-nya memerlukan Claude Code v2.1.285 atau lebih baru.788* Server stdio, SSE, atau HTTP yang Anda tambahkan di tengah sesi dengan `setMcpServers()`: menghapus tool-nya memerlukan Claude Code v2.1.285 atau lebih baru.

789* Server in-process yang Anda buat dengan [`createSdkMcpServer()`](#createsdkmcpserver), baik Anda meneruskannya dalam `mcpServers` maupun dengan `setMcpServers()`: pemutusan koneksi dan penghapusan tool-nya memerlukan Claude Code v2.1.286 atau lebih baru. Menonaktifkan server tersebut juga menggagalkan panggilan tool-nya yang masih berjalan, sehingga Claude langsung menerima hasil error untuk masing-masing panggilan, tanpa menunggu handler Anda selesai.789* Server in-process yang Anda buat dengan [`createSdkMcpServer()`](#createsdkmcpserver), baik Anda meneruskannya dalam `mcpServers` maupun dengan `setMcpServers()`: memutuskan koneksinya dan menghapus tool-nya memerlukan Claude Code v2.1.286 atau lebih baru. Menonaktifkan server tersebut juga menggagalkan panggilan tool-nya yang masih berjalan, sehingga Claude segera menerima hasil error untuk masing-masing panggilan, tanpa menunggu handler Anda kembali.

790 790 

791### `WarmQuery`791### `WarmQuery`

792 792 

793Handle yang dikembalikan oleh [`startup()`](#startup). Subprocess sudah di-spawn dan diinisialisasi, sehingga memanggil `query()` pada handle ini menulis prompt langsung ke proses yang siap tanpa latensi startup.793Handle yang dikembalikan oleh [`startup()`](#startup). Subprocess sudah di-spawn dan diinisialisasi, sehingga memanggil `query()` pada handle ini menulis prompt langsung ke proses yang sudah siap tanpa latensi startup.

794 794 

795```typescript theme={null}795```typescript theme={null}

796interface WarmQuery extends AsyncDisposable {796interface WarmQuery extends AsyncDisposable {


810 810 

811### `SpareProcess`811### `SpareProcess`

812 812 

813*Alpha.* Handle yang dikembalikan oleh [`prewarm()`](#prewarm): proses Claude Code yang sudah dimulai tetapi belum terikat ke sesi dan dapat diklaim satu kali. Memerlukan TypeScript Agent SDK v0.3.282 atau lebih baru.813*Alpha.* Handle yang dikembalikan oleh [`prewarm()`](#prewarm): proses Claude Code yang sudah dimulai tetapi belum terikat ke sesi dan dapat diklaim sekali. Memerlukan TypeScript Agent SDK v0.3.282 atau lebih baru.

814 814 

815```typescript theme={null}815```typescript theme={null}

816interface SpareProcess extends AsyncDisposable {816interface SpareProcess extends AsyncDisposable {


829| Anggota | Deskripsi |829| Anggota | Deskripsi |

830| :- | :- |830| :- | :- |

831| `claim({ prompt, options })` | Mengikat proses cadangan ke sesi di `options.cwd` dan mengirim pesan pertamanya. Mengembalikan [`Query`](#query-object) secara sinkron, seperti `query()`. Hanya dapat dipanggil sekali |831| `claim({ prompt, options })` | Mengikat proses cadangan ke sesi di `options.cwd` dan mengirim pesan pertamanya. Mengembalikan [`Query`](#query-object) secara sinkron, seperti `query()`. Hanya dapat dipanggil sekali |

832| `claimed` | Diselesaikan dengan direktori kerja dan ID sesi setelah Claude Code menerima klaim. Ditolak ketika Claude Code menolak klaim, ketika proses keluar atau ditutup terlebih dahulu, dan, dengan pesan yang diawali `option_not_applied`, ketika sesi berjalan tanpa `model` atau `maxThinkingTokens` yang Anda minta |832| `claimed` | Di-resolve dengan direktori kerja dan ID sesi begitu Claude Code menerima klaim. Ditolak ketika Claude Code menolak klaim, ketika proses keluar atau ditutup terlebih dahulu, dan, dengan pesan yang diawali `option_not_applied`, ketika sesi berjalan tanpa `model` atau `maxThinkingTokens` yang Anda minta |

833| `exited` | Selesai ketika proses keluar, baik sudah diklaim maupun belum. Ganti proses cadangan yang keluar sebelum Anda mengklaimnya |833| `exited` | Selesai ketika proses keluar, baik sudah diklaim maupun belum. Ganti proses cadangan yang keluar sebelum Anda mengklaimnya |

834| `close()` | Menghentikan proses. Sebelum klaim, ini membuang proses cadangan dan menolak `claimed` |834| `close()` | Menghentikan proses. Sebelum klaim, ini membuang proses cadangan dan menolak `claimed` |

835 835 

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

837 837 

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

839 839 

840### `SDKControlInitializeResponse`840### `SDKControlInitializeResponse`

841 841 


866 866 

867`hooks_applied` melaporkan apakah Claude Code mendaftarkan `hooks` yang dibawa oleh permintaan `initialize`. SDK mengirim permintaan tersebut sekali saat sesi dimulai dan lagi pada setiap panggilan [`reinitialize()`](#query-object). Field ini memerlukan Agent SDK v0.3.238 atau lebih baru.867`hooks_applied` melaporkan apakah Claude Code mendaftarkan `hooks` yang dibawa oleh permintaan `initialize`. SDK mengirim permintaan tersebut sekali saat sesi dimulai dan lagi pada setiap panggilan [`reinitialize()`](#query-object). Field ini memerlukan Agent SDK v0.3.238 atau lebih baru.

868 868 

869Claude Code menghilangkan field ini ketika permintaan tidak membawa hook. Ketika permintaan membawa hook, nilainya bergantung pada apakah permintaan tersebut merupakan initialize pertama sesi dan, untuk permintaan berulang, pada cara permintaan tersebut mencapai sesi:869Claude Code menghilangkan field ini ketika permintaan tidak membawa hook. Ketika permintaan membawa hook, nilainya bergantung pada apakah permintaan tersebut merupakan initialize pertama sesi dan, untuk initialize berulang, pada bagaimana permintaan itu mencapai sesi:

870 870 

871* `true`: Claude Code mendaftarkan hook. Initialize pertama sesi mengembalikan nilai ini. Initialize berulang yang dikirim melalui stdin CLI juga mengembalikan `true`. Dalam kasus tersebut, hook dalam permintaan baru menggantikan hook yang didaftarkan sebelumnya.871* `true`: Claude Code mendaftarkan hook tersebut. Initialize pertama sesi mengembalikan nilai ini. Initialize berulang yang dikirim melalui stdin CLI juga mengembalikan `true`. Dalam kasus tersebut, hook dalam permintaan baru menggantikan hook yang didaftarkan sebelumnya.

872* `false`: Claude Code mengabaikan hook. Initialize berulang yang dikirim ke sesi remote mengembalikan nilai ini, sehingga klien kedua yang bergabung ke sesi tidak dapat menggantikan hook yang didaftarkan klien pertama.872* `false`: Claude Code mengabaikan hook tersebut. Initialize berulang yang dikirim ke sesi remote mengembalikan nilai ini, sehingga klien kedua yang bergabung ke sesi tidak dapat menggantikan hook yang didaftarkan oleh klien pertama.

873 873 

874Sebelum Agent SDK v0.3.238, respons tidak pernah membawa field ini, dan Claude Code mengabaikan `hooks` pada setiap initialize berulang.874Sebelum Agent SDK v0.3.238, respons tidak pernah membawa field ini, dan Claude Code mengabaikan `hooks` pada setiap initialize berulang.

875 875 

876Field `sdkMcpServerManifests` pada permintaan dan field `sdk_mcp_manifests_parked` pada respons ditujukan untuk [server MCP SDK](https://code.claude.com/docs/id/agent-sdk/custom-tools.md) in-process yang Anda buat dengan [`createSdkMcpServer()`](#createsdkmcpserver). Aplikasi Anda tidak mengatur maupun membaca kedua field tersebut.876Field `sdkMcpServerManifests` pada permintaan dan field `sdk_mcp_manifests_parked` pada respons ditujukan untuk [server MCP SDK](https://code.claude.com/docs/id/agent-sdk/custom-tools.md) in-process yang Anda buat dengan [`createSdkMcpServer()`](#createsdkmcpserver). Aplikasi Anda tidak menetapkan maupun membaca kedua field tersebut.

877 877 

878`claude_code_version` adalah versi Claude Code dari proses yang menjalankan giliran sesi. Nilainya sama dengan yang dibawa oleh pesan init [`SDKSystemMessage`](#sdksystemmessage), sehingga Anda dapat membaca versi CLI sebelum giliran pertama.878`claude_code_version` adalah versi Claude Code dari proses yang menjalankan giliran sesi. Nilainya sama dengan yang dibawa oleh pesan init [`SDKSystemMessage`](#sdksystemmessage), sehingga Anda dapat membaca versi CLI sebelum giliran pertama.

879 879 

880* Field ini memerlukan Agent SDK v0.3.296 atau lebih baru, yang membundel Claude Code v2.1.296.880* Field ini memerlukan Agent SDK v0.3.296 atau lebih baru, yang membundel Claude Code v2.1.296.

881* Jika field bernilai `undefined` dan Anda mengatur `pathToClaudeCodeExecutable`, arahkan ke Claude Code v2.1.296 atau lebih baru.881* Jika field ini bernilai `undefined` dan Anda menetapkan `pathToClaudeCodeExecutable`, arahkan ke Claude Code v2.1.296 atau lebih baru.

882 882 

883Respons selalu melaporkan `fast_mode_state`, dan ketika sesuatu memblokir [fast mode](https://code.claude.com/docs/id/fast-mode.md), `fast_mode_disabled_reason` membawa kode alasan di sampingnya, sehingga Anda dapat menjelaskan keadaan yang terblokir alih-alih menurunkan ulang ketersediaannya. Kedua perilaku tersebut memerlukan Claude Code v2.1.219 atau lebih baru. Sebelum v2.1.219, respons menghilangkan `fast_mode_state` ketika fast mode tidak tersedia dan tidak pernah membawa alasan. Untuk kode alasan dan maknanya, lihat [`fast_mode_disabled_reason`](#sdkresultmessage) pada pesan hasil.883Respons selalu melaporkan `fast_mode_state`, dan ketika sesuatu memblokir [fast mode](https://code.claude.com/docs/id/fast-mode.md), `fast_mode_disabled_reason` membawa kode alasannya bersama field tersebut, sehingga Anda dapat menjelaskan status yang diblokir alih-alih menurunkan ulang ketersediaannya. Kedua perilaku tersebut memerlukan Claude Code v2.1.219 atau lebih baru. Sebelum v2.1.219, respons menghilangkan `fast_mode_state` ketika fast mode tidak tersedia dan tidak pernah membawa alasan. Untuk kode alasan dan artinya, lihat [`fast_mode_disabled_reason`](#sdkresultmessage) pada pesan hasil.

884 884 

885Wrapper respons kontrol untuk `initialize` yang berhasil juga membawa array `pending_permission_requests`. Field ini berada pada wrapper respons itu sendiri, bukan dalam payload `SDKControlInitializeResponse` di atas. Setiap entri adalah pesan `control_request` lengkap dengan bentuk `{ type: "control_request", request_id, request }` yang sama seperti yang di-streaming sesi untuk permintaan izin saat berjalan.885Pembungkus control-response untuk `initialize` yang berhasil juga membawa array `pending_permission_requests`. Field ini berada pada pembungkus respons itu sendiri, bukan dalam payload `SDKControlInitializeResponse` di atas. Setiap entri adalah pesan `control_request` lengkap dengan bentuk `{ type: "control_request", request_id, request }` yang sama dengan yang di-stream sesi untuk permintaan izin selama berjalan.

886 886 

887Array ini mencantumkan permintaan izin yang telah diterbitkan oleh proses Claude Code ini dan belum diselesaikan. SDK membaca array ini untuk Anda dan mengirimkan setiap entri ke callback [`canUseTool`](#canusetool) Anda, pengiriman ulang yang sama yang dipicu oleh [`reinitialize()`](#query-object) setelah celah transport. Tangani ID permintaan yang berulang secara idempoten, karena sebuah entri dapat mengulangi permintaan yang sudah diterima callback sebelum koneksi terputus.887Array tersebut mencantumkan permintaan izin yang telah dikeluarkan oleh proses Claude Code ini dan belum diselesaikan. SDK membaca array tersebut untuk Anda dan mengirimkan setiap entri ke callback [`canUseTool`](#canusetool) Anda, pengiriman ulang yang sama dengan yang dipicu oleh [`reinitialize()`](#query-object) setelah jeda transport. Tangani ID permintaan yang berulang secara idempoten, karena suatu entri dapat mengulang permintaan yang sudah diterima callback sebelum koneksi terputus.

888 888 

889Array ini selalu ada pada respons `initialize` yang berhasil dan kosong ketika proses ini tidak memiliki permintaan izin yang belum diselesaikan. Memerlukan Claude Code v2.1.268 atau lebih baru. Versi sebelumnya dapat menghilangkan field ini, jadi jika Anda mem-parsing protokol wire sendiri, anggap field yang hilang sebagai CLI yang lebih lama, bukan sebagai bukti bahwa tidak ada yang tertunda.889Array tersebut selalu ada pada respons `initialize` yang berhasil dan kosong ketika proses ini tidak memiliki permintaan izin yang belum diselesaikan. Memerlukan Claude Code v2.1.268 atau lebih baru. Versi sebelumnya dapat menghilangkan field ini, jadi jika Anda mem-parsing protokol wire sendiri, anggap field yang hilang sebagai tanda CLI versi lama, bukan sebagai bukti bahwa tidak ada yang tertunda.

890 890 

891### `SDKControlInterruptResponse`891### `SDKControlInterruptResponse`

892 892 

893Tanda terima interupsi: nilai yang digunakan [`interrupt()`](#query-object) untuk diselesaikan pada CLI yang mengiklankan kapabilitas `interrupt_receipt_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage). Memerlukan Claude Code v2.1.205 atau lebih baru. CLI yang lebih lama menjawab interupsi dengan payload sukses kosong, sehingga `interrupt()` diselesaikan menjadi `undefined`.893Tanda terima interupsi: nilai yang di-resolve oleh [`interrupt()`](#query-object) pada CLI yang mengiklankan kapabilitas `interrupt_receipt_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage). Memerlukan Claude Code v2.1.205 atau lebih baru. CLI sebelumnya menjawab interupsi dengan payload sukses yang kosong, sehingga `interrupt()` di-resolve ke `undefined`.

894 894 

895```typescript theme={null}895```typescript theme={null}

896type SDKControlInterruptResponse = {896type SDKControlInterruptResponse = {


899};899};

900```900```

901 901 

902`still_queued` mencantumkan UUID pesan pengguna yang tertunda saat interupsi tiba: pesan yang masih dalam antrean, ditambah pesan apa pun yang telah diambil Claude Code dari antrean untuk giliran berikutnya. Setelah giliran pertama sesi dimulai, Claude Code memproses pesan yang tercantum setelah interupsi kecuali Anda membatalkannya terlebih dahulu, dan dapat menggabungkan beberapa pesan ke dalam satu giliran. Jika Anda menginterupsi sebelum giliran pertama dimulai, Claude Code membatalkan giliran tersebut segera setelah dimulai, dan pesan yang tercantum dalam giliran tersebut tidak mendapat respons.902`still_queued` mencantumkan UUID dari pesan pengguna yang tertunda saat interupsi tiba: pesan yang masih ada dalam antrean, ditambah pesan apa pun yang sudah diambil Claude Code dari antrean untuk giliran berikutnya. Setelah giliran pertama sesi dimulai, Claude Code memproses pesan yang tercantum setelah interupsi kecuali Anda membatalkannya terlebih dahulu, dan dapat menggabungkan beberapa pesan menjadi satu giliran. Jika Anda menginterupsi sebelum giliran pertama dimulai, Claude Code membatalkan giliran tersebut segera setelah dimulai, dan pesan yang tercantum dalam giliran tersebut tidak mendapatkan respons.

903 903 

904Gunakan tanda terima untuk memutuskan apakah perlu mengirim ulang sesuatu. Pesan tercantum yang tidak Anda batalkan masuk ke percakapan baik mendapat respons maupun tidak, sehingga mengirimnya ulang akan mengirimkannya ke Claude dua kali.904Gunakan tanda terima ini untuk memutuskan apakah perlu mengirim ulang sesuatu. Pesan tercantum yang tidak Anda batalkan akan masuk ke percakapan baik mendapatkan respons maupun tidak, sehingga mengirimnya ulang akan menyampaikannya ke Claude dua kali.

905 905 

906Tafsirkan daftar ini dengan catatan berikut:906Tafsirkan daftar tersebut dengan catatan berikut:

907 907 

908* Hanya pesan yang dimasukkan ke antrean dengan UUID yang muncul. Array kosong tidak berarti tidak ada hal lain yang akan berjalan.908* Hanya pesan yang dimasukkan ke antrean dengan UUID yang muncul. Array kosong tidak berarti tidak ada hal lain yang akan berjalan.

909* Hanya pesan thread utama yang dicantumkan. Pesan yang ditujukan ke subagent berada di luar cakupan.909* Hanya pesan thread utama yang dicantumkan. Pesan yang ditujukan ke subagent berada di luar cakupan.

910* Daftar dapat menyertakan UUID yang tidak pernah dikirim oleh klien Anda, seperti pemicu [tugas terjadwal dengan cakupan sesi](https://code.claude.com/docs/id/scheduled-tasks.md). Abaikan UUID yang tidak Anda kenali alih-alih memperlakukannya sebagai error.910* Daftar tersebut dapat menyertakan UUID yang tidak pernah dikirim oleh klien Anda, seperti pemicu [tugas terjadwal bercakupan sesi](https://code.claude.com/docs/id/scheduled-tasks.md). Abaikan UUID yang tidak Anda kenali alih-alih memperlakukannya sebagai error.

911 911 

912Klien yang menjalankan protokol kontrol CLI secara langsung, bukan melalui `interrupt()`, dapat mengatur `cancel_queued: true` pada permintaan kontrol `interrupt`. Claude Code v2.1.219 dan yang lebih baru mengiklankan dukungan dengan kapabilitas `interrupt_cancel_queued_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage); CLI yang lebih lama mengabaikan field ini dan membiarkan pesan dalam antrean berjalan seperti biasa. Interupsi semacam itu juga membatalkan setiap pesan yang seharusnya tercantum di bawah `still_queued`: tanda terima mencantumkannya di bawah `cancelled` sebagai gantinya, `still_queued` kosong, dan tidak ada satu pun yang berjalan.912Klien yang menggerakkan protokol kontrol CLI secara langsung, bukan melalui `interrupt()`, dapat menetapkan `cancel_queued: true` pada permintaan kontrol `interrupt`. Claude Code v2.1.219 dan yang lebih baru mengiklankan dukungan dengan kapabilitas `interrupt_cancel_queued_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage); CLI yang lebih lama mengabaikan field tersebut dan membiarkan pesan dalam antrean berjalan seperti biasa. Interupsi seperti itu juga membatalkan setiap pesan yang seharusnya tercantum di bawah `still_queued`: tanda terima mencantumkannya di bawah `cancelled` sebagai gantinya, `still_queued` kosong, dan tidak ada satu pun dari pesan tersebut yang berjalan.

913 913 

914Daftar `cancelled` memiliki catatan yang sama dengan `still_queued`. Metode `interrupt()` tidak pernah mengirim `cancel_queued`, sehingga tanda terima yang digunakannya untuk diselesaikan tidak membawa `cancelled`.914Daftar `cancelled` membawa catatan yang sama seperti `still_queued`. Metode `interrupt()` tidak pernah mengirim `cancel_queued`, sehingga tanda terima yang di-resolve olehnya tidak membawa `cancelled`.

915 915 

916Tanda terima ini adalah snapshot yang diambil pada saat interupsi diproses, dan pada interupsi yang bersih, tanda terima tiba sebelum [`SDKResultMessage`](#sdkresultmessage) dari giliran yang diinterupsi. Baca tanda terima alih-alih memeriksa antrean setelah hasil tersebut: loop langsung memulai giliran berikutnya dalam antrean, sehingga antrean yang Anda periksa setelah hasil sudah berubah.916Tanda terima tersebut adalah snapshot yang diambil pada saat interupsi diproses, dan pada interupsi yang bersih, tanda terima tiba sebelum [`SDKResultMessage`](#sdkresultmessage) dari giliran yang diinterupsi. Baca tanda terima alih-alih memeriksa antrean setelah hasil tersebut: loop memulai giliran antrean berikutnya dengan segera, sehingga antrean yang Anda periksa setelah hasil sudah berubah.

917 917 

918### `SDKControlGetContextUsageResponse`918### `SDKControlGetContextUsageResponse`

919 919 

920Tipe kembalian dari [`getContextUsage()`](#query-object). Dengan `detail` default, respons menyertakan payload yang dirender Claude Code untuk perintah `/context` dalam sesi interaktif. Selain jumlah token, payload tersebut membawa field tampilan seperti `color` dan `gridRows` yang digunakan Claude Code untuk menggambar grid penggunaan `/context`.920Tipe kembalian dari [`getContextUsage()`](#query-object). Dengan `detail` default, respons mencakup payload yang dirender Claude Code untuk perintah `/context` dalam sesi interaktif. Selain jumlah token, payload tersebut membawa field tampilan seperti `color` dan `gridRows` yang digunakan Claude Code untuk menggambar grid penggunaan `/context`.

921 921 

922Argumen opsional `detail` dari metode ini memilih cara Claude Code menghitung setiap kategori. Argumen `detail` memerlukan Agent SDK v0.3.257 atau lebih baru.922Argumen opsional `detail` dari metode ini memilih cara Claude Code menghitung setiap kategori. Argumen `detail` memerlukan Agent SDK v0.3.257 atau lebih baru.

923 923 


1048 1048 

1049Baca atribusi token dari field koleksi:1049Baca atribusi token dari field koleksi:

1050 1050 

1051* `categories` berisi total per kategori. `kind` pada setiap entri mengklasifikasikan baris dengan nilai yang sama seperti [`SDKContextUsageCategory`](#sdkcontextusagecategory). Klasifikasikan baris berdasarkan field ini, bukan berdasarkan `name` tampilan. Field ini memerlukan Agent SDK v0.3.268 atau lebih baru.1051* `categories` menyimpan total per kategori. `kind` pada setiap entri mengklasifikasikan baris dengan nilai yang sama seperti [`SDKContextUsageCategory`](#sdkcontextusagecategory). Klasifikasikan baris berdasarkan field ini, bukan berdasarkan `name` tampilan. Field ini memerlukan Agent SDK v0.3.268 atau lebih baru.

1052* `mcpTools` dan `agents` mengatribusikan token ke masing-masing tool MCP dan subagent.1052* `mcpTools` dan `agents` mengatribusikan token ke masing-masing tool MCP dan subagent.

1053* `memoryFiles` mencantumkan setiap file memori yang dimuat beserta biayanya.1053* `memoryFiles` mencantumkan setiap file memori yang dimuat beserta biayanya.

1054* `skills.skillFrontmatter` mengatribusikan token daftar skill ke setiap skill yang disertakan. Jumlah per skill mengukur entri daftar setiap skill sebagaimana sebenarnya dikirim Claude Code, yang bisa lebih pendek daripada frontmatter lengkap skill tersebut. Bandingkan `skills.totalSkills` dengan `skills.includedSkills` untuk melihat apakah setiap skill yang ditemukan masuk ke dalam daftar.1054* `skills.skillFrontmatter` mengatribusikan token daftar skill ke setiap skill yang disertakan. Jumlah per skill mengukur entri daftar setiap skill sebagaimana yang benar-benar dikirim Claude Code, yang bisa lebih pendek daripada frontmatter lengkap skill tersebut. Bandingkan `skills.totalSkills` dengan `skills.includedSkills` untuk melihat apakah setiap skill yang ditemukan masuk ke dalam daftar.

1055 1055 

1056`totalTokens` adalah penggunaan konteks sesi saat ini, dan `maxTokens` adalah jendela yang menjadi acuan pengukuran penggunaan tersebut. Jendela tersebut adalah context window model, atau jendela auto-compaction yang lebih rendah jika berlaku. `rawMaxTokens` membawa nilai yang sama dengan `maxTokens`, dan `percentage` adalah `totalTokens` sebagai persentase yang dibulatkan dari jendela tersebut. `apiUsage` berisi penggunaan dari respons API terbaru, bukan total berjalan untuk sesi.1056`totalTokens` adalah penggunaan konteks sesi saat ini, dan `maxTokens` adalah jendela yang menjadi acuan pengukuran penggunaan tersebut. Jendela itu adalah context window model, atau jendela auto-compaction yang lebih rendah jika berlaku. `rawMaxTokens` membawa nilai yang sama dengan `maxTokens`, dan `percentage` adalah `totalTokens` sebagai persentase yang dibulatkan dari jendela tersebut. `apiUsage` menyimpan penggunaan dari respons API terbaru, bukan total berjalan untuk sesi.

1057 1057 

1058Claude Code tidak mengisi diagnostik opsional `deferredBuiltinTools`, `systemTools`, dan `systemPromptSections`, jadi anggap field tersebut tidak ada meskipun tipe mendeklarasikannya.1058Claude Code membiarkan diagnostik opsional `deferredBuiltinTools`, `systemTools`, dan `systemPromptSections` tidak ditetapkan, jadi perkirakan field tersebut tidak ada meskipun tipe mendeklarasikannya.

1059 1059 

1060#### Menemukan baris berdasarkan ID, token instruksi server, atau plugin dan file dari sebuah entri1060#### Menemukan baris berdasarkan ID, token instruksi suatu server, atau plugin dan file dari suatu entri

1061 1061 

1062Instruksi server MCP adalah catatan penggunaan yang disediakan server yang terhubung dan ditambahkan Claude Code ke konteks, dan baris `mcp_instructions` dari `categories` menghitung token-nya. Gunakan field [`getContextUsage()`](#query-object) berikut untuk memilih satu baris `categories` berdasarkan `id`, membagi token `mcp_instructions` per server, atau menemukan plugin dan file di balik entri agent atau skill:1062Instruksi server MCP adalah catatan penggunaan yang disediakan oleh server yang terhubung dan ditambahkan Claude Code ke konteks, dan baris `mcp_instructions` dari `categories` menghitung tokennya. Gunakan field [`getContextUsage()`](#query-object) berikut untuk memilih satu baris `categories` berdasarkan `id`, membagi token `mcp_instructions` per server, atau menemukan plugin dan file di balik entri agent atau skill:

1063 1063 

1064| Field | Ditemukan pada | Isinya |1064| Field | Ditemukan pada | Isinya |

1065| :- | :- | :- |1065| :- | :- | :- |

1066| `id` | Setiap baris `categories` | Pengenal baris, salah satu nilai yang dicantumkan oleh [tipe respons](#sdkcontrolgetcontextusageresponse), seperti `mcp_instructions`. Cocokkan berdasarkan `id` untuk memilih satu baris, atau berdasarkan `kind` untuk mengelompokkan baris. Versi Claude Code yang lebih baru dapat mengirim nilai yang tidak dicantumkan oleh tipe yang terinstal pada Anda, jadi anggap `id` yang tidak Anda kenali sebagai tidak ada |1066| `id` | Setiap baris `categories` | Identifier baris, salah satu nilai yang dicantumkan oleh [tipe respons](#sdkcontrolgetcontextusageresponse), seperti `mcp_instructions`. Cocokkan berdasarkan `id` untuk memilih satu baris, atau berdasarkan `kind` untuk mengelompokkan baris. Versi Claude Code yang lebih baru dapat mengirim nilai yang tidak tercantum dalam tipe yang Anda instal, jadi perlakukan `id` yang tidak Anda kenali sebagai tidak ada |

1067| `mcpInstructions` | Respons | Satu entri `{ serverName, tokens }` per server MCP terhubung yang menyediakan instruksi, atau array kosong jika tidak ada. Nilai `tokens` adalah estimasi yang jumlahnya sama dengan `tokens` pada baris `mcp_instructions`. `serverName` adalah `name` yang dilaporkan [`mcpServerStatus()`](#query-object) untuk server tersebut |1067| `mcpInstructions` | Respons | Satu entri `{ serverName, tokens }` per server MCP terhubung yang menyediakan instruksi, atau array kosong ketika tidak ada yang menyediakannya. Nilai `tokens` merupakan estimasi yang jumlahnya sama dengan `tokens` pada baris `mcp_instructions`. `serverName` adalah `name` yang dilaporkan [`mcpServerStatus()`](#query-object) untuk server tersebut |

1068| `pluginId` | Entri `agents` dan `skills.skillFrontmatter` | Menyebutkan plugin asal entri, sebagai ID dalam bentuk `name@marketplace`, dan tidak ada untuk entri yang tidak berasal dari plugin. Ketika plugin tidak berasal dari marketplace, bagian setelah `@` menyebutkan [asalnya](https://code.claude.com/docs/id/plugins/loading.md#find-where-a-plugin-came-from) sebagai gantinya, seperti `inline` untuk plugin yang Anda muat melalui opsi [`plugins`](#options) |1068| `pluginId` | Entri `agents` dan `skills.skillFrontmatter` | Menyebutkan plugin asal entri, sebagai ID dalam bentuk `name@marketplace`, dan tidak ada untuk entri yang tidak berasal dari plugin. Ketika plugin tidak berasal dari marketplace, bagian setelah `@` menyebutkan [asalnya](https://code.claude.com/docs/id/plugins/loading.md#find-where-a-plugin-came-from), seperti `inline` untuk plugin yang Anda muat melalui opsi [`plugins`](#options) |

1069| `path` | Entri `agents` dan `skills.skillFrontmatter` | Path absolut dari file yang mendefinisikan agent atau skill, pada mesin tempat Claude Code berjalan. Field ini tidak ada ketika tidak ada file yang mendefinisikan entri tersebut, misalnya agent dari opsi [`agents`](#options) atau skill bawaan Claude Code |1069| `path` | Entri `agents` dan `skills.skillFrontmatter` | Jalur absolut dari file yang mendefinisikan agent atau skill, pada mesin tempat Claude Code berjalan. Field ini tidak ada ketika tidak ada file yang mendefinisikan entri tersebut, misalnya agent dari opsi [`agents`](#options) atau skill bawaan Claude Code |

1070 1070 

1071Sebagai contoh pencocokan berdasarkan `id`, sampel ini menemukan baris `mcp_instructions`:1071Sebagai contoh pencocokan berdasarkan `id`, contoh ini menemukan baris `mcp_instructions`:

1072 1072 

1073```typescript theme={null}1073```typescript theme={null}

1074// q is the Query object that query() returned1074// q is the Query object that query() returned


1090};1090};

1091```1091```

1092 1092 

1093`contents` berisi teks file, atau data base64 ketika Anda meminta `encoding: 'base64'`; field `encoding` pada respons diatur ke `'base64'` dalam kasus tersebut. `absPath` adalah path absolut yang telah diresolusi. `truncated` diatur ketika file lebih panjang dari batas `maxBytes` dan isinya dipotong pada batas tersebut.1093`contents` berisi teks file, atau data base64 ketika Anda meminta `encoding: 'base64'`; dalam kasus tersebut, field `encoding` pada respons diatur ke `'base64'`. `absPath` adalah path absolut yang telah di-resolve. `truncated` diatur ketika file lebih panjang daripada batas `maxBytes` dan isinya dipotong pada batas tersebut.

1094 1094 

1095#### Apa yang dapat dibaca `readFile()`1095#### Apa yang dapat dibaca oleh `readFile()`

1096 1096 

1097`readFile()` melayani kumpulan file yang lebih sempit daripada tool Read:1097`readFile()` melayani kumpulan file yang lebih sempit daripada tool Read:

1098 1098 

1099* File reguler di dalam salah satu direktori kerja sesi, seperti `cwd` dan `additionalDirectories`1099* File biasa di dalam salah satu direktori kerja sesi, seperti `cwd` dan `additionalDirectories`

1100* Beberapa file milik Claude Code sendiri untuk sesi, seperti hasil tool1100* Beberapa file milik Claude Code sendiri untuk sesi tersebut, seperti hasil tool

1101 1101 

1102Aturan deny dan ask `Read` tetap memblokir path yang cocok, dan aturan allow `Read` yang luas tidak membuka sisa filesystem untuk `readFile()`. Untuk hal lainnya, panggilan diselesaikan dengan `null`.1102Aturan deny dan ask untuk `Read` tetap memblokir path yang cocok, dan aturan allow `Read` yang luas tidak membuka bagian lain dari filesystem untuk `readFile()`. Untuk hal lainnya, panggilan di-resolve dengan `null`.

1103 1103 

1104### `SDKControlReloadPluginsResponse`1104### `SDKControlReloadPluginsResponse`

1105 1105 


1126};1126};

1127```1127```

1128 1128 

1129Field koleksi menggambarkan sesi setelah panggilan:1129Field koleksi menjelaskan sesi setelah panggilan:

1130 1130 

1131* `commands`, `agents`, dan `mcpServers`: perintah, subagent, dan status server MCP sesi, dalam bentuk yang sama dengan yang dikembalikan `supportedCommands()`, `supportedAgents()`, dan `mcpServerStatus()`. `supportedAgents()` tetap mengembalikan daftar yang diambil saat inisialisasi, jadi baca `agents` di sini untuk kumpulan setelah pemuatan ulang1131* `commands`, `agents`, dan `mcpServers`: perintah, subagent, dan status server MCP sesi, dalam bentuk yang sama dengan yang dikembalikan oleh `supportedCommands()`, `supportedAgents()`, dan `mcpServerStatus()`. `supportedAgents()` tetap mengembalikan daftar yang diambil saat inisialisasi, jadi baca `agents` di sini untuk kumpulan setelah reload

1132* `plugins`: setiap plugin yang dimuat beserta `name` dan `path` instalasinya. `version` mengulangi apa yang dideklarasikan manifest plugin dan dikendalikan oleh pembuat plugin, jadi validasi sebelum memercayainya. Field ini dihilangkan ketika manifest tidak mendeklarasikannya1132* `plugins`: setiap plugin yang dimuat beserta `name` dan `path` instalasinya. `version` mengulang apa yang dideklarasikan oleh manifest plugin dan dikendalikan oleh pembuat plugin, jadi validasi nilai tersebut sebelum memercayainya. Field ini dihilangkan ketika manifest tidak mendeklarasikannya

1133* `error_count`: jumlah error dari pemuatan plugin1133* `error_count`: jumlah error dari pemuatan plugin

1134 1134 

1135Teruskan `{ holdOnCacheImpact: true }` ke `reloadPlugins()` untuk menahan pemuatan ulang yang akan membatalkan prompt cache percakapan alih-alih menerapkannya. Claude Code menjalankan pemeriksaan yang dilakukan perintah interaktif `/reload-plugins` sebelum [memperingatkan tentang biaya cache](https://code.claude.com/docs/id/prompt-caching.md#enabling-or-disabling-a-plugin). Opsi ini memerlukan Agent SDK v0.3.268 atau lebih baru. Executable Claude Code yang lebih lama dari v2.1.268, seperti yang Anda arahkan melalui `pathToClaudeCodeExecutable`, mengabaikan opsi ini dan menerapkan pemuatan ulang.1135Berikan `{ holdOnCacheImpact: true }` ke `reloadPlugins()` untuk menahan reload yang akan menginvalidasi cache prompt percakapan alih-alih menerapkannya. Claude Code menjalankan pemeriksaan yang dilakukan oleh perintah interaktif `/reload-plugins` sebelum [memperingatkan tentang biaya cache](https://code.claude.com/docs/id/prompt-caching.md#enabling-or-disabling-a-plugin). Opsi ini memerlukan Agent SDK v0.3.268 atau yang lebih baru. Executable Claude Code yang lebih lama dari v2.1.268, seperti executable yang Anda tunjuk dengan `pathToClaudeCodeExecutable`, mengabaikan opsi ini dan menerapkan reload.

1136 1136 

1137Ketika Anda meneruskan opsi ini, baca `held` untuk mengetahui apa yang terjadi:1137Ketika Anda memberikan opsi tersebut, baca `held` untuk mengetahui apa yang terjadi:

1138 1138 

1139* `true`: pemuatan ulang tidak diterapkan, dan field koleksi menggambarkan sesi sebagaimana adanya saat ini. `cache_impact` menjelaskan apa yang akan berubah jika diterapkan. Untuk tetap menerapkannya, panggil `reloadPlugins()` lagi tanpa opsi tersebut.1139* `true`: reload tidak diterapkan, dan field koleksi menjelaskan sesi sebagaimana adanya saat ini. `cache_impact` menyatakan apa yang akan berubah jika diterapkan. Untuk tetap menerapkannya, panggil `reloadPlugins()` lagi tanpa opsi tersebut.

1140* `false`: pemeriksaan tidak menemukan dampak cache, dan pemuatan ulang diterapkan.1140* `false`: pemeriksaan tidak menemukan dampak cache, dan reload telah diterapkan.

1141* Tidak ada: Anda tidak meneruskan opsi tersebut, atau executable Claude Code lebih lama dari v2.1.268 dan menerapkan pemuatan ulang.1141* Tidak ada: Anda tidak memberikan opsi tersebut, atau executable Claude Code lebih lama dari v2.1.268 dan menerapkan reload.

1142 1142 

1143`cache_impact` hanya ada bersama `held: true`. `mcp_servers_added` dan `mcp_servers_removed` menyebutkan server MCP plugin yang akan didaftarkan atau dihapus oleh pemuatan ulang, sebagai nama dengan cakupan `plugin:<plugin>:<server>`. Nama-nama tersebut dibuat oleh pembuat plugin, jadi validasi sebelum menampilkannya. `lsp_tool_change` menyatakan apakah penerapan akan menambahkan atau menghapus tool LSP, atau `null` jika tidak melakukan keduanya. Bentuk `may-` berarti pemeriksaan tidak dapat sepenuhnya melihat kumpulan plugin yang tertunda.1143`cache_impact` hanya ada bersama `held: true`. `mcp_servers_added` dan `mcp_servers_removed` menyebutkan server MCP plugin yang akan didaftarkan atau dihapus oleh reload, sebagai nama ber-scope `plugin:<plugin>:<server>`. Nama-nama tersebut dibuat oleh pembuat plugin, jadi validasi sebelum menampilkannya. `lsp_tool_change` menyatakan apakah penerapan akan menambahkan atau menghapus tool LSP, atau `null` jika tidak melakukan keduanya. Bentuk `may-` berarti pemeriksaan tidak dapat melihat sepenuhnya kumpulan plugin yang tertunda.

1144 1144 

1145#### Memuat lebih banyak folder plugin dengan `addPlugins`1145#### Memuat lebih banyak folder plugin dengan `addPlugins`

1146 1146 

1147Untuk memuat folder plugin yang tidak ada dalam opsi [`plugins`](#options) saat startup, berikan folder tersebut ke `reloadPlugins()` sebagai `addPlugins`, yaitu daftar entri [`SdkPluginConfig`](#sdkpluginconfig) yang `path`-nya absolut. Claude Code memuat folder baru dan me-reload plugin yang sudah ada di sesi dalam satu kali proses. Server MCP dari setiap plugin yang ditambahkan juga terhubung, kecuali Anda mengatur [`skipMcpDiscovery`](#sdkpluginconfig) pada entri folder tersebut. Memerlukan Agent SDK v0.3.301 atau lebih baru dan Claude Code v2.1.301 atau lebih baru.1147Untuk memuat folder plugin yang tidak ada dalam opsi [`plugins`](#options) saat startup, berikan folder tersebut ke `reloadPlugins()` sebagai `addPlugins`, yaitu daftar entri [`SdkPluginConfig`](#sdkpluginconfig) yang `path`-nya absolut. Claude Code memuat folder baru dan me-reload plugin yang sudah ada di sesi dalam satu tahap. Server MCP setiap plugin yang ditambahkan juga terhubung, kecuali jika Anda mengatur [`skipMcpDiscovery`](#sdkpluginconfig) pada entri folder tersebut. Memerlukan Agent SDK v0.3.301 atau yang lebih baru dan Claude Code v2.1.301 atau yang lebih baru.

1148 1148 

1149Contoh ini menambahkan satu folder ke query `q` yang sedang berjalan dan mencetak path instalasi setiap plugin yang telah dimuat sesi ketika panggilan selesai:1149Contoh ini menambahkan satu folder ke query `q` yang sedang berjalan dan mencetak path instalasi setiap plugin yang telah dimuat sesi ketika panggilan selesai:

1150 1150 


1156console.log(result.plugins.map((plugin) => plugin.path));1156console.log(result.plugins.map((plugin) => plugin.path));

1157```1157```

1158 1158 

1159Jika folder berhasil dimuat, daftar yang dicetak menyertakan `/opt/my-app/plugins/reports`, dan perintah serta subagent plugin tersebut muncul di `result.commands` dan `result.agents`.1159Jika folder berhasil dimuat, daftar yang dicetak menyertakan `/opt/my-app/plugins/reports`, dan perintah serta subagent plugin muncul di `result.commands` dan `result.agents`.

1160 1160 

1161Folder yang ditambahkan tetap menjadi bagian dari sesi. Ketika Anda memanggil `reloadPlugins()` lagi, Claude Code me-reload folder tersebut bersama plugin lainnya, dan Anda tidak perlu memberikannya di `addPlugins` lagi.1161Folder yang ditambahkan tetap menjadi bagian dari sesi. Ketika Anda memanggil `reloadPlugins()` lagi, Claude Code me-reload folder tersebut bersama plugin lainnya, dan Anda tidak perlu memberikannya di `addPlugins` lagi.

1162 1162 

1163##### Ketika `reloadPlugins()` tidak memuat folder `addPlugins`1163##### Ketika `reloadPlugins()` tidak memuat folder `addPlugins`

1164 1164 

1165Jika `reloadPlugins()` ditolak (reject), tidak ada folder `addPlugins` yang ditambahkan, jadi berikan folder tersebut di `addPlugins` lagi saat Anda mencoba ulang. Ketika penolakan memiliki salah satu penyebab berikut, sesi tetap mempertahankan plugin yang sudah dimilikinya:1165Jika `reloadPlugins()` ditolak (reject), tidak ada folder `addPlugins` yang ditambahkan, jadi berikan folder tersebut di `addPlugins` lagi saat Anda mencoba ulang. Ketika penolakan memiliki salah satu penyebab berikut, sesi mempertahankan plugin yang sudah dimilikinya:

1166 1166 

1167* **`path` relatif atau entri yang salah bentuk**: pesan error berbunyi `add_plugins must be a list of { type: "local", path } entries with absolute paths`. Claude Code menolak seluruh daftar karena satu entri yang buruk, jadi berikan setiap entri sebagai `{ type: "local", path }` dengan `path` absolut1167* **`path` relatif atau entri yang salah format**: pesan error menyatakan `add_plugins must be a list of { type: "local", path } entries with absolute paths`. Claude Code menolak seluruh daftar karena satu entri yang buruk, jadi berikan setiap entri sebagai `{ type: "local", path }` dengan `path` absolut

1168* **Seorang administrator telah mengaktifkan [`disableSideloadFlags`](https://code.claude.com/docs/id/settings-reference#disablesideloadflags) di pengaturan terkelola Anda**: pesan berbunyi `reload_plugins add_plugins is disabled by managed settings (disableSideloadFlags)`. Untuk memuat folder tersebut, minta administrator tersebut untuk menghapus pengaturan itu1168* **Administrator telah mengaktifkan [`disableSideloadFlags`](https://code.claude.com/docs/id/settings-reference#disablesideloadflags) di pengaturan terkelola Anda**: pesannya menyatakan `reload_plugins add_plugins is disabled by managed settings (disableSideloadFlags)`. Untuk memuat folder tersebut, minta administrator tersebut untuk menghapus pengaturan itu

1169* **[Sandbox](https://code.claude.com/docs/id/sandboxing.md) tidak dapat dibangun ulang**: dengan [sandboxing](#sandboxsettings) aktif, Claude Code membangun ulang konfigurasi sandbox agar perintah shell yang di-sandbox tidak dapat menulis ke folder yang Anda tambahkan. Pesan berbunyi `the sandbox could not be rebuilt to keep shell commands out of this folder`. Periksa apakah [pengaturan sandbox](#sandboxsettings) Anda masih membentuk konfigurasi yang valid1169* **[Sandbox](https://code.claude.com/docs/id/sandboxing.md) tidak dapat dibangun ulang**: dengan [sandboxing](#sandboxsettings) aktif, Claude Code membangun ulang konfigurasi sandbox agar perintah shell yang di-sandbox tidak dapat menulis ke folder yang Anda tambahkan. Pesannya menyatakan `the sandbox could not be rebuilt to keep shell commands out of this folder`. Periksa apakah [pengaturan sandbox](#sandboxsettings) Anda masih membentuk konfigurasi yang valid

1170 1170 

1171Jika Anda memberikan `holdOnCacheImpact` dan panggilan di-resolve dengan [`held: true`](#sdkcontrolreloadpluginsresponse), folder `addPlugins` tidak ditambahkan. Untuk tetap menambahkannya, panggil `reloadPlugins()` lagi dengan daftar `addPlugins` yang sama dan tanpa `holdOnCacheImpact`.1171Jika Anda memberikan `holdOnCacheImpact` dan panggilan di-resolve dengan [`held: true`](#sdkcontrolreloadpluginsresponse), folder `addPlugins` tidak ditambahkan. Untuk tetap menambahkannya, panggil `reloadPlugins()` lagi dengan daftar `addPlugins` yang sama dan tanpa `holdOnCacheImpact`.

1172 1172 

1173Ketika panggilan di-resolve tanpa `held: true` dan sebuah folder masih tidak ada di `result.plugins`, mulailah dengan memeriksa penyebab berikut:1173Ketika panggilan di-resolve tanpa `held: true` dan sebuah folder masih tidak ada di `result.plugins`, mulailah dengan memeriksa penyebab berikut:

1174 1174 

1175* **Folder tidak ada atau plugin-nya gagal dimuat**: `result.error_count` bernilai `1` atau lebih. Meski demikian, folder tetap menjadi bagian dari sesi. Setelah Anda memperbaiki folder tersebut, panggil `reloadPlugins()` lagi untuk memuatnya, kali ini tanpa mencantumkannya di `addPlugins`1175* **Folder tidak ada atau plugin-nya gagal dimuat**: `result.error_count` bernilai `1` atau lebih. Folder tersebut tetap menjadi bagian dari sesi. Setelah Anda memperbaiki folder tersebut, panggil `reloadPlugins()` lagi untuk memuatnya, kali ini tanpa mencantumkannya di `addPlugins`

1176* **Executable Claude Code lebih lama dari v2.1.301**: executable yang lebih lama dari v2.1.301 mengabaikan `addPlugins` dan hanya me-reload plugin yang sudah dimiliki sesi. Periksa `claude_code_version` pada [pesan init](#sdksystemmessage), dan jalankan executable versi v2.1.301 atau lebih baru1176* **Executable Claude Code lebih lama dari v2.1.301**: executable yang lebih lama dari v2.1.301 mengabaikan `addPlugins` dan hanya me-reload plugin yang sudah dimiliki sesi. Periksa `claude_code_version` pada [pesan init](#sdksystemmessage), dan jalankan executable versi v2.1.301 atau yang lebih baru

1177 1177 

1178### `SDKControlReloadSkillsResponse`1178### `SDKControlReloadSkillsResponse`

1179 1179 


1185};1185};

1186```1186```

1187 1187 

1188`skills` mencantumkan skill yang tersedia setelah pemuatan ulang, dalam bentuk [`SlashCommand`](#slashcommand) yang sama dengan yang dikembalikan `supportedCommands()`.1188`skills` mencantumkan skill yang tersedia setelah reload, dalam bentuk [`SlashCommand`](#slashcommand) yang sama dengan yang dikembalikan oleh `supportedCommands()`.

1189 1189 

1190### `SDKControlReloadOutputStylesResponse`1190### `SDKControlReloadOutputStylesResponse`

1191 1191 


1197};1197};

1198```1198```

1199 1199 

1200`available_output_styles` mencantumkan nama gaya output bawaan dan kustom yang tersedia setelah pemuatan ulang.1200`available_output_styles` mencantumkan nama gaya output bawaan dan kustom yang tersedia setelah reload.

1201 1201 

1202### `SDKControlMcpReadResourceResponse`1202### `SDKControlMcpReadResourceResponse`

1203 1203 

1204Tipe kembalian dari [`readMcpResource()`](#query-object), yang membawa hasil `resources/read` dari server MCP. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.1204Tipe kembalian dari [`readMcpResource()`](#query-object), yang membawa hasil `resources/read` dari server MCP. Memerlukan TypeScript Agent SDK v0.3.280 atau yang lebih baru.

1205 1205 

1206```typescript theme={null}1206```typescript theme={null}

1207type SDKControlMcpReadResourceResponse = {1207type SDKControlMcpReadResourceResponse = {


1215};1215};

1216```1216```

1217 1217 

1218Teruskan ke `readMcpResource()` nama server sebagaimana dilaporkan `mcpServerStatus()` dan URI `ui://`, seperti `ui.resourceUri` yang dideklarasikan tool dalam [`_meta`](#mcpserverstatus)-nya. Panggilan ditolak untuk skema URI lain, untuk [server MCP SDK](#createsdkmcpserver) yang di-host sendiri oleh aplikasi Anda, dan untuk server yang tidak terhubung. Metode ini tersedia ketika [`capabilities`](#sdksystemmessage) pada pesan init menyertakan `mcp_read_resource_v1`.1218Berikan ke `readMcpResource()` nama server sebagaimana dilaporkan oleh `mcpServerStatus()` dan URI `ui://`, seperti `ui.resourceUri` yang dideklarasikan tool dalam [`_meta`](#mcpserverstatus)-nya. Panggilan ditolak untuk skema URI lainnya, untuk [server MCP SDK](#createsdkmcpserver) yang di-host sendiri oleh aplikasi Anda, dan untuk server yang tidak terhubung. Fitur ini tersedia ketika [`capabilities`](#sdksystemmessage) pada pesan init menyertakan `mcp_read_resource_v1`.

1219 1219 

1220Setiap entri `contents` adalah satu item konten sebagaimana dikirim server, tanpa kunci `_meta` apa pun di bawah prefiks `com.anthropic/`, yang dicadangkan untuk Claude Code. `blob` berisi data base64 untuk item biner, dan `_meta` adalah `_meta` milik item itu sendiri, tempat server MCP Apps meletakkan `ui.csp` dan `ui.permissions` dari resource tersebut.1220Setiap entri `contents` adalah satu item konten sebagaimana dikirim oleh server, tanpa kunci `_meta` apa pun di bawah prefiks `com.anthropic/`, yang dicadangkan untuk Claude Code. `blob` berisi data base64 untuk item biner, dan `_meta` adalah `_meta` milik item itu sendiri, tempat server MCP Apps meletakkan `ui.csp` dan `ui.permissions` dari resource.

1221 1221 

1222Isinya adalah HTML pihak ketiga yang tidak tepercaya, jadi render di dalam sandbox.1222Isinya adalah HTML pihak ketiga yang tidak tepercaya, jadi render di dalam sandbox.

1223 1223 


1248 1248 

1249| Field | Wajib | Deskripsi |1249| Field | Wajib | Deskripsi |

1250| :- | :- | :- |1250| :- | :- | :- |

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

1252| `tools` | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi setiap [tool yang tersedia untuk subagent](https://code.claude.com/docs/id/sub-agents.md#available-tools). Untuk memuat Skills terlebih dahulu ke dalam konteks agent, gunakan field `skills` alih-alih mencantumkan `'Skill'` di sini |1252| `tools` | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi setiap [tool yang tersedia untuk subagent](https://code.claude.com/docs/id/sub-agents.md#available-tools). Untuk memuat Skills terlebih dahulu ke dalam konteks agent, gunakan field `skills` alih-alih mencantumkan `'Skill'` di sini |

1253| `disallowedTools` | Tidak | Array nama tool yang secara eksplisit dilarang untuk agent ini. Pola tingkat server MCP juga diterima: `mcp__server` atau `mcp__server__*` menghapus setiap tool dari server tersebut, dan `mcp__*` menghapus setiap tool MCP dari server mana pun |1253| `disallowedTools` | Tidak | Array nama tool yang secara eksplisit dilarang untuk agent ini. Pola tingkat server MCP juga diterima: `mcp__server` atau `mcp__server__*` menghapus setiap tool dari server tersebut, dan `mcp__*` menghapus setiap tool MCP dari server mana pun |

1254| `prompt` | Ya | System prompt agent |1254| `prompt` | Ya | System prompt agent |

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

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

1257| `skills` | Tidak | Array nama skill yang dimuat terlebih dahulu ke dalam konteks agent |1257| `skills` | Tidak | Array nama skill yang dimuat terlebih dahulu ke dalam konteks agent |

1258| `initialPrompt` | Tidak | Dikirim otomatis sebagai giliran pengguna pertama ketika agent ini berjalan sebagai agent thread utama |1258| `initialPrompt` | Tidak | Dikirim secara otomatis sebagai giliran pengguna pertama ketika agent ini berjalan sebagai agent thread utama |

1259| `maxTurns` | Tidak | Jumlah maksimum giliran agentic (perjalanan bolak-balik API) sebelum berhenti |1259| `maxTurns` | Tidak | Jumlah maksimum giliran agentic (round-trip API) sebelum berhenti |

1260| `autoCompactWindow` | Tidak | Menurunkan [jendela auto-compact](https://code.claude.com/docs/id/sub-agents.md#subagent-auto-compact-window) untuk agent ini ketika berjalan sebagai subagent, ke jumlah token dari `100000` hingga `1000000`. Memerlukan TypeScript Agent SDK v0.3.296 atau lebih baru |1260| `autoCompactWindow` | Tidak | Turunkan [jendela auto-compact](https://code.claude.com/docs/id/sub-agents.md#subagent-auto-compact-window) untuk agent ini ketika berjalan sebagai subagent, ke jumlah token dari `100000` hingga `1000000`. Memerlukan TypeScript Agent SDK v0.3.296 atau yang lebih baru |

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

1262| `omitClaudeMd` | Tidak | Mengecualikan file CLAUDE.md user, project, dan local dari konteks awal agent ini; file kebijakan terkelola tetap dimuat. Gunakan untuk agent yang mengambil semua yang dibutuhkannya dari prompt tool Agent. Diabaikan ketika agent ini berjalan sebagai agent thread utama. Memerlukan TypeScript Agent SDK v0.3.271 atau lebih baru |1262| `omitClaudeMd` | Tidak | Keluarkan file CLAUDE.md pengguna, proyek, dan lokal dari konteks awal agent ini; file kebijakan terkelola tetap dimuat. Gunakan untuk agent yang mengambil semua yang dibutuhkannya dari prompt tool Agent. Diabaikan ketika agent ini berjalan sebagai agent thread utama. Memerlukan TypeScript Agent SDK v0.3.271 atau yang lebih baru |

1263| `memory` | Tidak | Sumber memori untuk agent ini: `'user'`, `'project'`, atau `'local'` |1263| `memory` | Tidak | Sumber memori untuk agent ini: `'user'`, `'project'`, atau `'local'` |

1264| `effort` | Tidak | Tingkat effort penalaran untuk agent ini. Menerima nama tingkat atau bilangan bulat |1264| `effort` | Tidak | Tingkat effort penalaran untuk agent ini. Menerima tingkat bernama atau bilangan bulat |

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

1266| `criticalSystemReminder_EXPERIMENTAL` | Tidak | Eksperimental: Pengingat penting yang ditambahkan ke system prompt |1266| `criticalSystemReminder_EXPERIMENTAL` | Tidak | Eksperimental: Pengingat penting yang ditambahkan ke system prompt |

1267 1267 

1268### `AgentMcpServerSpec`1268### `AgentMcpServerSpec`

1269 1269 

1270Menentukan server MCP yang tersedia untuk subagent. Dapat berupa nama server (string yang merujuk ke server dari konfigurasi `mcpServers` milik induk) atau record konfigurasi server inline yang memetakan nama server ke konfigurasinya.1270Menentukan server MCP yang tersedia untuk subagent. Dapat berupa nama server (string yang merujuk ke server dari konfigurasi `mcpServers` induk) atau record konfigurasi server inline yang memetakan nama server ke konfigurasi.

1271 1271 

1272```typescript theme={null}1272```typescript theme={null}

1273type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;1273type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;


1277 1277 

1278### `SettingSource`1278### `SettingSource`

1279 1279 

1280Mengontrol sumber konfigurasi berbasis sistem file mana yang digunakan SDK untuk memuat pengaturan.1280Mengontrol sumber konfigurasi berbasis filesystem mana yang digunakan SDK untuk memuat pengaturan.

1281 1281 

1282```typescript theme={null}1282```typescript theme={null}

1283type SettingSource = "user" | "project" | "local";1283type SettingSource = "user" | "project" | "local";


1286| Nilai | Deskripsi | Lokasi |1286| Nilai | Deskripsi | Lokasi |

1287| :- | :- | :- |1287| :- | :- | :- |

1288| `'user'` | Pengaturan pengguna global | `~/.claude/settings.json` |1288| `'user'` | Pengaturan pengguna global | `~/.claude/settings.json` |

1289| `'project'` | Pengaturan proyek bersama (dikontrol versinya) | `.claude/settings.json` |1289| `'project'` | Pengaturan proyek bersama (dikontrol versi) | `.claude/settings.json` |

1290| `'local'` | Pengaturan proyek lokal, dimasukkan ke gitignore saat Claude Code menyimpan pengaturan ke dalamnya | `.claude/settings.local.json` |1290| `'local'` | Pengaturan proyek lokal, di-gitignore ketika Claude Code menyimpan pengaturan ke dalamnya | `.claude/settings.local.json` |

1291 1291 

1292#### Perilaku default1292#### Perilaku default

1293 1293 

1294Ketika `settingSources` dihilangkan atau bernilai `undefined`, `query()` memuat pengaturan sistem file yang sama seperti Claude Code CLI: user, project, dan local. Lihat [Hal yang tidak dikontrol oleh settingSources](https://code.claude.com/docs/id/agent-sdk/claude-code-features.md#what-settingsources-does-not-control) untuk input yang dibaca terlepas dari opsi ini, serta cara menonaktifkannya.1294Ketika `settingSources` dihilangkan atau `undefined`, `query()` memuat pengaturan filesystem yang sama dengan CLI Claude Code: user, project, dan local. Lihat [Apa yang tidak dikontrol oleh settingSources](https://code.claude.com/docs/id/agent-sdk/claude-code-features.md#what-settingsources-does-not-control) untuk input yang dibaca terlepas dari opsi ini, dan cara menonaktifkannya.

1295 1295 

1296#### Mengapa menggunakan settingSources1296#### Mengapa menggunakan settingSources

1297 1297 

1298**Menonaktifkan pengaturan sistem file:**1298**Nonaktifkan pengaturan filesystem:**

1299 1299 

1300```typescript theme={null}1300```typescript theme={null}

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


1307});1307});

1308```1308```

1309 1309 

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

1311 1311 

1312```typescript theme={null}1312```typescript theme={null}

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


1321});1321});

1322```1322```

1323 1323 

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

1325 1325 

1326#### Prioritas pengaturan1326#### Prioritas pengaturan

1327 1327 


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

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

1333 1333 

1334Opsi terprogram seperti `agents`, `allowedTools`, dan `settings` menimpa pengaturan filesystem pengguna, proyek, dan lokal. Jika pengaturan kebijakan terkelola dan opsi terprogram mengatur kunci yang sama, nilai terkelola yang berlaku, dengan pengecualian seperti `effortLevel` yang diberikan ke [`applyFlagSettings()`](#applyflagsettings).1334Opsi terprogram seperti `agents`, `allowedTools`, dan `settings` menimpa pengaturan filesystem user, project, dan local. Jika pengaturan kebijakan terkelola dan opsi terprogram mengatur kunci yang sama, nilai terkelola yang berlaku, dengan pengecualian seperti `effortLevel` yang diberikan ke [`applyFlagSettings()`](#applyflagsettings).

1335 1335 

1336### `PermissionMode`1336### `PermissionMode`

1337 1337 


1349 1349 

1350Tipe fungsi izin kustom untuk mengontrol penggunaan tool.1350Tipe fungsi izin kustom untuk mengontrol penggunaan tool.

1351 1351 

1352Fungsi ini menggantikan dialog izin interaktif. SDK memanggil `canUseTool` ketika [alur evaluasi izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated) berujung pada permintaan izin. Panggilan yang disetujui dengan salah satu cara berikut berjalan tanpa memanggil `canUseTool`:1352Fungsi ini menggantikan dialog izin interaktif. SDK memanggil `canUseTool` ketika [alur evaluasi izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated) berujung pada dialog izin. Panggilan yang disetujui dengan salah satu cara berikut berjalan tanpa memanggil `canUseTool`:

1353 1353 

1354* Panggilan yang disetujui oleh entri `allowedTools` atau aturan allow pengaturan1354* Panggilan yang disetujui oleh entri `allowedTools` atau aturan allow di pengaturan

1355* Panggilan yang disetujui oleh mode izin, seperti pengeditan file dalam mode `acceptEdits`1355* Panggilan yang disetujui oleh mode izin, seperti pengeditan file dalam mode `acceptEdits`

1356 1356 

1357Untuk memeriksa panggilan tersebut, gunakan [hook `PreToolUse`](https://code.claude.com/docs/id/agent-sdk/hooks), yang juga berjalan untuk panggilan tersebut.1357Untuk memeriksa panggilan tersebut, gunakan [hook `PreToolUse`](https://code.claude.com/docs/id/agent-sdk/hooks), yang juga berjalan untuk panggilan tersebut.

1358 1358 

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

1360 1360 

1361```typescript theme={null}1361```typescript theme={null}

1362type CanUseTool = (1362type CanUseTool = (


1380| Opsi | Tipe | Deskripsi |1380| Opsi | Tipe | Deskripsi |

1381| :- | :- | :- |1381| :- | :- | :- |

1382| `signal` | `AbortSignal` | Diberi sinyal jika operasi harus dibatalkan |1382| `signal` | `AbortSignal` | Diberi sinyal jika operasi harus dibatalkan |

1383| `suggestions` | [`PermissionUpdate`](#permissionupdate)`[]` | Pembaruan izin yang disarankan agar pengguna tidak dimintai izin lagi untuk tool ini. Permintaan izin Bash menyertakan saran dengan [tujuan](#permissionupdatedestination) `localSettings`, sehingga mengembalikannya dalam `updatedPermissions` akan menulis aturan ke `.claude/settings.local.json` dan bertahan di seluruh sesi. |1383| `suggestions` | [`PermissionUpdate`](#permissionupdate)`[]` | Saran pembaruan izin agar pengguna tidak dimintai izin lagi untuk tool ini. Dialog izin Bash menyertakan saran dengan [tujuan](#permissionupdatedestination) `localSettings`, sehingga mengembalikannya di `updatedPermissions` akan menulis aturan ke `.claude/settings.local.json` dan bertahan di seluruh sesi. |

1384| `blockedPath` | `string` | Jalur file yang memicu permintaan izin, jika ada |1384| `blockedPath` | `string` | Path file yang memicu permintaan izin, jika ada |

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

1386| `decisionReason` | `string` | Menjelaskan mengapa permintaan izin ini dipicu |1386| `decisionReason` | `string` | Menjelaskan mengapa permintaan izin ini dipicu |

1387| `defaultToNo` | `boolean` | Ketika `true`, satu penekanan tombol yang tidak disengaja tidak boleh menyetujui permintaan ini: buka dialog izin Anda pada opsi penolakannya, jangan pilih persetujuan terlebih dahulu, dan jangan tawarkan pintasan persetujuan satu tombol. Memerlukan Agent SDK v0.3.268 atau lebih baru |1387| `defaultToNo` | `boolean` | Ketika `true`, satu tekanan tombol yang tidak disengaja tidak boleh menyetujui permintaan ini: buka dialog izin Anda pada opsi penolakannya, jangan memilih persetujuan secara default, dan jangan menawarkan pintasan persetujuan satu tombol. Memerlukan Agent SDK v0.3.268 atau yang lebih baru |

1388| `suppressAlwaysAllowRule` | `boolean` | Ketika `true`, jangan tawarkan pilihan izinkan-selalu yang persisten untuk permintaan ini. Memerlukan Agent SDK v0.3.268 atau lebih baru |1388| `suppressAlwaysAllowRule` | `boolean` | Ketika `true`, jangan menawarkan pilihan always-allow persisten untuk permintaan ini. Memerlukan Agent SDK v0.3.268 atau yang lebih baru |

1389| `toolUseID` | `string` | Pengidentifikasi unik untuk panggilan tool spesifik ini dalam pesan asisten |1389| `toolUseID` | `string` | Pengidentifikasi unik untuk panggilan tool spesifik ini dalam pesan assistant |

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

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

1392 1392 

1393Callback biasanya menyelesaikan permintaan dengan mengembalikan [`PermissionResult`](#permissionresult), yang ditulis kembali oleh SDK melalui transport-nya sebagai `control_response`. Kembalikan `null` hanya ketika aplikasi Anda telah mengirim `control_response` untuk permintaan ini melalui saluran miliknya sendiri, dengan menyertakan kembali `requestId`; SDK kemudian melewati penulisan respons ke transport-nya. Mengembalikan `null` dalam kasus lain akan membuat panggilan tool terblokir tanpa batas waktu, karena tidak ada `control_response` yang pernah dikirim dan permintaan izin tidak mengalami timeout.1393Callback biasanya menyelesaikan permintaan dengan mengembalikan [`PermissionResult`](#permissionresult), yang ditulis kembali oleh SDK melalui transport-nya sebagai `control_response`. Kembalikan `null` hanya ketika aplikasi Anda telah mengirim `control_response` untuk permintaan ini melalui channel-nya sendiri, dengan menyertakan kembali `requestId`; SDK kemudian melewati penulisan respons ke transport-nya. Mengembalikan `null` dalam kasus lain membuat panggilan tool terblokir tanpa batas waktu, karena tidak ada `control_response` yang pernah dikirim dan dialog izin tidak mengalami timeout.

1394 1394 

1395Opsi `requestId` dan nilai kembalian `null` memerlukan Claude Code v2.1.199 atau lebih baru.1395Opsi `requestId` dan nilai kembalian `null` memerlukan Claude Code v2.1.199 atau yang lebih baru.

1396 1396 

1397### `PermissionResult`1397### `PermissionResult`

1398 1398 


1414 };1414 };

1415```1415```

1416 1416 

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

1418 1418 

1419### `ToolConfig`1419### `ToolConfig`

1420 1420 


1430 1430 

1431| Field | Tipe | Deskripsi |1431| Field | Tipe | Deskripsi |

1432| :- | :- | :- |1432| :- | :- | :- |

1433| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | Mengaktifkan field `preview` pada opsi [`AskUserQuestion`](https://code.claude.com/docs/id/agent-sdk/user-input#question-format) dan menetapkan format kontennya. Jika tidak diatur, Claude tidak menghasilkan pratinjau |1433| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | Mengaktifkan field `preview` pada opsi [`AskUserQuestion`](https://code.claude.com/docs/id/agent-sdk/user-input#question-format) dan mengatur format kontennya. Jika tidak diatur, Claude tidak menghasilkan pratinjau |

1434 1434 

1435### `McpServerConfig`1435### `McpServerConfig`

1436 1436 


1489};1489};

1490```1490```

1491 1491 

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

1493 1493 

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

1495 1495 

1496```typescript theme={null}1496```typescript theme={null}

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


1534 1534 

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

1536 1536 

1537* **Daftar dengan entri**: entri-entri tersebut menggantikan kebijakan saat ini1537* **Daftar dengan entri**: entri tersebut menggantikan kebijakan saat ini

1538* **Daftar kosong**: setiap kebijakan pada server dihapus1538* **Daftar kosong**: setiap kebijakan di server dihapus

1539* **Tanpa kunci `tools`**: kebijakan saat ini tetap berlaku1539* **Tanpa kunci `tools`**: kebijakan saat ini tetap berlaku

1540 1540 

1541Sertakan dalam panggilan tersebut server in-process Anda yang lain dan server apa pun yang ditambahkan oleh panggilan `setMcpServers()` sebelumnya, atau panggilan tersebut akan memutus koneksinya.1541Sertakan dalam panggilan tersebut server in-process Anda yang lain dan server apa pun yang ditambahkan oleh panggilan `setMcpServers()` sebelumnya, atau panggilan tersebut akan memutuskan koneksinya.

1542 1542 

1543#### `McpServerToolPolicy`1543#### `McpServerToolPolicy`

1544 1544 

1545Satu entri dalam daftar `tools` dari [`McpSdkServerConfigWithInstance`](#mcpsdkserverconfigwithinstance), yang menyebutkan salah satu tool server dan mengatur kebijakan izin untuk panggilan ke tool tersebut. Daftar ini memerlukan Agent SDK v0.3.301 atau lebih baru dan Claude Code v2.1.301 atau lebih baru. Executable Claude Code yang lebih lama, seperti executable yang Anda tunjuk dengan `pathToClaudeCodeExecutable`, mengabaikan daftar ini. Dalam hal ini `always_ask` dan `always_deny` tidak diberlakukan, dan setiap panggilan melewati [alur izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated).1545Satu entri dalam daftar `tools` dari [`McpSdkServerConfigWithInstance`](#mcpsdkserverconfigwithinstance), yang menyebutkan salah satu tool server dan mengatur kebijakan izin untuk panggilan ke tool tersebut. Daftar ini memerlukan Agent SDK v0.3.301 atau yang lebih baru dan Claude Code v2.1.301 atau yang lebih baru. Executable Claude Code yang lebih lama, seperti executable yang Anda tunjuk dengan `pathToClaudeCodeExecutable`, mengabaikan daftar ini. Dalam hal itu, `always_ask` dan `always_deny` tidak diberlakukan, dan setiap panggilan melalui [alur izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated).

1546 1546 

1547```typescript theme={null}1547```typescript theme={null}

1548type McpServerToolPolicy = {1548type McpServerToolPolicy = {


1555| Field | Tipe | Deskripsi |1555| Field | Tipe | Deskripsi |

1556| :- | :- | :- |1556| :- | :- | :- |

1557| `name` | `string` | Nama polos tool sebagaimana diberikan ke [`tool()`](#tool), tanpa prefiks `mcp__<server>__` |1557| `name` | `string` | Nama polos tool sebagaimana diberikan ke [`tool()`](#tool), tanpa prefiks `mcp__<server>__` |

1558| `permission_policy` | `'always_allow' \| 'always_ask' \| 'always_deny'` | Kebijakan persetujuan untuk panggilan tool, [`always_ask` atau `always_deny`](#permission-policy-values). `always_allow` diabaikan pada server in-process: untuk menyetujui tool terlebih dahulu, cantumkan di [`allowedTools`](#options) sebagai gantinya |1558| `permission_policy` | `'always_allow' \| 'always_ask' \| 'always_deny'` | Kebijakan persetujuan untuk panggilan tool, [`always_ask` atau `always_deny`](#permission-policy-values). `always_allow` diabaikan pada server in-process: untuk menyetujui tool terlebih dahulu, cantumkan tool tersebut di [`allowedTools`](#options) |

1559| `org_max_permission` | `'allow' \| 'ask' \| 'blocked'` | Batas atas per tool yang diatur oleh admin organisasi. Diabaikan pada server in-process, jadi biarkan tidak diatur |1559| `org_max_permission` | `'allow' \| 'ask' \| 'blocked'` | Batas atas per tool yang diatur oleh admin organisasi. Diabaikan pada server in-process, jadi biarkan tidak diatur |

1560 1560 

1561##### Nilai `permission_policy`1561##### Nilai `permission_policy`

1562 1562 

1563Pilih `always_ask` untuk menyetujui setiap panggilan sendiri, atau `always_deny` untuk memblokir tool sepenuhnya:1563Pilih `always_ask` untuk menyetujui setiap panggilan sendiri, atau `always_deny` untuk memblokir tool sepenuhnya:

1564 1564 

1565* **`always_ask`**: setiap panggilan ke tool [memerlukan persetujuan](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated), meskipun entri `allowedTools` atau aturan allow mencakupnya. Panggilan diteruskan ke callback `canUseTool` atau tool [`permissionPromptToolName`](#options) Anda, kecuali sudah diputuskan terlebih dahulu. Sebuah [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) dalam plugin yang Anda muat [dapat menyetujuinya terlebih dahulu](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods). Jika tidak, dalam mode `dontAsk` panggilan ditolak, dan dalam [mode `auto`, `plan`, dan `bypassPermissions`](#permission-modes-that-can-approve-an-always_ask-call) panggilan dapat disetujui sebelum mencapai callback Anda1565* **`always_ask`**: setiap panggilan ke tool [memerlukan persetujuan](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated), bahkan jika entri `allowedTools` atau aturan allow mencakupnya. Panggilan diteruskan ke callback `canUseTool` atau tool [`permissionPromptToolName`](#options) Anda, kecuali jika panggilan tersebut sudah diputuskan lebih dulu. [Mod](https://code.claude.com/docs/id/plugins/mods/overview.md) dalam plugin yang Anda muat [dapat menyetujuinya lebih dulu](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods). Selain itu, dalam mode `dontAsk` panggilan ditolak, dan dalam [mode `auto`, `plan`, dan `bypassPermissions`](#permission-modes-that-can-approve-an-always_ask-call) panggilan dapat disetujui sebelum mencapai callback Anda

1566* **`always_deny`**: panggilan ke tool [ditolak](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated) di setiap mode izin, termasuk `bypassPermissions`, tetapi mod dalam plugin yang Anda muat [masih dapat menyetujuinya](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods)1566* **`always_deny`**: panggilan ke tool [ditolak](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated) di setiap mode izin, termasuk `bypassPermissions`, tetapi mod dalam plugin yang Anda muat [masih dapat menyetujuinya](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods)

1567 1567 

1568Jika Anda tidak memberikan `canUseTool` maupun `permissionPromptToolName`, atau mengatur [`permissionPrompts`](#options) ke `'none'`, panggilan `always_ask` yang belum diputuskan terlebih dahulu akan ditolak kecuali [hook `PermissionRequest`](https://code.claude.com/docs/id/hooks#permissionrequest) mengizinkannya.1568Jika Anda tidak memberikan `canUseTool` maupun `permissionPromptToolName`, atau mengatur [`permissionPrompts`](#options) ke `'none'`, panggilan `always_ask` yang tidak diputuskan lebih dulu akan ditolak kecuali jika [hook `PermissionRequest`](https://code.claude.com/docs/id/hooks#permissionrequest) mengizinkannya.

1569 1569 

1570##### Mode izin yang dapat menyetujui panggilan `always_ask`1570##### Mode izin yang dapat menyetujui panggilan `always_ask`

1571 1571 

1572Dalam mode `auto`, `plan`, dan `bypassPermissions`, panggilan ke tool yang ditandai [`always_ask`](#permission-policy-values) dapat disetujui sebelum mencapai callback `canUseTool` Anda.1572Dalam mode `auto`, `plan`, dan `bypassPermissions`, panggilan ke tool yang ditandai [`always_ask`](#permission-policy-values) dapat disetujui sebelum mencapai callback `canUseTool` Anda.

1573 1573 

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

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

1576* **`bypassPermissions`**: ketika environment variable [`CLAUDE_CODE_REMOTE`](https://code.claude.com/docs/id/env-vars#variables) bernilai `true`, seperti dalam [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), panggilan disetujui tanpa callback Anda, apa pun anotasi tool-nya. Di tempat lain, panggilan mencapai callback Anda. Agar panggilan juga mencapai callback Anda dalam sesi cloud, jalankan sesi dalam mode `default` atau `acceptEdits` sebagai gantinya1576* **`bypassPermissions`**: ketika environment variable [`CLAUDE_CODE_REMOTE`](https://code.claude.com/docs/id/env-vars#variables) bernilai `true`, seperti dalam [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), panggilan disetujui tanpa callback Anda, apa pun anotasi tool-nya. Di tempat lain, panggilan mencapai callback Anda. Agar panggilan juga mencapai callback Anda dalam sesi cloud, jalankan sesi dalam mode `default` atau `acceptEdits` sebagai gantinya

1577 1577 


1603| :- | :- | :- |1603| :- | :- | :- |

1604| `type` | `'local'` | Harus `'local'` (saat ini hanya plugin lokal yang didukung) |1604| `type` | `'local'` | Harus `'local'` (saat ini hanya plugin lokal yang didukung) |

1605| `path` | `string` | Path ke direktori plugin. Path relatif di-resolve terhadap opsi [`cwd`](#options) saat sesi dimulai. Path harus absolut ketika Anda memuat plugin di tengah sesi dengan [`addPlugins`](#load-more-plugin-folders-with-addplugins) |1605| `path` | `string` | Path ke direktori plugin. Path relatif di-resolve terhadap opsi [`cwd`](#options) saat sesi dimulai. Path harus absolut ketika Anda memuat plugin di tengah sesi dengan [`addPlugins`](#load-more-plugin-folders-with-addplugins) |

1606| `skipMcpDiscovery` | `boolean` | Ketika `true`, SDK memuat skill, hook, agent, dan perintah dari plugin ini tetapi tidak membaca `.mcp.json` atau `mcpServers` pada manifesnya. Atur ini ketika aplikasi Anda yang mengelola koneksi MCP plugin tersebut. |1606| `skipMcpDiscovery` | `boolean` | Ketika `true`, SDK memuat skill, hook, agent, dan perintah dari plugin ini tetapi tidak membaca `.mcp.json` atau `mcpServers` manifest-nya. Atur ini ketika aplikasi Anda mengelola koneksi MCP plugin tersebut. |

1607 1607 

1608**Contoh:**1608**Contoh:**

1609 1609 


1614];1614];

1615```1615```

1616 1616 

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

1618 1618 

1619## Jenis Pesan1619## Tipe Pesan

1620 1620 

1621### `SDKMessage`1621### `SDKMessage`

1622 1622 

1623Tipe union dari semua pesan yang mungkin dikembalikan oleh kueri.1623Tipe union dari semua pesan yang mungkin dikembalikan oleh query.

1624 1624 

1625```typescript theme={null}1625```typescript theme={null}

1626type SDKMessage =1626type SDKMessage =


1665 | SDKConversationResetMessage;1665 | SDKConversationResetMessage;

1666```1666```

1667 1667 

1668Tiga pesan dalam union ini melaporkan progres permintaan kontrol dan penolakan model. Masing-masing memiliki `type: "system"`, jadi bedakan dengan `subtype` yang tercantum pada masing-masing:1668Tiga pesan dalam union ini melaporkan progres control request dan penolakan model. Masing-masing memiliki `type: "system"`, jadi bedakan ketiganya berdasarkan `subtype` yang dicantumkan pada masing-masing pesan:

1669 1669 

1670* `SDKControlRequestProgressMessage`, `subtype: "control_request_progress"`: melaporkan progres pada permintaan kontrol yang berjalan lama yang dikirim oleh klien Anda. `request_id` mencocokkan pesan dengan permintaan tersebut, dan `status` bernilai `"started"` atau `"api_retry"`. Memerlukan Agent SDK v0.3.203 atau lebih baru.1670* `SDKControlRequestProgressMessage`, `subtype: "control_request_progress"`: melaporkan progres pada control request yang berjalan lama yang dikirim oleh klien Anda. `request_id` mencocokkan pesan dengan permintaan tersebut, dan `status` bernilai `"started"` atau `"api_retry"`. Memerlukan Agent SDK v0.3.203 atau yang lebih baru.

1671* `SDKModelRefusalFallbackMessage`, `subtype: "model_refusal_fallback"`: dipancarkan ketika model mengakhiri stream dengan penolakan dan giliran tersebut dicoba ulang pada model fallback. Membawa `original_model` dan `fallback_model`. Memerlukan Agent SDK v0.3.170 atau lebih baru.1671* `SDKModelRefusalFallbackMessage`, `subtype: "model_refusal_fallback"`: dikirim ketika model mengakhiri stream dengan penolakan dan giliran tersebut dicoba ulang pada model fallback. Membawa `original_model` dan `fallback_model`. Memerlukan Agent SDK v0.3.170 atau yang lebih baru.

1672* `SDKModelRefusalNoFallbackMessage`, `subtype: "model_refusal_no_fallback"`: dipancarkan ketika model mengakhiri stream dengan penolakan dan tidak ada retry yang dijalankan, misalnya karena tidak ada model fallback yang dikonfigurasi. Membawa `original_model`. Memerlukan Agent SDK v0.3.193 atau lebih baru.1672* `SDKModelRefusalNoFallbackMessage`, `subtype: "model_refusal_no_fallback"`: dikirim ketika model mengakhiri stream dengan penolakan dan tidak ada retry yang dijalankan, misalnya karena tidak ada model fallback yang dikonfigurasi. Membawa `original_model`. Memerlukan Agent SDK v0.3.193 atau yang lebih baru.

1673 1673 

1674### `SDKAssistantMessage`1674### `SDKAssistantMessage`

1675 1675 


1694};1694};

1695```1695```

1696 1696 

1697Bidang `message` adalah [`BetaMessage`](https://platform.claude.com/docs/en/api/messages/create) dari Anthropic SDK. Ini mencakup bidang seperti `id`, `content`, `model`, `stop_reason`, dan `usage`.1697Field `message` adalah [`BetaMessage`](https://platform.claude.com/docs/en/api/messages/create) dari Anthropic SDK. Field ini mencakup field seperti `id`, `content`, `model`, `stop_reason`, dan `usage`.

1698 1698 

1699`SDKAssistantMessageError` adalah salah satu dari: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'account_on_hold'`, `'billing_error'`, `'rate_limit'`, `'overloaded'`, `'invalid_request'`, `'model_not_found'`, `'server_error'`, `'max_output_tokens'`, `'cloud_credential_error'`, atau `'unknown'`. Empat dari nilai-nilai ini berarti lebih dari yang nama mereka katakan:1699`SDKAssistantMessageError` adalah salah satu dari: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'account_on_hold'`, `'billing_error'`, `'rate_limit'`, `'overloaded'`, `'invalid_request'`, `'model_not_found'`, `'server_error'`, `'max_output_tokens'`, `'cloud_credential_error'`, atau `'unknown'`. Empat dari nilai ini memiliki arti lebih dari yang disebutkan namanya:

1700 1700 

1701* `'model_not_found'`: model yang dipilih tidak ada atau tidak tersedia untuk akun atau deployment Anda1701* `'model_not_found'`: model yang dipilih tidak ada atau tidak tersedia untuk akun atau deployment Anda

1702* `'overloaded'`: API mengembalikan 529 karena server mencapai kapasitas, berbeda dengan `'rate_limit'`, yang merupakan 429 terhadap kuota Anda1702* `'overloaded'`: API mengembalikan 529 karena server sedang mencapai kapasitasnya, berbeda dengan `'rate_limit'`, yang merupakan 429 terhadap kuota Anda

1703* `'account_on_hold'`: [akun Anda sedang ditahan](https://code.claude.com/docs/id/errors.md#your-account-is-on-hold)1703* `'account_on_hold'`: [akun Anda sedang ditangguhkan](https://code.claude.com/docs/id/errors.md#your-account-is-on-hold)

1704* `'cloud_credential_error'`: Claude Code tidak dapat memperoleh kredensial AWS atau Google Cloud yang dapat digunakan di mesin tempat ia berjalan, sehingga tidak ada permintaan yang mencapai penyedia cloud. Penyebab umum adalah masuk cloud yang kedaluwarsa atau tidak pernah selesai di mesin itu, meskipun layanan kredensial yang sesaat tidak dapat dijangkau melaporkan nilai yang sama. Lihat [Tidak dapat memuat kredensial AWS atau Google Cloud](https://code.claude.com/docs/id/errors.md#could-not-load-aws-or-google-cloud-credentials). Memerlukan TypeScript Agent SDK v0.3.267 atau lebih baru, yang menggabungkan Claude Code v2.1.2671704* `'cloud_credential_error'`: Claude Code tidak dapat memperoleh kredensial AWS atau Google Cloud yang dapat digunakan di mesin tempatnya berjalan, sehingga tidak ada permintaan yang mencapai penyedia cloud. Penyebab umumnya adalah sign-in cloud yang kedaluwarsa atau tidak pernah diselesaikan di mesin tersebut, meskipun layanan kredensial yang sesaat tidak dapat dijangkau juga melaporkan nilai yang sama. Lihat [Could not load AWS or Google Cloud credentials](https://code.claude.com/docs/id/errors.md#could-not-load-aws-or-google-cloud-credentials). Memerlukan TypeScript Agent SDK v0.3.267 atau yang lebih baru, yang menyertakan Claude Code v2.1.267

1705 1705 

1706`aborted` adalah `true` ketika gangguan atau pembatalan memotong pesan asisten sebelum aliran selesai: pesan tidak memiliki `stop_reason` dan konten mungkin berakhir di tengah kata. Bidang ini tidak ada pada pesan yang diselesaikan secara normal. Ini memerlukan Agent SDK v0.3.214 atau lebih baru.1706`aborted` bernilai `true` ketika interupsi atau abort memotong pesan asisten sebelum stream selesai: pesan tersebut tidak memiliki `stop_reason` dan kontennya mungkin berakhir di tengah kata. Field ini tidak ada pada pesan yang selesai secara normal. Field ini memerlukan Agent SDK v0.3.214 atau yang lebih baru.

1707 1707 

1708`agent_id` mengidentifikasi subagent yang menghasilkan pesan dan tidak ada pada pesan thread utama. Nilainya sama dengan `task_id` pada [`task_started`](#sdktaskstartedmessage) dan event tugas lainnya dari subagent tersebut, dan tidak berubah ketika subagent [dilanjutkan](https://code.claude.com/docs/id/agent-sdk/subagents.md#resume-subagents). Pada pesan dari [subagent bersarang](https://code.claude.com/docs/id/sub-agents.md#let-subagents-spawn-their-own-subagents), field ini menyebutkan subagent bersarang, bukan subagent yang memunculkannya. Field ini memerlukan Agent SDK v0.3.292 atau yang lebih baru.1708`agent_id` mengidentifikasi subagent yang menghasilkan pesan tersebut dan tidak ada pada pesan thread utama. Nilainya sama dengan `task_id` pada [`task_started`](#sdktaskstartedmessage) milik subagent tersebut dan event tugas lainnya, dan tidak berubah ketika subagent [dilanjutkan](https://code.claude.com/docs/id/agent-sdk/subagents.md#resume-subagents). Pada pesan dari [subagent bersarang](https://code.claude.com/docs/id/sub-agents.md#let-subagents-spawn-their-own-subagents), field ini menyebut subagent bersarang tersebut, bukan subagent yang memunculkannya. Field ini memerlukan Agent SDK v0.3.292 atau yang lebih baru.

1709 1709 

1710Cocokkan pesan subagent dengan event tugasnya berdasarkan `agent_id` alih-alih memasangkan `parent_tool_use_id` sebuah pesan dengan `tool_use_id` sebuah event tugas. Ketika sebuah panggilan tool melanjutkan subagent, event tugas membawa `tool_use_id` dari panggilan tersebut, sedangkan pesan tetap membawa `parent_tool_use_id` dari panggilan tool yang pertama kali memulai subagent, sehingga keduanya tidak lagi cocok.1710Cocokkan pesan subagent dengan event tugasnya berdasarkan `agent_id`, alih-alih memasangkan `parent_tool_use_id` pesan dengan `tool_use_id` event tugas. Ketika panggilan tool melanjutkan subagent, event tugas membawa `tool_use_id` dari panggilan tersebut, sementara pesan tetap mempertahankan `parent_tool_use_id` dari panggilan tool yang pertama kali memulai subagent, sehingga keduanya tidak lagi cocok.

1711 1711 

1712Claude Code menetapkan `user_message_uuid` dan `user_message_uuids` pada pesan asisten pertama dari giliran tersebut, dengan ketentuan yang dijelaskan di [`user_message_uuid`](#user_message_uuid). Ketika giliran tersebut melanjutkan giliran yang terinterupsi oleh restart, pesan asisten yang membawa field tersebut juga membawa [`resume_reason`](#resume_reason).1712Claude Code mengatur `user_message_uuid` dan `user_message_uuids` pada pesan asisten pertama dalam giliran, sesuai dengan kondisi dalam [`user_message_uuid`](#user_message_uuid). Ketika giliran tersebut melanjutkan giliran yang terputus oleh restart, pesan asisten yang membawa field tersebut juga membawa [`resume_reason`](#resume_reason).

1713 1713 

1714`timestamp` adalah waktu ISO 8601 ketika konten pesan selesai dihasilkan pada proses yang menghasilkannya. Nilai berasal dari jam mesin itu, jadi gunakan hanya untuk tampilan dan jangan urutkan pesan berdasarkannya. Satu giliran API dapat menghasilkan beberapa pesan asisten yang berbagi `message.id`, masing-masing dengan `timestamp` sendiri. Ketika bidang tidak ada, kembali ke waktu Anda menerima pesan.1714`timestamp` adalah waktu ISO 8601 ketika konten pesan selesai dihasilkan pada proses yang menghasilkannya. Nilainya berasal dari jam mesin tersebut, jadi gunakan hanya untuk tampilan dan jangan mengurutkan pesan berdasarkan nilai ini. Satu giliran API dapat menghasilkan beberapa pesan asisten yang berbagi `message.id`, masing-masing dengan `timestamp` sendiri. Jika field ini tidak ada, gunakan waktu saat Anda menerima pesan sebagai gantinya.

1715 1715 

1716`context_usage` adalah salinan terstruktur dari laporan `/context`, diketik sebagai [`SDKContextUsage`](#sdkcontextusage), dan memerlukan Agent SDK v0.3.232 atau lebih baru. Ketika Anda mengirim `/context` sebagai prompt, Claude Code mengirimkan laporan sebagai pesan asisten yang `message.content`-nya menyimpan tabel markdown, dan melampirkan `context_usage` ke pesan yang sama. Claude Code tidak menetapkan bidang pada pesan asisten lain mana pun, dan versi sebelumnya mengirimkan tabel `/context` tanpanya, jadi baca rincian dari bidang ketika ada dan kembali ke teks markdown ketika tidak.1716`context_usage` adalah salinan terstruktur dari laporan `/context`, dengan tipe [`SDKContextUsage`](#sdkcontextusage), dan memerlukan Agent SDK v0.3.232 atau yang lebih baru. Ketika Anda mengirim `/context` sebagai prompt, Claude Code mengirimkan laporan sebagai pesan asisten yang `message.content`-nya berisi tabel markdown, dan melampirkan `context_usage` ke pesan yang sama. Claude Code tidak mengatur field ini pada pesan asisten lainnya, dan versi sebelumnya mengirimkan tabel `/context` tanpa field ini, jadi baca rinciannya dari field tersebut ketika ada dan gunakan teks markdown sebagai fallback ketika tidak ada.

1717 1717 

1718`usage_report` adalah salinan terstruktur dari laporan `/usage`, bertipe [`SDKUsageReport`](#sdkusagereport), dan memerlukan Agent SDK v0.3.273 atau yang lebih baru. Ketika Anda mengirim `/usage` sebagai prompt, Claude Code mengirimkan laporan sebagai pesan asisten yang `message.content`-nya berisi teks tersebut. Claude Code melampirkan `usage_report` pada pesan yang sama hanya ketika sesi memenuhi semua kondisi berikut:1718`usage_report` adalah salinan terstruktur dari laporan `/usage`, dengan tipe [`SDKUsageReport`](#sdkusagereport), dan memerlukan Agent SDK v0.3.273 atau yang lebih baru. Ketika Anda mengirim `/usage` sebagai prompt, Claude Code mengirimkan laporan sebagai pesan asisten yang `message.content`-nya berisi teks tersebut. Claude Code melampirkan `usage_report` ke pesan yang sama hanya ketika sesi memenuhi semua kondisi berikut:

1719 1719 

1720* Sesi melakukan autentikasi dengan kredensial claude.ai1720* Sesi melakukan autentikasi dengan kredensial claude.ai

1721* Kredensial menunjukkan tipe paket yang dikenal atau membawa scope `user:profile`1721* Kredensial menunjukkan jenis paket yang dikenal atau membawa scope `user:profile`

1722* Akun tidak menggunakan penagihan berbasis penggunaan1722* Akun tidak menggunakan penagihan berbasis penggunaan

1723 1723 

1724Token `claude setup-token` yang diteruskan sebagai `CLAUDE_CODE_OAUTH_TOKEN` secara default tidak memenuhi syarat, karena hanya membawa scope `user:inference`. Sesi lain, seperti sesi dengan kunci API, mengirimkan teks tanpa field ini, begitu pula versi sebelumnya. Baca laporan dari field ini ketika ada dan gunakan teks sebagai gantinya ketika tidak ada.1724Token `claude setup-token` yang diteruskan sebagai `CLAUDE_CODE_OAUTH_TOKEN` tidak memenuhi syarat secara default, karena hanya membawa scope `user:inference`. Sesi lain, seperti sesi kunci API, mengirimkan teks tanpa field tersebut, begitu pula versi sebelumnya. Baca laporan dari field tersebut ketika ada dan gunakan teks sebagai fallback ketika tidak ada.

1725 1725 

1726### `SDKUserMessage`1726### `SDKUserMessage`

1727 1727 


1746};1746};

1747```1747```

1748 1748 

1749Atur `pasted_content` untuk mengirim konten yang pengguna tempel ke UI prompt Anda daripada ketik, satu entri per tempel, masing-masing string atau array blok konten. Claude Code menambahkan teks setiap entri setelah teks yang diketik, secara berurutan, dan dapat membungkus setiap tempel dalam tag `<pasted_content>`. Blok selain teks diabaikan, jadi kirim gambar dan dokumen dalam `message.content`. Memerlukan Agent SDK v0.3.277 atau lebih baru.1749Atur `pasted_content` untuk mengirim konten yang ditempelkan pengguna ke UI prompt Anda alih-alih diketik, satu entri per tempelan, masing-masing berupa string atau array blok konten. Claude Code menambahkan teks setiap entri setelah teks yang diketik, secara berurutan, dan dapat membungkus setiap tempelan dalam tag `<pasted_content>`. Blok selain teks diabaikan, jadi kirim gambar dan dokumen dalam `message.content`. Memerlukan Agent SDK v0.3.277 atau yang lebih baru.

1750 1750 

1751Tetapkan `inline_pastes` untuk memberi tahu Claude Code bagian mana dari `message.content` yang ditempelkan pengguna alih-alih diketik, satu string per tempelan. Teks prompt tetap berada di tempat pengguna meletakkannya. Claude Code dapat membungkus setiap tempelan yang tercantum dalam tag `<pasted_content>` di tempatnya berada, sehingga Claude dapat membedakan materi yang ditempelkan dari kata-kata pengguna sendiri. Hanya tempelan di blok teks terakhir prompt yang dibungkus. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.1751Atur `inline_pastes` untuk memberi tahu Claude Code bagian mana dari `message.content` yang ditempelkan pengguna alih-alih diketik, satu string per tempelan. Teks prompt tetap berada di tempat pengguna meletakkannya. Claude Code dapat membungkus setiap tempelan yang tercantum dalam tag `<pasted_content>` di posisinya, sehingga Claude dapat membedakan materi yang ditempelkan dari kata-kata pengguna sendiri. Hanya tempelan dalam blok teks terakhir prompt yang dibungkus. Memerlukan TypeScript Agent SDK v0.3.280 atau yang lebih baru.

1752 1752 

1753Setiap field tempelan memiliki batas ukuran:1753Setiap field tempelan memiliki batas ukuran:

1754 1754 

1755* `pasted_content`: jika jumlah entri ditambah blok konten di dalamnya melebihi 1.000, Claude Code mengabaikan seluruh field.1755* `pasted_content`: jika jumlah entri ditambah blok konten di dalamnya lebih dari 1.000, Claude Code mengabaikan seluruh field tersebut.

1756* `inline_pastes`: Claude Code menggunakan 100 entri pertama yang tidak kosong dan mengabaikan sisanya.1756* `inline_pastes`: Claude Code menggunakan 100 entri pertama yang tidak kosong dan mengabaikan sisanya.

1757 1757 

1758Tetapkan `shouldQuery`, `client_composed`, atau `priority` untuk mengubah cara Claude Code menangani pesan yang Anda kirim:1758Atur `shouldQuery`, `client_composed`, atau `priority` untuk mengubah cara Claude Code menangani pesan yang Anda kirim:

1759 1759 

1760* `shouldQuery`: atur ke `false` untuk menambahkan pesan ke transkrip tanpa memicu giliran asisten. Pesan ditahan dan digabungkan ke pesan pengguna berikutnya yang memicu giliran. Gunakan ini untuk menyuntikkan konteks, seperti output perintah yang Anda jalankan di luar pita, tanpa menghabiskan panggilan model.1760* `shouldQuery`: atur ke `false` untuk menambahkan pesan ke transkrip tanpa memicu giliran asisten. Pesan tersebut ditahan dan digabungkan ke pesan pengguna berikutnya yang memicu giliran. Gunakan ini untuk menyuntikkan konteks, seperti output dari perintah yang Anda jalankan di luar jalur, tanpa menghabiskan panggilan model untuk itu.

1761* `client_composed`: atur ke `true` untuk membuat Claude Code mengirimkan teks pesan seperti yang ditulis. Claude Code kemudian tidak memperluas penyebutan `@path` atau [`@server:resource`](https://code.claude.com/docs/id/mcp#use-mcp-resources), dan tidak menjalankan teks yang dimulai dengan `/` sebagai perintah. Sementara opsi [`verbatimPrompts`](#options) aktif, SDK menetapkan bidang pada setiap pesan. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru dan Claude Code v2.1.248 atau lebih baru.1761* `client_composed`: atur ke `true` agar Claude Code mengirimkan teks pesan sebagaimana ditulis. Claude Code kemudian tidak memperluas sebutan `@path` atau [`@server:resource`](https://code.claude.com/docs/id/mcp#use-mcp-resources), dan tidak menjalankan teks yang diawali `/` sebagai perintah. Selama opsi [`verbatimPrompts`](#options) aktif, SDK mengatur field ini pada setiap pesan. Memerlukan TypeScript Agent SDK v0.3.280 atau yang lebih baru dan Claude Code v2.1.248 atau yang lebih baru.

1762* `priority`: mengontrol kapan pesan yang Anda kirim selama giliran yang sedang berjalan mencapai Claude:1762* `priority`: mengontrol kapan pesan yang Anda kirim selama giliran yang sedang berjalan mencapai Claude:

1763 * `'next'`, atau tanpa field `priority`: Claude membaca pesan dalam giliran yang sama, segera setelah panggilan tool yang sedang dijalankannya selesai. Jika giliran berakhir lebih dulu, pesan tersebut memulai giliran berikutnya.1763 * `'next'`, atau tanpa field `priority`: Claude membaca pesan dalam giliran yang sama, segera setelah panggilan tool yang sedang dijalankannya selesai. Jika giliran berakhir lebih dulu, pesan tersebut memulai giliran berikutnya.

1764 * `'later'`: Claude Code menahan pesan hingga giliran berakhir dan mengirimkannya sebagai giliran baru.1764 * `'later'`: Claude Code menahan pesan hingga giliran berakhir dan mengirimkannya sebagai giliran baru.

1765 * `'now'` dengan [`origin: { kind: "human" }`](#sdkmessageorigin): pada Claude Code v2.1.286 atau lebih baru, pekerjaan yang dapat berlanjut di latar belakang dipindahkan ke sana, dan Claude membaca pesan dalam giliran yang sama. Pekerjaan yang dapat dipindahkan mencakup perintah shell, subagent, dan panggilan tool MCP. Pada v2.1.287 atau lebih baru, ini juga mencakup panggilan WebFetch dan WebSearch. Ketika Claude hanya sedang menulis respons, atau pekerjaan yang dijalankannya tidak dapat dipindahkan, Claude Code menginterupsi giliran sebagai gantinya dan Claude membaca pesan berikutnya.1765 * `'now'` dengan [`origin: { kind: "human" }`](#sdkmessageorigin): pada Claude Code v2.1.286 atau yang lebih baru, pekerjaan yang dapat berlanjut di latar belakang dipindahkan ke sana, dan Claude membaca pesan dalam giliran yang sama. Pekerjaan yang dapat dipindahkan mencakup perintah shell, subagent, dan panggilan tool MCP. Pada v2.1.287 atau yang lebih baru, pekerjaan tersebut juga mencakup panggilan WebFetch dan WebSearch. Ketika Claude hanya sedang menulis respons, atau pekerjaan yang sedang dijalankannya tidak dapat dipindahkan, Claude Code menginterupsi giliran sebagai gantinya dan Claude membaca pesan tersebut berikutnya.

1766 * `'now'` tanpa origin tersebut: Claude Code menginterupsi giliran dan Claude membaca pesan berikutnya.1766 * `'now'` tanpa origin tersebut: Claude Code menginterupsi giliran dan Claude membaca pesan tersebut berikutnya.

1767 1767 

1768Pesan ini, yang dikirim saat giliran sedang berjalan, meminta Claude mengubah arah tanpa kehilangan perintah shell yang masih berjalan:1768Pesan ini, yang dikirim saat giliran sedang berjalan, meminta Claude mengubah arah tanpa kehilangan perintah shell yang masih berjalan:

1769 1769 


1777};1777};

1778```1778```

1779 1779 

1780Pesan pengguna yang dihasilkan subagent, seperti `tool_result` untuk salah satu panggilan tool-nya sendiri, membawa `agent_id`. Lihat [`SDKAssistantMessage`](#sdkassistantmessage), yang mendefinisikan field tersebut dan persyaratan versinya.1780Pesan pengguna yang dihasilkan subagent, seperti `tool_result` untuk salah satu panggilan tool-nya sendiri, membawa `agent_id`. Lihat [`SDKAssistantMessage`](#sdkassistantmessage), yang mendefinisikan field tersebut beserta persyaratan versinya.

1781 1781 

1782Pada pesan yang membawa blok `tool_result`, `tool_use_result` adalah objek output terstruktur dari tool, bukan teks yang dikirim ke model. Bentuknya bergantung pada tool yang disebutkan oleh blok `tool_use` yang sesuai, sehingga field ini bertipe `unknown`; bentuk bawaan tercantum di [Tipe Output Tool](#tool-output-types). Hasil-hasil berikut memerlukan penanganan di luar bentuk yang tercantum:1782Pada pesan yang membawa blok `tool_result`, `tool_use_result` adalah objek output terstruktur dari tool, bukan teks yang dikirim ke model. Bentuknya bergantung pada tool yang disebut oleh blok `tool_use` yang cocok, sehingga field ini bertipe `unknown`; bentuk bawaan tercantum di bawah [Tipe Output Tool](#tool-output-types). Hasil berikut memerlukan penanganan di luar bentuk yang tercantum:

1783 1783 

1784* Tool `Agent`: `tool_use_result` adalah [`AgentOutput`](#agent-2). Render dari objek ini alih-alih mengurai teks `tool_result`. `content` dari hasil `completed` berisi laporan subagent, atau, untuk subagent yang laporannya melalui panggilan tool `SubagentHandback`, catatan singkat tentang penyerahan tersebut sebagai pengganti laporan. Dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) pada Claude Code v2.1.271 atau lebih baru, setiap subagent yang menghasilkan hasil `completed` melapor dengan cara tersebut kecuali jika merupakan [fork](https://code.claude.com/docs/id/sub-agents.md#fork-the-current-conversation), dan Claude menerima laporan sebagai pesan terpisah dari subagent.1784* Tool `Agent`: `tool_use_result` adalah [`AgentOutput`](#agent-2). Render dari nilai tersebut alih-alih mengurai teks `tool_result`. `content` dari hasil `completed` berisi laporan subagent, atau, untuk subagent yang laporannya melalui panggilan tool `SubagentHandback`, catatan singkat tentang penyerahan tersebut sebagai pengganti laporan. Dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) pada Claude Code v2.1.271 atau yang lebih baru, setiap subagent yang menghasilkan hasil `completed` melapor dengan cara tersebut kecuali jika subagent itu adalah [fork](https://code.claude.com/docs/id/sub-agents.md#fork-the-current-conversation), dan Claude menerima laporan tersebut sebagai pesan terpisah dari subagent.

1785* Panggilan WebFetch atau WebSearch yang dipindahkan Claude Code ke latar belakang untuk mengirimkan pesan `'now'`: pesan pengguna yang membawa `tool_result` dari panggilan tersebut memiliki `tool_use_result` yang ditetapkan ke `{ detachedToolCall: true }`. Panggilan masih berjalan, dan Claude menerima hasilnya setelah selesai. Tidak ada `tool_result` kedua untuk `tool_use_id` tersebut yang menyusul, jadi jika aplikasi Anda menggambar satu baris untuk setiap panggilan tool, tandai baris ini sebagai dipindahkan ke latar belakang ketika pesan ini tiba. Memerlukan Claude Code v2.1.287 atau lebih baru.1785* Panggilan WebFetch atau WebSearch yang dipindahkan Claude Code ke latar belakang untuk mengirimkan pesan `'now'`: pesan pengguna yang membawa `tool_result` panggilan tersebut memiliki `tool_use_result` yang diatur ke `{ detachedToolCall: true }`. Panggilan tersebut masih berjalan, dan Claude menerima hasilnya setelah selesai. Tidak ada `tool_result` kedua untuk `tool_use_id` tersebut yang menyusul, jadi jika aplikasi Anda menampilkan baris untuk setiap panggilan tool, tandai baris ini sebagai dipindahkan ke latar belakang saat pesan ini tiba. Memerlukan Claude Code v2.1.287 atau yang lebih baru.

1786* Tool MCP yang hasilnya berisi blok `resource_link`: `tool_use_result` adalah objek dengan array `resourceLinks` berisi entri [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude menerima setiap tautan sebagai baris teks di blok `tool_result`, jadi baca `resourceLinks` untuk merender file yang dikembalikan server alih-alih mengurai teks tersebut. Claude Code menghilangkan `resourceLinks` ketika hasil tidak memiliki tautan dan pada hasil dari subagent, menyimpan paling banyak 50 tautan per hasil, dan berhenti menambahkan tautan setelah array mencapai 64 KiB JSON terserialisasi. `resourceLinks` memerlukan Agent SDK v0.3.257 atau lebih baru.1786* Tool MCP yang hasilnya berisi blok `resource_link`: `tool_use_result` adalah objek dengan array `resourceLinks` berisi entri [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude menerima setiap tautan sebagai baris teks dalam blok `tool_result`, jadi baca `resourceLinks` untuk merender file yang dikembalikan server alih-alih mengurai teks tersebut. Claude Code menghilangkan `resourceLinks` ketika hasil tidak memiliki tautan dan pada hasil dari subagent, menyimpan paling banyak 50 tautan per hasil, dan berhenti menambahkan tautan setelah array mencapai 64 KiB JSON yang diserialisasi. `resourceLinks` memerlukan Agent SDK v0.3.257 atau yang lebih baru.

1787* Tool MCP yang mengembalikan [`structuredContent`](#calltoolresult): `tool_use_result` adalah objek yang anggota `structuredContent`-nya berisi apa yang dikirim server dan anggota `content`-nya berisi nilai [`McpOutput`](#mcpoutput). Hasil dari subagent tidak membawa `structuredContent`.1787* Tool MCP yang mengembalikan [`structuredContent`](#calltoolresult): `tool_use_result` adalah objek yang anggota `structuredContent`-nya berisi apa yang dikirim server dan anggota `content`-nya berisi nilai [`McpOutput`](#mcpoutput). Hasil dari subagent tidak membawa `structuredContent`.

1788* Tool MCP yang `structuredContent`-nya terserialisasi menjadi lebih dari 1.048.576 karakter JSON: Claude Code tidak menyertakan `structuredContent` pada `tool_use_result` dan menetapkan `structuredContentOmitted: true` sebagai gantinya, sehingga aplikasi Anda dapat membedakan objek yang dibuang dari tool yang tidak mengirim apa pun. Anggota lainnya, seperti `content` dan `resourceLinks`, tetap ada, dan apa yang diterima Claude tidak berubah. Claude Code v2.1.287 atau yang lebih baru menerapkan batas ini. Dua jenis tool berbeda:1788* Tool MCP yang `structuredContent`-nya diserialisasi menjadi lebih dari 1.048.576 karakter JSON: Claude Code menghilangkan `structuredContent` dari `tool_use_result` dan mengatur `structuredContentOmitted: true` sebagai gantinya, sehingga aplikasi Anda dapat membedakan objek yang dibuang dari tool yang tidak mengirim objek sama sekali. Anggota lainnya, seperti `content` dan `resourceLinks`, tetap ada, dan apa yang diterima Claude tidak berubah. Claude Code v2.1.287 atau yang lebih baru menerapkan batas ini. Dua jenis tool berbeda:

1789 * Tool dari [server SDK in-process](https://code.claude.com/docs/id/agent-sdk/custom-tools.md) dikecualikan dan mengirimkan objek secara utuh.1789 * Tool dari [server SDK in-process](https://code.claude.com/docs/id/agent-sdk/custom-tools.md) dikecualikan dan mengirimkan objek secara utuh.

1790 * Tool yang entri `tools/list`-nya mendeklarasikan [resource `ui://` MCP Apps](#mcpserverstatus) memiliki batas 8.388.608 karakter pada Claude Code v2.1.295 atau yang lebih baru, dan versi sebelum v2.1.295 mengecualikannya.1790 * Tool yang entri `tools/list`-nya mendeklarasikan [resource `ui://` MCP Apps](#mcpserverstatus) memiliki batas 8.388.608 karakter pada Claude Code v2.1.295 atau yang lebih baru, dan versi sebelum v2.1.295 mengecualikannya.

1791 1791 

1792### `SDKUserMessageReplay`1792### `SDKUserMessageReplay`

1793 1793 

1794Pesan pengguna yang diputar ulang dengan UUID yang diperlukan.1794Pesan pengguna yang diputar ulang dengan UUID wajib.

1795 1795 

1796```typescript theme={null}1796```typescript theme={null}

1797type SDKUserMessageReplay = {1797type SDKUserMessageReplay = {


1808};1808};

1809```1809```

1810 1810 

1811Giliran pengguna yang disuntikkan dari luar sesi, yang jenis [`origin`](#sdkmessageorigin)-nya adalah `peer` atau `channel`, mencapai aliran sebagai pemutaran ulang baik itu disampaikan selama giliran aktif maupun memulai giliran baru saat sesi menganggur. Sebelum v2.1.207, giliran yang disuntikkan yang disampaikan saat sesi menganggur tidak menghasilkan pesan pada aliran dan hanya muncul ketika Anda membaca ulang transkrip.1811Giliran pengguna yang disuntikkan dari luar sesi, yaitu giliran yang jenis [`origin`](#sdkmessageorigin)-nya adalah `peer` atau `channel`, mencapai stream sebagai replay, baik ketika giliran tersebut dikirim selama giliran aktif maupun ketika memulai giliran baru saat sesi sedang idle. Sebelum v2.1.207, giliran yang disuntikkan dan dikirim saat sesi idle tidak menghasilkan pesan pada stream dan hanya muncul ketika Anda membaca ulang transkrip.

1812 1812 

1813### `SDKResultMessage`1813### `SDKResultMessage`

1814 1814 


1891 };1891 };

1892```1892```

1893 1893 

1894Beberapa bidang pada hasil membawa detail diagnostik di luar `subtype`:1894Beberapa field pada hasil membawa detail diagnostik di luar `subtype`:

1895 1895 

1896* `api_error_status`: kode status HTTP dari kesalahan API yang mengakhiri percakapan. Tidak ada atau `null` ketika giliran berakhir tanpa kesalahan API.1896* `api_error_status`: kode status HTTP dari error API yang menghentikan percakapan. Tidak ada atau bernilai `null` ketika giliran berakhir tanpa error API.

1897* `ttft_ms`: waktu ke token pertama dalam milidetik, diukur ketika pesan asisten lengkap pertama tiba. Hadir hanya pada lengan kesuksesan.1897* `ttft_ms`: waktu hingga token pertama dalam milidetik, diukur ketika pesan asisten lengkap pertama tiba. Hanya ada pada varian sukses.

1898* `ttft_stream_ms`: waktu dalam milidetik hingga acara aliran `message_start` pertama, ketika aliran respons terbuka. Lebih rendah dari `ttft_ms`; celah antara keduanya adalah waktu yang dihabiskan untuk streaming pesan pertama. Hadir hanya pada lengan kesuksesan.1898* `ttft_stream_ms`: waktu dalam milidetik hingga event stream `message_start` pertama, ketika stream respons terbuka. Lebih rendah dari `ttft_ms`; selisih di antara keduanya adalah waktu yang dihabiskan untuk streaming pesan pertama. Hanya ada pada varian sukses.

1899* `time_to_request_ms`: waktu dalam milidetik dari awal giliran hingga Claude Code mengirim permintaan API. Hanya ada pada cabang success. Memerlukan Claude Code v2.1.162 atau lebih baru.1899* `time_to_request_ms`: waktu dalam milidetik dari awal giliran hingga Claude Code mengirim permintaan API. Hanya ada pada varian sukses. Memerlukan Claude Code v2.1.162 atau yang lebih baru.

1900* `user_message_uuid`: `uuid` dari pesan yang Anda kirim yang dijawab giliran ini. Lihat [`user_message_uuid`](#user_message_uuid) untuk hasil mana yang membawanya.1900* `user_message_uuid`: `uuid` dari pesan yang Anda kirim yang dijawab oleh giliran ini. Lihat [`user_message_uuid`](#user_message_uuid) untuk hasil mana yang membawanya.

1901* `user_message_uuids`: `uuid` dari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Lihat [`user_message_uuids`](#user_message_uuids).1901* `user_message_uuids`: `uuid` dari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Lihat [`user_message_uuids`](#user_message_uuids).

1902* `resume_reason`: alasan giliran ini melanjutkan giliran yang terinterupsi oleh restart. Ada pada kedua cabang. Lihat [`resume_reason`](#resume_reason).1902* `resume_reason`: alasan giliran ini melanjutkan giliran yang terputus oleh restart. Ada pada kedua varian. Lihat [`resume_reason`](#resume_reason).

1903* `local_command`: nama perintah yang dijalankan giliran, pada hasil kesuksesan giliran yang diselesaikan oleh perintah tanpa memasuki loop agent, seperti `/compact`. Nama dilipat menjadi huruf kecil dan garis bawah, jadi `/reload-plugins` melaporkan `reload_plugins`. Perintah yang disediakan server MCP, dan `/mcp` bawaan, melaporkan `mcp`. Perintah yang Anda tentukan sendiri melaporkan `custom`. Argumen tidak pernah disertakan. Tidak ada pada setiap giliran yang memasuki loop agent dan pada pengiriman yang tidak menjalankan perintah. Memerlukan Agent SDK v0.3.268 atau lebih baru.1903* `local_command`: nama perintah yang dijalankan oleh giliran, pada hasil sukses dari giliran yang diselesaikan oleh perintah tanpa memasuki agent loop, seperti `/compact`. Nama tersebut diubah menjadi huruf kecil dan garis bawah, sehingga `/reload-plugins` melaporkan `reload_plugins`. Perintah yang disediakan oleh server MCP, dan `/mcp` bawaan, melaporkan `mcp`. Perintah yang Anda definisikan sendiri melaporkan `custom`. Argumen tidak pernah disertakan. Tidak ada pada setiap giliran yang memasuki agent loop dan pada pengiriman yang tidak menjalankan perintah. Memerlukan Agent SDK v0.3.268 atau yang lebih baru.

1904* `request_sent_wall_ms`: epoch milidetik di mana Claude Code mengirim permintaan API, untuk penggabungan dengan stempel waktu sisi server. Hadir hanya bersama dengan [`user_message_uuid`](#user_message_uuid), pada hasil kesuksesan dengan `is_error` false yang gilirannya mengirim permintaan API.1904* `request_sent_wall_ms`: milidetik epoch saat Claude Code mengirim permintaan API, untuk digabungkan dengan timestamp sisi server. Hanya ada bersama [`user_message_uuid`](#user_message_uuid), pada hasil sukses dengan `is_error` bernilai false yang gilirannya mengirim permintaan API.

1905* `first_content_frame_ms`: waktu dalam milidetik hingga acara aliran `content_block_start` atau `content_block_delta` pertama, menghitung thinking block sebagai konten. Hadir hanya pada lengan kesuksesan, ketika `is_error` adalah false. Memerlukan Agent SDK v0.3.260 atau lebih baru.1905* `first_content_frame_ms`: waktu dalam milidetik hingga event stream `content_block_start` atau `content_block_delta` pertama, dengan thinking block dihitung sebagai konten. Hanya ada pada varian sukses, ketika `is_error` bernilai false. Memerlukan Agent SDK v0.3.260 atau yang lebih baru.

1906* `first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms`: waktu untuk mengunggah acara aliran pertama giliran. Claude Code merekamnya hanya dalam sesi yang dialirkan ke claude.ai, seperti [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), dan hasil yang `query()` hasilkan tidak membawanya. Memerlukan Agent SDK v0.3.260 atau lebih baru.1906* `first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms`: waktu untuk mengunggah event stream pertama giliran. Claude Code hanya mencatatnya dalam sesi yang di-stream ke claude.ai, seperti [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), dan hasil yang dihasilkan `query()` tidak membawanya. Memerlukan Agent SDK v0.3.260 atau yang lebih baru.

1907* `usage`: loop agent utama saja. Mengecualikan panggilan subagent dan model tambahan, dan per-giliran dalam sesi input streaming. Lebih baik gunakan `modelUsage` untuk akuntansi token/biaya.1907* `usage`: hanya agent loop utama. Tidak mencakup panggilan subagent dan model tambahan, dan dihitung per giliran dalam sesi streaming-input. Utamakan `modelUsage` untuk perhitungan token/biaya.

1908* `modelUsage`: total per-model untuk setiap panggilan model yang dibuat melalui pipeline kueri selama panggilan `query()` ini, termasuk loop utama, subagent, dan panggilan internal seperti compaction dan agent Workflow. Panggilan pembantu di luar pipeline itu, seperti pengklasifikasi izin dan permintaan penghitungan token, dikecualikan. Panggilan yang melanjutkan sesi juga menghitung [total per-model yang dipulihkan dari panggilan sebelumnya sesi](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md#accumulate-costs-across-multiple-calls). Dalam sesi input streaming total bersifat kumulatif di seluruh giliran, jadi baca hasil terbaru daripada menjumlahkan di seluruh hasil. Lihat [Lacak biaya dalam mode input streaming](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md#track-costs-in-streaming-input-mode) untuk pengaturan ulang dan [Pulihkan total setelah kerusakan sesi](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md#recover-totals-after-a-session-crash) untuk hasil yang dinolkan.1908* `modelUsage`: total per model untuk setiap panggilan model yang dilakukan melalui pipeline query selama panggilan `query()` ini, termasuk loop utama, subagent, dan panggilan internal seperti compaction dan agent Workflow. Panggilan pembantu di luar pipeline tersebut, seperti pengklasifikasi izin dan permintaan penghitungan token, tidak disertakan. Panggilan yang melanjutkan sesi juga menghitung [total per model yang dipulihkan dari panggilan sebelumnya dalam sesi tersebut](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md#accumulate-costs-across-multiple-calls). Dalam sesi streaming-input, total bersifat kumulatif di seluruh giliran, jadi baca hasil terbaru alih-alih menjumlahkan seluruh hasil. Lihat [Melacak biaya dalam mode streaming input](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md#track-costs-in-streaming-input-mode) untuk reset dan [Memulihkan total setelah sesi crash](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md#recover-totals-after-a-session-crash) untuk hasil yang bernilai nol.

1909* `total_cost_usd`: biaya perkiraan kumulatif dalam USD, mencakup panggilan yang sama dengan `modelUsage` dan diatur ulang pada titik yang sama. Panggilan yang melanjutkan sesi juga menghitung [total yang dipulihkan dari panggilan sebelumnya sesi](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md#accumulate-costs-across-multiple-calls). Ini adalah perkiraan, bukan pernyataan penagihan. Lihat [Lacak biaya dan penggunaan](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md) untuk peringatan akurasi.1909* `total_cost_usd`: estimasi biaya kumulatif dalam USD, mencakup panggilan yang sama dengan `modelUsage` dan direset pada titik yang sama. Panggilan yang melanjutkan sesi juga menghitung [total yang dipulihkan dari panggilan sebelumnya dalam sesi tersebut](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md#accumulate-costs-across-multiple-calls). Nilai ini adalah estimasi, bukan laporan penagihan. Lihat [Melacak biaya dan penggunaan](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md) untuk catatan tentang akurasi.

1910* `queued_turn_count`: jumlah pesan yang Anda kirim dengan `origin: { kind: "human" }` yang masih menunggu ketika Claude Code menghasilkan hasil. Lihat [`queued_turn_count`](#queued_turn_count) untuk apa yang `0` dan bidang yang tidak ada katakan.1910* `queued_turn_count`: jumlah pesan yang Anda kirim dengan `origin: { kind: "human" }` yang masih menunggu saat Claude Code menghasilkan hasil. Lihat [`queued_turn_count`](#queued_turn_count) untuk arti nilai `0` dan field yang tidak ada.

1911* `result_index`: posisi hasil ini dalam urutan pengiriman run, menghitung dari 0 di seluruh setiap hasil yang ditulis proses. Hadir pada kedua lengan. Hasil yang penulisannya gagal masih menggunakan nomornya, jadi celah dalam urutan berarti hasil hilang. Memerlukan Agent SDK v0.3.268 atau lebih baru.1911* `result_index`: posisi hasil ini dalam urutan pengiriman run, dihitung dari 0 di seluruh hasil yang ditulis proses. Ada pada kedua varian. Hasil yang gagal ditulis tetap memakai nomornya, sehingga celah dalam urutan berarti ada hasil yang hilang. Memerlukan Agent SDK v0.3.268 atau yang lebih baru.

1912* `startup_failure_reason`: mengapa Claude Code menolak untuk memulai, pada hasil `error_during_execution` yang ditulis sebelum keluar pada kegagalan startup yang diketahui. Lihat [`startup_failure_reason`](#startup_failure_reason) untuk nilai-nilai dan kegagalan mana yang membawanya. Memerlukan Agent SDK v0.3.274 atau lebih baru.1912* `startup_failure_reason`: alasan Claude Code menolak untuk memulai, pada hasil `error_during_execution` yang ditulisnya sebelum keluar karena kegagalan startup yang dikenal. Lihat [`startup_failure_reason`](#startup_failure_reason) untuk nilai-nilainya dan kegagalan mana yang membawanya. Memerlukan Agent SDK v0.3.274 atau yang lebih baru.

1913* `terminal_reason`: mengapa loop berakhir. Salah satu dari `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"`, atau `"turn_setup_failed"`.1913* `terminal_reason`: alasan loop berakhir. Salah satu dari `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"`, atau `"turn_setup_failed"`.

1914* `fast_mode_state`: salah satu dari `"on"`, `"off"`, atau `"cooldown"`.1914* `fast_mode_state`: salah satu dari `"on"`, `"off"`, atau `"cooldown"`.

1915* `fast_mode_disabled_reason`: mengapa [fast mode](https://code.claude.com/docs/id/fast-mode.md) tidak tersedia sekarang. Tidak ada ketika tidak ada yang memblokir fast mode, meskipun permintaan mungkin masih berjalan dengan kecepatan standar. Selama cooldown setelah rate limit fast mode, Claude Code melaporkan `fast_mode_state: "cooldown"` tanpa kode alasan dan mengaktifkan kembali fast mode ketika cooldown berakhir. Memerlukan Claude Code v2.1.219 atau lebih baru.1915* `fast_mode_disabled_reason`: alasan [fast mode](https://code.claude.com/docs/id/fast-mode.md) tidak tersedia saat ini. Tidak ada ketika tidak ada yang memblokir fast mode, meskipun permintaan masih dapat berjalan pada kecepatan standar. Selama cooldown setelah rate limit fast mode, Claude Code melaporkan `fast_mode_state: "cooldown"` tanpa kode alasan dan mengaktifkan kembali fast mode ketika cooldown berakhir. Memerlukan Claude Code v2.1.219 atau yang lebih baru.

1916 1916 

1917Gunakan kode alasan untuk menjelaskan mengapa fast mode mati di UI Anda sendiri daripada menurunkan ulang ketersediaan. Setiap kode menamai pemeriksaan yang memblokir fast mode:1917Gunakan kode alasan untuk menjelaskan mengapa fast mode nonaktif di UI Anda sendiri alih-alih menurunkan ulang ketersediaannya. Setiap kode menyebut pemeriksaan yang memblokir fast mode:

1918 1918 

1919| Kode Alasan | Arti |1919| Kode alasan | Arti |

1920| - | - |1920| - | - |

1921| `free` | Akun tidak memiliki langganan berbayar atau kredit penggunaan yang diperlukan fast mode |1921| `free` | Akun tidak memiliki langganan berbayar atau kredit penggunaan yang dibutuhkan fast mode |

1922| `preference` | Organisasi telah menonaktifkan fast mode |1922| `preference` | Organisasi telah menonaktifkan fast mode |

1923| `extra_usage_disabled` | Kredit penggunaan dimatikan untuk akun |1923| `extra_usage_disabled` | Kredit penggunaan dinonaktifkan untuk akun tersebut |

1924| `network_error` | [Pemeriksaan ketersediaan](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) tidak dapat menjangkau `api.anthropic.com` |1924| `network_error` | [Pemeriksaan ketersediaan](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) tidak dapat menjangkau `api.anthropic.com` |

1925| `unknown` | Claude Code tidak dapat menentukan ketersediaan |1925| `unknown` | Claude Code tidak dapat menentukan ketersediaan |

1926| `not_first_party` | Sesi menggunakan penyedia selain Anthropic API |1926| `not_first_party` | Sesi menggunakan penyedia yang tidak menawarkan fast mode |

1927| `disabled_by_env` | [`CLAUDE_CODE_DISABLE_FAST_MODE`](https://code.claude.com/docs/id/env-vars) diatur |1927| `disabled_by_env` | [`CLAUDE_CODE_DISABLE_FAST_MODE`](https://code.claude.com/docs/id/env-vars) diatur, atau region model pada [Agent Platform Google Cloud](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-on-agent-platform) tidak menawarkan fast mode |

1928| `model_not_allowed` | Model Opus fast mode tidak ada dalam allowlist [`availableModels`](https://code.claude.com/docs/id/model-config#restrict-model-selection) organisasi |1928| `model_not_allowed` | Model fast mode tidak ada dalam allowlist [`availableModels`](https://code.claude.com/docs/id/model-config#restrict-model-selection) organisasi, atau penyedia menolak fast mode untuk model sesi |

1929| `sdk_opt_in_required` | Sesi belum memilih fast mode: teruskan `fastMode: true` dalam opsi [`settings`](#options) atau melalui [`applyFlagSettings()`](#applyflagsettings) |1929| `sdk_opt_in_required` | Sesi belum memilih untuk menggunakan fast mode: teruskan `fastMode: true` dalam opsi [`settings`](#options) atau melalui [`applyFlagSettings()`](#applyflagsettings) |

1930| `pending` | Pemeriksaan ketersediaan belum selesai |1930| `pending` | Pemeriksaan ketersediaan belum selesai |

1931 1931 

1932Pasangan bidang yang sama muncul pada [`SDKSystemMessage`](#sdksystemmessage) dan pada [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse), jadi Anda dapat membaca status fast mode sebelum giliran pertama.1932Pasangan field yang sama muncul pada [`SDKSystemMessage`](#sdksystemmessage) dan pada [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse), sehingga Anda dapat membaca status fast mode sebelum giliran pertama.

1933 1933 

1934Field `origin` berisi [`SDKMessageOrigin`](#sdkmessageorigin) yang ditetapkan Claude Code pada pesan pengguna yang memicu hasil ini, bukan salinan dari `origin` yang Anda kirim. Hasil yang membawa `origin: { kind: "task-notification" }` mencakup:1934Field `origin` berisi [`SDKMessageOrigin`](#sdkmessageorigin) yang ditetapkan Claude Code ke pesan pengguna yang memicu hasil ini, bukan salinan `origin` yang Anda kirim. Hasil yang membawa `origin: { kind: "task-notification" }` mencakup:

1935 1935 

1936* **Giliran lanjutan sintetis**: ketika SDK menyisipkan giliran lanjutan sintetis, seperti untuk tugas latar belakang yang selesai, `SDKResultMessage` yang dihasilkan membawa kind ini1936* **Giliran tindak lanjut sintetis**: ketika SDK menyuntikkan giliran tindak lanjut sintetis, seperti untuk tugas latar belakang yang telah selesai, `SDKResultMessage` yang dihasilkan membawa jenis ini

1937* **Tugas terjadwal yang terpicu dan pesan dari sesi lain**: tugas terjadwal cloud yang pemicunya aktif dan pesan terverifikasi server dari sesi Anda yang lain juga tiba dengan kind ini, masing-masing dengan `subkind` yang dijelaskan dalam [Task-notification subkinds](#task-notification-subkinds)1937* **Tugas terjadwal yang dijalankan dan pesan dari sesi Anda yang lain**: tugas terjadwal cloud yang pemicunya aktif dan pesan terverifikasi server dari sesi Anda yang lain juga tiba dengan jenis ini, masing-masing dengan `subkind` yang dijelaskan dalam [Subkind task-notification](#task-notification-subkinds)

1938 1938 

1939Periksa `kind` untuk membedakan hasil yang menjawab prompt Anda dari lanjutan yang disisipkan sebelum merutekan atau menyembunyikannya. Jika aplikasi Anda [mendeklarasikan run terjadwal](#declare-a-scheduled-run), hasilnya juga membawa `kind: "task-notification"`, jadi jangan menyembunyikan hanya berdasarkan `kind`.1939Periksa `kind` untuk membedakan hasil yang menjawab prompt Anda dari tindak lanjut yang disuntikkan sebelum merutekan atau menyembunyikannya. Jika aplikasi Anda [mendeklarasikan run terjadwal](#declare-a-scheduled-run), hasilnya juga membawa `kind: "task-notification"`, jadi jangan menyembunyikan hanya berdasarkan `kind`.

1940 1940 

1941Ketika beberapa penyelesaian tugas latar belakang antri bersama-sama, Claude Code dapat menjawabnya dalam satu giliran daripada satu giliran masing-masing. Setiap penyelesaian masih menghasilkan hasilnya sendiri dengan asal ini. Semua kecuali yang terakhir dari penyelesaian yang Claude Code jawab bersama menghasilkan hasil kosong dengan `num_turns: 0`, secara berurutan, dan hasil yang terakhir membawa giliran yang menjawab mereka semua.1941Ketika beberapa penyelesaian tugas latar belakang diantrekan bersama, Claude Code dapat menjawabnya dalam satu giliran alih-alih satu giliran untuk masing-masing. Setiap penyelesaian tetap menghasilkan hasilnya sendiri dengan origin ini. Semua kecuali yang terakhir dari penyelesaian yang dijawab Claude Code bersama-sama menghasilkan hasil kosong dengan `num_turns: 0`, secara berurutan, dan hasil dari yang terakhir membawa giliran yang menjawab semuanya.

1942 1942 

1943`origin` tidak ada ketika Claude Code tidak menetapkannya, seperti:1943`origin` tidak ada ketika Claude Code tidak menetapkannya, seperti:

1944 1944 

1945* Pada giliran yang Anda mulai dengan pesan yang tidak memiliki `origin` maupun [`isSynthetic`](#sdkusermessage)1945* Pada giliran yang Anda mulai dengan pesan yang tidak memiliki `origin` maupun [`isSynthetic`](#sdkusermessage)

1946* Pada hasil yang dipancarkan sebelum giliran pengguna mana pun, seperti error startup1946* Pada hasil yang dikirim sebelum giliran pengguna mana pun, seperti error startup

1947 1947 

1948Ketika hook `PreToolUse` mengembalikan `permissionDecision: "defer"`, hasil memiliki `stop_reason: "tool_deferred"` dan `deferred_tool_use` membawa `id`, `name`, dan `input` tool yang tertunda. Baca bidang ini untuk menampilkan permintaan di UI Anda sendiri, kemudian lanjutkan dengan `session_id` yang sama untuk melanjutkan. Lihat [Tunda panggilan tool untuk nanti](https://code.claude.com/docs/id/hooks.md#defer-a-tool-call-for-later) untuk perjalanan pulang-pergi lengkap.1948Ketika hook `PreToolUse` mengembalikan `permissionDecision: "defer"`, hasil memiliki `stop_reason: "tool_deferred"` dan `deferred_tool_use` membawa `id`, `name`, dan `input` dari tool yang tertunda. Baca field ini untuk menampilkan permintaan di UI Anda sendiri, lalu lanjutkan dengan `session_id` yang sama untuk meneruskan. Lihat [Menunda panggilan tool untuk nanti](https://code.claude.com/docs/id/hooks.md#defer-a-tool-call-for-later) untuk alur lengkapnya.

1949 1949 

1950#### `user_message_uuid`1950#### `user_message_uuid`

1951 1951 

1952`uuid` dari [`SDKUserMessage`](#sdkusermessage) yang dijawab giliran, diulang sehingga Anda dapat mencocokkan balasan Claude Code dengan pesan yang Anda kirim. Claude Code mengulangi `uuid` hanya jika Anda menetapkan satu pada pesan. Bidang ini opsional pada `SDKUserMessage`, dan prompt string yang dilewatkan ke `query()` tidak membawa apa pun.1952`uuid` dari [`SDKUserMessage`](#sdkusermessage) yang sedang dijawab oleh giliran, dikembalikan agar Anda dapat mencocokkan balasan Claude Code dengan pesan yang Anda kirim. Claude Code mengembalikan `uuid` hanya jika Anda mengaturnya pada pesan. Field ini opsional pada `SDKUserMessage`, dan prompt string yang diteruskan ke `query()` tidak membawanya.

1953 1953 

1954Pesan mana yang dijawab giliran tergantung pada bagaimana giliran dimulai:1954Pesan mana yang dijawab oleh giliran bergantung pada cara giliran dimulai:

1955 1955 

1956* **Pesan reguler yang Anda kirim**, yang berarti tanpa `isSynthetic: true`: giliran menjawab pesan itu untuk seluruh jalannya. Ketika Anda mengirim beberapa pesan berdekatan, Claude Code dapat menggabungkannya menjadi satu giliran, dan bidang kemudian membawa hanya `uuid` pesan terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, gunakan [`user_message_uuids`](#user_message_uuids).1956* **Pesan reguler yang Anda kirim**, yaitu pesan tanpa `isSynthetic: true`: giliran menjawab pesan tersebut sepanjang jalannya. Ketika Anda mengirim beberapa pesan secara berdekatan, Claude Code dapat menggabungkannya menjadi satu giliran, dan field ini kemudian hanya membawa `uuid` pesan terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, gunakan [`user_message_uuids`](#user_message_uuids).

1957* **Pesan yang Anda kirim dengan `isSynthetic: true`**: giliran menjawab pesan itu pada awalnya. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, giliran menjawab pesan yang diambil dari saat itu. Mengulangi `uuid` pesan sintetis memerlukan Agent SDK v0.3.265 atau lebih baru; versi sebelumnya tidak mengulangi apa pun pada giliran sintetis.1957* **Pesan yang Anda kirim dengan `isSynthetic: true`**: giliran menjawab pesan tersebut pada awalnya. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, giliran menjawab pesan yang diambil tersebut sejak saat itu. Pengembalian `uuid` pesan sintetis memerlukan Agent SDK v0.3.265 atau yang lebih baru; versi sebelumnya tidak mengembalikan apa pun pada giliran sintetis.

1958* **Prompt yang dihasilkan Claude Code untuk melanjutkan giliran yang terinterupsi di bawah [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](https://code.claude.com/docs/id/env-vars)**: ketika prompt terakhir dari giliran yang terinterupsi adalah pesan reguler yang Anda kirim, baik yang membuka giliran maupun yang diambil Claude Code selama giliran, giliran yang dilanjutkan menjawab pesan tersebut pada awalnya. [`resume_reason`](#resume_reason) membedakan frame giliran yang dilanjutkan dari frame upaya yang terinterupsi. Ketika prompt terakhir bukan pesan reguler Anda, giliran yang dilanjutkan tidak menjawab pesan Anda pada awalnya. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, giliran menjawab pesan yang diambil tersebut sejak saat itu. Pengembalian prompt giliran yang terinterupsi memerlukan Agent SDK v0.3.268 atau yang lebih baru.1958* **Prompt yang dihasilkan Claude Code untuk melanjutkan giliran yang terputus di bawah [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](https://code.claude.com/docs/id/env-vars)**: ketika prompt terakhir dari giliran yang terputus adalah pesan reguler yang Anda kirim, baik pesan itu yang membuka giliran maupun yang diambil Claude Code selama giliran, giliran lanjutan menjawab pesan tersebut pada awalnya. [`resume_reason`](#resume_reason) membedakan frame giliran lanjutan dari frame percobaan yang terputus. Ketika prompt terakhir bukan pesan reguler Anda, giliran lanjutan tidak menjawab pesan Anda mana pun pada awalnya. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, giliran menjawab pesan yang diambil tersebut sejak saat itu. Pengembalian prompt giliran yang terputus memerlukan Agent SDK v0.3.268 atau yang lebih baru.

1959* **Prompt lain yang dihasilkan Claude Code sendiri**: giliran tidak menjawab pesan Anda pada awalnya dan frame-nya tidak membawa echo. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, giliran menjawab pesan itu dari saat itu. Echo pengambilan memerlukan Agent SDK v0.3.265 atau lebih baru; versi sebelumnya tidak mengulangi apa pun pada giliran ini.1959* **Prompt lain yang dihasilkan Claude Code sendiri**: giliran tidak menjawab pesan Anda mana pun pada awalnya dan frame-nya tidak membawa pengembalian. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, giliran menjawab pesan tersebut sejak saat itu. Pengembalian saat pengambilan memerlukan Agent SDK v0.3.265 atau yang lebih baru; versi sebelumnya tidak mengembalikan apa pun pada giliran ini.

1960 1960 

1961Claude Code mengulangi `uuid` pesan yang dijawab pada tiga jenis frame:1961Claude Code mengembalikan `uuid` pesan yang dijawab pada tiga jenis frame:

1962 1962 

1963* **Hasil**: setiap hasil giliran yang menjawab pesan yang Anda kirim. Setiap hasil seperti itu membawanya pada Agent SDK v0.3.265 atau lebih baru. Sebelum v0.3.265, hasil kesuksesan giliran yang dimulai pesan reguler tidak membawanya ketika giliran tidak mengirim permintaan API atau berakhir dengan panggilan tool yang ditunda. Sebelum v0.3.246, hasil kesalahan juga tidak membawanya, dan sebelum v0.3.216 setiap hasil tidak.1963* **Hasil**: setiap hasil dari giliran yang menjawab pesan yang Anda kirim. Setiap hasil seperti itu membawanya pada Agent SDK v0.3.265 atau yang lebih baru. Sebelum v0.3.265, hasil sukses dari giliran yang dimulai oleh pesan reguler tidak membawanya ketika giliran tidak mengirim permintaan API atau berakhir dengan panggilan tool yang ditunda. Sebelum v0.3.246, hasil error juga tidak membawanya, dan sebelum v0.3.216 tidak ada hasil yang membawanya.

1964* **Balasan pertama giliran**: [pesan asisten](#sdkassistantmessage) pertama, dan dengan `includePartialMessages` juga [acara aliran](#sdkpartialassistantmessage) pertama yang `event.type`-nya bukan `ping`, jadi Anda dapat mengikat balasan sebelum hasil tiba. Echo balasan pertama memerlukan Agent SDK v0.3.246 atau lebih baru. Sebelum v0.3.269, dengan `includePartialMessages`, Claude Code menetapkannya hanya pada acara aliran pertama itu, atau pada pesan asisten pertama ketika giliran tidak mengalirkan apa pun. Ketika pesan yang dijawab giliran berubah di tengah giliran, balasan pertama setelah perubahan membawa bidang juga, pada Agent SDK v0.3.265 atau lebih baru; versi sebelumnya menetapkannya pada satu frame balasan per giliran.1964* **Balasan pertama giliran**: [pesan asisten](#sdkassistantmessage) pertama, dan dengan `includePartialMessages` juga [event stream](#sdkpartialassistantmessage) pertama yang `event.type`-nya bukan `ping`, sehingga Anda dapat mengikat balasan sebelum hasil tiba. Pengembalian pada balasan pertama memerlukan Agent SDK v0.3.246 atau yang lebih baru. Sebelum v0.3.269, dengan `includePartialMessages`, Claude Code mengaturnya hanya pada event stream pertama tersebut, atau pada pesan asisten pertama ketika giliran tidak melakukan streaming apa pun. Ketika pesan yang dijawab oleh giliran berubah di tengah giliran, balasan pertama setelah perubahan juga membawa field ini, pada Agent SDK v0.3.265 atau yang lebih baru; versi sebelumnya mengaturnya pada satu frame balasan per giliran.

1965* **Setiap frame [`thinking_tokens`](#sdkthinkingtokensmessage) giliran**: jadi Anda dapat mengatribusikan kemajuan thinking ke pesan yang Anda kirim tanpa menunggu balasan pertama giliran. Memerlukan Agent SDK v0.3.260 atau lebih baru.1965* **Setiap frame [`thinking_tokens`](#sdkthinkingtokensmessage) dalam giliran**: sehingga Anda dapat mengaitkan progres thinking dengan pesan yang Anda kirim tanpa menunggu balasan pertama giliran. Memerlukan Agent SDK v0.3.260 atau yang lebih baru.

1966 1966 

1967Claude Code menghilangkan bidang dalam kasus-kasus ini:1967Claude Code menghilangkan field ini dalam kasus berikut:

1968 1968 

1969* Frame balasan selain balasan pertama itu1969* Frame balasan selain balasan pertama tersebut

1970* Frame subagent1970* Frame subagent

1971* Giliran yang tidak menjawab pesan Anda, atau menjawab pesan yang Anda kirim tanpa `uuid`1971* Giliran yang tidak menjawab pesan Anda mana pun, atau menjawab pesan yang Anda kirim tanpa `uuid`

1972* Hasil yang tidak menjawab pesan apa pun yang Anda kirim, seperti hasil yang dinolkan setelah proses pekerja yang jatuh1972* Hasil yang tidak menjawab pesan yang Anda kirim, seperti hasil bernilai nol setelah proses worker crash

1973 1973 

1974Ketika hook [`UserPromptSubmit`](https://code.claude.com/docs/id/hooks#userpromptsubmit) memblokir pesan yang memulai gilirannya sendiri, atau menghentikannya dengan `continue: false`, Anda tetap mendapatkan hasil untuk pesan tersebut. Hasil tersebut adalah hasil success dengan `is_error: false` dan `num_turns: 0`, `result`-nya adalah [pesan blokir](https://code.claude.com/docs/id/hooks.md#what-a-blocked-prompt-leaves-behind) atau [pesan stop](https://code.claude.com/docs/id/hooks.md#json-output), dan hasil tersebut mengembalikan `uuid` pesan dengan aturan yang sama seperti hasil lainnya. Hasil tersebut tidak memiliki `terminal_reason`, dan tidak ada apa pun di dalamnya selain teks `result` yang menyatakan bahwa hook mengakhiri giliran. Pesan yang diblokir hook saat giliran lain sedang berjalan mungkin tidak mendapatkan hasil: lihat [`user_message_uuids`](#user_message_uuids).1974Ketika hook [`UserPromptSubmit`](https://code.claude.com/docs/id/hooks#userpromptsubmit) memblokir pesan yang memulai gilirannya sendiri, atau menghentikannya dengan `continue: false`, Anda tetap mendapatkan hasil untuk pesan tersebut. Hasil itu adalah hasil sukses dengan `is_error: false` dan `num_turns: 0`, `result`-nya adalah [pesan blokir](https://code.claude.com/docs/id/hooks.md#what-a-blocked-prompt-leaves-behind) atau [pesan stop](https://code.claude.com/docs/id/hooks.md#json-output), dan hasil tersebut mengembalikan `uuid` pesan dengan aturan yang sama seperti hasil lainnya. Hasil tersebut tidak memiliki `terminal_reason`, dan tidak ada apa pun di dalamnya selain teks `result` yang menyatakan bahwa hook mengakhiri giliran. Pesan yang diblokir hook saat giliran lain sedang berjalan mungkin tidak mendapatkan hasil: lihat [`user_message_uuids`](#user_message_uuids).

1975 1975 

1976#### `user_message_uuids`1976#### `user_message_uuids`

1977 1977 

1978`uuid` dari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Ketika Anda mengirim beberapa pesan berdekatan, Claude Code dapat menggabungkannya menjadi satu giliran, dan `user_message_uuid` kemudian menamai hanya yang terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, cari `uuid` pesan itu di mana pun dalam daftar ini. Memerlukan Agent SDK v0.3.259 atau lebih baru.1978`uuid` dari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Ketika Anda mengirim beberapa pesan secara berdekatan, Claude Code dapat menggabungkannya menjadi satu giliran, dan `user_message_uuid` kemudian hanya menyebut pesan terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, cari `uuid` pesan tersebut di mana pun dalam daftar ini. Memerlukan Agent SDK v0.3.259 atau yang lebih baru.

1979 1979 

1980Claude Code menetapkan daftar bersama dengan `user_message_uuid` pada setiap frame balasan yang membawa bidang itu dan pada hasil. Untuk set lengkap frame giliran yang mengulangi `uuid` pesan yang dijawab, dan versi yang masing-masing memerlukan, lihat [`user_message_uuid`](#user_message_uuid). Daftar selalu berisi `user_message_uuid` dan menyimpan paling banyak 64 entri.1980Claude Code mengatur daftar ini bersama dengan `user_message_uuid` pada setiap frame balasan yang membawa field tersebut dan pada hasil. Untuk daftar lengkap frame giliran yang mengembalikan `uuid` pesan yang dijawab, beserta versi yang diperlukan masing-masing, lihat [`user_message_uuid`](#user_message_uuid). Daftar ini selalu berisi `user_message_uuid` dan memuat paling banyak 64 entri.

1981 1981 

1982Ketika Claude Code mengambil pesan reguler yang Anda kirim saat giliran sedang berjalan, Claude Code menambahkan `uuid` pesan tersebut ke daftar hasil. Ketika hook [`UserPromptSubmit`](https://code.claude.com/docs/id/hooks#userpromptsubmit) memblokir pesan saat pengambilan, Claude Code membuangnya: pesan tersebut tidak pernah mencapai Claude dan tidak disimpan untuk giliran berikutnya. Anda tidak mendapatkan hasil untuknya, dan `uuid`-nya tidak muncul dalam daftar hasil mana pun. Jika hook dapat memblokir pesan, tetapkan timeout saat menunggu hasil yang mencantumkan pesan yang Anda kirim saat giliran sedang berjalan.1982Ketika Claude Code mengambil pesan reguler yang Anda kirim saat giliran sedang berjalan, Claude Code menambahkan `uuid` pesan tersebut ke daftar hasil. Ketika hook [`UserPromptSubmit`](https://code.claude.com/docs/id/hooks#userpromptsubmit) memblokir pesan saat pengambilan, Claude Code membuangnya sebagai gantinya: pesan tersebut tidak pernah mencapai Claude dan tidak disimpan untuk giliran berikutnya. Anda tidak mendapatkan hasil untuk pesan tersebut, dan `uuid`-nya tidak muncul dalam daftar hasil mana pun. Jika hook dapat memblokir pesan, atur timeout saat menunggu hasil yang mencantumkan pesan yang Anda kirim saat giliran sedang berjalan.

1983 1983 

1984Hal itu berlaku ketika output hook hanya berupa blokir. Jika output menetapkan `continue: false`, bahkan di samping `decision: "block"`, atau hook adalah prompt hook yang menjawab [`ok: false`](https://code.claude.com/docs/id/hooks#response-schema) tanpa `continueOnBlock: true`, Claude Code menghentikan pesan alih-alih membuangnya. Pesan tersebut menunggu gilirannya sendiri, Anda mendapatkan hasil untuknya, dan teksnya tetap berada dalam percakapan, sehingga Claude melihatnya pada giliran berikutnya.1984Hal tersebut berlaku ketika output hook hanya berupa blokir. Jika output mengatur `continue: false`, bahkan di samping `decision: "block"`, atau hook tersebut adalah prompt hook yang menjawab [`ok: false`](https://code.claude.com/docs/id/hooks#response-schema) tanpa `continueOnBlock: true`, Claude Code menghentikan pesan alih-alih membuangnya. Pesan tersebut menunggu gilirannya sendiri, Anda mendapatkan hasil untuknya, dan teksnya tetap ada dalam percakapan, sehingga Claude melihatnya pada giliran berikutnya.

1985 1985 

1986Ketika balasan pertama atau hasil membawa `user_message_uuid` tanpa daftar, itu berasal dari versi Claude Code sebelumnya, jadi kembali ke bidang tunggal.1986Ketika balasan pertama atau hasil membawa `user_message_uuid` tanpa daftar ini, frame tersebut berasal dari versi Claude Code yang lebih lama, jadi gunakan field tunggal sebagai fallback.

1987 1987 

1988#### `resume_reason`1988#### `resume_reason`

1989 1989 

1990Alasan giliran ini melanjutkan giliran yang terinterupsi oleh restart. Claude Code menetapkan field ini pada giliran yang melanjutkan giliran terinterupsi di bawah [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](https://code.claude.com/docs/id/env-vars), sehingga Anda dapat membedakan balasan dan hasil giliran yang dilanjutkan dari upaya yang terinterupsi. Memerlukan Agent SDK v0.3.268 atau yang lebih baru.1990Alasan giliran ini melanjutkan giliran yang terputus oleh restart. Claude Code mengatur field ini pada giliran yang melanjutkan giliran yang terputus di bawah [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](https://code.claude.com/docs/id/env-vars), sehingga Anda dapat membedakan balasan dan hasil giliran lanjutan dari milik percobaan yang terputus. Memerlukan Agent SDK v0.3.268 atau yang lebih baru.

1991 1991 

1992Claude Code menetapkan bidang pada dua jenis frame:1992Claude Code mengatur field ini pada dua jenis frame:

1993 1993 

1994* **Hasil giliran yang dilanjutkan**: pada cabang success maupun error, baik hasil membawa `user_message_uuid` maupun tidak.1994* **Hasil giliran lanjutan**: pada varian sukses maupun error, baik hasil tersebut membawa `user_message_uuid` maupun tidak.

1995* **Frame balasan giliran yang dilanjutkan**: yang membawa [`user_message_uuid`](#user_message_uuid).1995* **Frame balasan giliran lanjutan**: yang membawa [`user_message_uuid`](#user_message_uuid).

1996 1996 

1997Nilainya adalah token huruf kecil yang pendek, seperti `interrupted_turn`.1997Nilainya adalah token huruf kecil yang singkat, seperti `interrupted_turn`.

1998 1998 

1999#### `queued_turn_count`1999#### `queued_turn_count`

2000 2000 

2001Jumlah pesan yang Anda kirim dengan [`origin: { kind: "human" }`](#sdkmessageorigin) yang masih menunggu dalam antrian perintah ketika Claude Code menghasilkan hasil. Memerlukan Agent SDK v0.3.242 atau lebih baru.2001Jumlah pesan yang Anda kirim dengan [`origin: { kind: "human" }`](#sdkmessageorigin) yang masih menunggu dalam antrean perintah saat Claude Code menghasilkan hasil. Memerlukan Agent SDK v0.3.242 atau yang lebih baru.

2002 2002 

2003Apa yang `0` dan bidang yang tidak ada katakan:2003Arti nilai `0` dan field yang tidak ada:

2004 2004 

2005* **`0`**: Claude Code tidak menghitung pesan yang Anda kirim tanpa `origin` itu, dan tidak menghitung notifikasi tugas, jadi giliran masih dapat mengikuti.2005* **`0`**: Claude Code tidak menghitung pesan yang Anda kirim tanpa `origin` tersebut, dan tidak menghitung notifikasi tugas, sehingga giliran masih dapat menyusul.

2006* **Tidak ada**: hasil akhir yang Claude Code pancarkan setelah kerusakan atau kesalahan startup fatal menghilangkan bidang, dan [mungkin membawa total yang dinolkan](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md#recover-totals-after-a-session-crash).2006* **Tidak ada**: hasil akhir yang dikirim Claude Code setelah crash atau error startup fatal menghilangkan field ini, dan [mungkin membawa total bernilai nol](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md#recover-totals-after-a-session-crash).

2007 2007 

2008#### `startup_failure_reason`2008#### `startup_failure_reason`

2009 2009 

2010Mengapa Claude Code menolak untuk memulai, sehingga aplikasi Anda dapat menawarkan perbaikan daripada retry. Claude Code menetapkannya pada hasil `error_during_execution` yang ditulis sebelum keluar pada kegagalan startup yang diketahui. Hasil itu membawa total yang dinolkan, dan array `errors`-nya membawa teks yang sama dengan stderr. Bidang tidak ada pada setiap hasil lainnya. Memerlukan Agent SDK v0.3.274 atau lebih baru.2010Alasan Claude Code menolak untuk memulai, sehingga aplikasi Anda dapat menawarkan perbaikan alih-alih retry. Claude Code mengaturnya pada hasil `error_during_execution` yang ditulisnya sebelum keluar karena kegagalan startup yang dikenal. Hasil tersebut membawa total bernilai nol, dan array `errors`-nya membawa pesan kegagalan. Field ini tidak ada pada hasil lainnya. Memerlukan Agent SDK v0.3.274 atau yang lebih baru.

2011 2011 

2012Atur `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` ke `1` dalam [`env`](#options) untuk menerima hasil ini untuk setiap nilai `SDKStartupFailureReason`. Tanpa variabel itu, Claude Code menulis hasil hanya untuk kegagalan ini, dan sisanya berakhir dengan output stderr, keluar non-nol, dan tidak ada pesan hasil:2012Atur `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` ke `1` dalam [`env`](#options) untuk menerima hasil ini untuk setiap nilai `SDKStartupFailureReason`. Tanpa variabel tersebut, Claude Code menulis hasil hanya untuk kegagalan berikut, dan sisanya berakhir dengan output stderr, exit non-zero, dan tanpa pesan hasil:

2013 2013 

2014* Resume yang Claude Code hentikan karena tidak dapat [mengembalikan sesi ke worktree-nya](https://code.claude.com/docs/id/worktrees.md#the-session-resumes-outside-its-worktree), dengan `worktree_unverified` atau `worktree_resume_refused`. Bagian itu mengatakan kesalahan mana yang membawa nilai mana.2014* Resume yang dihentikan Claude Code karena [tidak dapat mengembalikan sesi ke worktree-nya](https://code.claude.com/docs/id/worktrees.md#the-session-resumes-outside-its-worktree), dengan `worktree_unverified` atau `worktree_resume_refused`. Bagian tersebut menyebutkan error mana yang membawa nilai mana.

2015* [`continue`](#options) yang ditolak dari percakapan yang dipegang sesi latar belakang, dengan `session_held_by_background`. Untuk [`resume`](#options) yang ditolak dari percakapan seperti itu, Claude Code menulis hasil hanya ketika variabel diatur.2015* [`continue`](#options) yang ditolak untuk percakapan yang dipegang oleh sesi latar belakang, dengan `session_held_by_background`. Untuk [`resume`](#options) yang ditolak untuk percakapan seperti itu, Claude Code menulis hasil hanya ketika variabel tersebut diatur.

2016* Start yang ditolak Claude Code karena [`failIfUnavailable`](#sandboxsettings) aktif dan sandbox tidak dapat dimulai, dengan `sandbox_required_unavailable`.2016* Start yang ditolak Claude Code karena [`failIfUnavailable`](#sandboxsettings) aktif dan sandbox tidak dapat dimulai, dengan `sandbox_required_unavailable`.

2017* Start yang ditolak Claude Code karena `~/.claude.json` bukan JSON yang valid, dengan `config_file_invalid`.2017* Start yang ditolak Claude Code karena `~/.claude.json` bukan JSON yang valid, dengan `config_file_invalid`.

2018 2018 

2019Tipe `SDKStartupFailureReason` mencantumkan nilai-nilai yang dapat dimuat `startup_failure_reason`:2019Tipe `SDKStartupFailureReason` mencantumkan nilai-nilai yang dapat dimiliki `startup_failure_reason`:

2020 2020 

2021```typescript theme={null}2021```typescript theme={null}

2022type SDKStartupFailureReason =2022type SDKStartupFailureReason =


2043 | "config_file_invalid";2043 | "config_file_invalid";

2044```2044```

2045 2045 

2046Setiap nilai menamai satu penolakan:2046Setiap nilai menyebut satu penolakan:

2047 2047 

2048| Nilai | Apa yang menghentikan sesi |2048| Nilai | Apa yang menghentikan sesi |

2049| :- | :- |2049| :- | :- |

2050| `org_pin_api_key_conflict` | Pengaturan terkelola [memerlukan masuk gateway first-party atau Cloud](https://code.claude.com/docs/id/authentication.md#restrict-login-to-your-organization), dan kunci API Anthropic, token auth, atau `apiKeyHelper` dikonfigurasi sebagai gantinya |2050| `org_pin_api_key_conflict` | Pengaturan terkelola [mewajibkan sign-in first-party atau Cloud gateway](https://code.claude.com/docs/id/authentication.md#restrict-login-to-your-organization), sementara kunci API Anthropic, auth token, atau `apiKeyHelper` yang dikonfigurasi sebagai gantinya |

2051| `provider_not_allowed` | Pengaturan terkelola [mencantumkan penyedia API yang boleh digunakan mesin ini](https://code.claude.com/docs/id/settings-reference.md#allowedproviders), dan sesi diatur untuk penyedia yang tidak tercantum, atau untuk endpoint yang tidak di-pin oleh pengaturan. Memerlukan Claude Code v2.1.285 atau lebih baru |2051| `provider_not_allowed` | Pengaturan terkelola [mencantumkan penyedia API yang boleh digunakan mesin ini](https://code.claude.com/docs/id/settings-reference.md#allowedproviders), dan sesi diatur untuk penyedia yang tidak tercantum, atau untuk endpoint yang tidak ditetapkan oleh pengaturan. Memerlukan Claude Code v2.1.285 atau yang lebih baru |

2052| `org_verify_failed` | Organisasi masuk tidak dapat diverifikasi terhadap pin, misalnya karena kegagalan jaringan atau token yang dicabut |2052| `org_verify_failed` | Organisasi dari sign-in tidak dapat diverifikasi terhadap pin, misalnya karena kegagalan jaringan atau token yang dicabut |

2053| `org_pin_mismatch` | Masuk milik organisasi yang tidak diizinkan pin |2053| `org_pin_mismatch` | Sign-in tersebut milik organisasi yang tidak diizinkan oleh pin |

2054| `managed_settings_invalid` | Pengaturan kebijakan terkelola tidak dapat dibaca, pin tidak menamai organisasi, atau [pembatasan model terkelola](https://code.claude.com/docs/id/errors.md#managed-settings-block-the-default-model) tidak menyisakan model yang diizinkan untuk opsi Default |2054| `managed_settings_invalid` | Pengaturan kebijakan terkelola tidak dapat dibaca, pin tidak menyebut organisasi mana pun, atau [pembatasan model terkelola](https://code.claude.com/docs/id/errors.md#managed-settings-block-the-default-model) tidak menyisakan model yang diizinkan untuk opsi Default |

2055| `remote_settings_required_unavailable` | Pengaturan terkelola yang diwajibkan organisasi tidak dapat dimuat |2055| `remote_settings_required_unavailable` | Pengaturan terkelola yang diwajibkan organisasi tidak dapat dimuat |

2056| `gateway_signin_required` | [Gateway Cloud](https://code.claude.com/docs/id/claude-apps-gateway) mengakhiri masuk ini |2056| `gateway_signin_required` | [Cloud gateway](https://code.claude.com/docs/id/claude-apps-gateway) mengakhiri sign-in ini |

2057| `gateway_access_denied` | Permintaan pengaturan terkelola ke gateway Cloud kembali dengan 403, yang dibahas dalam [tabel pemecahan masalah](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#troubleshooting) gateway |2057| `gateway_access_denied` | Permintaan pengaturan terkelola ke Cloud gateway kembali dengan 403, yang dibahas dalam [tabel pemecahan masalah](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#troubleshooting) gateway |

2058| `proxy_invalid` | Pengaturan proxy bukan URL lengkap |2058| `proxy_invalid` | Pengaturan proxy bukan URL yang lengkap |

2059| `temp_dir_unusable` | Direktori sementara per-pengguna tidak aman atau tidak dapat dibuat |2059| `temp_dir_unusable` | Direktori sementara per pengguna tidak aman atau tidak dapat dibuat |

2060| `cwd_unavailable` | Direktori kerja dihapus, dipindahkan, atau tidak dapat dibaca |2060| `cwd_unavailable` | Direktori kerja telah dihapus, dipindahkan, atau tidak dapat dibaca |

2061| `shell_tool_missing` | Di Windows, tidak ada tool shell yang tersedia: Git Bash hilang, dan PowerShell hilang atau dimatikan dengan `CLAUDE_CODE_USE_POWERSHELL_TOOL` |2061| `shell_tool_missing` | Di Windows, tidak ada tool shell yang tersedia: Git Bash tidak ada, dan PowerShell tidak ada atau dinonaktifkan dengan `CLAUDE_CODE_USE_POWERSHELL_TOOL` |

2062| `session_held_by_background` | Percakapan untuk dilanjutkan atau diteruskan berjalan sebagai [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) |2062| `session_held_by_background` | Percakapan yang akan di-resume atau dilanjutkan sedang berjalan sebagai [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) |

2063| `worktree_resume_refused` | Worktree sesi gagal pemeriksaan keamanannya, atau resume diluncurkan dari dalamnya. `errors` mengatakan apakah menjalankan resume yang sama lagi berlanjut tanpa worktree |2063| `worktree_resume_refused` | Worktree sesi gagal dalam pemeriksaan keamanannya, atau resume dijalankan dari dalamnya. `errors` menyebutkan apakah menjalankan resume yang sama lagi akan melanjutkan tanpa worktree |

2064| `worktree_unverified` | Worktree sesi tidak dapat diverifikasi sekarang, dan mencoba ulang mungkin berhasil |2064| `worktree_unverified` | Worktree sesi tidak dapat diverifikasi saat ini, dan mencoba ulang mungkin berhasil |

2065| `cli_version_too_old` | Versi Claude Code ini di bawah minimum yang Anthropic wajibkan |2065| `cli_version_too_old` | Versi Claude Code ini berada di bawah versi minimum yang diwajibkan Anthropic |

2066| `bypass_root` | Mode izin bypass diminta saat berjalan sebagai root |2066| `bypass_root` | Mode bypass permissions diminta saat berjalan sebagai root |

2067| `org_config_required_unavailable` | Sesi memerlukan kebijakan dan pengaturan terkelola organisasi sebelum dapat dimulai, dan keduanya tidak dapat dimuat, misalnya karena kegagalan jaringan atau error server Anthropic. Memerlukan Agent SDK v0.3.293 atau lebih baru |2067| `org_config_required_unavailable` | Sesi memerlukan kebijakan dan pengaturan terkelola organisasi sebelum dapat dimulai, dan keduanya tidak dapat dimuat, misalnya karena kegagalan jaringan atau error server Anthropic. Memerlukan Agent SDK v0.3.293 atau yang lebih baru |

2068| `org_config_refused` | Anthropic menolak menyediakan kebijakan dan pengaturan terkelola organisasi untuk login ini, misalnya karena login kedaluwarsa atau dicabut, atau organisasi tidak mengizinkan Claude Code untuk akun ini. Memerlukan Agent SDK v0.3.293 atau lebih baru |2068| `org_config_refused` | Anthropic menolak memberikan kebijakan dan pengaturan terkelola organisasi untuk sign-in ini, misalnya karena sign-in telah kedaluwarsa atau dicabut, atau organisasi tidak mengizinkan Claude Code untuk akun ini. Memerlukan Agent SDK v0.3.293 atau yang lebih baru |

2069| `sandbox_required_unavailable` | [`failIfUnavailable`](#sandboxsettings) aktif dan sandbox tidak dapat dimulai. Teks di `errors` diakhiri dengan `Set sandbox.failIfUnavailable=false to allow unsandboxed execution.` Memerlukan Agent SDK v0.3.314 atau yang lebih baru |2069| `sandbox_required_unavailable` | [`failIfUnavailable`](#sandboxsettings) aktif dan sandbox tidak dapat dimulai. Teks dalam `errors` diakhiri dengan `Set sandbox.failIfUnavailable=false to allow unsandboxed execution.` Memerlukan Agent SDK v0.3.314 atau yang lebih baru |

2070| `config_file_invalid` | `~/.claude.json` bukan JSON yang valid. Claude Code membiarkan file tidak berubah, sehingga retry gagal dengan cara yang sama hingga seseorang memperbaikinya. `errors` menyebut file tersebut dan menjelaskan cara memulihkan atau memperbaikinya. Lihat [Configuration error in \~/.claude.json](https://code.claude.com/docs/id/errors.md#configuration-error-in-claude-json). Memerlukan TypeScript Agent SDK v0.3.318 atau yang lebih baru dan Claude Code v2.1.318 atau yang lebih baru |2070| `config_file_invalid` | `~/.claude.json` bukan JSON yang valid. Claude Code membiarkan file tersebut tidak berubah, sehingga retry akan gagal dengan cara yang sama hingga seseorang memperbaikinya. `errors` menyebutkan nama file dan cara memulihkan atau memperbaikinya. Lihat [Configuration error in \~/.claude.json](https://code.claude.com/docs/id/errors.md#configuration-error-in-claude-json). Memerlukan TypeScript Agent SDK v0.3.318 atau yang lebih baru dan Claude Code v2.1.318 atau yang lebih baru |

2071 2071 

2072### `SDKSystemMessage`2072### `SDKSystemMessage`

2073 2073 


2110};2110};

2111```2111```

2112 2112 

2113`fast_mode_state` melaporkan status [fast mode](https://code.claude.com/docs/id/fast-mode.md) sesi. Ketika sesuatu memblokir fast mode, `fast_mode_disabled_reason` menamai pemeriksaan yang memblokirnya; bidang memerlukan Claude Code v2.1.219 atau lebih baru. Untuk kode alasan dan artinya, lihat [`fast_mode_disabled_reason`](#sdkresultmessage) pada pesan hasil.2113`fast_mode_state` melaporkan status [fast mode](https://code.claude.com/docs/id/fast-mode.md) sesi. Ketika ada sesuatu yang memblokir fast mode, `fast_mode_disabled_reason` menyebut pemeriksaan yang memblokirnya; field ini memerlukan Claude Code v2.1.219 atau yang lebih baru. Untuk kode alasan dan artinya, lihat [`fast_mode_disabled_reason`](#sdkresultmessage) pada pesan hasil.

2114 2114 

2115`terminal_slash_commands` menamai entri dalam `slash_commands` yang antarmukanya terikat ke terminal lokal, seperti `exit`. Anda dapat mengirimnya seperti entri lain dalam `slash_commands`; bidang ada sehingga klien jarak jauh atau mobile dapat menyembunyikannya dari menu perintah. Bidang ada hanya ketika tidak kosong, dan memerlukan Agent SDK v0.3.229 atau lebih baru.2115`terminal_slash_commands` menyebut entri dalam `slash_commands` yang antarmukanya terikat pada terminal lokal, seperti `exit`. Anda dapat mengirimkannya seperti entri lain dalam `slash_commands`; field ini ada agar klien jarak jauh atau seluler dapat menyembunyikannya dari menu perintahnya. Field ini hanya ada ketika tidak kosong, dan memerlukan Agent SDK v0.3.229 atau yang lebih baru.

2116 2116 

2117* `source` pada setiap entri `mcp_servers`: dari mana definisi server berasal, dengan nilai yang sama seperti `source` milik [`McpServerStatus`](#mcpserverstatus). Memerlukan Agent SDK v0.3.274 atau lebih baru.2117* `source` pada setiap entri `mcp_servers`: asal definisi server, dengan nilai yang sama seperti `source` pada [`McpServerStatus`](#mcpserverstatus). Memerlukan Agent SDK v0.3.274 atau yang lebih baru.

2118* `effort`: [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang diatur untuk giliran berikutnya dalam sesi, atau `null` ketika Claude Code tidak mengirim tingkat apa pun. Claude Code mengatur field ini hanya pada pesan init yang dikirimnya ke klien [Remote Control](https://code.claude.com/docs/id/remote-control.md), dan menghilangkannya dari pesan init yang dibaca aplikasi Anda. Memerlukan Agent SDK v0.3.234 atau yang lebih baru.2118* `effort`: [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang diatur untuk giliran berikutnya dalam sesi, atau `null` ketika Claude Code tidak mengirimkan tingkat apa pun. Claude Code mengatur field ini hanya pada pesan init yang dikirimnya ke klien [Remote Control](https://code.claude.com/docs/id/remote-control.md), dan menghilangkannya dari pesan init yang dibaca aplikasi Anda. Memerlukan Agent SDK v0.3.234 atau yang lebih baru.

2119 2119 

2120Array `capabilities` menamai perilaku protokol yang diimplementasikan CLI ini, jadi Anda dapat mendeteksi fitur daripada membandingkan string `claude_code_version`. Ini adalah set terbuka: abaikan nilai yang tidak Anda kenal, dan periksa kemampuan spesifik yang perilakunya Anda andalkan. Bidang memerlukan Claude Code v2.1.205 atau lebih baru dan tidak ada pada CLI sebelumnya.2120Array `capabilities` menyebut perilaku protokol yang diimplementasikan CLI ini, sehingga Anda dapat mendeteksi fitur alih-alih membandingkan string `claude_code_version`. Ini adalah himpunan terbuka: abaikan nilai yang tidak Anda kenali, dan periksa kemampuan spesifik yang perilakunya Anda andalkan. Field ini memerlukan Claude Code v2.1.205 atau yang lebih baru dan tidak ada pada CLI yang lebih lama.

2121 2121 

2122| Kemampuan | Arti |2122| Kemampuan | Arti |

2123| - | - |2123| - | - |

2124| `interrupt_receipt_v1` | [`interrupt()`](#query-object) menyelesaikan dengan penerimaan [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) yang mencantumkan pesan yang tertunda ketika gangguan tiba |2124| `interrupt_receipt_v1` | [`interrupt()`](#query-object) di-resolve dengan tanda terima [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) yang mencantumkan pesan-pesan yang tertunda saat interupsi tiba |

2125| `interrupt_cancel_queued_v1` | Permintaan kontrol `interrupt` menghormati `cancel_queued: true`, membatalkan pesan yang akan dicantumkan penerimaan di bawah `still_queued` dan mencantumkannya di bawah `cancelled` sebagai gantinya. Lihat [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse). Memerlukan Claude Code v2.1.219 atau lebih baru |2125| `interrupt_cancel_queued_v1` | Control request `interrupt` mematuhi `cancel_queued: true`, membatalkan pesan yang seharusnya dicantumkan tanda terima di bawah `still_queued` dan mencantumkannya di bawah `cancelled` sebagai gantinya. Lihat [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse). Memerlukan Claude Code v2.1.219 atau yang lebih baru |

2126| `sdk_mcp_manifests` | Permintaan kontrol `initialize` menerima `sdkMcpServerManifests`, hasil handshake MCP yang ditangkap dari [server MCP SDK](https://code.claude.com/docs/id/agent-sdk/custom-tools.md) in-process Anda. Claude Code mengiklankan kapabilitas ini di v2.1.286 atau yang lebih baru |2126| `sdk_mcp_manifests` | Control request `initialize` menerima `sdkMcpServerManifests`, hasil handshake MCP yang ditangkap dari [server MCP SDK](https://code.claude.com/docs/id/agent-sdk/custom-tools.md) in-process Anda. Claude Code mengiklankan kemampuan ini di v2.1.286 atau yang lebih baru |

2127| `sdk_mcp_tools_list_changed` | Notifikasi `tools/list_changed` dari [server MCP SDK](https://code.claude.com/docs/id/agent-sdk/custom-tools.md) membuat Claude Code mencantumkan ulang tool server tersebut, sehingga tool yang ditambahkan server di tengah sesi mencapai Claude. Claude Code mengiklankan kapabilitas ini di v2.1.286 atau yang lebih baru |2127| `sdk_mcp_tools_list_changed` | Notifikasi `tools/list_changed` dari [server MCP SDK](https://code.claude.com/docs/id/agent-sdk/custom-tools.md) membuat Claude Code mencantumkan ulang tool server tersebut, sehingga tool yang ditambahkan server di tengah sesi mencapai Claude. Claude Code mengiklankan kemampuan ini di v2.1.286 atau yang lebih baru |

2128 2128 

2129Array `plugin_errors` mencantumkan kegagalan pemuatan plugin. Entri menggambarkan baik plugin yang tidak dimuat dan tidak ada dalam `plugins`, atau plugin yang dimuat tanpa salah satu bagiannya, seperti file hooks-nya. Kunci dihilangkan ketika tidak ada yang gagal. `SDKSystemMessage` mendeklarasikan `plugin_errors` dalam Agent SDK v0.3.283 atau lebih baru.2129Array `plugin_errors` mencantumkan kegagalan pemuatan plugin. Sebuah entri menjelaskan plugin yang tidak dimuat dan tidak ada di `plugins`, atau plugin yang dimuat tanpa salah satu bagiannya, seperti file hook-nya. Key ini dihilangkan ketika tidak ada yang gagal. `SDKSystemMessage` mendeklarasikan `plugin_errors` di Agent SDK v0.3.283 atau yang lebih baru.

2130 2130 

2131Ketika direktori atau arsip dari [opsi `plugins`](#options) Anda sendiri gagal dimuat, bidang `plugin` entri menyimpan tag posisional seperti `inline[0]` daripada nama plugin. Ini terjadi, misalnya, ketika jalur tidak ada atau manifes tidak valid. Cocokkan entri seperti itu dengan opsi Anda berdasarkan bidang `path`.2131Ketika direktori atau arsip dari [opsi `plugins`](#options) Anda sendiri gagal dimuat, field `plugin` pada entri berisi tag posisional seperti `inline[0]` alih-alih nama plugin. Hal ini terjadi, misalnya, ketika path tidak ada atau manifest tidak valid. Cocokkan entri seperti itu dengan opsi Anda berdasarkan field `path`-nya.

2132 2132 

2133Tabel di bawah mencantumkan bidang setiap entri `plugin_errors`.2133Tabel di bawah mencantumkan field dari setiap entri `plugin_errors`.

2134 2134 

2135| Bidang | Tipe | Deskripsi |2135| Field | Tipe | Deskripsi |

2136| - | - | - |2136| - | - | - |

2137| `plugin` | `string` | ID plugin yang gagal, atau tag posisional seperti `inline[0]` ketika direktori atau arsip plugin itu sendiri gagal dimuat |2137| `plugin` | `string` | ID plugin yang gagal, atau tag posisional seperti `inline[0]` ketika direktori atau arsip plugin itu sendiri gagal dimuat |

2138| `type` | `string` | Kategori kesalahan dari set terbuka, seperti `path-not-found` atau `manifest-validation-error`. Perlakukan nilai yang tidak Anda kenal sebagai kegagalan generik |2138| `type` | `string` | Kategori error dari himpunan terbuka, seperti `path-not-found` atau `manifest-validation-error`. Perlakukan nilai yang tidak Anda kenali sebagai kegagalan umum |

2139| `message` | `string` | Teks tampilan yang menggambarkan kegagalan |2139| `message` | `string` | Teks tampilan yang menjelaskan kegagalan |

2140| `path` | `string` | Ada hanya ketika direktori atau arsip plugin itu sendiri gagal dimuat. Jalur absolutnya, dengan jalur relatif dari opsi `plugins` Anda diselesaikan terhadap opsi [`cwd`](#options) |2140| `path` | `string` | Hanya ada ketika direktori atau arsip plugin itu sendiri gagal dimuat. Path absolutnya, dengan path relatif dari opsi `plugins` Anda di-resolve terhadap opsi [`cwd`](#options) |

2141 2141 

2142### `SDKPartialAssistantMessage`2142### `SDKPartialAssistantMessage`

2143 2143 

2144Pesan parsial streaming (hanya ketika `includePartialMessages` bernilai true).2144Pesan parsial streaming (hanya ketika `includePartialMessages` bernilai true).

2145 2145 

2146Field `parent_tool_use_id` selalu `null`: event stream hanya dikeluarkan untuk sesi utama. Untuk atribusi subagent, gunakan pesan lengkap, yang membawa [`agent_id`](#sdkassistantmessage) dan `parent_tool_use_id`, atau aktifkan [`forwardSubagentText`](#options) untuk menerima teks dan thinking subagent sebagai pesan lengkap.2146Field `parent_tool_use_id` selalu bernilai `null`: event stream hanya dikirim untuk sesi utama. Untuk atribusi subagent, gunakan pesan lengkap, yang membawa [`agent_id`](#sdkassistantmessage) dan `parent_tool_use_id`, atau aktifkan [`forwardSubagentText`](#options) untuk menerima teks dan thinking subagent sebagai pesan lengkap.

2147 2147 

2148```typescript theme={null}2148```typescript theme={null}

2149type SDKPartialAssistantMessage = {2149type SDKPartialAssistantMessage = {


2159};2159};

2160```2160```

2161 2161 

2162Claude Code menetapkan `user_message_uuid` dan `user_message_uuids` pada event stream non-ping pertama dari giliran, dan lagi ketika pesan yang dijawab giliran berubah, dengan ketentuan di [`user_message_uuid`](#user_message_uuid). Ketika giliran melanjutkan giliran yang terinterupsi oleh restart, event stream yang membawa field tersebut juga membawa [`resume_reason`](#resume_reason).2162Claude Code mengatur `user_message_uuid` dan `user_message_uuids` pada event stream non-ping pertama dalam giliran, dan lagi ketika pesan yang dijawab giliran berubah, sesuai dengan kondisi dalam [`user_message_uuid`](#user_message_uuid). Ketika giliran melanjutkan giliran yang terputus oleh restart, event stream yang membawa field tersebut juga membawa [`resume_reason`](#resume_reason).

2163 2163 

2164### `SDKCompactBoundaryMessage`2164### `SDKCompactBoundaryMessage`

2165 2165 

2166Pesan yang menunjukkan batas compaction percakapan.2166Pesan yang menandakan batas compaction percakapan.

2167 2167 

2168```typescript theme={null}2168```typescript theme={null}

2169type SDKCompactBoundaryMessage = {2169type SDKCompactBoundaryMessage = {


2180 2180 

2181### `SDKInformationalMessage`2181### `SDKInformationalMessage`

2182 2182 

2183Spanduk teks generik yang dipancarkan oleh loop. Membawa peringatan, pemberitahuan, dan baris status non-kesalahan lainnya yang Claude Code naikkan, dan umpan balik hook seperti alasan blokir hook `UserPromptSubmit`.2183Banner teks generik yang dikirim oleh loop. Membawa peringatan, pemberitahuan, dan baris status non-error lainnya yang dimunculkan Claude Code, serta umpan balik hook seperti alasan blokir dari hook `UserPromptSubmit`.

2184 2184 

2185Pada Claude Code v2.1.227 atau lebih baru, [`systemMessage`](https://code.claude.com/docs/id/hooks#json-output) hook dapat tiba sebagai pesan ini, dengan setiap baris diawali oleh nama hook, seperti `PostToolUse:Bash says:`. Setiap [bagian acara](https://code.claude.com/docs/id/hooks.md#hook-events) pada halaman hooks mengatakan bagaimana output muncul.2185Pada Claude Code v2.1.227 atau yang lebih baru, [`systemMessage`](https://code.claude.com/docs/id/hooks#json-output) dari hook dapat tiba sebagai pesan ini, dengan setiap baris diawali nama hook, seperti `PostToolUse:Bash says:`. [Bagian setiap event](https://code.claude.com/docs/id/hooks.md#hook-events) pada halaman hooks menjelaskan bagaimana output ditampilkan.

2186 2186 

2187Render `content` sebagai plaintext pada `level` yang diberikan.2187Render `content` sebagai teks biasa pada `level` yang diberikan.

2188 2188 

2189```typescript theme={null}2189```typescript theme={null}

2190type SDKInformationalMessage = {2190type SDKInformationalMessage = {


2202 2202 

2203### `SDKWorkerShuttingDownMessage`2203### `SDKWorkerShuttingDownMessage`

2204 2204 

2205Dipancarkan pada pembongkaran pekerja yang anggun sehingga klien jarak jauh dapat menunjukkan mengapa pekerja keluar daripada menunggu timeout detak jantung. `reason` adalah string snake\_case pendek yang ditetapkan oleh CLI host, seperti `"host_exit"` atau `"remote_control_disabled"`. Bertindak atas ini hanya ketika streaming langsung. Sesi yang dilanjutkan memutar ulang instans masa lalu dari pesan ini, jadi abaikan dalam kasus itu.2205Dikirim saat worker dihentikan secara teratur agar klien jarak jauh dapat menampilkan alasan worker keluar alih-alih menunggu timeout heartbeat. `reason` adalah string snake\_case singkat yang diatur oleh CLI host, seperti `"host_exit"` atau `"remote_control_disabled"`. Tindak lanjuti pesan ini hanya saat streaming secara langsung. Sesi yang di-resume memutar ulang instans pesan ini sebelumnya, jadi abaikan dalam kasus tersebut.

2206 2206 

2207```typescript theme={null}2207```typescript theme={null}

2208type SDKWorkerShuttingDownMessage = {2208type SDKWorkerShuttingDownMessage = {


2216 2216 

2217### `SDKPluginInstallMessage`2217### `SDKPluginInstallMessage`

2218 2218 

2219Acara kemajuan instalasi plugin. Dipancarkan ketika [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](https://code.claude.com/docs/id/env-vars) diatur, jadi aplikasi Agent SDK Anda dapat melacak instalasi plugin marketplace sebelum giliran pertama. Status `started` dan `completed` mengurung instalasi keseluruhan. Status `installed` dan `failed` melaporkan marketplace individual dan menyertakan `name`.2219Event progres instalasi plugin. Dikirim ketika [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](https://code.claude.com/docs/id/env-vars) diatur, sehingga aplikasi Agent SDK Anda dapat melacak instalasi plugin marketplace sebelum giliran pertama. Status `started` dan `completed` mengapit instalasi secara keseluruhan. Status `installed` dan `failed` melaporkan marketplace individual dan menyertakan `name`.

2220 2220 

2221```typescript theme={null}2221```typescript theme={null}

2222type SDKPluginInstallMessage = {2222type SDKPluginInstallMessage = {


2232 2232 

2233### `SDKPermissionDeniedMessage`2233### `SDKPermissionDeniedMessage`

2234 2234 

2235Acara aliran yang dipancarkan ketika sistem izin menolak panggilan tool tanpa permintaan izin interaktif. Gunakan untuk merender penolakan di UI Anda saat terjadi, daripada hanya mengamati hasil tool `is_error` yang mengikuti. Penolakan mana yang dilaporkan tergantung pada bagaimana run menangani permintaan izin:2235Event stream yang dikirim ketika sistem izin menolak panggilan tool tanpa permintaan izin interaktif. Gunakan untuk menampilkan penolakan di UI Anda saat terjadi, alih-alih hanya mengamati hasil tool `is_error` yang menyusul. Penolakan mana yang dilaporkannya bergantung pada cara run menangani permintaan izin:

2236 2236 

2237* **Dengan callback [`canUseTool`](#canusetool)** dan [`permissionPrompts: 'host'`](#options) default: permintaan izin pergi ke callback Anda, dan acara ini melaporkan penolakan yang Claude Code putuskan sendiri tanpa memanggilnya.2237* **Dengan callback [`canUseTool`](#canusetool)** dan [`permissionPrompts: 'host'`](#options) default: permintaan izin diteruskan ke callback Anda, dan event ini melaporkan penolakan yang diputuskan Claude Code sendiri tanpa memanggilnya.

2238* **Tanpa keduanya**: run `-p` polos, atau `query()` yang tidak menetapkan `canUseTool` maupun `permissionPromptToolName`, menolak setiap panggilan tool yang akan memicu permintaan izin kecuali [hook `PermissionRequest`](https://code.claude.com/docs/id/hooks-guide#limitations) mengizinkannya, dan event ini melaporkan penolakan tersebut serta penolakan yang diputuskan Claude Code sendiri. Sebelum v2.1.223, Claude Code tidak mengeluarkan event ini dalam run tanpa callback.2238* **Tanpa keduanya**: run `-p` polos, atau `query()` yang tidak mengatur `canUseTool` maupun `permissionPromptToolName`, menolak setiap panggilan tool yang seharusnya memunculkan permintaan izin kecuali jika [hook `PermissionRequest`](https://code.claude.com/docs/id/hooks-guide#limitations) mengizinkannya, dan event ini melaporkan penolakan tersebut serta penolakan yang diputuskan Claude Code sendiri. Sebelum v2.1.223, Claude Code tidak mengirim event ini dalam run tanpa callback.

2239* **Dengan tool prompt MCP**, diatur dengan `permissionPromptToolName` atau flag [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags), dan `permissionPrompts: 'host'` default: Claude Code tidak memancarkan acara ini sama sekali, bahkan untuk penolakan aturan yang diputuskannya sendiri.2239* **Dengan tool prompt MCP**, yang diatur dengan `permissionPromptToolName` atau flag [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags), dan `permissionPrompts: 'host'` default: Claude Code sama sekali tidak mengirim event ini, bahkan untuk penolakan aturan yang diputuskannya sendiri.

2240* **Dengan [`permissionPrompts: 'none'`](#options)**: Claude Code menolak panggilan yang akan memunculkan permintaan izin, bahkan ketika `canUseTool` atau tool prompt MCP juga diatur, dan acara ini melaporkan penolakan itu serta yang Claude Code putuskan sendiri. Memerlukan Claude Code v2.1.259 atau lebih baru.2240* **Dengan [`permissionPrompts: 'none'`](#options)**: Claude Code menolak panggilan yang seharusnya memunculkan permintaan izin, bahkan ketika `canUseTool` atau tool prompt MCP juga diatur, dan event ini melaporkan penolakan tersebut serta penolakan yang diputuskan Claude Code sendiri. Memerlukan Claude Code v2.1.259 atau yang lebih baru.

2241 2241 

2242Dalam setiap konfigurasi, acara ini melewati penolakan apa pun yang diputuskan pada jalur hook `PreToolUse`, baik hook menolak panggilan sendiri maupun aturan deny menimpa keputusan allow atau ask hook. Acara ini juga best-effort: kadang-kadang Claude Code merekam penolakan tanpa memancarkan acara ini, jadi `permission_denials` pada [pesan hasil](#sdkresultmessage) adalah catatan otoritatif.2242Dalam setiap konfigurasi, event ini melewatkan penolakan apa pun yang diputuskan pada jalur hook `PreToolUse`, baik hook itu sendiri yang menolak panggilan maupun aturan deny yang mengesampingkan keputusan allow atau ask dari hook. Event ini juga bersifat best-effort: terkadang Claude Code mencatat penolakan tanpa mengirim event ini, sehingga `permission_denials` pada [pesan hasil](#sdkresultmessage) adalah catatan yang otoritatif.

2243 2243 

2244```typescript theme={null}2244```typescript theme={null}

2245type SDKPermissionDeniedMessage = {2245type SDKPermissionDeniedMessage = {


2256};2256};

2257```2257```

2258 2258 

2259| Bidang | Tipe | Deskripsi |2259| Field | Tipe | Deskripsi |

2260| - | - | - |2260| - | - | - |

2261| `tool_name` | `string` | Nama tool yang ditolak |2261| `tool_name` | `string` | Nama tool yang ditolak |

2262| `tool_use_id` | `string` | ID blok `tool_use` yang dijawab penolakan ini |2262| `tool_use_id` | `string` | ID blok `tool_use` yang dijawab oleh penolakan ini |

2263| `agent_id` | `string` | ID subagent ketika panggilan yang ditolak berasal dari dalam subagent. Mencerminkan bidang pada `can_use_tool` untuk perutean sisi host |2263| `agent_id` | `string` | ID subagent ketika panggilan yang ditolak berasal dari dalam subagent. Mencerminkan field pada `can_use_tool` untuk perutean di sisi host |

2264| `decision_reason_type` | `string` | Diskriminator untuk komponen yang memutuskan, seperti `"rule"`, `"mode"`, `"classifier"`, atau `"asyncAgent"` |2264| `decision_reason_type` | `string` | Diskriminator untuk komponen yang memutuskan, seperti `"rule"`, `"mode"`, `"classifier"`, atau `"asyncAgent"` |

2265| `decision_reason` | `string` | Alasan yang dapat dibaca manusia dari komponen yang memutuskan, ketika tersedia |2265| `decision_reason` | `string` | Alasan yang dapat dibaca manusia dari komponen yang memutuskan, bila tersedia |

2266| `message` | `string` | Pesan penolakan yang dikembalikan ke model dalam `tool_result` |2266| `message` | `string` | Pesan penolakan yang dikembalikan ke model dalam `tool_result` |

2267 2267 

2268### `SDKPermissionDenial`2268### `SDKPermissionDenial`


2279 2279 

2280### `SDKContextUsage`2280### `SDKContextUsage`

2281 2281 

2282Bentuk terstruktur dari laporan `/context`, dibawa sebagai `context_usage` pada [`SDKAssistantMessage`](#sdkassistantmessage) yang mengirimkan hasil `/context`. Agent SDK v0.3.232 dan lebih baru mengekspor tipe ini. Tidak seperti [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), ia hanya membawa data yang diperlukan untuk merender rincian penggunaan, tanpa bidang tampilan seperti `color` dan `gridRows`. Claude Code menghitung laporan dengan permintaan API penghitungan token yang tidak muncul dalam aliran pesan; lihat [bagaimana permintaan ini ditangani](#sdkcontrolgetcontextusageresponse).2282Bentuk terstruktur dari laporan `/context`, yang dibawa sebagai `context_usage` pada [`SDKAssistantMessage`](#sdkassistantmessage) yang mengirimkan hasil `/context`. Agent SDK v0.3.232 dan yang lebih baru mengekspor tipe ini. Tidak seperti [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), tipe ini hanya membawa data yang diperlukan untuk merender rincian penggunaan, tanpa field tampilan seperti `color` dan `gridRows`. Claude Code menghitung laporan dengan permintaan API penghitungan token yang tidak muncul dalam stream pesan; lihat [bagaimana permintaan ini ditangani](#sdkcontrolgetcontextusageresponse).

2283 2283 

2284```typescript theme={null}2284```typescript theme={null}

2285type SDKContextUsage = {2285type SDKContextUsage = {


2316};2316};

2317```2317```

2318 2318 

2319Tabel mencantumkan apa yang Claude Code masukkan dalam setiap bidang. Bidang dari `model` hingga `over_limit` menggambarkan sesi secara keseluruhan, dan bidang koleksi mengatribusikan token ke item individual.2319Tabel ini mencantumkan apa yang diisikan Claude Code pada setiap field. Field dari `model` hingga `over_limit` menjelaskan sesi secara keseluruhan, dan field koleksi mengaitkan token dengan item individual.

2320 2320 

2321| Bidang | Tipe | Deskripsi |2321| Field | Tipe | Deskripsi |

2322| - | - | - |2322| - | - | - |

2323| `model` | `string` | Model loop utama yang penggunaannya dihitung Claude Code, bukan model subagent |2323| `model` | `string` | Model loop utama yang penggunaannya dihitung Claude Code, bukan model subagent |

2324| `total_tokens` | `number` | Perkiraan Claude Code tentang token yang digunakan. Tidak diklem ke jendela, jadi dapat melebihi `raw_max_tokens` ketika sesi melampaui batas |2324| `total_tokens` | `number` | Estimasi Claude Code atas token yang sedang digunakan. Tidak dibatasi ke window, sehingga dapat melebihi `raw_max_tokens` ketika sesi melewati batas |

2325| `raw_max_tokens` | `number` | Context window model, atau [jendela auto-compact](https://code.claude.com/docs/id/model-config.md#context-window-and-auto-compaction) yang lebih rendah ketika satu berlaku, seperti yang Anda atur atau batas 200K yang Claude Code terapkan pada beberapa model dengan jendela 1M-token. Claude Code mengukur `total_tokens` terhadap jendela ini |2325| `raw_max_tokens` | `number` | Context window model, atau [window auto-compact](https://code.claude.com/docs/id/model-config.md#context-window-and-auto-compaction) yang lebih rendah bila berlaku, seperti yang Anda atur atau batas 200K yang diterapkan Claude Code pada beberapa model dengan window 1M token. Claude Code mengukur `total_tokens` terhadap window ini |

2326| `percentage` | `number` | `total_tokens` sebagai persentase pembulatan dari `raw_max_tokens`, jadi dapat melebihi 100 ketika sesi melampaui batas |2326| `percentage` | `number` | `total_tokens` sebagai persentase yang dibulatkan dari `raw_max_tokens`, sehingga dapat melebihi 100 ketika sesi melewati batas |

2327| `over_limit` | `object` | Hadir hanya ketika `total_tokens` melebihi `raw_max_tokens`. `tokens_over` adalah jumlah kelebihannya, dan `kind` mengatakan bagaimana Claude Code menentukan jendela |2327| `over_limit` | `object` | Hanya ada ketika `total_tokens` melebihi `raw_max_tokens`. `tokens_over` adalah jumlah kelebihannya, dan `kind` menyatakan bagaimana Claude Code menentukan window |

2328| `categories` | [`SDKContextUsageCategory`](#sdkcontextusagecategory)`[]` | Satu entri per baris rincian penggunaan-per-kategori |2328| `categories` | [`SDKContextUsageCategory`](#sdkcontextusagecategory)`[]` | Satu entri per baris dari rincian penggunaan per kategori |

2329| `mcp_tools` | `object[]` | Token yang diatribusikan ke setiap tool MCP, dengan nama wire-nya, seperti `mcp__linear__create_issue`, dan `server_name`-nya |2329| `mcp_tools` | `object[]` | Token yang dikaitkan dengan setiap tool MCP, dengan nama wire-nya, seperti `mcp__linear__create_issue`, dan `server_name`-nya |

2330| `memory_files` | `object[]` | Token yang diatribusikan ke setiap file memori yang dimuat, dengan `path`-nya dan label sumber seperti `Project` atau `User` dalam `type` |2330| `memory_files` | `object[]` | Token yang dikaitkan dengan setiap file memori yang dimuat, dengan `path`-nya dan label sumber seperti `Project` atau `User` dalam `type` |

2331| `agents` | `object[]` | Token yang diatribusikan ke setiap definisi subagent kustom, dengan pengidentifikasi sumber seperti `projectSettings`, `userSettings`, atau `plugin`. Subagent bawaan tidak tercantum |2331| `agents` | `object[]` | Token yang dikaitkan dengan setiap definisi subagent kustom, dengan pengenal sumber seperti `projectSettings`, `userSettings`, atau `plugin`. Subagent bawaan tidak dicantumkan |

2332| `skills` | `object[]` | Token yang diatribusikan ke setiap skill dalam daftar skill, dengan pengidentifikasi sumber dan, untuk skill plugin, nama plugin dalam `plugin_name`. Tidak ada ketika tidak ada skill yang berkontribusi token |2332| `skills` | `object[]` | Token yang dikaitkan dengan setiap skill dalam daftar skill, dengan pengenal sumber dan, untuk skill plugin, nama plugin dalam `plugin_name`. Tidak ada ketika tidak ada skill yang menyumbang token |

2333 2333 

2334`over_limit.kind` merekam bagaimana Claude Code menentukan jendela, bukan apakah API menerima permintaan berikutnya:2334`over_limit.kind` mencatat bagaimana Claude Code menentukan window, bukan apakah API menerima permintaan berikutnya:

2335 2335 

2336* `hard_limit`: jendela adalah apa yang Claude Code yakini sebagai batas model itu sendiri, yang jika dilampaui API menolak permintaan2336* `hard_limit`: window adalah apa yang diyakini Claude Code sebagai batas model itu sendiri, yang jika dilewati API akan menolak permintaan

2337* `compaction_window`: jendela adalah jendela kebijakan compaction, yang mungkin atau mungkin tidak bertepatan dengan batas model2337* `compaction_window`: window adalah window kebijakan compaction, yang mungkin sama atau mungkin tidak sama dengan batas model

2338 2338 

2339Claude Code mengembangkan tipe secara aditif, menambahkan data baru sebagai bidang opsional daripada membentuk ulang yang ada. Baca bidang yang Anda ketahui dan abaikan yang tidak Anda kenal.2339Claude Code mengembangkan tipe ini secara aditif, menambahkan data baru sebagai field opsional alih-alih mengubah bentuk field yang sudah ada. Baca field yang Anda kenal dan abaikan field yang tidak Anda kenali.

2340 2340 

2341### `SDKContextUsageCategory`2341### `SDKContextUsageCategory`

2342 2342 

2343Satu baris rincian penggunaan-per-kategori `/context`.2343Satu baris dari rincian penggunaan per kategori `/context`.

2344 2344 

2345```typescript theme={null}2345```typescript theme={null}

2346type SDKContextUsageCategory = {2346type SDKContextUsageCategory = {


2350};2350};

2351```2351```

2352 2352 

2353Tabel mencantumkan apa yang Claude Code masukkan dalam setiap bidang baris.2353Tabel ini mencantumkan apa yang diisikan Claude Code pada setiap field dari sebuah baris.

2354 2354 

2355| Bidang | Tipe | Deskripsi |2355| Field | Tipe | Deskripsi |

2356| - | - | - |2356| - | - | - |

2357| `name` | `string` | Nama tampilan baris seperti yang dicetak `/context`, seperti `Messages`. Klasifikasikan baris berdasarkan `kind`, bukan berdasarkan nama |2357| `name` | `string` | Nama tampilan baris sebagaimana dicetak oleh `/context`, seperti `Messages`. Klasifikasikan baris berdasarkan `kind`, bukan berdasarkan nama |

2358| `tokens` | `number` | Jumlah token baris. Baris dapat membawa nol token |2358| `tokens` | `number` | Jumlah token baris tersebut. Baris dapat membawa nol token |

2359| `kind` | `string` | Apa yang diwakili baris: `used`, `free`, `buffer`, atau `deferred` |2359| `kind` | `string` | Apa yang diwakili baris tersebut: `used`, `free`, `buffer`, atau `deferred` |

2360 2360 

2361Setiap nilai `kind` mengatakan apa token baris tersebut:2361Setiap nilai `kind` menyatakan apa token baris tersebut:

2362 2362 

2363* `used`: konten yang menempati context window2363* `used`: konten yang menempati context window

2364* `free`: jendela yang tersisa2364* `free`: sisa window

2365* `buffer`: cadangan compaction2365* `buffer`: cadangan untuk compaction

2366* `deferred`: skema tool yang Claude Code tahan di luar jendela dan kecualikan dari perhitungan penggunaan, dicantumkan sebagai informasi2366* `deferred`: skema tool yang ditahan Claude Code di luar window dan dikecualikan dari perhitungan penggunaan, dicantumkan sebagai informasi

2367 2367 

2368### `SDKUsageReport`2368### `SDKUsageReport`

2369 2369 


2407 2407 

2408Field tingkat atas adalah `session` dan `rate_limits`:2408Field tingkat atas adalah `session` dan `rate_limits`:

2409 2409 

2410* `session`: total biaya dan penggunaan berjalan Claude Code, dibaca dari buku besar yang sama dengan `total_cost_usd` dan `modelUsage` pada [`SDKResultMessage`](#sdkresultmessage). Setiap entri `model_usage` adalah [`ModelUsage`](#modelusage).2410* `session`: total biaya dan penggunaan berjalan Claude Code, dibaca dari catatan yang sama dengan `total_cost_usd` dan `modelUsage` pada [`SDKResultMessage`](#sdkresultmessage). Setiap entri `model_usage` adalah [`ModelUsage`](#modelusage).

2411* `rate_limits`: baris penggunaan paket dalam `limits` dan pengeluaran kredit penggunaan dalam `extra_usage`. Bernilai `null` ketika Claude Code tidak dapat memperoleh penggunaan paket, misalnya ketika token OAuth sesi tidak memiliki scope `user:profile`.2411* `rate_limits`: baris penggunaan paket di `limits` dan pengeluaran kredit penggunaan di `extra_usage`. Nilainya `null` ketika Claude Code tidak dapat memperoleh penggunaan paket, misalnya ketika token OAuth sesi tidak memiliki scope `user:profile`.

2412 2412 

2413Claude Code menghitung `session.total_cost_usd` secara lokal dari jumlah token, sehingga nilainya adalah estimasi dan bukan yang ditagihkan paket Anda. Pengeluaran kredit penggunaan yang dilaporkan server adalah blok `extra_usage` yang terpisah. Lihat [Lacak biaya dan penggunaan](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md) untuk catatan tentang akurasi.2413Claude Code menghitung `session.total_cost_usd` secara lokal dari jumlah token, sehingga nilai ini merupakan perkiraan dan bukan jumlah yang ditagihkan oleh paket Anda. Pengeluaran kredit penggunaan yang dilaporkan server adalah blok `extra_usage` yang terpisah. Lihat [Melacak biaya dan penggunaan](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md) untuk catatan mengenai akurasi.

2414 2414 

2415`limits` berisi baris penggunaan server sebagaimana dikirim server: meter mana yang berlaku, cakupannya, label, tingkat keparahan, dan urutannya ditentukan server, jadi render baris apa adanya.2415`limits` berisi baris penggunaan server sebagaimana dikirim oleh server: meter mana yang berlaku, cakupannya, label, tingkat keparahan, dan urutannya ditentukan oleh server, jadi tampilkan baris-baris tersebut apa adanya.

2416 2416 

2417* Array kosong berarti server tidak melaporkan meter apa pun.2417* Array kosong berarti server tidak melaporkan meter apa pun.

2418* `null` berarti Claude Code tidak memiliki baris untuk dilaporkan.2418* `null` berarti Claude Code tidak memiliki baris untuk dilaporkan.


2421 2421 

2422| Field | Tipe | Deskripsi |2422| Field | Tipe | Deskripsi |

2423| - | - | - |2423| - | - | - |

2424| `kind` | `string` | Jenis meter server, seperti `session`, `weekly_all`, atau `weekly_scoped`. Klasifikasikan baris berdasarkan ini, jangan berdasarkan label |2424| `kind` | `string` | Jenis meter dari server, seperti `session`, `weekly_all`, atau `weekly_scoped`. Klasifikasikan baris berdasarkan field ini, jangan pernah berdasarkan label |

2425| `group` | `string` | Grup baris server, seperti `session` atau `weekly`. Baris dirender dikelompokkan di bawahnya, dalam urutan server |2425| `group` | `string` | Grup baris dari server, seperti `session` atau `weekly`. Baris ditampilkan dikelompokkan di bawahnya, sesuai urutan server |

2426| `percent` | `number` | Porsi window yang digunakan, 0-100 |2426| `percent` | `number` | Porsi jendela yang telah digunakan, 0-100 |

2427| `resets_at` | `string \| null` | Timestamp ISO 8601 saat window di-reset |2427| `resets_at` | `string \| null` | Timestamp ISO 8601 saat jendela direset |

2428| `scope` | `object \| null` | Opsional. Untuk apa baris yang dibatasi cakupannya, sebuah model atau surface, dengan label tampilan server |2428| `scope` | `object \| null` | Opsional. Untuk apa baris bercakupan tersebut, sebuah model atau surface, beserta label tampilan dari server |

2429| `severity` | `string` | Pembacaan server atas baris tersebut untuk warna meter, seperti `normal`, `warning`, atau `critical` |2429| `severity` | `string` | Penilaian server atas baris tersebut untuk warna meter, seperti `normal`, `warning`, atau `critical` |

2430| `is_active` | `boolean` | `true` pada baris yang dipilih server untuk ditampilkan oleh indikator bernilai tunggal |2430| `is_active` | `boolean` | `true` pada baris yang dipilih server untuk ditampilkan oleh indikator bernilai tunggal |

2431 2431 

2432Sebelum Agent SDK v0.3.277, tipe ini mendeklarasikan `severity` dan `is_active` sebagai opsional dan nullable, dan sebuah baris dapat tiba tanpa keduanya.2432Sebelum Agent SDK v0.3.277, tipe ini mendeklarasikan `severity` dan `is_active` sebagai opsional dan nullable, dan sebuah baris dapat datang tanpa keduanya.

2433 2433 

2434`extra_usage` adalah pengeluaran dan batas [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) untuk periode penagihan sebagaimana dilaporkan server, ada ketika paket memiliki kredit penggunaan. Jumlah dinyatakan dalam satuan kecil dari `currency`, sen untuk USD.2434`extra_usage` adalah pengeluaran dan batas [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) untuk periode penagihan sebagaimana dilaporkan server, ada ketika paket memiliki kredit penggunaan. Jumlah dinyatakan dalam satuan terkecil dari `currency`, sen untuk USD.

2435 2435 

2436* `monthly_limit` bernilai `null` ketika akun ini tidak memiliki batas pengeluaran sendiri. Pada paket Team dan Enterprise, jangan render `null` sebagai tidak terbatas.2436* `monthly_limit` bernilai `null` ketika akun ini tidak memiliki batas pengeluaran sendiri. Pada paket Team dan Enterprise, jangan tampilkan `null` sebagai tidak terbatas.

2437* `is_enabled` bernilai `false` selama kredit penggunaan tidak dapat membayar permintaan.2437* `is_enabled` bernilai `false` selama kredit penggunaan tidak dapat membayar permintaan.

2438 2438 

2439### `SDKMessageOrigin`2439### `SDKMessageOrigin`

2440 2440 

2441Asal-usul pesan dengan peran pengguna. Ini muncul sebagai `origin` pada [`SDKUserMessage`](#sdkusermessage). [`SDKResultMessage`](#sdkresultmessage) untuk sebuah giliran membawa `origin` yang ditetapkan oleh Claude Code, sehingga Anda dapat mengetahui apa yang memicu giliran tersebut.2441Asal-usul pesan dengan peran user. Ini muncul sebagai `origin` pada [`SDKUserMessage`](#sdkusermessage). [`SDKResultMessage`](#sdkresultmessage) untuk sebuah giliran membawa `origin` yang ditetapkan Claude Code, sehingga Anda dapat mengetahui apa yang memicu giliran tersebut.

2442 2442 

2443```typescript theme={null}2443```typescript theme={null}

2444type SDKMessageOrigin =2444type SDKMessageOrigin =


2470* `{ kind: "human" }`: apa yang diketik pengguna2470* `{ kind: "human" }`: apa yang diketik pengguna

2471* `{ kind: "task-notification", subkind: "scheduled-trigger" }`: sebuah [eksekusi terjadwal yang Anda deklarasikan](#declare-a-scheduled-run)2471* `{ kind: "task-notification", subkind: "scheduled-trigger" }`: sebuah [eksekusi terjadwal yang Anda deklarasikan](#declare-a-scheduled-run)

2472 2472 

2473Serahkan jenis lainnya kepada Claude Code dan server Anthropic. Jika Anda menetapkan salah satu jenis tersebut, Claude secara default membaca pesan tersebut sebagai pesan pengguna.2473Serahkan jenis lainnya kepada Claude Code dan server Anthropic. Jika Anda menetapkan salah satu jenis tersebut, secara default Claude membaca pesan itu sebagai pesan pengguna.

2474 2474 

2475Untuk mengirim teks yang tidak ditulis pengguna, seperti halaman yang diambil atau output agent lain, kirimkan sebagai pesan tersendiri dengan [`isSynthetic`](#sdkusermessage) diatur ke `true` dan `origin` tidak diatur. Atur juga [`client_composed`](#sdkusermessage) ke `true`, agar teks yang diawali `/` tidak dijalankan sebagai perintah.2475Untuk mengirim teks yang tidak ditulis pengguna, seperti halaman yang diambil atau output agent lain, kirimkan sebagai pesan tersendiri dengan [`isSynthetic`](#sdkusermessage) diatur ke `true` dan `origin` tidak diatur. Atur juga [`client_composed`](#sdkusermessage) ke `true`, agar teks yang diawali `/` tidak dijalankan sebagai perintah.

2476 2476 

2477| `kind` | Arti |2477| `kind` | Arti |

2478| - | - |2478| - | - |

2479| `human` | Input langsung dari pengguna akhir. Jika aplikasi Anda meneruskan apa yang diketik pengguna sebagai pesan pengguna, atur `origin`-nya ke `{ kind: "human" }`. Tanpa `origin` tersebut, Claude tetap membaca pesan sebagai pesan pengguna, tetapi pemeriksaan yang memerlukan prompt yang diketik manusia, seperti [kata kunci workflow `ultracode`](https://code.claude.com/docs/id/workflows#ask-for-a-workflow-in-your-prompt), tidak menerima pesan tersebut. |2479| `human` | Input langsung dari pengguna akhir. Jika aplikasi Anda meneruskan apa yang diketik pengguna sebagai pesan user, atur `origin`-nya ke `{ kind: "human" }`. Tanpa `origin` tersebut, Claude tetap membaca pesan itu sebagai pesan pengguna, tetapi pemeriksaan yang memerlukan prompt yang diketik manusia, seperti [kata kunci workflow `ultracode`](https://code.claude.com/docs/id/workflows#ask-for-a-workflow-in-your-prompt), tidak menerima pesan tersebut. |

2480| `channel` | Pesan yang tiba di [channel](https://code.claude.com/docs/id/channels.md). `server` adalah nama server MCP sumber. |2480| `channel` | Pesan yang tiba melalui sebuah [channel](https://code.claude.com/docs/id/channels.md). `server` adalah nama server MCP sumber. |

2481| `peer` | Pesan dari agent Claude Code lain: [rekan tim](https://code.claude.com/docs/id/agent-teams.md) dalam proses atau [peer lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md), yaitu sesi Claude Code Anda yang lain. [Aplikasi desktop](https://code.claude.com/docs/id/desktop.md#work-across-sessions), yang meneruskan pesan semacam itu di antara sesi-sesi Anda, mendeklarasikan jenis ini dengan [`fromMode`](#peer-origin-fields). Untuk meneruskan output agent lain dari aplikasi Anda sendiri, atur `isSynthetic` dan `client_composed` sebagai gantinya. Lihat [Field origin peer](#peer-origin-fields) untuk semantik per field dan model kepercayaannya. |2481| `peer` | Pesan dari agent Claude Code lain: [rekan tim](https://code.claude.com/docs/id/agent-teams.md) dalam proses yang sama atau [peer lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md), yaitu sesi Claude Code Anda yang lain. [Aplikasi desktop](https://code.claude.com/docs/id/desktop.md#work-across-sessions), yang meneruskan pesan semacam itu di antara sesi-sesi Anda, mendeklarasikan jenis ini dengan [`fromMode`](#peer-origin-fields). Untuk meneruskan output agent lain dari aplikasi Anda sendiri, atur `isSynthetic` dan `client_composed` sebagai gantinya. Lihat [Field origin peer](#peer-origin-fields) untuk semantik tiap field dan model kepercayaannya. |

2482| `task-notification` | Giliran sintetis yang disuntikkan untuk pengiriman yang tiba tanpa prompt pengguna baru, seperti tugas latar belakang yang selesai; lihat [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) untuk lengan itu. Prompt yang aplikasi Anda [deklarasikan sebagai run terjadwal](#declare-a-scheduled-run) membawa jenis ini juga. `subkind` opsional menandai apa yang memunculkan notifikasi. Lihat [Subkind notifikasi tugas](#task-notification-subkinds). |2482| `task-notification` | Giliran sintetis yang disisipkan untuk pengiriman yang tiba tanpa prompt pengguna baru, seperti tugas latar belakang yang telah selesai; lihat [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) untuk varian tersebut. Prompt yang [dideklarasikan aplikasi Anda sebagai eksekusi terjadwal](#declare-a-scheduled-run) juga membawa jenis ini. `subkind` opsional menandai apa yang memunculkan notifikasi. Lihat [Subkind task-notification](#task-notification-subkinds). |

2483| `coordinator` | Pesan dari koordinator tim dalam [tim agent](https://code.claude.com/docs/id/agent-teams.md). |2483| `coordinator` | Pesan dari koordinator tim dalam sebuah [tim agent](https://code.claude.com/docs/id/agent-teams.md). |

2484| `auto-continuation` | Giliran sintetis yang disuntikkan ketika sesi berlanjut tanpa input pengguna baru, seperti hasil perintah yang memicu prompt tindak lanjut. |2484| `auto-continuation` | Giliran sintetis yang disisipkan ketika sesi berlanjut tanpa input pengguna baru, seperti hasil perintah yang memicu prompt lanjutan. |

2485| `unclassified` | Pesan yang ditandai sebagai bukan berasal dari pengguna, seperti [`SDKUserMessage`](#sdkusermessage) yang Anda kirim dengan `isSynthetic: true`. Memerlukan Claude Code v2.1.223 atau yang lebih baru. |2485| `unclassified` | Pesan yang ditandai bukan berasal dari pengguna, seperti [`SDKUserMessage`](#sdkusermessage) yang Anda kirim dengan `isSynthetic: true`. Memerlukan Claude Code v2.1.223 atau yang lebih baru. |

2486 2486 

2487### Subkind notifikasi tugas2487### Subkind task-notification

2488 2488 

2489Ketika Claude Code mengirimkan notifikasi tugas ke sesi, ia menetapkan `subkind` pada `origin` notifikasi jika server Anthropic memverifikasi dari mana notifikasi itu berasal. Ia juga menetapkan `subkind` ketika aplikasi Anda sendiri [mendeklarasikan pesan sebagai run terjadwal](#declare-a-scheduled-run), yang memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru. `subkind` memerlukan Claude Code v2.1.213 atau lebih baru, dan mengambil salah satu dari dua nilai:2489Ketika Claude Code mengirimkan notifikasi tugas ke dalam sesi, Claude Code menetapkan `subkind` pada `origin` notifikasi tersebut jika server Anthropic telah memverifikasi dari mana notifikasi itu berasal. Claude Code juga menetapkan `subkind` ketika aplikasi Anda sendiri [mendeklarasikan pesan sebagai eksekusi terjadwal](#declare-a-scheduled-run), yang memerlukan TypeScript Agent SDK v0.3.280 atau yang lebih baru. `subkind` memerlukan Claude Code v2.1.213 atau yang lebih baru, dan bernilai salah satu dari dua nilai berikut:

2490 2490 

2491* `scheduled-trigger`: notifikasi tersebut adalah prompt tersimpan dari [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md), yang dikirim karena salah satu pemicu tugas tersebut aktif: jadwalnya, [pemicu API](https://code.claude.com/docs/id/routines.md#add-an-api-trigger)-nya, [pemicu GitHub](https://code.claude.com/docs/id/routines.md#add-a-github-trigger)-nya, atau **Run now**. Prompt yang [dideklarasikan aplikasi Anda sebagai eksekusi terjadwal](#declare-a-scheduled-run) juga membawa nilai ini. Claude Code membingkainya kepada model sebagai tugas yang ditetapkan untuk sesi tersebut, dengan pemberitahuan yang berbeda dari [pemberitahuan yang dibawa notifikasi tugas lainnya](#sdktasknotificationmessage).2491* `scheduled-trigger`: notifikasi tersebut adalah prompt tersimpan dari sebuah [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md), dikirim karena salah satu pemicu tugas tersebut aktif: jadwalnya, [pemicu API](https://code.claude.com/docs/id/routines.md#add-an-api-trigger)-nya, [pemicu GitHub](https://code.claude.com/docs/id/routines.md#add-a-github-trigger)-nya, atau **Run now**. Prompt yang [dideklarasikan aplikasi Anda sebagai eksekusi terjadwal](#declare-a-scheduled-run) juga membawa nilai ini. Claude Code menyajikannya kepada model sebagai tugas yang ditetapkan untuk sesi, dengan pemberitahuan yang berbeda dari [pemberitahuan yang dibawa notifikasi tugas lainnya](#sdktasknotificationmessage).

2492* `peer-send-message`: notifikasi adalah pesan yang dikirim sesi lain milik Anda dengan tool `send_message` sisi server yang digunakan [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) untuk saling berkirim pesan, bukan [tool `SendMessage` lintas sesi](https://code.claude.com/docs/id/cross-session-messaging), dan server Anthropic memverifikasi bahwa kedua sesi termasuk dalam grup pribadi sesi yang sama. Memerlukan Claude Code v2.1.224 atau lebih baru. Pengiriman `send_message` yang tidak diverifikasi server dengan cara itu tidak mendapat subkind.2492* `peer-send-message`: notifikasi tersebut adalah pesan yang dikirim oleh sesi Anda yang lain menggunakan tool `send_message` sisi server yang digunakan [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) untuk saling mengirim pesan, bukan [tool `SendMessage` lintas sesi](https://code.claude.com/docs/id/cross-session-messaging), dan server Anthropic telah memverifikasi bahwa kedua sesi termasuk dalam grup sesi privat yang sama. Memerlukan Claude Code v2.1.224 atau yang lebih baru. Pengiriman `send_message` yang tidak diverifikasi server dengan cara tersebut tidak mendapatkan subkind.

2493 2493 

2494Setiap notifikasi tugas lain tidak memiliki `subkind`. Itu termasuk [aktivitas PR](https://code.claude.com/docs/id/claude-code-on-the-web.md#how-claude-responds-to-pr-activity) yang disampaikan ke sesi dan acara latar belakang seperti tugas yang selesai. Pesan dari [tool `SendMessage` lintas sesi](https://code.claude.com/docs/id/cross-session-messaging) sama sekali bukan notifikasi tugas: baik berasal dari sesi di mesin yang sama maupun melalui server Anthropic dari mesin lain, Claude Code memberinya `kind: "peer"` dan [bidang asal peer](#peer-origin-fields).2494Setiap notifikasi tugas lainnya tidak memiliki `subkind`. Ini termasuk [aktivitas PR](https://code.claude.com/docs/id/claude-code-on-the-web.md#how-claude-responds-to-pr-activity) yang dikirimkan ke dalam sesi dan peristiwa latar belakang seperti tugas yang telah selesai. Pesan dari [tool `SendMessage` lintas sesi](https://code.claude.com/docs/id/cross-session-messaging) sama sekali bukan notifikasi tugas: baik berasal dari sesi di mesin yang sama maupun melalui server Anthropic dari mesin lain, Claude Code memberikannya `kind: "peer"` dan [field origin peer](#peer-origin-fields).

2495 2495 

2496`fireReason` menyatakan mengapa notifikasi `scheduled-trigger` dipicu, sebagai token huruf kecil singkat seperti `scheduled`, `manual`, `retry`, `catch_up`, atau `api`. Server Anthropic menetapkannya pada pengiriman [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md), dan aplikasi Anda menetapkannya ketika mendeklarasikan eksekusi terjadwal. Field ini tidak ada jika tidak ada satu pun yang mengirimkannya. Memerlukan TypeScript Agent SDK v0.3.280 atau yang lebih baru.2496`fireReason` menyatakan mengapa notifikasi `scheduled-trigger` dipicu, sebagai token huruf kecil singkat seperti `scheduled`, `manual`, `retry`, `catch_up`, atau `api`. Server Anthropic menetapkannya pada pengiriman [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md), dan aplikasi Anda menetapkannya ketika mendeklarasikan eksekusi terjadwal. Field ini tidak ada ketika tidak satu pun dari keduanya mengirimkannya. Memerlukan TypeScript Agent SDK v0.3.280 atau yang lebih baru.

2497 2497 

2498Tugas latar belakang dapat berjalan lebih dari sekali dengan `task_id` yang sama, misalnya ketika Claude [melanjutkan subagent](https://code.claude.com/docs/id/agent-sdk/subagents.md#resume-subagents). Setiap eksekusi memiliki [`run_id`](#sdktaskstartedmessage) sendiri. Ketika notifikasi suatu eksekusi mencapai sesi Anda sebagai pesan pengguna, `runId` pada origin `task-notification` pesan tersebut berisi nilai yang sama. Notifikasi dapat tiba setelah eksekusi berikutnya dari tugas tersebut dimulai, dan tetap membawa ID eksekusi sebelumnya. Untuk mengetahui eksekusi mana yang memiliki suatu giliran, bandingkan `runId`, bukan `task_id`. Memerlukan TypeScript Agent SDK v0.3.292 atau yang lebih baru.2498Sebuah tugas latar belakang dapat berjalan lebih dari sekali di bawah `task_id` yang sama, seperti ketika Claude [melanjutkan subagent](https://code.claude.com/docs/id/agent-sdk/subagents.md#resume-subagents). Setiap eksekusi memiliki [`run_id`](#sdktaskstartedmessage)-nya sendiri. Ketika notifikasi sebuah eksekusi mencapai sesi Anda sebagai pesan user, `runId` pada origin `task-notification` pesan tersebut berisi nilai yang sama. Notifikasi dapat tiba setelah eksekusi berikutnya dari tugas tersebut dimulai, dan tetap membawa ID eksekusi sebelumnya. Untuk mengetahui eksekusi mana yang memiliki sebuah giliran, bandingkan `runId`, bukan `task_id`. Memerlukan TypeScript Agent SDK v0.3.292 atau yang lebih baru.

2499 2499 

2500#### Deklarasikan run terjadwal2500#### Mendeklarasikan eksekusi terjadwal

2501 2501 

2502Jika aplikasi Anda menjalankan prompt sesuai jadwalnya sendiri, deklarasikan setiap run sehingga Claude Code membingkai giliran ke model sebagai tugas terjadwal daripada sebagai input langsung dari pengguna. Mulai sesi dengan `CLAUDE_CODE_HOST_SCHEDULED_RUN` diatur ke `1` dalam [`env`](#options), kemudian kirim [`SDKUserMessage`](#sdkusermessage) run dengan `origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" }` dan tanpa `isSynthetic`. Claude Code mengabaikan deklarasi dalam proses yang dimulai tanpa variabel itu. Ia juga mengabaikannya dalam proses yang lingkungannya membawa [`CLAUDECODE`](https://code.claude.com/docs/id/env-vars) atau `CLAUDE_CODE_CHILD_SESSION`. Claude Code menyimpan `fireReason` hanya ketika nilainya adalah 1 hingga 32 huruf kecil atau garis bawah. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.2502Jika aplikasi Anda menjalankan prompt berdasarkan jadwalnya sendiri, deklarasikan setiap eksekusi agar Claude Code menyajikan giliran tersebut kepada model sebagai tugas terjadwal, bukan sebagai input langsung dari pengguna. Mulai sesi dengan `CLAUDE_CODE_HOST_SCHEDULED_RUN` diatur ke `1` di [`env`](#options), lalu kirim [`SDKUserMessage`](#sdkusermessage) eksekusi tersebut dengan `origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" }` dan tanpa `isSynthetic`. Claude Code mengabaikan deklarasi tersebut dalam proses yang dimulai tanpa variabel itu. Claude Code juga mengabaikannya dalam proses yang lingkungannya membawa [`CLAUDECODE`](https://code.claude.com/docs/id/env-vars) atau `CLAUDE_CODE_CHILD_SESSION`. Claude Code hanya mempertahankan `fireReason` ketika nilainya terdiri dari 1 hingga 32 huruf kecil atau garis bawah. Memerlukan TypeScript Agent SDK v0.3.280 atau yang lebih baru.

2503 2503 

2504### Bidang asal peer2504### Field origin peer

2505 2505 

2506Origin `peer` mengidentifikasi agent mana yang mengirim pesan: [teammate](https://code.claude.com/docs/id/agent-teams.md) dalam proses yang sama yang mengirim ke `main` dengan `SendMessage`, atau [peer lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md), yaitu salah satu sesi Claude Code Anda yang lain. Peer lintas sesi memerlukan Claude Code v2.1.224 atau lebih baru di macOS dan Linux; lihat [ketersediaan pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md#availability) untuk persyaratan Windows native. Peer lintas sesi dapat berjalan di mesin yang sama, atau di [salah satu mesin Anda yang lain](https://code.claude.com/docs/id/cross-session-messaging.md#message-sessions-on-other-machines) ketika pesannya tiba melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md).2506Origin `peer` mengidentifikasi agent mana yang mengirim pesan: [rekan tim](https://code.claude.com/docs/id/agent-teams.md) dalam proses yang sama yang mengirim ke `main` dengan `SendMessage`, atau [peer lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md), yaitu sesi Claude Code Anda yang lain. Peer lintas sesi memerlukan Claude Code v2.1.224 atau yang lebih baru di macOS dan Linux; lihat [ketersediaan pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md#availability) untuk persyaratan Windows native. Peer lintas sesi dapat berjalan di mesin yang sama, atau di [mesin Anda yang lain](https://code.claude.com/docs/id/cross-session-messaging.md#message-sessions-on-other-machines) ketika pesannya tiba melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md).

2507 2507 

2508* `from`: nama rekan kerja, atau alamat pengirim untuk rekan lintas sesi. Untuk [pesan lintas mesin satu arah](https://code.claude.com/docs/id/cross-session-messaging.md#message-sessions-on-other-machines), pengirim tidak memiliki alamat balasan dan `from` adalah `"unknown"`. Nilai dibuat oleh pengirim; `verifiedPeerPid` adalah identitas yang diverifikasi.2508* `from`: nama rekan tim, atau alamat pengirim untuk peer lintas sesi. Untuk [pesan lintas mesin satu arah](https://code.claude.com/docs/id/cross-session-messaging.md#message-sessions-on-other-machines), pengirim tidak memiliki alamat balasan dan `from` bernilai `"unknown"`. Nilai ini ditulis oleh pengirim; `verifiedPeerPid` adalah identitas yang terverifikasi.

2509* `fromMode`: kelas izin sesi pengirim, `bypass` atau `prompting`. Claude Code membacanya di sesi penerima saat menerapkan [kontrol pesan masuk](https://code.claude.com/docs/id/cross-session-messaging.md#control-inbound-messages). Memerlukan Agent SDK v0.3.234 atau yang lebih baru.2509* `fromMode`: kelas izin sesi pengirim, `bypass` atau `prompting`. Claude Code membacanya di sesi penerima ketika menerapkan [kontrol pesan masuk](https://code.claude.com/docs/id/cross-session-messaging.md#control-inbound-messages). Memerlukan Agent SDK v0.3.234 atau yang lebih baru.

2510* `senderTaskId`: ID tugas rekan kerja. Tidak ada untuk rekan lintas sesi.2510* `senderTaskId`: ID tugas rekan tim. Tidak ada untuk peer lintas sesi.

2511* `name`: nama tampilan pengirim, dinormalisasi oleh Claude Code: ia menghapus code point kontrol, format, surrogate, dan pemisah baris atau paragraf Unicode, kemudian memangkas hasil dan membatasinya pada 64 code point dengan elipsis. Memerlukan Claude Code v2.1.205 atau lebih baru.2511* `name`: nama tampilan pengirim, dinormalisasi oleh Claude Code: Claude Code menghapus code point Unicode berjenis kontrol, format, surrogate, serta pemisah baris atau paragraf, lalu memangkas hasilnya dan membatasinya hingga 64 code point dengan elipsis. Memerlukan Claude Code v2.1.205 atau yang lebih baru.

2512* `body`: isi pesan yang telah didekode dengan amplop peer dihapus, sama persis per byte dengan apa yang dilihat model. Ada untuk satu pesan rekan tim, tidak ada ketika beberapa pesan digabungkan; untuk peer lintas sesi, hanya ada ketika giliran tersebut tepat berupa satu amplop peer yang dibentuk oleh Claude Code. Tampilkan `name` dan `body` alih-alih mem-parsing ulang teks pesan. Sebelum v2.1.299, pesan yang digabungkan mempertahankan `body` pesan pertama. Memerlukan Claude Code v2.1.205 atau yang lebih baru.2512* `body`: isi pesan yang telah didekode dengan envelope peer dihapus, identik per byte dengan apa yang dilihat model. Ada untuk satu pesan rekan tim, tidak ada ketika beberapa pesan digabungkan; untuk peer lintas sesi, hanya ada ketika giliran tersebut tepat berupa satu envelope peer yang dibentuk oleh Claude Code. Tampilkan `name` dan `body` alih-alih mem-parsing ulang teks pesan. Sebelum v2.1.299, pesan yang digabungkan mempertahankan `body` dari pesan pertama. Memerlukan Claude Code v2.1.205 atau yang lebih baru.

2513* `fromSession`: ID sesi pengirim yang dapat dibuka host, diatur oleh host pengirim sehingga UI Anda dapat menautkan kembali ke sesi pengirim. Seperti `from`, nilainya diklaim oleh pengirim: gunakan hanya sebagai target navigasi, dan jangan perlakukan sebagai bukti identitas pengirim. Memerlukan Claude Code v2.1.216 atau lebih baru.2513* `fromSession`: ID sesi pengirim yang dapat dibuka oleh host, ditetapkan oleh host pengirim agar UI Anda dapat menautkan kembali ke sesi pengirim. Seperti `from`, nilai ini dinyatakan oleh pengirim: gunakan hanya sebagai target navigasi, dan jangan memperlakukannya sebagai bukti identitas pengirim. Memerlukan Claude Code v2.1.216 atau yang lebih baru.

2514* `verifiedPeerPid`: ID proses dari proses yang terhubung ke soket pesan lintas sesi sesi ini, diverifikasi oleh kernel dan dibaca dari koneksi itu sendiri, tidak pernah dari payload. Gunakan ini, bukan `from`, untuk mengidentifikasi pengirim: `from` dapat dipalsukan oleh proses apa pun milik pengguna yang sama. Bidang tidak ada ketika Claude Code tidak dapat memverifikasinya, seperti di Windows atau ingress non-soket, jadi nilai yang tidak ada berarti pengirim tidak diverifikasi. Untuk lalu lintas yang diteruskan, ini mengidentifikasi relay daripada penulis pesan, dan ID proses dapat didaur ulang, jadi perlakukan sebagai asal usul daripada token autentikasi. Memerlukan Claude Code v2.1.216 atau lebih baru.2514* `verifiedPeerPid`: ID proses dari proses yang terhubung ke socket pesan lintas sesi milik sesi ini, diverifikasi oleh kernel dan dibaca dari koneksi itu sendiri, tidak pernah dari payload. Gunakan field ini, bukan `from`, untuk mengidentifikasi pengirim: `from` dapat dipalsukan oleh proses mana pun milik pengguna yang sama. Field ini tidak ada ketika Claude Code tidak dapat memverifikasinya, seperti di Windows atau pada jalur masuk non-socket, sehingga nilai yang tidak ada berarti pengirim tidak terverifikasi. Untuk lalu lintas yang diteruskan, field ini mengidentifikasi perantara, bukan penulis pesan, dan ID proses dapat digunakan ulang, jadi perlakukan sebagai asal-usul, bukan sebagai token autentikasi. Memerlukan Claude Code v2.1.216 atau yang lebih baru.

2515 2515 

2516## Tipe Hook2516## Tipe Hook

2517 2517 


3256};3256};

3257```3257```

3258 3258 

3259## Jenis Input Tool3259## Tipe Input Tool

3260 3260 

3261Dokumentasi skema input untuk tool Claude Code bawaan. Jenis-jenis ini diekspor dari `@anthropic-ai/claude-agent-sdk/sdk-tools` dan dapat digunakan untuk interaksi tool yang aman tipe.3261Dokumentasi skema input untuk tool bawaan Claude Code. Tipe-tipe ini diekspor dari `@anthropic-ai/claude-agent-sdk/sdk-tools` dan dapat digunakan untuk interaksi tool yang type-safe.

3262 3262 

3263Tool `StructuredOutput` tidak memiliki jenis di sini: Claude Code membangun skema inputnya dari skema yang Anda berikan ke `outputFormat`, sehingga tidak ada yang tetap untuk diekspor. Lihat [Mengenali panggilan tool StructuredOutput](https://code.claude.com/docs/id/agent-sdk/structured-outputs.md#recognize-the-structuredoutput-tool-call) untuk melihat seperti apa panggilan tersebut dalam aliran pesan Anda.3263Tool `StructuredOutput` tidak memiliki tipe di sini: Claude Code membangun skema inputnya dari skema yang Anda berikan ke `outputFormat`, sehingga tidak ada yang tetap untuk diekspor. Lihat [Mengenali panggilan tool StructuredOutput](https://code.claude.com/docs/id/agent-sdk/structured-outputs.md#recognize-the-structuredoutput-tool-call) untuk melihat seperti apa panggilan tersebut dalam aliran pesan Anda.

3264 3264 

3265### `ToolInputSchemas`3265### `ToolInputSchemas`

3266 3266 

3267Gabungan jenis input tool yang diekspor dari `@anthropic-ai/claude-agent-sdk/sdk-tools`; anggota mencakup:3267Union dari tipe input tool yang diekspor dari `@anthropic-ai/claude-agent-sdk/sdk-tools`; anggotanya meliputi:

3268 3268 

3269```typescript theme={null}3269```typescript theme={null}

3270type ToolInputSchemas =3270type ToolInputSchemas =


3310 3310 

3311### Agent3311### Agent

3312 3312 

3313**Nama tool:** `Agent`. Nama sebelumnya `Task` masih diterima sebagai alias ketika tool ini tersedia untuk sesi.3313**Nama tool:** `Agent`. Nama sebelumnya, `Task`, masih diterima sebagai alias ketika tool ini tersedia untuk sesi.

3314 3314 

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

3316 3316 

3317> [!NOTE]3317> [!NOTE]

3318>3318>

3319> Bidang `mode` sudah usang dan diabaikan pada Claude Code v2.1.212 atau lebih baru. Subagent berjalan dalam mode izin sesi induk atau [`permissionMode`](#agentdefinition) definisinya, dan [aturan pewarisan subagent](https://code.claude.com/docs/id/agent-sdk/permissions.md#available-modes) memutuskan yang mana.3319> Field `mode` sudah deprecated dan diabaikan pada Claude Code v2.1.212 atau lebih baru. Subagent berjalan dalam mode izin sesi induk atau [`permissionMode`](#agentdefinition) dari definisinya, dan [aturan pewarisan subagent](https://code.claude.com/docs/id/agent-sdk/permissions.md#available-modes) menentukan yang mana.

3320 3320 

3321```typescript theme={null}3321```typescript theme={null}

3322type AgentInput = {3322type AgentInput = {


3333};3333};

3334```3334```

3335 3335 

3336Meluncurkan agent baru untuk menangani tugas kompleks multi-langkah secara otonom.3336Meluncurkan agent baru untuk menangani tugas kompleks dan multi-langkah secara otonom.

3337 3337 

3338### AskUserQuestion3338### AskUserQuestion

3339 3339 


3353};3353};

3354```3354```

3355 3355 

3356Menanyakan pertanyaan klarifikasi kepada pengguna selama eksekusi. Lihat [Menangani persetujuan dan input pengguna](https://code.claude.com/docs/id/agent-sdk/user-input.md#handle-clarifying-questions) untuk detail penggunaan.3356Mengajukan pertanyaan klarifikasi kepada pengguna selama eksekusi. Lihat [Menangani persetujuan dan input pengguna](https://code.claude.com/docs/id/agent-sdk/user-input.md#handle-clarifying-questions) untuk detail penggunaan.

3357 3357 

3358### Bash3358### Bash

3359 3359 


3369};3369};

3370```3370```

3371 3371 

3372Mengeksekusi perintah Bash dengan timeout opsional dan eksekusi latar belakang. Direktori kerja tetap ada di antara perintah, termasuk perintah yang dijalankan di giliran berikutnya dari sesi multi-giliran; status shell seperti environment variable yang diekspor tidak. Untuk batas pada perubahan direktori mana yang bertahan, lihat [Apa yang bertahan di antara perintah](https://code.claude.com/docs/id/tools-reference.md#what-persists-between-commands). Untuk apa yang menetapkan batas latar depan, lihat [Timeout dan batas output](https://code.claude.com/docs/id/tools-reference.md#timeout-and-output-limits). Untuk batas waktu latar belakang, lihat [Batas waktu untuk perintah latar belakang](https://code.claude.com/docs/id/tools-reference.md#time-limit-for-background-commands).3372Menjalankan perintah Bash dengan timeout opsional dan eksekusi latar belakang. Direktori kerja tetap bertahan di antara perintah, termasuk perintah yang dijalankan pada giliran berikutnya dalam sesi multi-giliran; state shell seperti environment variable yang diekspor tidak bertahan. Untuk batasan mengenai perubahan direktori mana yang terbawa, lihat [Apa yang bertahan di antara perintah](https://code.claude.com/docs/id/tools-reference.md#what-persists-between-commands). Untuk apa yang menetapkan batas atas foreground, lihat [Batas timeout dan output](https://code.claude.com/docs/id/tools-reference.md#timeout-and-output-limits). Untuk batas waktu latar belakang, lihat [Batas waktu untuk perintah latar belakang](https://code.claude.com/docs/id/tools-reference.md#time-limit-for-background-commands).

3373 3373 

3374### Monitor3374### Monitor

3375 3375 


3387};3387};

3388```3388```

3389 3389 

3390Menjalankan sumber latar belakang dan mengirimkan setiap peristiwa ke Claude sehingga dapat bereaksi tanpa polling: `command` menjalankan skrip dan memancarkan satu peristiwa per baris stdout, dan `ws` membuka WebSocket dan memancarkan satu peristiwa per frame teks. Berikan tepat satu dari `command` atau `ws`. Sumber `ws` memerlukan Claude Code v2.1.195 atau lebih baru.3390Menjalankan sumber latar belakang dan mengirimkan setiap event ke Claude sehingga Claude dapat bereaksi tanpa polling: `command` menjalankan skrip dan memancarkan satu event per baris stdout, dan `ws` membuka WebSocket dan memancarkan satu event per frame teks. Berikan tepat satu dari `command` atau `ws`. Sumber `ws` memerlukan Claude Code v2.1.195 atau lebih baru.

3391 3391 

3392`timeout_ms` adalah batas waktu pengawasan dalam milidetik:3392`timeout_ms` adalah tenggat pemantauan dalam milidetik:

3393 3393 

3394* **Default dan batas**: nilai default-nya 300000 dan menerima nilai hingga 3600000. Batas waktu efektif paling banyak 1800000, yaitu 30 menit, jadi nilai yang diterima lebih besar diperpendek ke itu3394* **Default dan batasan**: nilai default-nya 300000 dan menerima nilai hingga 3600000. Tenggat efektif paling lama 1800000, yaitu 30 menit, sehingga nilai yang diterima yang lebih besar dipersingkat menjadi nilai tersebut

3395* **Pada batas waktu**: pengawasan berakhir dan Claude menerima satu pemberitahuan sehingga dapat memulai pengawasan baru jika masih membutuhkannya3395* **Saat tenggat tercapai**: pemantauan berakhir dan Claude menerima satu pemberitahuan sehingga Claude dapat memulai pemantauan baru jika masih membutuhkannya

3396* **Wajib dalam jenis**: jenis yang diekspor menandai `timeout_ms` sebagai wajib karena skema mengisi default; panggilan yang menghilangkannya tetap valid3396* **Wajib dalam tipe**: tipe yang diekspor menandai `timeout_ms` sebagai wajib karena skema mengisi nilai default; panggilan yang menghilangkannya tetap valid

3397 3397 

3398Ketika Monitor menjalankan perintah, ia mengikuti aturan izin yang sama dengan Bash. Lihat [referensi tool Monitor](https://code.claude.com/docs/id/tools-reference.md#monitor-tool) untuk izin WebSocket, perilaku, dan ketersediaan penyedia.3398Ketika Monitor menjalankan perintah, Monitor mengikuti aturan izin yang sama dengan Bash. Lihat [referensi tool Monitor](https://code.claude.com/docs/id/tools-reference.md#monitor-tool) untuk izin WebSocket, perilaku, dan ketersediaan penyedia.

3399 3399 

3400### TaskOutput3400### TaskOutput

3401 3401 

3402Dihapus di Claude Code v2.1.277, bersama dengan jenis `TaskOutputInput` nya. Sebelumnya mengambil output dari tugas latar belakang yang sedang berjalan atau selesai; Claude membaca file output tugas latar belakang dengan `Read` sebagai gantinya.3402Dihapus di Claude Code v2.1.277, bersama dengan tipe `TaskOutputInput`-nya. Sebelumnya mengambil output dari tugas latar belakang yang sedang berjalan atau telah selesai; Claude kini membaca file output tugas latar belakang dengan `Read`.

3403 3403 

3404Entri `disallowedTools` atau aturan deny yang masih menamai `TaskOutput` diabaikan tanpa peringatan.3404Entri `disallowedTools` atau aturan deny yang masih menyebut `TaskOutput` diabaikan tanpa peringatan.

3405 3405 

3406### Edit3406### Edit

3407 3407 


3416};3416};

3417```3417```

3418 3418 

3419Melakukan penggantian string yang tepat dalam file.3419Melakukan penggantian string yang persis dalam file.

3420 3420 

3421### Read3421### Read

3422 3422 


3432};3432};

3433```3433```

3434 3434 

3435Membaca file dari sistem file lokal, termasuk teks, gambar, PDF, dan notebook Jupyter.3435Membaca file dari filesystem lokal, termasuk teks, gambar, PDF, dan notebook Jupyter.

3436 3436 

3437* Gunakan `pages` untuk rentang halaman PDF (misalnya, `"1-5"`).3437* Gunakan `pages` untuk rentang halaman PDF (misalnya, `"1-5"`).

3438* `allow_large` memungkinkan Claude membaca file teks melebihi [batas ukuran biasa](https://code.claude.com/docs/id/tools-reference.md#large-files) ketika context window sesi masih memiliki ruang. Ini memerlukan Agent SDK v0.3.296 atau lebih baru, yang menyertakan Claude Code v2.1.296.3438* `allow_large` memungkinkan Claude membaca file teks melampaui [batas ukuran biasa](https://code.claude.com/docs/id/tools-reference.md#large-files) ketika context window sesi masih memiliki ruang. Ini memerlukan Agent SDK v0.3.296 atau lebih baru, yang menyertakan Claude Code v2.1.296.

3439 3439 

3440Untuk PDF, Claude menerima konten file di dalam konten `tool_result` panggilan Read. Pembacaan yang mengembalikan [output](#tool-output-types) `pdf` membawa blok `text` ringkasan diikuti oleh blok `document`. Pembacaan yang mengembalikan output `parts` membawa blok `text` ringkasan diikuti oleh satu blok per halaman yang diekstrak: blok `image`, atau blok `text` yang menamai halaman ketika Claude Code tidak dapat merendernya sebagai gambar. Sebelum Agent SDK v0.3.242, Claude Code mengirimkan konten file sebagai pesan `user` terpisah setelah hasil tool.3440Untuk PDF, Claude menerima isi file di dalam konten `tool_result` dari panggilan Read. Pembacaan yang mengembalikan [output](#tool-output-types) `pdf` membawa blok `text` ringkasan diikuti oleh blok `document`. Pembacaan yang mengembalikan output `parts` membawa blok `text` ringkasan diikuti oleh satu blok per halaman yang diekstrak: blok `image`, atau blok `text` yang menyebutkan halaman tersebut ketika Claude Code tidak dapat merendernya sebagai gambar. Sebelum Agent SDK v0.3.242, Claude Code mengirimkan isi file sebagai pesan `user` terpisah setelah hasil tool.

3441 3441 

3442### Write3442### Write

3443 3443 


3450};3450};

3451```3451```

3452 3452 

3453Menulis file ke sistem file lokal, menimpa jika ada.3453Menulis file ke filesystem lokal, menimpanya jika sudah ada.

3454 3454 

3455### Glob3455### Glob

3456 3456 


3463};3463};

3464```3464```

3465 3465 

3466Pencocokan pola file cepat yang bekerja dengan ukuran codebase apa pun.3466Pencocokan pola file yang cepat dan berfungsi dengan codebase berukuran apa pun.

3467 3467 

3468### Grep3468### Grep

3469 3469 


3502};3502};

3503```3503```

3504 3504 

3505Menghentikan tugas latar belakang atau shell yang sedang berjalan berdasarkan ID. Mulai dari v2.1.198, `task_id` juga menerima rekan tim tim agent atau agent latar belakang bernama berdasarkan ID atau nama agent.3505Menghentikan tugas latar belakang atau shell yang sedang berjalan berdasarkan ID. Mulai v2.1.198, `task_id` juga menerima rekan tim dalam tim agent atau agent latar belakang bernama berdasarkan ID atau nama agent.

3506 3506 

3507### NotebookEdit3507### NotebookEdit

3508 3508 


3534 3534 

3535Mengambil konten dari URL dan memprosesnya dengan model AI.3535Mengambil konten dari URL dan memprosesnya dengan model AI.

3536 3536 

3537`offset` adalah jumlah karakter yang dilewati dari awal halaman. Claude mengaturnya untuk melanjutkan membaca halaman yang panjang. Bidang ini memerlukan Agent SDK v0.3.290 atau lebih baru.3537`offset` adalah jumlah karakter yang dilewati dari awal halaman. Claude menetapkannya untuk melanjutkan membaca halaman yang panjang. Field ini memerlukan Agent SDK v0.3.290 atau lebih baru.

3538 3538 

3539### WebSearch3539### WebSearch

3540 3540 


3548};3548};

3549```3549```

3550 3550 

3551Mencari web dan mengembalikan hasil yang diformat.3551Mencari di web dan mengembalikan hasil yang diformat.

3552 3552 

3553### Workflow3553### Workflow

3554 3554 


3566};3566};

3567```3567```

3568 3568 

3569Menjalankan [workflow dinamis](https://code.claude.com/docs/id/workflows.md): skrip yang mengorkestra banyak subagent di latar belakang dan mengembalikan satu hasil terpadu. Tool `Workflow` tersedia di Agent SDK v0.3.149 dan lebih baru. Setidaknya satu dari `script`, `name`, atau `scriptPath` diperlukan.3569Menjalankan [workflow dinamis](https://code.claude.com/docs/id/workflows.md): skrip yang mengorkestrasi banyak subagent di latar belakang dan mengembalikan satu hasil yang terkonsolidasi. Tool `Workflow` tersedia di Agent SDK v0.3.149 dan yang lebih baru. Setidaknya salah satu dari `script`, `name`, atau `scriptPath` wajib diisi.

3570 3570 

3571| Bidang | Jenis | Deskripsi |3571| Field | Tipe | Deskripsi |

3572| - | - | - |3572| - | - | - |

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

3574| `name` | `string` | Nama workflow bawaan atau yang disimpan di `.claude/workflows/`. Diselesaikan ke skrip |3574| `name` | `string` | Nama workflow bawaan atau workflow yang disimpan di `.claude/workflows/`. Di-resolve menjadi skrip |

3575| `scriptPath` | `string` | Jalur ke file skrip workflow di disk, seperti `scriptPath` yang dikembalikan oleh run sebelumnya. Diutamakan daripada `script` dan `name`. Claude Code menolak `scriptPath` dengan error ketika tool sesi tidak menyertakan `Read` |3575| `scriptPath` | `string` | Path ke file skrip workflow di disk, seperti `scriptPath` yang dikembalikan oleh eksekusi sebelumnya. Diutamakan daripada `script` dan `name`. Claude Code menolak `scriptPath` dengan error ketika tool sesi tidak menyertakan `Read` |

3576| `args` | `unknown` | Nilai input yang diekspos ke skrip sebagai `args` global, untuk workflow bernama yang diparameterisasi seperti pertanyaan penelitian atau daftar jalur file. Lewatkan array dan objek sebagai nilai JSON aktual, bukan sebagai string yang dikodekan JSON |3576| `args` | `unknown` | Nilai input yang diekspos ke skrip sebagai global `args`, untuk workflow bernama yang terparameterisasi seperti pertanyaan riset atau daftar path file. Berikan array dan objek sebagai nilai JSON sebenarnya, bukan sebagai string yang di-encode JSON |

3577| `resumeFromRunId` | `string` | ID Jalankan dari invokasi `Workflow` sebelumnya untuk dilanjutkan. Panggilan `agent()` yang selesai dengan input tidak berubah biasanya mengembalikan hasil cache; sisanya berjalan langsung. [Lanjutkan setelah jeda](https://code.claude.com/docs/id/workflows.md#resume-after-a-pause) mencakup panggilan selesai mana yang dijalankan kembali. Sesi yang sama saja |3577| `resumeFromRunId` | `string` | ID eksekusi dari pemanggilan `Workflow` sebelumnya untuk dilanjutkan. Panggilan `agent()` yang telah selesai dengan input yang tidak berubah biasanya mengembalikan hasil dari cache; sisanya dijalankan secara langsung. [Melanjutkan setelah jeda](https://code.claude.com/docs/id/workflows.md#resume-after-a-pause) menjelaskan panggilan selesai mana yang dijalankan ulang. Hanya dalam sesi yang sama |

3578| `title` | `string` | Diabaikan; blok `meta` skrip menetapkan judul |3578| `title` | `string` | Diabaikan; blok `meta` skrip menetapkan judul |

3579| `description` | `string` | Diabaikan; blok `meta` skrip menetapkan deskripsi |3579| `description` | `string` | Diabaikan; blok `meta` skrip menetapkan deskripsi |

3580 3580 


3592};3592};

3593```3593```

3594 3594 

3595Membuat dan mengelola daftar tugas terstruktur untuk melacak kemajuan.3595Membuat dan mengelola daftar tugas terstruktur untuk melacak progres.

3596 3596 

3597> [!NOTE]3597> [!NOTE]

3598>3598>


3608>3608>

3609> Set default ini berlaku di Claude Code v2.1.268 dan yang lebih baru, yang dibundel oleh TypeScript Agent SDK dari v0.3.268.3609> Set default ini berlaku di Claude Code v2.1.268 dan yang lebih baru, yang dibundel oleh TypeScript Agent SDK dari v0.3.268.

3610>3610>

3611> Lihat [Ketersediaan model](https://code.claude.com/docs/id/agent-sdk/todo-tracking.md#model-availability) untuk memilih.3611> Lihat [Ketersediaan model](https://code.claude.com/docs/id/agent-sdk/todo-tracking.md#model-availability) untuk mengaktifkannya.

3612 3612 

3613### TaskCreate3613### TaskCreate

3614 3614 


3623};3623};

3624```3624```

3625 3625 

3626Membuat satu tugas dan mengembalikan ID yang ditugaskan.3626Membuat satu tugas dan mengembalikan ID yang ditetapkan untuknya.

3627 3627 

3628### TaskUpdate3628### TaskUpdate

3629 3629 


3643};3643};

3644```3644```

3645 3645 

3646Menambal satu tugas berdasarkan ID. Atur `status` ke `"deleted"` untuk menghapusnya.3646Memperbarui sebagian satu tugas berdasarkan ID. Atur `status` ke `"deleted"` untuk menghapusnya.

3647 3647 

3648### TaskGet3648### TaskGet

3649 3649 


3665type TaskListInput = {};3665type TaskListInput = {};

3666```3666```

3667 3667 

3668Mengembalikan snapshot semua tugas dalam daftar saat ini.3668Mengembalikan snapshot dari semua tugas dalam daftar saat ini.

3669 3669 

3670### ExitPlanMode3670### ExitPlanMode

3671 3671 


3682};3682};

3683```3683```

3684 3684 

3685Keluar dari plan mode. Bidang `allowedPrompts` sudah usang dan diabaikan; Claude Code masih menerimanya sehingga pemanggil dan transkrip yang ada memvalidasi. Sebelum v2.1.205, ia meminta izin Bash berbasis prompt untuk mengimplementasikan rencana.3685Keluar dari plan mode. Field `allowedPrompts` sudah deprecated dan diabaikan; Claude Code masih menerimanya agar pemanggil dan transkrip yang sudah ada tetap valid. Sebelum v2.1.205, field ini meminta izin Bash berbasis prompt untuk mengimplementasikan rencana.

3686 3686 

3687### ListMcpResources3687### ListMcpResources

3688 3688 


3694};3694};

3695```3695```

3696 3696 

3697Mencantumkan sumber daya MCP yang tersedia dari server yang terhubung.3697Mencantumkan resource MCP yang tersedia dari server yang terhubung.

3698 3698 

3699### ReadMcpResource3699### ReadMcpResource

3700 3700 


3707};3707};

3708```3708```

3709 3709 

3710Membaca sumber daya MCP tertentu dari server.3710Membaca resource MCP tertentu dari server.

3711 3711 

3712### EnterWorktree3712### EnterWorktree

3713 3713 


3720};3720};

3721```3721```

3722 3722 

3723Membuat dan memasuki worktree git sementara untuk pekerjaan terisolasi. Lewatkan `path` untuk beralih ke worktree yang ada alih-alih membuat yang baru. Pada entri pertama target harus berupa worktree terdaftar dari repositori saat ini atau, di workspace multi-repo, dari repositori yang bersarang di dalamnya; dari dalam sesi worktree harus berada di bawah `.claude/worktrees/` dari repositori sesi. `name` dan `path` saling eksklusif.3723Membuat dan memasuki worktree git sementara untuk pekerjaan yang terisolasi. Berikan `path` untuk beralih ke worktree yang sudah ada alih-alih membuat yang baru. Pada saat pertama kali masuk, target harus berupa worktree terdaftar dari repositori saat ini atau, dalam workspace multi-repo, dari repositori yang bersarang di dalamnya; dari dalam sesi worktree, target harus berada di bawah `.claude/worktrees/` dari repositori sesi. `name` dan `path` saling eksklusif.

3724 3724 

3725### ExitWorktree3725### ExitWorktree

3726 3726 


3733};3733};

3734```3734```

3735 3735 

3736Keluar dari worktree git saat ini dan kembali ke direktori kerja asli. Tindakan `keep` meninggalkan worktree dan branch di disk, sementara `remove` menghapus keduanya. `discard_changes` harus `true` ketika menghapus worktree yang memiliki file yang belum di-commit atau commit yang belum di-merge.3736Keluar dari worktree git saat ini dan kembali ke direktori kerja semula. Aksi `keep` membiarkan worktree dan branch tetap di disk, sedangkan `remove` menghapus keduanya. `discard_changes` harus bernilai `true` saat menghapus worktree yang memiliki file yang belum di-commit atau commit yang belum di-merge.

3737 3737 

3738### EnterPlanMode3738### EnterPlanMode

3739 3739 


3743type EnterPlanModeInput = {};3743type EnterPlanModeInput = {};

3744```3744```

3745 3745 

3746Memasuki plan mode, di mana Claude meneliti dan menyajikan rencana sebelum membuat perubahan.3746Memasuki plan mode, di mana Claude melakukan riset dan menyajikan rencana sebelum membuat perubahan.

3747 3747 

3748### CronCreate3748### CronCreate

3749 3749 


3758};3758};

3759```3759```

3760 3760 

3761Menjadwalkan prompt untuk dijalankan pada jadwal cron 5-bidang dalam waktu lokal. Atur `recurring` ke `false` untuk menembak sekali pada kecocokan berikutnya. Pekerjaan bersifat sesi-scoped secara default, dan melanjutkan dengan `--resume` atau `--continue` memulihkan pekerjaan yang belum kedaluwarsa. Lihat [Tugas terjadwal dengan cakupan sesi](https://code.claude.com/docs/id/scheduled-tasks.md).3761Menjadwalkan prompt untuk dijalankan pada jadwal cron 5-field dalam waktu lokal. Atur `recurring` ke `false` untuk menjalankannya sekali pada kecocokan berikutnya. Job secara default terbatas pada sesi, dan melanjutkan dengan `--resume` atau `--continue` memulihkan job yang belum kedaluwarsa. Lihat [Tugas terjadwal dengan cakupan sesi](https://code.claude.com/docs/id/scheduled-tasks.md).

3762 3762 

3763Mengatur `durable` ke `true` meminta persistensi ke `.claude/scheduled_tasks.json` sehingga pekerjaan bertahan dari restart. Penjadwalan tahan lama tidak tersedia di setiap sesi: ketika tidak, Claude Code menerima `durable: true` tetapi membuat pekerjaan hanya sesi. Baca bidang `durable` output untuk melihat apakah pekerjaan bertahan.3763Mengatur `durable` ke `true` meminta persistensi ke `.claude/scheduled_tasks.json` sehingga job tetap bertahan setelah restart. Penjadwalan durable tidak tersedia di setiap sesi: ketika tidak tersedia, Claude Code menerima `durable: true` tetapi membuat job hanya untuk sesi tersebut. Baca field `durable` pada output untuk melihat apakah job dipersistensikan.

3764 3764 

3765### CronDelete3765### CronDelete

3766 3766 


3772};3772};

3773```3773```

3774 3774 

3775Menghapus pekerjaan cron terjadwal berdasarkan ID yang dikembalikan dari `CronCreate`.3775Menghapus job cron terjadwal berdasarkan ID yang dikembalikan dari `CronCreate`.

3776 3776 

3777### CronList3777### CronList

3778 3778 


3782type CronListInput = {};3782type CronListInput = {};

3783```3783```

3784 3784 

3785Mencantumkan pekerjaan cron terjadwal: pekerjaan tahan lama dari `.claude/scheduled_tasks.json` dan pekerjaan hanya sesi dari sesi saat ini.3785Mencantumkan job cron terjadwal: job durable dari `.claude/scheduled_tasks.json` dan job khusus sesi dari sesi saat ini.

3786 3786 

3787### ScheduleWakeup3787### ScheduleWakeup

3788 3788 


3798};3798};

3799```3799```

3800 3800 

3801Menjadwalkan bangun sekali yang menembak prompt yang diberikan setelah penundaan. Tool ini mendukung perintah `/loop` yang berjalan sendiri. Runtime menjepit `delaySeconds` antara 60 dan 3600 detik. Bidang `delaySeconds`, `reason`, `prompt`, dan `noop` diperlukan kecuali `stop` adalah true. `noop: true` melaporkan bangun di mana tidak ada yang berubah. Mengatur `stop: true` membatalkan bangun yang tertunda dan mengakhiri `/loop` yang berjalan sendiri. Bidang `stop` memerlukan Claude Code v2.1.202 atau lebih baru. Lihat [baris ScheduleWakeup dalam referensi tool](https://code.claude.com/docs/id/tools-reference.md).3801Menjadwalkan wake-up satu kali yang menjalankan prompt yang diberikan setelah jeda. Tool ini mendasari perintah `/loop` yang berjalan dengan tempo sendiri. Runtime membatasi `delaySeconds` antara 60 dan 3600 detik. Field `delaySeconds`, `reason`, `prompt`, dan `noop` wajib diisi kecuali jika `stop` bernilai true. `noop: true` melaporkan wake-up di mana tidak ada yang berubah. Mengatur `stop: true` membatalkan wakeup yang tertunda dan mengakhiri `/loop` yang berjalan dengan tempo sendiri. Field `stop` memerlukan Claude Code v2.1.202 atau lebih baru. Lihat [baris ScheduleWakeup dalam referensi tool](https://code.claude.com/docs/id/tools-reference.md).

3802 3802 

3803### RemoteTrigger3803### RemoteTrigger

3804 3804 


3824};3824};

3825```3825```

3826 3826 

3827Mengelola [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md), sebelumnya disebut routine: eksekusi Claude Code terjadwal dan dipicu yang dihosting di cloud. Tool ini mendukung perintah `/schedule`. `trigger_id` diperlukan untuk tindakan `get`, `update`, `run`, dan `list_runs`. `body` diperlukan untuk `create`, `update`, dan `create_webhook_trigger`, dan opsional untuk `run`.3827Mengelola [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md), sebelumnya routine: eksekusi Claude Code terjadwal dan terpicu yang di-host di cloud. Tool ini mendasari perintah `/schedule`. `trigger_id` wajib untuk aksi `get`, `update`, `run`, dan `list_runs`. `body` wajib untuk `create`, `update`, dan `create_webhook_trigger`, serta opsional untuk `run`.

3828 3828 

3829`create_webhook_trigger`, `list_runs`, dan `get_run_log` masing-masing memerlukan versi Claude Code minimum:3829`create_webhook_trigger`, `list_runs`, dan `get_run_log` masing-masing memerlukan versi Claude Code minimum:

3830 3830 

3831* **`create_webhook_trigger`**: melampirkan sumber peristiwa ke tugas terjadwal yang ada, seperti [peristiwa GitHub](https://code.claude.com/docs/id/routines.md#add-a-github-trigger) yang memicunya. `body` menamai sumber, peristiwa, dan tugas yang akan dipicu. Memerlukan Claude Code v2.1.225 atau lebih baru.3831* **`create_webhook_trigger`**: melampirkan sumber event ke tugas terjadwal yang sudah ada, seperti [event GitHub](https://code.claude.com/docs/id/routines.md#add-a-github-trigger) yang memicunya. `body` menyebutkan sumber, event, dan tugas yang akan dipicu. Memerlukan Claude Code v2.1.225 atau lebih baru.

3832* **`list_runs` dan `get_run_log`**: `list_runs` mencantumkan eksekusi terbaru dari tugas terjadwal, dan `get_run_log` membaca log satu eksekusi. `session_id` menamai eksekusi yang akan dibaca, dari hasil `list_runs`, dan `cursor` menelusuri halaman hasil dari kedua tindakan. Kedua tindakan memerlukan Claude Code v2.1.227 atau lebih baru.3832* **`list_runs` dan `get_run_log`**: `list_runs` mencantumkan eksekusi terbaru dari tugas terjadwal, dan `get_run_log` membaca log dari satu eksekusi. `session_id` menyebutkan eksekusi yang akan dibaca, dari hasil `list_runs`, dan `cursor` menelusuri halaman hasil dari kedua aksi tersebut. Kedua aksi memerlukan Claude Code v2.1.227 atau lebih baru.

3833 3833 

3834Tool ini hanya tersedia ketika sesi diautentikasi dengan akun claude.ai pada paket dengan tugas terjadwal cloud diaktifkan. Tool ini tidak ada ketika kebijakan organisasi Anda menonaktifkan [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md). Pada Claude Code v2.1.227 atau lebih baru, tool juga tidak ada ketika Pemilik telah [mematikan tugas terjadwal untuk organisasi](https://code.claude.com/docs/id/routines.md#routines-are-disabled-by-your-organizations-policy).3834Tool ini hanya tersedia ketika sesi diautentikasi dengan akun claude.ai pada paket yang mengaktifkan tugas terjadwal cloud. Tool ini tidak ada ketika kebijakan organisasi Anda menonaktifkan [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md). Pada Claude Code v2.1.227 atau lebih baru, tool ini juga tidak ada ketika Owner telah [mematikan tugas terjadwal untuk organisasi](https://code.claude.com/docs/id/routines.md#routines-are-disabled-by-your-organizations-policy).

3835 3835 

3836### PushNotification3836### PushNotification

3837 3837 


3844};3844};

3845```3845```

3846 3846 

3847Mengirim notifikasi push proaktif kepada pengguna. Jaga `message` di bawah 200 karakter karena sistem operasi mobile memotong teks yang lebih panjang. Lihat [baris PushNotification dalam referensi tool](https://code.claude.com/docs/id/tools-reference.md) untuk ketersediaan penyedia; pengiriman push berjalan melalui infrastruktur yang dihosting Anthropic yang tidak dapat diakses dari Amazon Bedrock, Claude Platform di AWS, Platform Agent Google Cloud, atau Microsoft Foundry.3847Mengirim push notification proaktif kepada pengguna. Jaga `message` di bawah 200 karakter karena sistem operasi seluler memotong teks yang lebih panjang. Lihat [baris PushNotification dalam referensi tool](https://code.claude.com/docs/id/tools-reference.md) untuk ketersediaan penyedia; pengiriman push berjalan melalui infrastruktur yang di-host Anthropic yang tidak dapat diakses dari Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, atau Microsoft Foundry.

3848 3848 

3849### REPL3849### REPL

3850 3850 

3851Dihapus di v2.1.275. Melalui v2.1.274, tool `REPL` eksperimental dapat dihidupkan dengan `CLAUDE_CODE_REPL=1` dalam [opsi `env`](#options).3851Dihapus di v2.1.275. Hingga v2.1.274, tool `REPL` eksperimental dapat diaktifkan dengan `CLAUDE_CODE_REPL=1` dalam [opsi `env`](#options).

3852 3852 

3853### ReportFindings3853### ReportFindings

3854 3854 


3870};3870};

3871```3871```

3872 3872 

3873Melaporkan temuan code review sebagai daftar terstruktur sehingga Claude Code dapat merendernya alih-alih mencetaknya sebagai teks. Temuan diurutkan paling parah terlebih dahulu, dengan paling banyak 32 per panggilan, dan array kosong ketika tidak ada yang bertahan. Memerlukan Claude Code v2.1.196 atau lebih baru.3873Melaporkan temuan code review sebagai daftar terstruktur sehingga Claude Code dapat merendernya alih-alih mencetaknya sebagai teks. Temuan diurutkan dari yang paling parah terlebih dahulu, dengan maksimal 32 per panggilan, dan array kosong ketika tidak ada yang tersisa. Memerlukan Claude Code v2.1.196 atau lebih baru.

3874 3874 

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

3876 3876 

3877Setiap temuan membawa bidang-bidang ini:3877Setiap temuan membawa field berikut:

3878 3878 

3879* `file`: jalur relatif repo temuan berada. `line` opsional adalah baris 1-indexed yang ditambatkan.3879* `file`: path relatif terhadap repo tempat temuan berada. `line` opsional adalah baris berindeks 1 yang menjadi acuannya.

3880* `summary`: pernyataan satu kalimat dari cacat. `failure_scenario` menjelaskan input konkret dan status yang mengarah ke output yang salah atau crash.3880* `summary`: pernyataan satu kalimat tentang cacat tersebut. `failure_scenario` menjelaskan input dan state konkret yang menyebabkan output yang salah atau crash.

3881* `short_summary`: label terkompresi opsional paling banyak 60 karakter untuk tampilan kompak. Memerlukan Claude Code v2.1.212 atau lebih baru.3881* `short_summary`: label ringkas opsional dengan maksimal 60 karakter untuk tampilan ringkas. Memerlukan Claude Code v2.1.212 atau lebih baru.

3882* `category`: slug kebab-case pendek opsional dari jenis temuan, seperti `correctness` atau `test-coverage`. Memerlukan Claude Code v2.1.199 atau lebih baru.3882* `category`: slug kebab-case pendek opsional untuk jenis temuan, seperti `correctness` atau `test-coverage`. Memerlukan Claude Code v2.1.199 atau lebih baru.

3883* `verdict`: ditetapkan ketika lulus verifikasi berjalan; tidak ada pada tinjauan inline-only.3883* `verdict`: diatur ketika tahap verifikasi dijalankan; tidak ada pada review yang hanya inline.

3884* `outcome`: ditetapkan hanya ketika melaporkan kembali setelah menerapkan perbaikan.3884* `outcome`: diatur hanya saat melaporkan ulang setelah menerapkan perbaikan.

3885 3885 

3886### Artifact3886### Artifact

3887 3887 


3905};3905};

3906```3906```

3907 3907 

3908Menerbitkan file `.html` atau `.md` lokal sebagai halaman artefak yang dihosting, atau mencantumkan artefak yang diterbitkan pengguna. Hilangkan `action` atau lewatkan `"publish"` untuk menerbitkan `file_path`, yang diperlukan untuk tindakan publikasi. Setiap bidang di bawah berlaku untuk publikasi:3908Memublikasikan file `.html` atau `.md` lokal sebagai halaman artifact yang di-host, atau mencantumkan artifact yang telah dipublikasikan pengguna. Hilangkan `action` atau berikan `"publish"` untuk memublikasikan `file_path`, yang wajib untuk aksi publish. Setiap field di bawah ini berlaku untuk publish:

3909 3909 

3910* `icon`: satu kata generik pendek untuk ikon tab browser artefak, seperti `chart` atau `map`. Claude menyertakannya pada publikasi pertama dan menghilangkannya pada pembaruan, yang menjaga ikon artefak yang disimpan.3910* `icon`: satu kata generik pendek untuk ikon tab browser artifact, seperti `chart` atau `map`. Claude menyertakannya pada publish pertama dan menghilangkannya pada pembaruan, yang mempertahankan ikon artifact yang tersimpan.

3911* `favicon`: sudah usang, dan Claude menghilangkannya.3911* `favicon`: sudah deprecated, dan Claude menghilangkannya.

3912* `title`: menamai halaman yang diterbitkan di tab browser dan galeri ketika file HTML tidak memiliki tag `<title>`.3912* `title`: memberi nama halaman yang dipublikasikan di tab browser dan galeri ketika file HTML tidak memiliki tag `<title>`.

3913* `url`: menargetkan artefak yang ada untuk diperbarui di tempat alih-alih membuat yang baru.3913* `url`: menargetkan artifact yang sudah ada untuk diperbarui di tempat alih-alih membuat yang baru.

3914 3914 

3915`force` adalah penimpa upaya terakhir yang membuang versi yang lebih baru yang diterbitkan sesi lain. Pada konflik, publikasi yang gagal mengembalikan konten yang lebih baru; Claude menggabungkan perubahannya ke konten itu, atau membaca ulang artefak, dan menerbitkan lagi. Lewatkan `force` hanya ketika pengguna secara eksplisit meminta untuk membuang versi itu.3915`force` adalah penimpaan upaya terakhir yang membuang versi lebih baru yang dipublikasikan oleh sesi lain. Saat terjadi konflik, publish yang gagal mengembalikan konten yang lebih baru; Claude menggabungkan perubahannya ke konten tersebut, atau membaca ulang artifact, lalu memublikasikan lagi. Berikan `force` hanya ketika pengguna secara eksplisit meminta untuk membuang versi tersebut.

3916 3916 

3917Lewatkan `"list"` untuk menghitung artefak yang diterbitkan pengguna; hanya `limit` dan `scope` yang dapat menemaninya. `scope` default ke `"mine"`, yang mencantumkan artefak yang dimiliki pengguna; `"shared"` mencantumkan artefak yang dibagikan orang lain kepada pengguna, dan `"all"` mencantumkan keduanya.3917Berikan `"list"` untuk menginventarisasi artifact yang telah dipublikasikan pengguna; hanya `limit` dan `scope` yang boleh menyertainya. `scope` default-nya `"mine"`, yang mencantumkan artifact milik pengguna; `"shared"` mencantumkan artifact yang dibagikan orang lain kepada pengguna, dan `"all"` mencantumkan keduanya.

3918 3918 

3919`limit` menetapkan jumlah maksimum artefak yang dikembalikan oleh sebuah daftar, dari 1 hingga 200. `limit` di atas 50 memerlukan Agent SDK v0.3.292 atau lebih baru. Tanpa `limit`, daftar mengembalikan hingga 25.3919`limit` menetapkan jumlah maksimum artifact yang dikembalikan oleh sebuah daftar, dari 1 hingga 200. `limit` di atas 50 memerlukan Agent SDK v0.3.292 atau lebih baru. Tanpa `limit`, daftar mengembalikan hingga 25.

3920 3920 

3921* `capabilities`: kemampuan runtime yang digunakan halaman yang diterbitkan, dikunci berdasarkan nama kemampuan, seperti [konektor yang dapat dipanggil halaman](https://code.claude.com/docs/id/artifacts.md#pull-live-data-with-mcp-connectors). Layanan artefak memvalidasi deklarasi dan menolak publikasi yang menamai kemampuan yang tidak dapat digunakan akun atau memberikan satu konfigurasi yang tidak valid. Lewatkan `{}` untuk menghapus deklarasi yang disimpan, dan hilangkan bidang pada redeploy untuk menyimpannya. Memerlukan Agent SDK v0.3.235 atau lebih baru.3921* `capabilities`: kapabilitas runtime yang digunakan halaman yang dipublikasikan, dengan kunci berupa nama kapabilitas, seperti [konektor yang boleh dipanggil halaman](https://code.claude.com/docs/id/artifacts.md#pull-live-data-with-mcp-connectors). Layanan artifact memvalidasi deklarasi tersebut dan menolak publish yang menyebutkan kapabilitas yang tidak dapat digunakan akun atau memberikan konfigurasi yang tidak valid. Berikan `{}` untuk menghapus deklarasi yang tersimpan, dan hilangkan field ini saat redeploy untuk mempertahankannya. Memerlukan Agent SDK v0.3.235 atau lebih baru.

3922* `contract`: versi runtime yang dijalankan halaman yang diterbitkan. Hilangkan untuk menyimpan versi artefak saat ini, lewatkan `"latest"` untuk upgrade, atau lewatkan versi tertentu untuk pin atau rollback. Memerlukan Agent SDK v0.3.235 atau lebih baru.3922* `contract`: versi runtime yang digunakan halaman yang dipublikasikan. Hilangkan untuk mempertahankan versi artifact saat ini, berikan `"latest"` untuk meng-upgrade, atau berikan versi tertentu untuk mengunci atau melakukan rollback. Memerlukan Agent SDK v0.3.235 atau lebih baru.

3923 3923 

3924Jenis diekspor, tetapi tool dimatikan secara default dalam sesi Agent SDK. Publikasi juga memerlukan setiap kondisi dalam [tabel ketersediaan artefak](https://code.claude.com/docs/id/artifacts.md#availability), yang tidak dipenuhi oleh sesi yang diautentikasi dengan kunci API.3924Tipe-tipenya diekspor, tetapi tool ini nonaktif secara default dalam sesi Agent SDK. Publikasi juga memerlukan setiap kondisi dalam [tabel ketersediaan artifact](https://code.claude.com/docs/id/artifacts.md#availability), yang tidak dipenuhi oleh sesi yang diautentikasi dengan kunci API.

3925 3925 

3926### Projects3926### Projects

3927 3927 


3944};3944};

3945```3945```

3946 3946 

3947Membaca dan menulis Proyek claude.ai yang dilampirkan ke sesi. Mengirim pada `method`:3947Membaca dan menulis Project claude.ai yang dilampirkan ke sesi. Melakukan dispatch berdasarkan `method`:

3948 3948 

3949* `project_info`: mengembalikan metadata proyek dan daftar doc.3949* `project_info`: mengembalikan metadata proyek dan daftar dokumen.

3950* `project_read`: membaca satu doc berdasarkan `path`.3950* `project_read`: membaca satu dokumen berdasarkan `path`.

3951* `project_search`: menanyakan basis pengetahuan proyek dengan `query`. `n` membatasi hit dan default ke `5`.3951* `project_search`: melakukan kueri ke basis pengetahuan proyek dengan `query`. `n` membatasi jumlah hasil dan default-nya `5`.

3952* `project_write`: membuat atau mengganti doc di `path` dari tepat satu dari `content`, yang membawa teks inline, atau `local_path`, yang menamai file di dalam direktori kerja. `present_to_user: true` menandai doc yang ditulis sebagai deliverable yang perlu dilihat pengguna.3952* `project_write`: membuat atau mengganti dokumen di `path` dari tepat satu dari `content`, yang membawa teks inline, atau `local_path`, yang menyebutkan file di dalam direktori kerja. `present_to_user: true` menandai dokumen yang ditulis sebagai hasil kerja yang perlu dilihat pengguna.

3953* `project_delete`: menghapus doc berdasarkan `path`.3953* `project_delete`: menghapus dokumen berdasarkan `path`.

3954 3954 

3955### ReadMcpResourceDir3955### ReadMcpResourceDir

3956 3956 


3963};3963};

3964```3964```

3965 3965 

3966Mencantumkan anak langsung dari sumber daya direktori pada server MCP. Hanya dapat digunakan terhadap server yang telah mendeklarasikan dukungan untuk daftar direktori; daftar tidak rekursif. Daftar direktori tidak diaktifkan di setiap sesi: ketika dimatikan, panggilan mengembalikan daftar `resources` kosong dan bidang `error` melaporkan bahwa daftar direktori tidak diaktifkan.3966Mencantumkan anak langsung dari resource direktori pada server MCP. Hanya dapat digunakan terhadap server yang telah mendeklarasikan dukungan untuk listing direktori; listing tidak bersifat rekursif. Listing direktori tidak diaktifkan di setiap sesi: ketika nonaktif, panggilan mengembalikan daftar `resources` yang kosong dan field `error` melaporkan bahwa listing direktori tidak diaktifkan.

3967 3967 

3968### RefreshMcpTools3968### RefreshMcpTools

3969 3969 


3975};3975};

3976```3976```

3977 3977 

3978Menanyakan ulang daftar tool server MCP yang terhubung dan menerapkan perubahan apa pun. Jenis diekspor, tetapi Claude Code mendaftarkan tool hanya ketika Anda mengatur `CLAUDE_CODE_ENABLE_REFRESH_MCP_TOOLS=1` dalam [opsi `env`](#options), dan hanya dalam sesi dengan setidaknya satu server MCP. Memerlukan Claude Code v2.1.211 atau lebih baru.3978Melakukan kueri ulang daftar tool dari server MCP yang terhubung dan menerapkan setiap perubahan. Tipe-tipenya diekspor, tetapi Claude Code mendaftarkan tool ini hanya ketika Anda mengatur `CLAUDE_CODE_ENABLE_REFRESH_MCP_TOOLS=1` dalam [opsi `env`](#options), dan hanya dalam sesi yang memiliki setidaknya satu server MCP. Memerlukan Claude Code v2.1.211 atau lebih baru.

3979 3979 

3980### ShowOnboardingRolePicker3980### ShowOnboardingRolePicker

3981 3981 


3985type ShowOnboardingRolePickerInput = {};3985type ShowOnboardingRolePickerInput = {};

3986```3986```

3987 3987 

3988Merender baris chip pemilih peran yang dapat diklik selama onboarding Cowork sehingga pengguna dapat memilih peran mereka dan mendapatkan plugin yang cocok diinstal. Tidak memerlukan argumen; daftar peran ditentukan oleh klien. Panggilan memblokir sampai pengguna merespons.3988Merender baris chip pemilih peran yang dapat diklik selama onboarding Cowork sehingga pengguna dapat memilih perannya dan mendapatkan plugin yang sesuai terinstal. Tidak menerima argumen; daftar peran ditentukan oleh klien. Panggilan ini memblokir hingga pengguna merespons.

3989 3989 

3990### McpInput3990### McpInput

3991 3991 

3992**Nama tool:** nama tool MCP dinamis dari bentuk `mcp__<server>__<tool>`3992**Nama tool:** nama tool MCP dinamis dengan bentuk `mcp__<server>__<tool>`

3993 3993 

3994```typescript theme={null}3994```typescript theme={null}

3995type McpInput = {3995type McpInput = {


3997};3997};

3998```3998```

3999 3999 

4000Argumen tool MCP adalah objek terbuka: setiap server mendefinisikan parameternya sendiri, jadi jenis tidak menempatkan batasan pada nama bidang atau nilai. Konsultasikan skema tool server sendiri untuk bidang yang diterima tool tertentu.4000Argumen tool MCP berupa objek terbuka: setiap server mendefinisikan parameternya sendiri, sehingga tipe ini tidak memberikan batasan pada nama atau nilai field. Lihat skema tool milik server untuk field yang diterima oleh tool tertentu.

4001 4001 

4002## Tipe Output Tool4002## Tipe Output Tool

4003 4003 


5711 5711 

5712### `SDKTaskStartedMessage`5712### `SDKTaskStartedMessage`

5713 5713 

5714Dipancarkan ketika tugas dimulai. Field `task_type` bernilai `"local_bash"` untuk perintah Bash dan watch [Monitor](#monitor), `"local_agent"` untuk subagent, atau `"remote_agent"`.5714Dipancarkan ketika tugas dimulai. `task_type` menamai jenis tugas, seperti `"local_bash"` untuk perintah Bash dan watch [Monitor](#monitor), `"local_agent"` untuk subagent, `"mcp_task"` untuk [panggilan tool MCP latar belakang](https://code.claude.com/docs/id/mcp.md#automatic-backgrounding-of-long-tool-calls), atau `"remote_agent"`.

5715 5715 

5716```typescript theme={null}5716```typescript theme={null}

5717type SDKTaskStartedMessage = {5717type SDKTaskStartedMessage = {


5920 errorCode?: "credits_required";5920 errorCode?: "credits_required";

5921 canUserPurchaseCredits?: boolean;5921 canUserPurchaseCredits?: boolean;

5922 hasChargeableSavedPaymentMethod?: boolean;5922 hasChargeableSavedPaymentMethod?: boolean;

5923 overageEnabled?: boolean;

5923 };5924 };

5924 uuid: UUID;5925 uuid: UUID;

5925 session_id: string;5926 session_id: string;


5928 5929 

5929Ketika `errorCode` bernilai `"credits_required"`, penolakan berasal dari langganan claude.ai yang penggunaan bawaannya sudah habis, dan sesi tidak dapat dilanjutkan sampai pengguna membeli kredit penggunaan. `canUserPurchaseCredits` menunjukkan apakah pengguna yang diautentikasi dapat membeli kredit untuk akun tersebut, dan `hasChargeableSavedPaymentMethod` menunjukkan apakah ada metode pembayaran yang tersimpan. Ketiga field ini tidak ada pada event rate limit yang bukan penolakan karena memerlukan kredit. Memerlukan Claude Code v2.1.181 atau lebih baru.5930Ketika `errorCode` bernilai `"credits_required"`, penolakan berasal dari langganan claude.ai yang penggunaan bawaannya sudah habis, dan sesi tidak dapat dilanjutkan sampai pengguna membeli kredit penggunaan. `canUserPurchaseCredits` menunjukkan apakah pengguna yang diautentikasi dapat membeli kredit untuk akun tersebut, dan `hasChargeableSavedPaymentMethod` menunjukkan apakah ada metode pembayaran yang tersimpan. Ketiga field ini tidak ada pada event rate limit yang bukan penolakan karena memerlukan kredit. Memerlukan Claude Code v2.1.181 atau lebih baru.

5930 5931 

5932Pada peringatan tentang batas penggunaan paket, di mana `status` bernilai `"allowed_warning"`, `overageEnabled` melaporkan apakah akun telah mengaktifkan [kredit penggunaan](https://code.claude.com/docs/id/costs.md#add-usage-credits-to-your-subscription). Memerlukan Claude Code v2.1.295 atau lebih baru.

5933 

5931### `SDKLocalCommandOutputMessage`5934### `SDKLocalCommandOutputMessage`

5932 5935 

5933Claude Code tidak memancarkan tipe pesan ini. Ketika Anda mengirimkan perintah seperti `/context` atau `/usage` sebagai prompt, outputnya tiba sebagai [`SDKAssistantMessage`](#sdkassistantmessage).5936Claude Code tidak memancarkan tipe pesan ini. Ketika Anda mengirimkan perintah seperti `/context` atau `/usage` sebagai prompt, outputnya tiba sebagai [`SDKAssistantMessage`](#sdkassistantmessage).

Details

647 647 

648 648 

649def parse_response(response: str, options: list) -> str:649def parse_response(response: str, options: list) -> str:

650 """Analisis input pengguna sebagai nomor opsi atau teks bebas."""650 """Parse user input as option number(s) or free text."""

651 try:651 try:

652 indices = [int(s.strip()) - 1 for s in response.split(",")]652 indices = [int(s.strip()) - 1 for s in response.split(",")]

653 labels = [options[i]["label"] for i in indices if 0 <= i < len(options)]653 labels = [options[i]["label"] for i in indices if 0 <= i < len(options)]


657 657 

658 658 

659async def handle_ask_user_question(input_data: dict) -> PermissionResultAllow:659async def handle_ask_user_question(input_data: dict) -> PermissionResultAllow:

660 """Tampilkan pertanyaan Claude dan kumpulkan jawaban pengguna."""660 """Display Claude's questions and collect user answers."""

661 answers = {}661 answers = {}

662 662 

663 for q in input_data.get("questions", []):663 for q in input_data.get("questions", []):

agent-teams.md +9 −9

Details

8 8 

9> [!WARNING]9> [!WARNING]

10>10>

11> Tim agent bersifat eksperimental dan dinonaktifkan secara default. Aktifkan dengan menetapkan `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` di [settings.json](https://code.claude.com/docs/id/settings.md) atau environment Anda. Tanpa variabel tersebut, tidak ada tim yang diatur pada awal session, tidak ada direktori tim yang ditulis, dan Claude tidak menspawn atau mengusulkan rekan tim. Tim agent memiliki [keterbatasan yang diketahui](#limitations) seputar session resumption, koordinasi tugas, dan perilaku shutdown.11> Tim agent bersifat eksperimental dan dinonaktifkan secara default. Aktifkan dengan menetapkan `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` di [settings.json](https://code.claude.com/docs/id/settings.md) atau environment Anda. Tim agent memiliki [keterbatasan yang diketahui](#limitations) seputar pelanjutan sesi, koordinasi tugas, dan perilaku shutdown.

12 12 

13Tim agent memungkinkan Anda mengoordinasikan beberapa instance Claude Code yang bekerja bersama. Satu session bertindak sebagai team lead, mengoordinasikan pekerjaan, menugaskan tugas, dan mensintesis hasil. Rekan tim bekerja secara independen, masing-masing dalam context window-nya sendiri, dan berkomunikasi langsung satu sama lain. Anda juga dapat berbicara dengan rekan tim mana pun secara langsung tanpa melalui lead.13Tim agent memungkinkan Anda mengoordinasikan beberapa instance Claude Code yang bekerja bersama. Satu session bertindak sebagai team lead, mengoordinasikan pekerjaan, menugaskan tugas, dan mensintesis hasil. Rekan tim bekerja secara independen, masing-masing dalam context window-nya sendiri, dan berkomunikasi langsung satu sama lain. Anda juga dapat berbicara dengan rekan tim mana pun secara langsung tanpa melalui lead.

14 14 


273 273 

274Claude Code membaca definisi subagent yang Anda namai dan menerapkan bagian-bagian ini ke rekan kerja. Jika bagian bergantung pada [mode tampilan](#choose-a-display-mode) rekan kerja, entri mengatakan demikian:274Claude Code membaca definisi subagent yang Anda namai dan menerapkan bagian-bagian ini ke rekan kerja. Jika bagian bergantung pada [mode tampilan](#choose-a-display-mode) rekan kerja, entri mengatakan demikian:

275 275 

276* **`tools`**: Claude Code membatasi rekan kerja ke alat dalam daftar `tools` definisi. Untuk rekan kerja dalam proses, Claude Code menambahkan `SendMessage` ke daftar itu, dan dalam [sesi yang memiliki Task tools](https://code.claude.com/docs/id/tools-reference.md#task-tool-availability) juga menambahkan `TaskCreate`, `TaskGet`, `TaskList`, dan `TaskUpdate`.276* **`tools`**: Claude Code membatasi rekan kerja ke tool dalam daftar `tools` definisi. Untuk rekan kerja dalam proses, Claude Code menambahkan `SendMessage` ke daftar itu, dan dalam [sesi yang memiliki Task tools](https://code.claude.com/docs/id/tools-reference.md#task-tool-availability) juga menambahkan `TaskCreate`, `TaskGet`, `TaskList`, dan `TaskUpdate`.

277* **`model`**: Claude Code menggunakan `model` definisi di mode tampilan mana pun ketika prompt spawn Anda tidak menamai satu. Lihat [bagaimana Claude Code memilih model rekan kerja](#specify-teammates-and-models).277* **`model`**: Claude Code menggunakan `model` definisi di mode tampilan mana pun ketika prompt spawn Anda tidak menamai satu. Lihat [bagaimana Claude Code memilih model rekan kerja](#specify-teammates-and-models).

278* **`disallowedTools`**: untuk rekan kerja dalam proses, Claude Code menghapus tool dalam `disallowedTools` definisi dari kumpulan tool rekan kerja. `SendMessage` dan Task tools yang ditambahkannya tetap tersedia bahkan ketika daftar tersebut menamainya.278* **`disallowedTools`**: untuk rekan kerja dalam proses, Claude Code menghapus tool dalam `disallowedTools` definisi dari kumpulan tool rekan kerja. `SendMessage` dan Task tools yang ditambahkannya tetap tersedia bahkan ketika daftar tersebut menamainya.

279* **`effort`**: untuk rekan kerja dalam proses, Claude Code menerapkan [`effort`](https://code.claude.com/docs/id/sub-agents#supported-frontmatter-fields) definisi di bawah [aturan effort frontmatter](https://code.claude.com/docs/id/model-config.md#set-the-effort-level).279* **`effort`**: untuk rekan kerja dalam proses, Claude Code menerapkan [`effort`](https://code.claude.com/docs/id/sub-agents#supported-frontmatter-fields) definisi di bawah [aturan effort frontmatter](https://code.claude.com/docs/id/model-config.md#set-the-effort-level).

280* **`autoCompactWindow`**: untuk rekan kerja dalam proses, Claude Code menerapkan [`autoCompactWindow`](https://code.claude.com/docs/id/sub-agents#supported-frontmatter-fields) definisi di bawah [aturan bidang tersebut](https://code.claude.com/docs/id/sub-agents.md#subagent-auto-compact-window). Rekan kerja split-pane mengabaikan bidang ini. Memerlukan Claude Code v2.1.296 atau yang lebih baru.280* **`autoCompactWindow`**: untuk rekan kerja dalam proses, Claude Code menerapkan [`autoCompactWindow`](https://code.claude.com/docs/id/sub-agents#supported-frontmatter-fields) definisi di bawah [aturan bidang tersebut](https://code.claude.com/docs/id/sub-agents.md#subagent-auto-compact-window). Rekan kerja split-pane mengabaikan bidang ini. Memerlukan Claude Code v2.1.296 atau yang lebih baru.

281* **Body**: untuk rekan kerja dalam proses, Claude Code menambahkan body definisi ke prompt sistem defaultnya sebagai instruksi tambahan. Untuk rekan kerja split-pane, Claude Code menggunakan body sebagai pengganti prompt sistem defaultnya.281* **Body**: untuk rekan kerja dalam proses, Claude Code menambahkan body definisi ke system prompt defaultnya sebagai instruksi tambahan. Untuk rekan kerja split-pane, Claude Code menggunakan body sebagai pengganti system prompt defaultnya.

282* **`skills`**: Claude Code tidak menerapkan `skills` definisi ke rekan kerja di mode tampilan mana pun. Rekan kerja memuat skills dari pengaturan proyek dan pengguna Anda.282* **`skills`**: Claude Code tidak menerapkan `skills` definisi ke rekan kerja di mode tampilan mana pun. Rekan kerja memuat skills dari pengaturan proyek dan pengguna Anda.

283* **`mcpServers`**: untuk rekan kerja split-pane, Claude Code menerapkan `mcpServers` definisi di bawah [aturan untuk bidang itu](https://code.claude.com/docs/id/sub-agents.md#scope-mcp-servers-to-a-subagent), yang mencakup sesi yang dimulai dengan `--agent` juga. Rekan kerja dalam proses mengabaikan bidang dan memuat server MCP dari pengaturan proyek dan pengguna Anda.283* **`mcpServers`**: untuk rekan kerja split-pane, Claude Code menerapkan `mcpServers` definisi di bawah [aturan untuk bidang itu](https://code.claude.com/docs/id/sub-agents.md#scope-mcp-servers-to-a-subagent), yang mencakup sesi yang dimulai dengan `--agent` juga. Rekan kerja dalam proses mengabaikan bidang dan memuat server MCP dari pengaturan proyek dan pengguna Anda.

284 284 

285Ketika Claude mengirim pesan ke rekan kerja dalam proses yang tidak lagi berjalan, Claude Code membawanya kembali dalam sesi yang sama, memulihkan percakapan apa pun yang disimpan untuknya, dan memberikan pesan sebagai prompt berikutnya. Setelah Anda melanjutkan sesi, rekan kerja tidak dibawa kembali dengan cara ini, per [batasan resume](#limitations).285Ketika Claude mengirim pesan ke rekan kerja dalam proses yang tidak lagi berjalan, Claude Code membawanya kembali dalam sesi yang sama, memulihkan percakapan apa pun yang disimpan untuknya, dan memberikan pesan sebagai prompt berikutnya. Setelah Anda melanjutkan sesi, rekan kerja tidak dibawa kembali dengan cara ini, per [batasan resume](#limitations).

286 286 

287Untuk rekan kerja yang dibawanya kembali, Claude Code menerapkan kembali definisi yang berasal dari direktori `.claude/agents/` proyek atau direktori `--add-dir` hanya jika Anda telah [mempercayai folder tempat file agent berada](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder). Mempercayai folder induk tidak dihitung. Sampai saat itu, rekan kerja kembali tanpa alat atau instruksi definisi apa pun, hanya menyimpan alat yang Claude Code tambahkan ke setiap rekan kerja dalam proses. Lihat [definisi agent rekan kerja tidak dipulihkan](https://code.claude.com/docs/id/errors.md#teammate-agent-definition-not-restored) untuk teks pemberitahuan.287Untuk rekan kerja yang dibawanya kembali, Claude Code menerapkan kembali definisi yang berasal dari direktori `.claude/agents/` proyek atau direktori `--add-dir` hanya jika Anda telah [mempercayai folder tempat file agent berada](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder). Mempercayai folder induk tidak dihitung. Sampai saat itu, rekan kerja kembali tanpa tool atau instruksi definisi apa pun, hanya menyimpan tool yang Claude Code tambahkan ke setiap rekan kerja dalam proses. Lihat [definisi agent rekan kerja tidak dipulihkan](https://code.claude.com/docs/id/errors.md#teammate-agent-definition-not-restored) untuk teks pemberitahuan.

288 288 

289### Izin289### Izin

290 290 


307 307 

308#### Pesan antar agent308#### Pesan antar agent

309 309 

310Ketika satu agent mengirim agent lain pesan melalui `SendMessage`, Claude Code memberi tahu agent penerima bahwa pesan berasal dari sesi Claude lain, bukan dari Anda. Rekan kerja tidak dapat menyetujui prompt izin atau memberikan persetujuan atas nama Anda, dan rekan kerja yang ditolak tindakan tidak dapat menyampaikannya ke rekan kerja lain untuk melewati pemeriksaan. Aturan yang sama berlaku untuk pesan yang tiba dari [salah satu sesi Claude Code lain Anda](https://code.claude.com/docs/id/cross-session-messaging.md#how-a-session-treats-an-incoming-message), di luar tim sepenuhnya.310Ketika satu agent mengirim agent lain pesan melalui `SendMessage`, Claude Code memberi tahu agent penerima bahwa pesan berasal dari sesi Claude lain, bukan dari Anda. Rekan kerja tidak dapat menyetujui permintaan izin atau memberikan persetujuan atas nama Anda, dan rekan kerja yang ditolak tindakan tidak dapat menyampaikannya ke rekan kerja lain untuk melewati pemeriksaan. Aturan yang sama berlaku untuk pesan yang tiba dari [salah satu sesi Claude Code lain Anda](https://code.claude.com/docs/id/cross-session-messaging.md#how-a-session-treats-an-incoming-message), di luar tim sepenuhnya.

311 311 

312Dalam [mode auto](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode), pengklasifikasi menerapkan dua pemeriksaan ke pesan antar agent:312Dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode), pengklasifikasi menerapkan dua pemeriksaan ke pesan antar agent:

313 313 

314* Ini memperlakukan klaim persetujuan yang disalurkan dari agent lain sebagai input yang tidak dipercaya daripada konfirmasi dari Anda.314* Ini memperlakukan klaim persetujuan yang disalurkan dari agent lain sebagai input yang tidak dipercaya daripada konfirmasi dari Anda.

315* Ini meninjau setiap pesan sebelum Claude Code mengirimkannya, baik pesan biasa atau pesan protokol terstruktur seperti permintaan shutdown atau respons persetujuan rencana. Pesan yang diblokir tidak pernah mencapai penerima.315* Ini meninjau setiap pesan sebelum Claude Code mengirimkannya, baik pesan biasa atau pesan protokol terstruktur seperti permintaan shutdown atau respons persetujuan rencana. Pesan yang diblokir tidak pernah mencapai penerima.

316 316 

317### Konteks dan komunikasi317### Konteks dan komunikasi

318 318 

319Setiap rekan kerja memiliki jendela konteksnya sendiri. Ketika diluncurkan, rekan kerja memuat konteks proyek yang sama dengan sesi biasa: CLAUDE.md, server MCP, dan skills. Jika Anda memulai pemimpin dengan [`--setting-sources`](https://code.claude.com/docs/id/cli-reference#cli-flags), rekan kerja memuat dari daftar sumber terbatas yang sama. Sebelum v2.1.281, rekan kerja [split-pane](#choose-a-display-mode) memuat setiap sumber pengaturan.319Setiap rekan kerja memiliki context window sendiri. Ketika diluncurkan, rekan kerja memuat konteks proyek yang sama dengan sesi biasa: CLAUDE.md, server MCP, dan skills. Jika Anda memulai pemimpin dengan [`--setting-sources`](https://code.claude.com/docs/id/cli-reference#cli-flags), rekan kerja memuat dari daftar sumber terbatas yang sama. Sebelum v2.1.281, rekan kerja [split-pane](#choose-a-display-mode) memuat setiap sumber pengaturan.

320 320 

321Rekan kerja juga menerima prompt spawn dari pemimpin. Riwayat percakapan pemimpin tidak terbawa.321Rekan kerja juga menerima prompt spawn dari pemimpin. Riwayat percakapan pemimpin tidak terbawa.

322 322 

323**Cara rekan kerja berbagi informasi:**323**Cara rekan kerja berbagi informasi:**

324 324 

325* **Pengiriman pesan otomatis**: ketika rekan kerja mengirim pesan, mereka disampaikan secara otomatis kepada penerima. Pemimpin tidak perlu menunggu pembaruan.325* **Pengiriman pesan otomatis**: ketika rekan kerja mengirim pesan, mereka disampaikan secara otomatis kepada penerima. Pemimpin tidak perlu menunggu pembaruan.

326* **Notifikasi idle**: ketika rekan kerja selesai dan berhenti, ia secara otomatis memberi tahu pemimpin dan menyertakan jawaban finalnya dalam notifikasi. Rekan kerja yang giliran berakhir pada kesalahan API memberi tahu pemimpin bahwa ia gagal dan menyertakan teks kesalahan.326* **Notifikasi idle**: ketika rekan kerja selesai dan berhenti, ia secara otomatis memberi tahu pemimpin dan menyertakan jawaban finalnya dalam notifikasi. Rekan kerja yang gilirannya berakhir pada kesalahan API memberi tahu pemimpin bahwa ia gagal dan menyertakan teks kesalahan.

327* **Daftar tugas bersama**: [agent yang memiliki Task tools](https://code.claude.com/docs/id/tools-reference.md#task-tool-availability) dapat melihat status tugas dan mengklaim pekerjaan yang tersedia.327* **Daftar tugas bersama**: [agent yang memiliki Task tools](https://code.claude.com/docs/id/tools-reference.md#task-tool-availability) dapat melihat status tugas dan mengklaim pekerjaan yang tersedia.

328* **Pesan rekan kerja**: kirim pesan ke satu rekan kerja spesifik berdasarkan nama. Untuk menjangkau semua orang, kirim satu pesan per penerima.328* **Pesan rekan kerja**: kirim pesan ke satu rekan kerja spesifik berdasarkan nama. Untuk menjangkau semua orang, kirim satu pesan per penerima.

329 329 


331 331 

332### Penggunaan token332### Penggunaan token

333 333 

334Tim agent menggunakan jauh lebih banyak token daripada sesi tunggal. Setiap rekan kerja memiliki jendela konteksnya sendiri, dan penggunaan token diskalakan dengan jumlah rekan kerja aktif. Untuk penelitian, tinjauan, dan pekerjaan fitur baru, token tambahan biasanya berharga. Untuk tugas rutin, sesi tunggal lebih hemat biaya. Lihat [biaya token tim agent](https://code.claude.com/docs/id/costs.md#agent-team-token-costs) untuk panduan penggunaan.334Tim agent menggunakan jauh lebih banyak token daripada sesi tunggal. Setiap rekan kerja memiliki context window sendiri, dan penggunaan token diskalakan dengan jumlah rekan kerja aktif. Untuk penelitian, tinjauan, dan pekerjaan fitur baru, token tambahan biasanya berharga. Untuk tugas sehari-hari, sesi tunggal lebih hemat biaya. Lihat [biaya token tim agent](https://code.claude.com/docs/id/costs.md#agent-team-token-costs) untuk panduan penggunaan.

335 335 

336Permintaan rekan kerja dalam proses berada di luar [cache TTL bucket](https://code.claude.com/docs/id/prompt-caching.md#which-ttl-each-request-gets) percakapan utama, sehingga cache-nya berlaku selama lima menit secara default, termasuk pada langganan Claude. Untuk menyimpannya selama satu jam, atur [`subagentPromptCacheTtl`](https://code.claude.com/docs/id/settings-reference#subagentpromptcachettl) ke `1h`. API menagih penulisan cache 1 jam dengan tarif yang lebih tinggi.336Permintaan rekan kerja dalam proses berada di luar [cache TTL bucket](https://code.claude.com/docs/id/prompt-caching.md#which-ttl-each-request-gets) percakapan utama, sehingga cache-nya berlaku selama lima menit secara default, termasuk pada langganan Claude. Untuk menyimpannya selama satu jam, atur [`subagentPromptCacheTtl`](https://code.claude.com/docs/id/settings-reference#subagentpromptcachettl) ke `1h`. API menagih penulisan cache 1 jam dengan tarif yang lebih tinggi.

337 337 

agent-view.md +0 −2

Details

892 892 

893Perintah ini juga memperingatkan ketika supervisor yang berjalan berada pada versi yang berbeda dari `claude` yang Anda panggil, yang terjadi setelah pembaruan yang belum dimulai ulang oleh supervisor. Peringatan menunjukkan kedua versi dan memberi tahu Anda untuk menjalankan `claude daemon stop --any` untuk mengambil versi baru.893Perintah ini juga memperingatkan ketika supervisor yang berjalan berada pada versi yang berbeda dari `claude` yang Anda panggil, yang terjadi setelah pembaruan yang belum dimulai ulang oleh supervisor. Peringatan menunjukkan kedua versi dan memberi tahu Anda untuk menjalankan `claude daemon stop --any` untuk mengambil versi baru.

894 894 

895Sesi bertahan melalui ketidaksesuaian versi itu utuh: versi Claude Code yang lebih lama yang memperbarui `state.json` sesi menyimpan bidang yang tidak dikenalinya dan membuat sesi tetap terdaftar. Daftar sesi dalam `roster.json` mengikuti aturan yang sama, jadi sesi yang dimulai oleh versi yang lebih baru tetap dapat dijangkau dan terus menerima masukan setelah supervisor dimulai ulang.

896 

897### Matikan tampilan agent895### Matikan tampilan agent

898 896 

899Untuk mematikan agent latar belakang dan tampilan agent sepenuhnya, atur [pengaturan](https://code.claude.com/docs/id/settings.md) `disableAgentView` ke `true` atau atur environment variable `CLAUDE_CODE_DISABLE_AGENT_VIEW`. Administrator dapat memberlakukan ini melalui [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md).897Untuk mematikan agent latar belakang dan tampilan agent sepenuhnya, atur [pengaturan](https://code.claude.com/docs/id/settings.md) `disableAgentView` ke `true` atau atur environment variable `CLAUDE_CODE_DISABLE_AGENT_VIEW`. Administrator dapat memberlakukan ini melalui [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md).

Details

367| `ap-*` | `apac.` |367| `ap-*` | `apac.` |

368| Semua wilayah lainnya | `global.` |368| Semua wilayah lainnya | `global.` |

369 369 

370Atur `ANTHROPIC_BEDROCK_REGION_PREFIX` untuk memilih prefiks yang dicoba Claude Code terlebih dahulu; ketika Claude Code dapat memeriksa ketersediaan profil dan menemukan tidak ada profil yang cocok untuk model, Claude Code kembali seperti yang dijelaskan dalam urutan resolusi di bawah. Nilai yang valid adalah `us`, `eu`, `apac`, `jp`, `au`, dan `global`. Misalnya, atur ke `global` ketika akun Anda memiliki profil `global.` diaktifkan tetapi Claude Code akan menurunkan satu yang spesifik geografis dari wilayah AWS Anda. Memerlukan Claude Code v2.1.224 atau lebih baru.370Atur `ANTHROPIC_BEDROCK_REGION_PREFIX` untuk memilih prefiks yang dicoba Claude Code terlebih dahulu. Nilai yang valid adalah `us`, `eu`, `apac`, `jp`, `au`, dan `global`. Misalnya, atur ke `global` ketika akun Anda memiliki profil `global.` diaktifkan tetapi Claude Code akan menurunkan satu yang spesifik geografis dari wilayah AWS Anda.

371 371 

372Contoh ini merutekan model default melalui profil `global.`:372Contoh ini merutekan model default melalui profil `global.`:

373 373 

artifacts.md +38 −21

Details

31 31 

32Artifact adalah tangkapan pekerjaan: satu halaman mandiri tanpa backend, sehingga tidak dapat melayani beberapa rute. Untuk alat internal yang dihosting dengan backend, sebarkan di infrastruktur Anda sendiri. Lihat [Batasan halaman](#page-constraints) untuk rangkaian lengkap batasan.32Artifact adalah tangkapan pekerjaan: satu halaman mandiri tanpa backend, sehingga tidak dapat melayani beberapa rute. Untuk alat internal yang dihosting dengan backend, sebarkan di infrastruktur Anda sendiri. Lihat [Batasan halaman](#page-constraints) untuk rangkaian lengkap batasan.

33 33 

34## Buat artefak34## Membuat artifact

35 35 

36Claude dapat menerbitkan artefak dengan sendirinya ketika output sesuai untuk halaman, atau Anda dapat memintanya secara langsung. Untuk meminta, sebutkan fitur atau jelaskan output visual yang Anda inginkan dalam bahasa biasa. Kandidat yang baik adalah apa pun yang lebih mudah dilihat daripada dibaca sebagai teks, seperti diff yang diberi anotasi, bagan, atau serangkaian opsi untuk dibandingkan. Prompt di bawah ini adalah dua contoh; lihat [Apa yang dapat Anda buat](#what-you-can-build) untuk pola lainnya.36Claude dapat memublikasikan artifact atas inisiatifnya sendiri ketika output cocok disajikan sebagai halaman, atau Anda dapat memintanya secara langsung. Untuk meminta, sebutkan fitur tersebut atau jelaskan output visual yang Anda inginkan dengan bahasa sederhana. Kandidat yang baik adalah apa pun yang lebih mudah dilihat daripada dibaca sebagai teks, seperti diff beranotasi, grafik, atau serangkaian opsi untuk dibandingkan. Prompt di bawah ini adalah dua contoh; lihat [Apa yang dapat Anda buat](#what-you-can-build) untuk pola lainnya.

37 37 

38```text wrap theme={null}38```text wrap theme={null}

39Make an artifact that walks through this PR with the diff annotated inline.39Make an artifact that walks through this PR with the diff annotated inline.


43Build a dashboard artifact of last week's deploy failures by service and keep it updated as you investigate.43Build a dashboard artifact of last week's deploy failures by service and keep it updated as you investigate.

44```44```

45 45 

46Kecuali Anda menentukan lokasi, Claude menulis halaman ke file HTML atau Markdown di direktori sementara di luar proyek Anda, kemudian menerbitkannya. Artifact tetap pribadi untuk Anda sampai Anda [membagikannya](#share-an-artifact).46Kecuali Anda menyebutkan lokasi, Claude menulis halaman ke file HTML atau Markdown di direktori sementara di luar proyek Anda, lalu memublikasikannya. Artifact tetap bersifat pribadi bagi Anda sampai Anda [membagikannya](#share-an-artifact).

47 47 

48Setelah penerbitan pertama, Claude mencetak URL, dan browser Anda membuka halaman baru.48Setelah publikasi pertama, Claude menampilkan URL, dan browser Anda terbuka ke halaman baru tersebut.

49 49 

50* **Buka kembali halaman**: tekan `Ctrl+]` kapan saja untuk membuka kembali artifact terbaru dari sesi50* **Membuka kembali halaman**: tekan `Ctrl+]` kapan saja untuk membuka kembali artifact terbaru dari sesi tersebut

51* **Lihat artifact sesi ini**: pill `⧉` di bawah prompt menampilkan nama artifact, atau jumlahnya ketika sesi memiliki beberapa artifact. Dalam [fullscreen rendering](https://code.claude.com/docs/id/fullscreen.md), klik pill tersebut untuk membuka daftar [`/artifacts`](#find-an-artifact-again)51* **Melihat artifact sesi ini**: sebuah pill `⧉` di bawah prompt menampilkan nama artifact, atau jumlahnya ketika sesi memiliki beberapa artifact. Dalam [rendering layar penuh](https://code.claude.com/docs/id/fullscreen.md), klik pill tersebut untuk membuka daftar [`/artifacts`](#find-an-artifact-again)

52* **Cegah browser terbuka**: atur `CLAUDE_CODE_ARTIFACT_AUTO_OPEN=0` di lingkungan Anda52* **Mencegah browser terbuka**: atur `CLAUDE_CODE_ARTIFACT_AUTO_OPEN=0` di environment Anda

53* **Remote Control**: jika Anda mengirim prompt melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md) dari claude.ai, Claude Desktop, atau aplikasi Claude mobile, tidak ada tab yang terbuka di mesin yang menjalankan sesi. Browser terbuka di sana lain kali Claude menerbitkan artifact dari prompt yang Anda ketik di terminal53* **Remote Control**: jika Anda mengirim prompt melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md) dari claude.ai, Claude Desktop, atau aplikasi seluler Claude, tidak ada tab yang terbuka di mesin yang menjalankan sesi. Browser terbuka di sana pada saat berikutnya Claude memublikasikan artifact dari prompt yang Anda ketik di terminal

54 54 

55Claude memilih judul artifact dan ikon tab browser yang sesuai dengan isi halaman, seperti bagan atau kalender. Judul muncul di [galeri artifact](#share-an-artifact) Anda di claude.ai dan di tautan bersama. Minta Claude untuk judul atau ikon tab tertentu jika Anda menginginkannya.55Claude memilih judul artifact dan ikon tab browser yang sesuai dengan jenis halamannya, seperti grafik atau kalender. Judul tersebut muncul di [galeri artifact](#share-an-artifact) Anda di claude.ai dan di tautan yang dibagikan. Mintalah judul atau ikon tab tertentu kepada Claude jika Anda menginginkannya.

56 56 

57Jika Claude merespons bahwa ia tidak dapat menerbitkan, atau menulis file HTML lokal tanpa tautan, artifact tidak diaktifkan untuk sesi Anda. Periksa persyaratan [Ketersediaan](#availability). Jika terminal menampilkan `Artifacts need a claude.ai login`, lihat [entri untuk error tersebut](https://code.claude.com/docs/id/errors.md#artifacts-need-a-claude-ai-login) untuk cara masuk.57Jika Claude merespons bahwa ia tidak dapat memublikasikan, atau menulis file HTML lokal tanpa tautan, artifact tidak diaktifkan untuk sesi Anda. Periksa persyaratan [Ketersediaan](#availability). Jika terminal menampilkan `Artifacts need a claude.ai login`, lihat [entri error tersebut](https://code.claude.com/docs/id/errors.md#artifacts-need-a-claude-ai-login) untuk cara masuk.

58 58 

59### Kapan Claude Code bertanya sebelum menerbitkan59### Kapan Claude Code bertanya sebelum memublikasikan

60 60 

61Artifact baru yang Claude terbitkan sebagai respons terhadap prompt yang Anda ketik berjalan tanpa permintaan izin atau tinjauan pengklasifikasi. Dalam kasus-kasus berikut, Claude Code bertanya kepada Anda terlebih dahulu, atau dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) meminta pengklasifikasi meninjau penerbitan tersebut:61Artifact baru yang dipublikasikan Claude sebagai respons atas prompt yang Anda ketik akan diproses tanpa permintaan izin atau peninjauan pengklasifikasi. Dalam kasus-kasus berikut, Claude Code bertanya kepada Anda terlebih dahulu, atau dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) meminta pengklasifikasi meninjau publikasi tersebut:

62 62 

63| Kapan | Apa yang dilakukan Claude Code |63| Kapan | Apa yang dilakukan Claude Code |

64| :- | :- |64| :- | :- |

65| Sesi berada dalam [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode) | Bertanya sebelum penerbitan pertama setiap artifact |65| Sesi berada dalam [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode) | Bertanya sebelum publikasi pertama setiap artifact |

66| Penerbitan mendeklarasikan kemampuan runtime untuk halaman, seperti [panggilan konektor](#pull-live-data-with-mcp-connectors) atau [unduhan file](#offer-a-file-download) | Bertanya sebelum penerbitan tersebut |66| Publikasi mendeklarasikan kapabilitas runtime untuk halaman, seperti [panggilan konektor](#pull-live-data-with-mcp-connectors) atau [unduhan file](#offer-a-file-download) | Bertanya sebelum publikasi tersebut |

67| Anda membagikan artifact secara publik | Bertanya sekali per percakapan sebelum mengubahnya |67| Anda membagikan artifact secara publik | Bertanya sekali per percakapan sebelum mengubahnya, dan sebelum setiap balasan atas komentar padanya |

68| Claude menerbitkan dalam giliran yang dimulai oleh [tugas terjadwal berlingkup sesi](https://code.claude.com/docs/id/scheduled-tasks.md) yang berjalan di sesi Anda, bukan oleh prompt yang Anda ketik | Bertanya sebelum penerbitan pertama setiap artifact |68| Claude memublikasikan dalam giliran yang dimulai oleh [tugas terjadwal cakupan sesi](https://code.claude.com/docs/id/scheduled-tasks.md) yang berjalan di sesi Anda, bukan oleh prompt yang Anda ketik | Bertanya sebelum publikasi pertama setiap artifact |

69| Claude tidak dapat membaca file tanpa persetujuan Anda | Bertanya sebelum menerbitkannya. Aturan izin allow untuk tool `Artifact` tidak melewati permintaan ini |69| Claude tidak dapat membaca file tanpa persetujuan Anda | Bertanya sebelum memublikasikannya. Aturan allow untuk tool `Artifact` tidak melewati permintaan izin ini |

70| Dalam mode [Manual](https://code.claude.com/docs/id/permission-modes.md) atau `acceptEdits`, Claude membuat perubahan kecil pada file artifact yang tidak dapat ia edit tanpa persetujuan Anda, seperti file proyek dalam mode Manual | Bertanya sebelum menerbitkan perubahan tersebut. Anda tetap ditanya meskipun aturan izin allow mencakup tool `Artifact`, karena edit pada file tersebut memerlukan persetujuan Anda |70| Dalam mode [Manual](https://code.claude.com/docs/id/permission-modes.md) atau `acceptEdits`, Claude membuat perubahan kecil pada file artifact yang tidak dapat diedit tanpa persetujuan Anda, seperti file proyek dalam mode Manual | Bertanya sebelum memublikasikan perubahan tersebut. Anda tetap ditanya meskipun aturan allow mencakup tool `Artifact`, karena pengeditan file tersebut memerlukan persetujuan Anda |

71 71 

72Agar Claude dapat membaca file di luar [direktori kerja](https://code.claude.com/docs/id/permissions.md#working-directories) Anda tanpa persetujuan Anda, tambahkan foldernya sebagai direktori kerja dengan [`--add-dir`](https://code.claude.com/docs/id/cli-reference#cli-flags) saat peluncuran atau `/add-dir` selama sesi. Claude sudah membaca file di direktori tersebut, dan di direktori sementara tempat ia menulis halaman, tanpa bertanya.72Untuk mengizinkan Claude membaca file di luar [direktori kerja](https://code.claude.com/docs/id/permissions.md#working-directories) Anda tanpa persetujuan Anda, tambahkan foldernya sebagai direktori kerja dengan [`--add-dir`](https://code.claude.com/docs/id/cli-reference#cli-flags) saat peluncuran atau `/add-dir` selama sesi. Claude sudah membaca file di direktori tersebut, dan di direktori sementara tempat ia menulis halaman, tanpa bertanya.

73 73 

74Jika permintaan izin penerbitan menyertakan kalimat seperti `Also makes 1 edit to that file on disk.`, Claude sedang mengubah file artifact dan menerbitkannya dalam satu langkah. Ketika Anda menyetujui permintaan tersebut, Claude Code menerbitkan halaman, kemudian menulis perubahan ke file Anda.74Jika permintaan izin publikasi menyertakan kalimat seperti `Also makes 1 edit to that file on disk.`, Claude mengubah file artifact dan memublikasikannya dalam satu langkah. Ketika Anda menyetujui permintaan tersebut, Claude Code memublikasikan halaman, lalu menulis perubahan ke file Anda.

75 75 

76## Perbarui artefak76## Perbarui artefak

77 77 


89Perbarui https://claude.ai/code/artifact/5fbea6f3-... dengan angka hari ini.89Perbarui https://claude.ai/code/artifact/5fbea6f3-... dengan angka hari ini.

90```90```

91 91 

92### Matikan pembaruan artifact satu langkah

93 

94Pembaruan satu langkah adalah perubahan kecil yang dibuat Claude pada file artifact sebagai bagian dari penerbitan, alih-alih melalui panggilan `Edit` atau `Write`.

95 

96Untuk mematikan pembaruan satu langkah, atur [`CLAUDE_CODE_ARTIFACT_PUBLISH_EDITS`](https://code.claude.com/docs/id/env-vars) ke `0`. Contoh ini menambahkan variabel ke blok `env` di `~/.claude/settings.json`:

97 

98```json theme={null}

99{

100 "env": {

101 "CLAUDE_CODE_ARTIFACT_PUBLISH_EDITS": "0"

102 }

103}

104```

105 

106Kemudian keluar dan jalankan ulang Claude Code, karena sesi yang sedang berjalan tidak membaca ulang variabel tersebut.

107 

92## Temukan artefak lagi108## Temukan artefak lagi

93 109 

94Jalankan `/artifacts` di Claude Code untuk membuat daftar artifact yang Anda miliki dan artifact yang dibagikan kepada Anda. Artifact dari sesi saat ini ditampilkan terlebih dahulu, di bawah **This session**.110Jalankan `/artifacts` di Claude Code untuk membuat daftar artifact yang Anda miliki dan artifact yang dibagikan kepada Anda. Artifact dari sesi saat ini ditampilkan terlebih dahulu, di bawah **This session**.


111Siapa yang dapat Anda bagikan tergantung pada paket Anda:127Siapa yang dapat Anda bagikan tergantung pada paket Anda:

112 128 

113* **Dalam organisasi Anda**: pada paket Team dan Enterprise, berikan akses ke orang-orang tertentu di organisasi Anda, atau ke semua orang di dalamnya. Penampil masuk ke claude.ai sebagai anggota organisasi Anda untuk melihat halaman.129* **Dalam organisasi Anda**: pada paket Team dan Enterprise, berikan akses ke orang-orang tertentu di organisasi Anda, atau ke semua orang di dalamnya. Penampil masuk ke claude.ai sebagai anggota organisasi Anda untuk melihat halaman.

130* **Orang yang memiliki akses ke folder bersama**: pada paket Team dan Enterprise, pindahkan artifact ke folder yang Anda miliki atau tempat Anda menjadi editor. Pindahkan dari [halaman Artifacts](https://claude.ai/artifacts), yang tersedia jika Anda dapat menggunakan chat claude.ai. Semua orang yang memiliki akses ke folder tersebut kemudian dapat membukanya, dan pemilik serta editor folder dapat mengubahnya.

114* **Secara publik**: bagikan tautan yang dapat dibuka siapa saja di internet, tanpa memerlukan masuk claude.ai. Pada paket Team dan Enterprise, berbagi publik dimatikan sampai Pemilik [mengaktifkannya untuk organisasi](#control-public-sharing).131* **Secara publik**: bagikan tautan yang dapat dibuka siapa saja di internet, tanpa memerlukan masuk claude.ai. Pada paket Team dan Enterprise, berbagi publik dimatikan sampai Pemilik [mengaktifkannya untuk organisasi](#control-public-sharing).

115 132 

116### Tautkan ke tampilan tertentu133### Tautkan ke tampilan tertentu


178[Mode izin](https://code.claude.com/docs/id/permission-modes.md) Anda menentukan apa yang dilakukan Claude ketika komentar yang dikirim tiba:195[Mode izin](https://code.claude.com/docs/id/permission-modes.md) Anda menentukan apa yang dilakukan Claude ketika komentar yang dikirim tiba:

179 196 

180* **Claude membalas dengan sendirinya**: jika Anda berada dalam mode izin yang memungkinkan Claude memposting balasan tanpa meminta Anda, Claude membaca thread dan membalas. Anda melihat `Auto-replied to comment thread on Artifact: <name>`.197* **Claude membalas dengan sendirinya**: jika Anda berada dalam mode izin yang memungkinkan Claude memposting balasan tanpa meminta Anda, Claude membaca thread dan membalas. Anda melihat `Auto-replied to comment thread on Artifact: <name>`.

181* **Claude menunggu Anda**: di luar plan mode, ketika memposting balasan memerlukan persetujuan Anda, Anda melihat `Comments are waiting on Artifact: <name>`. Claude kemudian meminta persetujuan Anda untuk membaca thread, dan lagi untuk memposting balasan.198* **Claude menunggu Anda**: di luar plan mode, ketika memposting balasan [akan memerlukan persetujuan Anda](#when-claude-code-asks-before-publishing), Anda melihat `Comments are waiting on Artifact: <name>`. Claude kemudian meminta persetujuan Anda untuk membaca thread, dan lagi untuk memposting balasan.

182* **Claude berhenti di plan mode**: Anda melihat `Comments are waiting on Artifact: <name>`, dan Claude tidak membalas sampai Anda meninggalkan plan mode dan memintanya membaca dan membalas.199* **Claude berhenti di plan mode**: Anda melihat `Comments are waiting on Artifact: <name>`, dan Claude tidak membalas sampai Anda meninggalkan plan mode dan memintanya membaca dan membalas.

183 200 

184Claude juga berhenti membalas dengan sendirinya ke artefak setelah menangani 60 komentar yang dikirim atau aktivasi thread pada artefak tersebut dalam satu jam. Anda melihat `Comments are waiting on Artifact: <name>` sekali, dan Claude melanjutkan lagi saat komentar jam itu sudah lama.201Claude juga berhenti membalas dengan sendirinya ke artefak setelah menangani 60 komentar yang dikirim atau aktivasi thread pada artefak tersebut dalam satu jam. Anda melihat `Comments are waiting on Artifact: <name>` sekali, dan Claude melanjutkan lagi saat komentar jam itu sudah lama.

Details

34* **Permintaan**: agar pemeriksaan dapat lolos, gateway meneruskan header `anthropic-beta` dan bidang badan `safeguards` tanpa perubahan, karena [keduanya berjalan sebagai pasangan](https://code.claude.com/docs/id/llm-gateway-protocol.md#beta-header-and-body-field-pairs). Pada [format InvokeModel Amazon Bedrock](https://code.claude.com/docs/id/llm-gateway-protocol.md#api-formats), gateway meneruskan bidang badan `anthropic_beta` sebagai pengganti header.34* **Permintaan**: agar pemeriksaan dapat lolos, gateway meneruskan header `anthropic-beta` dan bidang badan `safeguards` tanpa perubahan, karena [keduanya berjalan sebagai pasangan](https://code.claude.com/docs/id/llm-gateway-protocol.md#beta-header-and-body-field-pairs). Pada [format InvokeModel Amazon Bedrock](https://code.claude.com/docs/id/llm-gateway-protocol.md#api-formats), gateway meneruskan bidang badan `anthropic_beta` sebagai pengganti header.

35* **Respons**: gateway mengembalikan respons dan acara streaming tanpa menghapus bidang atau menulis ulang ID penggunaan alat. Agar hasil pemeriksaan dapat lolos, gateway mempertahankan bidang `safeguard_results`.35* **Respons**: gateway mengembalikan respons dan acara streaming tanpa menghapus bidang atau menulis ulang ID penggunaan alat. Agar hasil pemeriksaan dapat lolos, gateway mempertahankan bidang `safeguard_results`.

36 36 

37Gateway yang meneruskan lalu lintas dengan cara ini terus bekerja dengan fitur ini dan dengan fitur mendatang. Sesi baru kemudian menggunakan pemeriksaan server lagi.37Setelah gateway Anda melakukan hal ini, sesi baru menggunakan pemeriksaan server lagi.

38 38 

39Jika Anda sudah tahu bahwa gateway Anda tidak dapat menyediakan pemeriksaan server, beri tahu Claude Code untuk tidak memintanya di sana dengan menetapkan `CLAUDE_CODE_AUTO_MODE_SERVER` ke `0` sebelum Anda memulai sesi, di shell Anda atau di [kunci pengaturan `env`](https://code.claude.com/docs/id/settings-reference#env):39Jika Anda sudah tahu bahwa gateway Anda tidak dapat menyediakan pemeriksaan server, beri tahu Claude Code untuk tidak memintanya di sana dengan menetapkan `CLAUDE_CODE_AUTO_MODE_SERVER` ke `0` sebelum Anda memulai sesi, di shell Anda atau di [kunci pengaturan `env`](https://code.claude.com/docs/id/settings-reference#env):

40 40 

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# Konfigurasi mode otomatis5# Mengonfigurasi auto mode

6 6 

7> Beri tahu pengklasifikasi mode otomatis repositori, bucket, dan domain mana yang dipercaya organisasi Anda. Atur konteks lingkungan, ganti aturan blokir dan izin default, dan periksa konfigurasi efektif Anda dengan subperintah CLI mode otomatis.7> Beri tahu pengklasifikasi auto mode repo, bucket, dan domain mana yang dipercaya organisasi Anda. Tetapkan konteks lingkungan, timpa aturan block dan allow default, serta periksa konfigurasi efektif Anda dengan subperintah CLI auto-mode.

8 8 

9[Mode otomatis](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) memungkinkan Claude Code berjalan tanpa permintaan izin rutin dengan merutekan panggilan alat melalui pengklasifikasi yang memblokir apa pun yang tidak dapat dibalikkan, merusak, atau ditujukan di luar lingkungan Anda. Aturan penolakan dan permintaan eksplisit dievaluasi sebelum pengklasifikasi dan masih memblokir atau meminta. Gunakan blok pengaturan `autoMode` untuk memberi tahu pengklasifikasi tersebut repositori, bucket, dan domain mana yang dipercaya organisasi Anda, sehingga berhenti memblokir operasi internal rutin.9[Auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) memungkinkan Claude Code berjalan tanpa permintaan izin rutin dengan mengarahkan panggilan tool melalui pengklasifikasi yang memblokir apa pun yang tidak dapat dibatalkan, destruktif, atau ditujukan ke luar lingkungan Anda. Aturan deny dan aturan ask eksplisit dievaluasi sebelum pengklasifikasi dan tetap memblokir atau memunculkan permintaan izin. Gunakan blok pengaturan `autoMode` untuk memberi tahu pengklasifikasi tersebut repo, bucket, dan domain mana yang dipercaya organisasi Anda, sehingga pengklasifikasi berhenti memblokir operasi internal yang rutin.

10 10 

11> [!NOTE]11> [!NOTE]

12>12>

13> Halaman ini adalah referensi konfigurasi. Mengaktifkan dan menonaktifkan mode otomatis tercakup di halaman Permission modes:13> Halaman ini adalah referensi konfigurasi. Cara mengaktifkan dan menonaktifkan auto mode dibahas di halaman Mode izin:

14>14>

15> * **Beralih ke mode otomatis di tengah sesi, atau keluar darinya**: lihat [Switch permission modes](https://code.claude.com/docs/id/permission-modes.md#switch-permission-modes)15> * **Beralih ke auto mode di tengah sesi, atau keluar darinya**: lihat [Beralih mode izin](https://code.claude.com/docs/id/permission-modes.md#switch-permission-modes)

16> * **Mulai sesi dalam mode otomatis**: lihat [Start in a different permission mode](https://code.claude.com/docs/id/permission-modes.md#start-in-a-different-mode)16> * **Memulai sesi dalam auto mode**: lihat [Memulai dalam mode izin yang berbeda](https://code.claude.com/docs/id/permission-modes.md#start-in-a-different-mode)

17 17 

18Mode otomatis tersedia untuk semua pengguna di setiap penyedia, termasuk Anthropic API, [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi [gateway aplikasi Claude](https://code.claude.com/docs/id/claude-apps-gateway) yang masuk. Jika Claude Code melaporkan mode otomatis tidak tersedia untuk akun Anda, periksa [persyaratan lengkap](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode), yang juga mencakup model yang didukung dan kontrol tingkat organisasi pada paket Tim dan Enterprise.18Auto mode tersedia untuk semua pengguna di setiap penyedia, termasuk Anthropic API, [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, dan sesi [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway) yang sudah masuk. Jika Claude Code melaporkan auto mode tidak tersedia untuk akun Anda, periksa [persyaratan lengkap](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode), yang juga mencakup model yang didukung dan kontrol tingkat organisasi pada paket Team dan Enterprise.

19 19 

20Secara default, pengklasifikasi hanya mempercayai direktori kerja dan remote yang dikonfigurasi dari repositori saat ini. Tindakan seperti mendorong ke organisasi kontrol sumber perusahaan Anda atau menulis ke bucket cloud tim diblokir sampai Anda menambahkannya ke `autoMode.environment`.20Secara default, pengklasifikasi hanya memercayai direktori kerja dan remote yang dikonfigurasi untuk repo saat ini. Tindakan seperti melakukan push ke organisasi source control perusahaan Anda atau menulis ke bucket cloud tim akan diblokir hingga Anda menambahkannya ke `autoMode.environment`.

21 21 

22Halaman ini mencakup cara:22Halaman ini membahas cara:

23 23 

24* [Tambahkan checkpoint manusia](#add-a-human-checkpoint) untuk push dan pull request dengan `permissions.ask`24* [Menambahkan checkpoint manusia](#add-a-human-checkpoint) untuk push dan pull request dengan `permissions.ask`

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

26* [Hasilkan entri lingkungan](#generate-environment-entries) dengan `/auto-mode-setup`26* [Menghasilkan entri environment](#generate-environment-entries) dengan `/auto-mode-setup`

27* [Tinjau penolakan](#review-denials) sehingga Anda tahu apa yang harus ditambahkan selanjutnya27* [Meninjau penolakan](#review-denials) agar Anda tahu apa yang perlu ditambahkan berikutnya

28 28 

29## Batas-batas umum29## Batas-batas umum

30 30 


59 59 

60## Tempat pengklasifikasi membaca konfigurasi60## Tempat pengklasifikasi membaca konfigurasi

61 61 

62Pengklasifikasi membaca konten [CLAUDE.md](https://code.claude.com/docs/id/memory.md) yang sama yang dimuat Claude sendiri, jadi instruksi seperti "jangan pernah force push" di CLAUDE.md proyek Anda mengarahkan Claude dan pengklasifikasi secara bersamaan. Mulai dari sana untuk konvensi proyek dan aturan perilaku.62Pengklasifikasi membaca konten [CLAUDE.md](https://code.claude.com/docs/id/memory.md) yang sama dengan yang dimuat oleh Claude sendiri, sehingga instruksi seperti "jangan pernah melakukan force push" dalam CLAUDE.md proyek Anda mengarahkan Claude dan pengklasifikasi secara bersamaan. Mulailah dari sana untuk konvensi proyek dan aturan perilaku.

63 63 

64Untuk aturan yang berlaku di seluruh proyek, seperti infrastruktur terpercaya atau aturan penolakan di tingkat organisasi, gunakan blok pengaturan `autoMode`. Pengklasifikasi membaca `autoMode` dari cakupan berikut:64Untuk aturan yang berlaku lintas proyek, seperti infrastruktur tepercaya atau aturan deny untuk seluruh organisasi, gunakan blok pengaturan `autoMode`. Pengklasifikasi membaca `autoMode` dari cakupan berikut:

65 65 

66| Cakupan | File | Gunakan untuk |66| Cakupan | File | Digunakan untuk |

67| :- | :- | :- |67| :- | :- | :- |

68| Satu pengembang | `~/.claude/settings.json` | Infrastruktur terpercaya pribadi |68| Satu developer | `~/.claude/settings.json` | Infrastruktur tepercaya pribadi |

69| Di seluruh organisasi | [Pengaturan terkelola](https://code.claude.com/docs/id/server-managed-settings.md) | Infrastruktur terpercaya yang didistribusikan ke semua pengembang |69| Seluruh organisasi | [Pengaturan terkelola](https://code.claude.com/docs/id/server-managed-settings.md) | Infrastruktur tepercaya yang didistribusikan ke semua developer |

70| Bendera `--settings` atau Agent SDK | JSON inline | Penggantian per-invokasi untuk otomasi |70| Flag `--settings` atau Agent SDK | JSON inline | Override per pemanggilan untuk otomatisasi |

71 71 

72Pengklasifikasi tidak membaca `autoMode` dari pengaturan proyek di `.claude/settings.json` atau `.claude/settings.local.json`. Kedua file berada di direktori repo, jadi repo yang diperiksa atau langkah build dapat sebaliknya menyuntikkan aturan izinnya sendiri. Pindahkan blok `autoMode` apa pun di `.claude/settings.local.json` ke `~/.claude/settings.json`.72Pengklasifikasi tidak membaca `autoMode` dari pengaturan proyek di `.claude/settings.json` atau `.claude/settings.local.json`. Kedua file tersebut berada di direktori repo, sehingga repo yang di-check-in atau langkah build dapat menyisipkan aturan allow miliknya sendiri. Pindahkan blok `autoMode` apa pun di `.claude/settings.local.json` ke `~/.claude/settings.json`.

73 73 

74Entri dari setiap cakupan digabungkan. Pengembang dapat memperluas `environment`, `allow`, `soft_deny`, dan `hard_deny` dengan entri pribadi tetapi tidak dapat menghapus entri yang disediakan pengaturan terkelola. Karena aturan izin bertindak sebagai pengecualian untuk aturan blok lunak di dalam pengklasifikasi, entri `allow` yang ditambahkan pengembang dapat mengganti entri `soft_deny` organisasi: kombinasinya bersifat aditif, bukan batas kebijakan keras.74Entri dari setiap cakupan digabungkan. Seorang developer dapat memperluas `environment`, `allow`, `soft_deny`, dan `hard_deny` dengan entri pribadi, tetapi tidak dapat menghapus entri yang disediakan oleh pengaturan terkelola. Karena aturan allow bertindak sebagai pengecualian terhadap aturan soft block di dalam pengklasifikasi, entri `allow` yang ditambahkan developer dapat menimpa entri `soft_deny` organisasi: penggabungannya bersifat aditif, bukan batas kebijakan yang ketat.

75 75 

76> [!NOTE]76> [!NOTE]

77>77>

78> Pengklasifikasi adalah gerbang kedua yang berjalan setelah [sistem izin](https://code.claude.com/docs/id/permissions.md). Untuk tindakan yang tidak boleh pernah berjalan terlepas dari niat pengguna atau konfigurasi pengklasifikasi, gunakan `permissions.deny` dalam pengaturan terkelola, yang memblokir tindakan sebelum pengklasifikasi dikonsultasikan dan tidak dapat ditimpa.78> Pengklasifikasi adalah gerbang kedua yang berjalan setelah [sistem izin](https://code.claude.com/docs/id/permissions.md). Untuk tindakan yang tidak boleh dijalankan sama sekali terlepas dari maksud pengguna atau konfigurasi pengklasifikasi, gunakan `permissions.deny` dalam pengaturan terkelola, yang memblokir tindakan tersebut sebelum pengklasifikasi dikonsultasikan dan tidak dapat ditimpa.

79 79 

80## Tentukan infrastruktur terpercaya80## Tentukan infrastruktur terpercaya

81 81 


180 180 

181Claude Code memindai di latar belakang, lalu menampilkan draf kepada Anda. Anda menerima atau membuang draf tersebut secara keseluruhan, jadi edit `~/.claude/settings.json` setelahnya untuk menyesuaikan entri satu per satu. Saat Anda menerimanya, Claude Code menuliskan draf dan menyelaraskannya dengan pengaturan yang sudah Anda miliki:181Claude Code memindai di latar belakang, lalu menampilkan draf kepada Anda. Anda menerima atau membuang draf tersebut secara keseluruhan, jadi edit `~/.claude/settings.json` setelahnya untuk menyesuaikan entri satu per satu. Saat Anda menerimanya, Claude Code menuliskan draf dan menyelaraskannya dengan pengaturan yang sudah Anda miliki:

182 182 

183* Claude Code menulis daftar `environment` tanpa `"$defaults"`, karena draf tersebut menuliskan secara eksplisit entri bawaan yang dibiarkannya tidak berubah183* Jika Anda memilih untuk menambahkan ke daftar `environment` di `~/.claude/settings.json`, Anda tetap mempertahankan entri `"$defaults"` apa pun di dalamnya. Jika Anda memilih untuk mengganti daftar tersebut, Anda kehilangan entri itu, jadi tambahkan kembali `"$defaults"` jika Anda menginginkan entri bawaan

184* Claude Code menyertakan `"$defaults"` di setiap daftar `allow`, `soft_deny`, dan `hard_deny` yang ditambahi entri oleh draf, kecuali Anda sudah menulis daftar `allow` tanpanya, sehingga [aturan bawaan](#override-the-block-and-allow-rules) yang belum Anda ganti tetap berlaku184* Claude Code menyertakan `"$defaults"` di setiap daftar `allow`, `soft_deny`, dan `hard_deny` yang ditambahi entri oleh draf, kecuali Anda sudah menulis daftar `allow` tanpanya, sehingga [aturan bawaan](#override-the-block-and-allow-rules) yang belum Anda ganti tetap berlaku

185* Setelah menyimpan, Claude Code menawarkan untuk menghapus aturan `permissions.allow` di `~/.claude/settings.json` yang diabaikan oleh auto mode, seperti `Bash(*)`, atau yang menyetujui perintah destruktif secara otomatis185* Setelah menyimpan, Claude Code menawarkan untuk menghapus aturan `permissions.allow` di `~/.claude/settings.json` yang diabaikan oleh auto mode, seperti `Bash(*)`, atau yang menyetujui perintah destruktif secara otomatis

186 186 


216 216 

217Tiga bidang tambahan memungkinkan Anda mengganti daftar aturan bawaan pengklasifikasi:217Tiga bidang tambahan memungkinkan Anda mengganti daftar aturan bawaan pengklasifikasi:

218 218 

219* `autoMode.hard_deny`: batas keamanan tanpa syarat219* `autoMode.hard_deny`: tindakan yang diblokir bahkan ketika pengguna memintanya

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

221* `autoMode.allow`: pengecualian untuk aturan blokir soft221* `autoMode.allow`: pengecualian untuk aturan blokir soft

222 222 


231 231 

232Permintaan umum tidak dihitung sebagai niat eksplisit. Meminta Claude untuk "membersihkan repo" tidak mengotorisasi force-push, tetapi meminta Claude untuk "force-push cabang ini" melakukannya.232Permintaan umum tidak dihitung sebagai niat eksplisit. Meminta Claude untuk "membersihkan repo" tidak mengotorisasi force-push, tetapi meminta Claude untuk "force-push cabang ini" melakukannya.

233 233 

234Untuk melonggarkan, tambahkan ke `allow` ketika pengklasifikasi berulang kali menandai pola rutin yang pengecualian default tidak cover. Untuk mengencangkan, tambahkan ke `soft_deny` untuk risiko destruktif spesifik lingkungan Anda yang default lewatkan, atau ke `hard_deny` untuk batas keamanan yang tidak boleh pernah dilintasi.234Untuk melonggarkan, tambahkan ke `allow` ketika pengklasifikasi berulang kali menandai pola umum yang tidak dicakup oleh pengecualian default. Untuk mengencangkan, tambahkan ke `soft_deny` untuk risiko destruktif spesifik lingkungan Anda yang default lewatkan, atau ke `hard_deny` untuk tindakan yang diblokir bahkan ketika pengguna memintanya.

235 235 

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

237 237 


252 "soft_deny": [252 "soft_deny": [

253 "$defaults",253 "$defaults",

254 "Never run database migrations outside the migrations CLI, even against dev databases",254 "Never run database migrations outside the migrations CLI, even against dev databases",

255 "Never modify files under infra/terraform/prod/: production infrastructure changes go through the review workflow"255 "Running terraform apply in infra/terraform/prod/ needs an explicit request: production infrastructure changes go through the review workflow"

256 ],256 ],

257 "hard_deny": [257 "hard_deny": [

258 "$defaults",258 "$defaults",


412 412 

413## Lihat juga413## Lihat juga

414 414 

415* [Mode izin](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode): apa itu mode otomatis, apa yang diblokir secara default, dan sesi mana yang dimulai di dalamnya415* [Mode izin](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode): apa itu auto mode, apa yang diblokirnya secara default, dan sesi mana yang dimulai dalam mode tersebut

416* [Pengaturan terkelola](https://code.claude.com/docs/id/server-managed-settings.md): terapkan konfigurasi `autoMode` di seluruh organisasi Anda416* [Pengaturan terkelola](https://code.claude.com/docs/id/server-managed-settings.md): menerapkan konfigurasi `autoMode` di seluruh organisasi Anda

417* [Izin](https://code.claude.com/docs/id/permissions.md): aturan izinkan, tanya, dan tolak yang berlaku sebelum pengklasifikasi berjalan417* [Izin](https://code.claude.com/docs/id/permissions.md): aturan allow, ask, dan deny yang berlaku sebelum pengklasifikasi berjalan

418* [Semua pengaturan](https://code.claude.com/docs/id/settings-reference.md#automode): setiap kunci pengaturan, termasuk `autoMode`418* [Semua pengaturan](https://code.claude.com/docs/id/settings-reference.md#automode): setiap kunci pengaturan, termasuk `autoMode`

Details

213 tools: {}, // hilangkan untuk channels satu arah213 tools: {}, // hilangkan untuk channels satu arah

214 },214 },

215 // Claude Code menyampaikan ini ke Claude sebagai konteks ketika server terhubung, sehingga tahu cara menangani event Anda215 // Claude Code menyampaikan ini ke Claude sebagai konteks ketika server terhubung, sehingga tahu cara menangani event Anda

216 instructions: 'Messages tiba sebagai <channel source="your-channel" ...>. Balas dengan tool balasan.',216 instructions: 'Messages arrive as <channel source="your-channel" ...>. Reply with the reply tool.',

217 },217 },

218)218)

219```219```


286mcp.setRequestHandler(ListToolsRequestSchema, async () => ({286mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

287 tools: [{287 tools: [{

288 name: 'reply',288 name: 'reply',

289 description: 'Kirim pesan kembali melalui channel ini',289 description: 'Send a message back over this channel',

290 // inputSchema memberi tahu Claude argumen apa yang harus diteruskan290 // inputSchema memberi tahu Claude argumen apa yang harus diteruskan

291 inputSchema: {291 inputSchema: {

292 type: 'object',292 type: 'object',

293 properties: {293 properties: {

294 chat_id: { type: 'string', description: 'Percakapan untuk membalas' },294 chat_id: { type: 'string', description: 'The conversation to reply in' },

295 text: { type: 'string', description: 'Pesan untuk dikirim' },295 text: { type: 'string', description: 'The message to send' },

296 },296 },

297 required: ['chat_id', 'text'],297 required: ['chat_id', 'text'],

298 },298 },


317Perbarui string `instructions` dalam konstruktor `Server` Anda sehingga Claude tahu merutekan balasan kembali melalui tool. Contoh ini memberi tahu Claude untuk melewatkan `chat_id` dari tag inbound:317Perbarui string `instructions` dalam konstruktor `Server` Anda sehingga Claude tahu merutekan balasan kembali melalui tool. Contoh ini memberi tahu Claude untuk melewatkan `chat_id` dari tag inbound:

318 318 

319```ts theme={null}319```ts theme={null}

320instructions: 'Messages tiba sebagai <channel source="webhook" chat_id="...">. Balas dengan tool balasan, melewatkan chat_id dari tag.'320instructions: 'Messages arrive as <channel source="webhook" chat_id="...">. Reply with the reply tool, passing the chat_id from the tag.'

321```321```

322 322 

323Berikut adalah `webhook.ts` lengkap dengan dukungan dua arah. Balasan outbound mengalir melalui `GET /events` menggunakan [Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) (SSE), jadi `curl -N localhost:8788/events` dapat menontonnya secara langsung; chat inbound tiba di `POST /`:323Berikut adalah `webhook.ts` lengkap dengan dukungan dua arah. Balasan outbound mengalir melalui `GET /events` menggunakan [Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) (SSE), jadi `curl -N localhost:8788/events` dapat menontonnya secara langsung; chat inbound tiba di `POST /`:

324 324 

325```ts title="Full webhook.ts with reply tool' expandable theme={null}325```ts title="Full webhook.ts with reply tool" expandable theme={null}

326#!/usr/bin/env bun326#!/usr/bin/env bun

327import { Server } from '@modelcontextprotocol/sdk/server/index.js'327import { Server } from '@modelcontextprotocol/sdk/server/index.js'

328import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'328import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'


343 experimental: { 'claude/channel': {} },343 experimental: { 'claude/channel': {} },

344 tools: {},344 tools: {},

345 },345 },

346 instructions: 'Messages tiba sebagai <channel source="webhook" chat_id="...">. Balas dengan tool balasan, melewatkan chat_id dari tag.',346 instructions: 'Messages arrive as <channel source="webhook" chat_id="...">. Reply with the reply tool, passing the chat_id from the tag.',

347 },347 },

348)348)

349 349 

350mcp.setRequestHandler(ListToolsRequestSchema, async () => ({350mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

351 tools: [{351 tools: [{

352 name: 'reply',352 name: 'reply',

353 description: 'Kirim pesan kembali melalui channel ini',353 description: 'Send a message back over this channel',

354 inputSchema: {354 inputSchema: {

355 type: 'object',355 type: 'object',

356 properties: {356 properties: {

357 chat_id: { type: 'string', description: 'Percakapan untuk membalas' },357 chat_id: { type: 'string', description: 'The conversation to reply in' },

358 text: { type: 'string', description: 'Pesan untuk dikirim' },358 text: { type: 'string', description: 'The message to send' },

359 },359 },

360 required: ['chat_id', 'text'],360 required: ['chat_id', 'text'],

361 },361 },


534 // send() adalah outbound Anda: POST ke platform chat Anda, atau untuk pengujian lokal534 // send() adalah outbound Anda: POST ke platform chat Anda, atau untuk pengujian lokal

535 // broadcast SSE yang ditunjukkan dalam contoh lengkap di bawah.535 // broadcast SSE yang ditunjukkan dalam contoh lengkap di bawah.

536 send(536 send(

537 `Claude ingin menjalankan ${params.tool_name}: ${params.description}\n` +537 `Claude wants to run ${params.tool_name}: ${params.description}\n` +

538 // input_preview membawa argumen aktual; render ketika Anda538 // input_preview membawa argumen aktual; render ketika Anda

539 // memiliki ruang: untuk Bash deskripsi saja mungkin hanya539 // memiliki ruang: untuk Bash deskripsi saja mungkin hanya

540 // "Run shell command" dengan nol detail perintah540 // "Run shell command" dengan nol detail perintah

541 `${params.input_preview}\n\n` +541 `${params.input_preview}\n\n` +

542 // ID dalam instruksi adalah apa yang diuraikan handler inbound Anda dalam Langkah 3542 // ID dalam instruksi adalah apa yang diuraikan handler inbound Anda dalam Langkah 3

543 `Balas "yes ${params.request_id}" atau "no ${params.request_id}"`,543 `Reply "yes ${params.request_id}" or "no ${params.request_id}"`,

544 )544 )

545})545})

546```546```


627 tools: {},627 tools: {},

628 },628 },

629 instructions:629 instructions:

630 'Pesan tiba sebagai <channel source="webhook" chat_id="...">. ' +630 'Messages arrive as <channel source="webhook" chat_id="...">. ' +

631 'Balas dengan tool balasan, melewatkan chat_id dari tag.',631 'Reply with the reply tool, passing the chat_id from the tag.',

632 },632 },

633)633)

634 634 


636mcp.setRequestHandler(ListToolsRequestSchema, async () => ({636mcp.setRequestHandler(ListToolsRequestSchema, async () => ({

637 tools: [{637 tools: [{

638 name: 'reply',638 name: 'reply',

639 description: 'Kirim pesan kembali melalui channel ini',639 description: 'Send a message back over this channel',

640 inputSchema: {640 inputSchema: {

641 type: 'object',641 type: 'object',

642 properties: {642 properties: {

643 chat_id: { type: 'string', description: 'Percakapan untuk membalas' },643 chat_id: { type: 'string', description: 'The conversation to reply in' },

644 text: { type: 'string', description: 'Pesan untuk dikirim' },644 text: { type: 'string', description: 'The message to send' },

645 },645 },

646 required: ['chat_id', 'text'],646 required: ['chat_id', 'text'],

647 },647 },


670 670 

671mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {671mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {

672 send(672 send(

673 `Claude ingin menjalankan ${params.tool_name}: ${params.description}\n` +673 `Claude wants to run ${params.tool_name}: ${params.description}\n` +

674 `${params.input_preview}\n\n` +674 `${params.input_preview}\n\n` +

675 `Balas "yes ${params.request_id}" atau "no ${params.request_id}"`,675 `Reply "yes ${params.request_id}" or "no ${params.request_id}"`,

676 )676 )

677})677})

678 678 

Details

763. Harga daftar untuk [`models[].id`](https://code.claude.com/docs/id/claude-apps-gateway-config#models) yang Anda petakan ke ID hulu tersebut, untuk string hulu yang tidak membawa nama model, seperti ARN profil inferensi aplikasi Amazon Bedrock atau nama penerapan Microsoft Foundry. Memerlukan v2.1.218 atau lebih baru.763. Harga daftar untuk [`models[].id`](https://code.claude.com/docs/id/claude-apps-gateway-config#models) yang Anda petakan ke ID hulu tersebut, untuk string hulu yang tidak membawa nama model, seperti ARN profil inferensi aplikasi Amazon Bedrock atau nama penerapan Microsoft Foundry. Memerlukan v2.1.218 atau lebih baru.

774. Tingkat model yang tidak dikenal sebesar \$5/\$25 per juta token input/output, jadi ID yang tidak dapat ditempatkan meter tidak pernah gratis. Gateway memperingatkan saat boot dan sekali per ID saat runtime ketika menggunakan tingkat ini.774. Tingkat model yang tidak dikenal sebesar \$5/\$25 per juta token input/output, jadi ID yang tidak dapat ditempatkan meter tidak pernah gratis. Gateway memperingatkan saat boot dan sekali per ID saat runtime ketika menggunakan tingkat ini.

78 78 

79Tarif mana pun yang berlaku, meter kemudian mengalikan jumlah dengan [`pricing.multiplier`](https://code.claude.com/docs/id/claude-apps-gateway-config#pricing), default `1`.79Tarif mana pun yang berlaku, meter kemudian mengalikan jumlah dengan [`pricing.multiplier`](https://code.claude.com/docs/id/claude-apps-gateway-config#pricing), default `1`. Memerlukan server gateway yang menjalankan Claude Code v2.1.227 atau lebih baru.

80 80 

81Pembatalan klien juga ditagih. Ketika aliran berakhir tanpa bingkai penggunaan akhir hulu, meter menagih perkiraan lantai sekitar empat karakter per token output untuk teks yang sudah dikirim ke klien, jadi membatalkan permintaan lebih awal tidak menghindari batas.81Pembatalan klien juga ditagih. Ketika aliran berakhir tanpa bingkai penggunaan akhir hulu, meter menagih perkiraan lantai sekitar empat karakter per token output untuk teks yang sudah dikirim ke klien, jadi membatalkan permintaan lebih awal tidak menghindari batas.

82 82 


111 111 

112## Referensi Admin API112## Referensi Admin API

113 113 

114Titik akhir di bawah ini disajikan di bawah `/v1/organizations/spend_limits`.114Endpoint di bawah ini disajikan di bawah `/v1/organizations/spend_limits`.

115 115 

116| Metode dan jalur | Deskripsi |116| Metode dan path | Deskripsi |

117| - | - |117| - | - |

118| `GET /v1/organizations/spend_limits` | Daftar batas yang dikonfigurasi, secara opsional disaring ke satu `scope_type` dari `organization`, `rbac_group`, atau `user`. Kueri: `?limit=&after_id=&before_id=&scope_type=`. |118| `GET /v1/organizations/spend_limits` | Mencantumkan batas yang dikonfigurasi, secara opsional difilter ke satu `scope_type` dari `organization`, `rbac_group`, atau `user`. Query: `?limit=&after_id=&before_id=&scope_type=`. |

119| `POST /v1/organizations/spend_limits` | Buat atau ganti batas untuk `{scope, period}`. |119| `POST /v1/organizations/spend_limits` | Membuat atau mengganti batas untuk `{scope, period}`. |

120| `GET /v1/organizations/spend_limits/{id}` | Ambil satu batas berdasarkan ID dengan awalan `spl_`. |120| `GET /v1/organizations/spend_limits/{id}` | Mengambil satu batas berdasarkan ID-nya yang berawalan `spl_`. |

121| `DELETE /v1/organizations/spend_limits/{id}` | Hapus satu batas. Mengembalikan `{type: "spend_limit_deleted", id}`. |121| `DELETE /v1/organizations/spend_limits/{id}` | Menghapus satu batas. Mengembalikan `{type: "spend_limit_deleted", id}`. |

122| `GET /v1/organizations/spend_limits/effective` | Batas yang diselesaikan dan pengeluaran periode-ke-tanggal per prinsipal per periode. |122| `GET /v1/organizations/spend_limits/effective` | Batas yang di-resolve dan pengeluaran hingga saat ini per principal per periode. |

123| `GET /v1/organizations/spend_limits/audit` | Jejak mutasi admin, terbaru-pertama. Kueri: `?limit=&after_id=`. |123| `GET /v1/organizations/spend_limits/audit` | Jejak mutasi admin, terbaru lebih dulu. Query: `?limit=&after_id=`. |

124 124 

125Konvensi mencerminkan Admin API Anthropic:125Konvensi mengikuti Admin API Anthropic:

126 126 

127* `type` pada setiap objek127* Sebuah `type` pada setiap objek

128* ID dengan awalan `spl_`128* ID berawalan `spl_`

129* Jumlah sebagai string angka keseluruhan sen USD; `POST` menolak `currency` lain apa pun dengan `400`129* Jumlah sebagai string bilangan bulat dalam sen USD; `POST` menolak `currency` lainnya dengan `400`

130* Amplop kesalahan `{type: "error", error: {type, message}, request_id}`130* Amplop error `{type: "error", error: {type, message}, request_id}`

131* Header respons `request-id` pada setiap respons admin, sukses atau kesalahan; badan kesalahan juga membawanya sebagai `request_id`131* Header respons `request-id` pada setiap respons admin, baik berhasil maupun error; body error juga membawanya sebagai `request_id`

132 132 

133Setiap mutasi menulis baris sebelum/sesudah ke `admin_audit` dalam transaksi yang sama, dikaitkan dengan `admin-key:<id>` atau `oidc:<sub>`.133Setiap mutasi menulis baris sebelum/sesudah ke `admin_audit` dalam transaksi yang sama, yang diatribusikan ke `admin-key:<id>` atau `oidc:<sub>`.

134 134 

135Gateway melayani titik akhir batas pengeluaran saja. Permukaan Admin API lainnya, seperti antrian `spend_limit_increase_requests`, bukan bagian dari admin API gateway.135Gateway hanya menyajikan endpoint spend-limits. Surface Admin API lainnya, seperti antrean `spend_limit_increase_requests`, bukan bagian dari API admin gateway.

136 136 

137### `/effective`137### `/effective`

138 138 

139`GET /v1/organizations/spend_limits/effective` mengembalikan skema `SpendSummary` Anthropic: setiap baris adalah prinsipal untuk periode, dengan batas yang diselesaikan, pengeluaran periode-ke-tanggal, dan objek `actor`. Perbedaan khusus gateway:139`GET /v1/organizations/spend_limits/effective` mengembalikan skema `SpendSummary` milik Anthropic: setiap baris adalah satu principal untuk satu periode, dengan batas yang di-resolve, pengeluaran periode hingga saat ini, dan objek `actor`. Perbedaan khusus gateway:

140 140 

141* `user_id` adalah OIDC `sub`.141* `user_id` adalah `sub` OIDC.

142* `actor.name` dan `actor.email_address` adalah `null` sampai permintaan inferensi pertama prinsipal melalui gateway. Gateway tidak memiliki direktori pengguna; itu mencatat nilai terakhir terlihat dari JWT sesi setiap pengguna.142* `actor.name` dan `actor.email_address` bernilai `null` hingga permintaan inferensi pertama principal melalui gateway. Gateway tidak memiliki direktori pengguna; gateway mencatat nilai terakhir yang terlihat dari JWT sesi milik setiap pengguna.

143* Setiap baris juga membawa array `groups`, grup IdP terakhir terlihat prinsipal. Ini adalah ekstensi gateway sehingga UI admin dapat menunjukkan setiap tingkat batas yang berlaku; klien berbentuk Anthropic mengabaikannya.143* Setiap baris juga membawa array `groups`, yaitu grup IdP principal yang terakhir terlihat. Ini adalah ekstensi gateway sehingga UI admin dapat menampilkan setiap tingkat batas yang berlaku; klien berbentuk Anthropic mengabaikannya.

144* Tanpa filter `user_ids[]`, itu mencantumkan prinsipal dengan pengeluaran yang tercatat, karena gateway tidak dapat menghitung semua anggota organisasi.144* Tanpa filter `user_ids[]`, endpoint ini mencantumkan principal yang memiliki pengeluaran tercatat, karena gateway tidak dapat menghitung semua anggota organisasi.

145 145 

146Batas bersumber grup diselesaikan terhadap grup terakhir terlihat dengan tie-break `group_limit_mode` yang sama yang digunakan penegakan, jadi penampil menunjukkan batas yang benar-benar berlaku.146Batas yang bersumber dari grup di-resolve berdasarkan grup yang terakhir terlihat tersebut dengan tie-break `group_limit_mode` yang sama dengan yang digunakan penegakan, sehingga penampil menunjukkan batas yang benar-benar berlaku.

147 147 

148| Parameter kueri | Deskripsi |148| Parameter query | Deskripsi |

149| - | - |149| - | - |

150| `user_ids[]` | Dapat diulang. Filter ke prinsipal spesifik berdasarkan OIDC `sub`. |150| `user_ids[]` | Dapat diulang. Memfilter ke principal tertentu berdasarkan `sub` OIDC. |

151| `period[]` | Dapat diulang. Filter ke baris `daily`, `weekly`, atau `monthly`. |151| `period[]` | Dapat diulang. Memfilter ke baris `daily`, `weekly`, atau `monthly`. |

152| `sort` | `spend_desc` mencantumkan pengguna teratas terlebih dahulu. Memerlukan tepat satu `period[]`. |152| `sort` | `spend_desc` mencantumkan pengeluar terbesar lebih dulu. Memerlukan tepat satu `period[]`. |

153| `q` | Filter substring yang tidak peka huruf besar-kecil atas OIDC `sub`, email terakhir terlihat, dan nama tampilan terakhir terlihat. |153| `q` | Filter substring tanpa membedakan huruf besar/kecil atas `sub` OIDC, email yang terakhir terlihat, dan nama tampilan yang terakhir terlihat. |

154| `limit` / `page` | Ukuran halaman, 1–1000 dengan default 20, dan kursor buram dari `next_page` respons sebelumnya. |154| `limit` / `page` | Ukuran halaman, 1–1000 dengan default 20, dan kursor opak dari `next_page` pada respons sebelumnya. |

155 155 

156> [!WARNING]156> [!WARNING]

157>157>

158> `q=` dan `user_ids[]=` naik string kueri GET, jadi proxy fronting apa pun atau penyeimbang beban menangkapnya dalam log akses. Jika kebijakan log PII Anda ketat, bersihkan parameter ini di sana.158> `q=` dan `user_ids[]=` dibawa dalam query string GET, sehingga proxy atau load balancer di depannya akan merekamnya dalam log akses. Jika kebijakan log PII Anda ketat, bersihkan parameter ini di sana.

159 159 

160### `/audit`160### `/audit`

161 161 

162Mengembalikan jejak mutasi batas pengeluaran: siapa yang mengubah batas mana, dengan snapshot sebelum/sesudah, terbaru-pertama. `has_more` tepat. Titik akhir ini mengikuti konvensi Admin API lokal daripada bentuk kawat pihak pertama.162Mengembalikan jejak mutasi spend-limit: siapa yang mengubah batas mana, dengan snapshot sebelum/sesudah, terbaru lebih dulu. `has_more` bersifat tepat. Endpoint ini mengikuti konvensi Admin API lokal, bukan bentuk wire first-party.

163 163 

164### Paginasi164### Paginasi

165 165 

166Daftar mentah halaman berdasarkan `after_id` dan `before_id`, yang merupakan ID `spl_…` yang saling eksklusif; hasil diurutkan berdasarkan pembuatan dan `has_more` mencerminkan arah traversal. `/effective` halaman berdasarkan token `next_page` buram yang diteruskan kembali sebagai `?page=`, dengan prinsipal diurutkan naik sehingga halaman tetap stabil saat pengeluaran sedang dicatat. `limit` adalah 1–1000, default 20, di keduanya. `/audit` halaman berdasarkan `after_id`, ID numerik `id` dari acara terakhir pada halaman sebelumnya, dan `limit` defaultnya adalah 100.166Daftar mentah dipaginasi dengan `after_id` dan `before_id`, yang merupakan ID `spl_…` yang saling eksklusif; hasil diurutkan berdasarkan waktu pembuatan dan `has_more` mencerminkan arah penelusuran. `/effective` dipaginasi dengan token opak `next_page` yang dikirim kembali sebagai `?page=`, dengan principal diurutkan secara menaik sehingga halaman tetap stabil selama pengeluaran sedang dicatat. `limit` bernilai 1–1000, default 20, pada keduanya. `/audit` dipaginasi dengan `after_id`, yaitu `id` numerik dari event terakhir pada halaman sebelumnya, dan `limit`-nya default 100.

167 167 

168## Siklus hidup data168## Siklus hidup data

169 169 

Details

205* **Menggunakan `/teleport`**: di dalam sesi CLI yang sudah ada, jalankan `/teleport` atau `/tp` untuk membuka pemilih sesi yang sama tanpa memulai ulang Claude Code.205* **Menggunakan `/teleport`**: di dalam sesi CLI yang sudah ada, jalankan `/teleport` atau `/tp` untuk membuka pemilih sesi yang sama tanpa memulai ulang Claude Code.

206* **Dari `/tasks`**: jalankan `/tasks` untuk melihat sesi latar belakang Anda, kemudian tekan `t` untuk teleport ke dalamnya.206* **Dari `/tasks`**: jalankan `/tasks` untuk melihat sesi latar belakang Anda, kemudian tekan `t` untuk teleport ke dalamnya.

207* **Dari claude.ai/code**: pilih **Open in > Terminal** dari menu sesi untuk menyalin perintah yang dapat Anda tempel ke terminal Anda.207* **Dari claude.ai/code**: pilih **Open in > Terminal** dari menu sesi untuk menyalin perintah yang dapat Anda tempel ke terminal Anda.

208* **Dari dalam sesi cloud**: ketik `/teleport` dan Claude Code membalas dengan perintah `claude --teleport <session-id>` yang tepat untuk sesi itu, siap dijalankan dari checkout repositori. Memerlukan Claude Code v2.1.223 atau lebih baru di lingkungan sesi.208* **Dari dalam sesi cloud**: ketik `/teleport` dan Claude Code membalas dengan perintah `claude --teleport <session-id>` yang tepat untuk sesi itu, siap dijalankan dari checkout repositori.

209 209 

210Ketika Anda teleport sesi, Claude memverifikasi Anda berada di repositori yang benar, mengambil dan melakukan checkout branch dari sesi cloud, dan memuat percakapan ke terminal Anda.210Ketika Anda teleport sesi, Claude memverifikasi Anda berada di repositori yang benar, mengambil dan melakukan checkout branch dari sesi cloud, dan memuat percakapan ke terminal Anda.

211 211 


499* **Autentikasi repositori**: Anda hanya dapat menarik sesi cloud ke terminal Anda saat Anda diautentikasi ke akun yang sama499* **Autentikasi repositori**: Anda hanya dapat menarik sesi cloud ke terminal Anda saat Anda diautentikasi ke akun yang sama

500* **Pembatasan platform**: kloning repositori di lingkungan yang dihosting Anthropic dan pembuatan pull request memerlukan GitHub. Instans [GitHub Enterprise Server](https://code.claude.com/docs/id/github-enterprise-server.md) self-hosted didukung untuk paket Team dan Enterprise. Anda dapat mengirim repositori GitLab, Bitbucket, atau non-GitHub lainnya ke sesi cloud sebagai [bundle lokal](#send-local-repositories-without-github) dengan menetapkan `CCR_FORCE_BUNDLE=1`, tetapi sesi tidak dapat mendorong hasil kembali ke remote tersebut500* **Pembatasan platform**: kloning repositori di lingkungan yang dihosting Anthropic dan pembuatan pull request memerlukan GitHub. Instans [GitHub Enterprise Server](https://code.claude.com/docs/id/github-enterprise-server.md) self-hosted didukung untuk paket Team dan Enterprise. Anda dapat mengirim repositori GitLab, Bitbucket, atau non-GitHub lainnya ke sesi cloud sebagai [bundle lokal](#send-local-repositories-without-github) dengan menetapkan `CCR_FORCE_BUNDLE=1`, tetapi sesi tidak dapat mendorong hasil kembali ke remote tersebut

501 * **Lingkungan self-hosted**: untuk repositori di host git lain, lihat [persyaratan untuk memulai sesi dengan `--environment`](https://code.claude.com/docs/id/self-hosted-environments-deploy#start-a-session-on-a-repository-outside-github).501 * **Lingkungan self-hosted**: untuk repositori di host git lain, lihat [persyaratan untuk memulai sesi dengan `--environment`](https://code.claude.com/docs/id/self-hosted-environments-deploy#start-a-session-on-a-repository-outside-github).

502* **Allowlist IP organisasi**: sesi cloud memanggil API Anthropic dari infrastruktur yang dikelola Anthropic, bukan jaringan Anda, sementara sesi di [lingkungan self-hosted](https://code.claude.com/docs/id/self-hosted-environments) memanggilnya dari jaringan Anda sendiri. Jika organisasi Anda memiliki [IP allowlisting](https://support.claude.com/en/articles/13200993-restrict-access-to-claude-with-ip-allowlisting) yang diaktifkan, setiap sesi cloud yang dihosting Anthropic gagal dengan kesalahan autentikasi.

503 * **Code Review dan tugas terjadwal**: hal yang sama berlaku untuk [Code Review](https://code.claude.com/docs/id/code-review.md) dan untuk [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md) yang berjalan pada lingkungan yang dihosting Anthropic. Tugas terjadwal yang dialihkan ke lingkungan self-hosted memanggil API dari jaringan Anda sendiri.

504 * **Mendapatkan pengecualian**: hubungi [dukungan Anthropic](https://support.claude.com/) untuk mengecualikan layanan yang dihosting Anthropic dari allowlist IP organisasi Anda.

505 502 

506## Sumber daya terkait503## Sumber daya terkait

507 504 

Details

4 4 

5# Jelajahi direktori .claude5# Jelajahi direktori .claude

6 6 

7> Tempat Claude Code membaca CLAUDE.md, settings.json, hooks, skills, commands, subagents, workflows, rules, dan auto memory. Jelajahi direktori .claude di proyek Anda dan ~/.claude di direktori home Anda.7> Tempat Claude Code membaca CLAUDE.md, settings.json, hooks, skills, perintah, subagent, workflow, aturan, dan auto memory. Jelajahi direktori .claude di proyek Anda dan ~/.claude di direktori home Anda.

8 8 

9Claude Code membaca instruksi, pengaturan, skills, subagents, dan memory dari direktori proyek Anda dan dari `~/.claude` di direktori home Anda. Commit file proyek ke git untuk membagikannya dengan tim Anda; file di `~/.claude` adalah konfigurasi pribadi yang berlaku di semua proyek Anda.9Claude Code membaca instruksi, pengaturan, skills, subagent, dan memori dari direktori proyek Anda dan dari `~/.claude` di direktori home Anda. Lakukan commit file proyek ke git untuk membagikannya dengan tim Anda; file di `~/.claude` adalah konfigurasi pribadi yang berlaku di semua proyek Anda.

10 10 

11Di Windows, `~/.claude` diselesaikan menjadi `%USERPROFILE%\.claude`. Jika Anda menetapkan [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars), setiap jalur `~/.claude` di halaman ini berada di bawah direktori itu sebagai gantinya. Hal yang sama berlaku untuk `.claude.json`, yang jika tidak demikian berada di `~/.claude.json`.11Di Windows, `~/.claude` di-resolve ke `%USERPROFILE%\.claude`. Jika Anda mengatur [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars), setiap path `~/.claude` di halaman ini akan berada di bawah direktori tersebut. Hal yang sama berlaku untuk `.claude.json`, yang jika tidak demikian berada di `~/.claude.json`.

12 12 

13Sebagian besar pengguna hanya mengedit `CLAUDE.md` dan `settings.json`. Jika repositori Anda sudah memiliki `AGENTS.md` untuk agent coding lainnya, Claude Code [dapat membacanya](https://code.claude.com/docs/id/memory.md#agents-md) sebagai pengganti `CLAUDE.md`. Sisa direktori bersifat opsional: tambahkan skills, rules, atau subagents sesuai kebutuhan Anda.13Sebagian besar pengguna hanya mengedit `CLAUDE.md` dan `settings.json`. Jika repositori Anda sudah memiliki `AGENTS.md` untuk coding agent lain, Claude Code [dapat membacanya](https://code.claude.com/docs/id/memory.md#agents-md) sebagai pengganti `CLAUDE.md`. Bagian lain dari direktori ini bersifat opsional: tambahkan skill, aturan, atau subagent sesuai kebutuhan Anda.

14 14 

15## Jelajahi direktori15## Jelajahi direktori

16 16 


142File sesi di `sessions/`, memori otomatis, dan transkrip Claude Desktop dan Cowork masing-masing mengikuti aturan retensi mereka sendiri:142File sesi di `sessions/`, memori otomatis, dan transkrip Claude Desktop dan Cowork masing-masing mengikuti aturan retensi mereka sendiri:

143 143 

144* **`sessions/`**: menyimpan satu file kecil per sesi yang berjalan, digunakan untuk mendeteksi sesi bersamaan dan crash. Ini bukan bagian dari sweep berbasis usia: Claude Code menghapus setiap file saat sesinya keluar dan menghapus sisa crash saat peluncuran berikutnya.144* **`sessions/`**: menyimpan satu file kecil per sesi yang berjalan, digunakan untuk mendeteksi sesi bersamaan dan crash. Ini bukan bagian dari sweep berbasis usia: Claude Code menghapus setiap file saat sesinya keluar dan menghapus sisa crash saat peluncuran berikutnya.

145* **`seed-admin/`**: direktori git sementara yang Claude Code buat saat mengemas repositori Anda untuk [ultrareview](https://code.claude.com/docs/id/ultrareview.md) atau [unggahan sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md#send-local-repositories-without-github). Saat unggahan berakhir, atau di sesi berikutnya jika unggahan terputus, Claude Code menghapus direktori unggahan tersebut dan membiarkan `seed-admin/` tetap ada.

145* **Memori otomatis**: sweep tidak menghapus file memori di direktori [memori otomatis](https://code.claude.com/docs/id/memory.md#auto-memory) proyek, `projects/<project>/memory/`. Claude Code menghapus direktori itu hanya jika telah kosong selama seluruh periode retensi. Sebelum v2.1.228, sweep memperlakukan folder di dalam direktori memori sebagai data sesi dan dapat menghapus file lama di bawahnya.146* **Memori otomatis**: sweep tidak menghapus file memori di direktori [memori otomatis](https://code.claude.com/docs/id/memory.md#auto-memory) proyek, `projects/<project>/memory/`. Claude Code menghapus direktori itu hanya jika telah kosong selama seluruh periode retensi. Sebelum v2.1.228, sweep memperlakukan folder di dalam direktori memori sebagai data sesi dan dapat menghapus file lama di bawahnya.

146* **Transkrip Claude Desktop dan Cowork**: Claude Code menyimpan transkrip sesi yang Anda mulai atau lanjutkan terakhir di Claude Desktop atau Cowork pada usia apa pun. Untuk memberikan transkrip ini batas usia, atur [`desktopSessionCleanupPeriodDays`](https://code.claude.com/docs/id/settings-reference#desktopsessioncleanupperioddays). Memerlukan Claude Code v2.1.248 atau lebih baru; versi sebelumnya menghapusnya setelah `cleanupPeriodDays`.147* **Transkrip Claude Desktop dan Cowork**: Claude Code menyimpan transkrip sesi yang Anda mulai atau lanjutkan terakhir di Claude Desktop atau Cowork pada usia apa pun. Untuk memberikan transkrip ini batas usia, atur [`desktopSessionCleanupPeriodDays`](https://code.claude.com/docs/id/settings-reference#desktopsessioncleanupperioddays). Memerlukan Claude Code v2.1.248 atau lebih baru; versi sebelumnya menghapusnya setelah `cleanupPeriodDays`.

147 148 


153Claude Code melewati sweep berbasis usia dalam kasus-kasus ini:154Claude Code melewati sweep berbasis usia dalam kasus-kasus ini:

154 155 

155* **Mode bare**: saat Anda menjalankan `claude -p` dengan [`--bare`](https://code.claude.com/docs/id/headless#start-faster-with-bare-mode), Claude Code tidak menjalankan sweep dalam sesi itu.156* **Mode bare**: saat Anda menjalankan `claude -p` dengan [`--bare`](https://code.claude.com/docs/id/headless#start-faster-with-bare-mode), Claude Code tidak menjalankan sweep dalam sesi itu.

156* **Sweep dijeda**: jika Claude Code tidak dapat dengan aman menentukan periode retensi, itu menjeda sweep pembersihan retensi; acara [`retention_sweep`](https://code.claude.com/docs/id/monitoring-usage#retention-sweep-event) mencantumkan setiap konfigurasi yang menjeda itu. Saat penyebabnya adalah file pengaturan yang tidak dapat dibaca atau diuraikan, atau kesalahan pengaturan dengan `cleanupPeriodDays` atau `desktopSessionCleanupPeriodDays` yang secara eksplisit ditetapkan, Claude Code juga menampilkan peringatan di `/status` sampai Anda memperbaiki kesalahan pengaturan. Saat [pengaturan terkelola](https://code.claude.com/docs/id/server-managed-settings.md) menyediakan `cleanupPeriodDays`, Claude Code menjalankan sweep pada nilai terkelola dalam kedua kasus.157* **Sweep dijeda**: jika Claude Code tidak dapat dengan aman menentukan periode retensi, Claude Code menjeda sweep; [event `retention_sweep`](https://code.claude.com/docs/id/monitoring-usage#retention-sweep-event) mencantumkan setiap konfigurasi yang menjedanya. Saat penyebabnya adalah file pengaturan yang tidak dapat dibaca atau diuraikan, atau kesalahan pengaturan dengan `cleanupPeriodDays` atau `desktopSessionCleanupPeriodDays` ditetapkan, `/status` menampilkan peringatan sampai Anda memperbaiki penyebabnya.

158 

159Saat [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) menyediakan `cleanupPeriodDays`, Claude Code menjalankan sweep pada nilai terkelola bahkan saat file pengaturan berprioritas lebih rendah memiliki kesalahan.

157 160 

158Untuk memeriksa bahwa mesin di organisasi Anda menjalankan sweep dengan periode retensi yang Anda tetapkan, lihat [Periksa sweep retensi](https://code.claude.com/docs/id/monitoring-usage.md#check-the-retention-sweep).161Untuk memeriksa bahwa mesin di organisasi Anda menjalankan sweep dengan periode retensi yang Anda tetapkan, lihat [Periksa sweep retensi](https://code.claude.com/docs/id/monitoring-usage.md#check-the-retention-sweep).

159 162 

claude-projects.md +24 −26

Details

20 20 

21* **Kirim pekerjaan ke satu tempat**: tempel laporan bug, stack trace, atau daftar tugas ke dalam percakapan kapan pun muncul. Claude memulai thread untuk setiap bagian pekerjaan atau meneruskannya ke thread yang sudah bekerja di area itu, dan menjawab pertanyaan cepat di tempat.21* **Kirim pekerjaan ke satu tempat**: tempel laporan bug, stack trace, atau daftar tugas ke dalam percakapan kapan pun muncul. Claude memulai thread untuk setiap bagian pekerjaan atau meneruskannya ke thread yang sudah bekerja di area itu, dan menjawab pertanyaan cepat di tempat.

22* **Atur konteks sekali**: setiap thread baru dimulai dengan instruksi project, jadi aturan yang Anda nyatakan sekali, seperti branch mana yang ditargetkan, mencapai semuanya.22* **Atur konteks sekali**: setiap thread baru dimulai dengan instruksi project, jadi aturan yang Anda nyatakan sekali, seperti branch mana yang ditargetkan, mencapai semuanya.

23* **Pergi dan kembali ke pekerjaan yang selesai**: ketika Anda kembali satu jam kemudian atau pagi berikutnya, pane **Overview** menunjukkan thread mana yang selesai, pull request mana yang siap untuk ditinjau, dan thread mana yang menunggu jawaban Anda.23* **Pergi dan kembali ke pekerjaan yang selesai**: pane Overview menunjukkan thread mana yang selesai, pull request mana yang siap untuk ditinjau, dan thread mana yang menunggu jawaban Anda.

24 24 

25Jika Anda sudah tahu pekerjaan yang ingin dijalankan project, langsung ke [Buat project](#create-a-project).25Jika Anda sudah tahu pekerjaan yang ingin dijalankan project, langsung ke [Buat project](#create-a-project).

26 26 


28 28 

29Project layak dibuat ketika pekerjaan memiliki tujuan yang melampaui satu sesi dan terus menghasilkan tugas. Jenis pekerjaan ini cocok untuk project:29Project layak dibuat ketika pekerjaan memiliki tujuan yang melampaui satu sesi dan terus menghasilkan tugas. Jenis pekerjaan ini cocok untuk project:

30 30 

31* **Satu tujuan di banyak repositori**: "Bawa setiap layanan ke konfigurasi lint baru." Claude dapat menjalankan thread per repositori, masing-masing dengan pull request sendiri, dan pane [**Overview**](#see-what-needs-you-in-overview) menunjukkan mana yang siap untuk ditinjau.31* **Satu tujuan di banyak repositori**: "Bawa setiap layanan ke konfigurasi lint baru." Claude dapat menjalankan thread per repositori, masing-masing dengan pull request sendiri, dan [pane Overview](#see-what-needs-you-in-overview) menunjukkan mana yang siap untuk ditinjau.

32* **Area yang terus Anda isi**: bug, stack trace, dan permintaan review untuk satu layanan, ditempel ke dalam percakapan saat sampai ke Anda. Jebakan yang Anda beri tahu Claude untuk diingat setelah satu perbaikan ada di [project memory](#give-a-project-standing-context) untuk yang berikutnya.32* **Area yang terus Anda isi**: bug, stack trace, dan permintaan review untuk satu layanan, ditempel ke dalam percakapan saat sampai ke Anda. Jebakan yang Anda beri tahu Claude untuk diingat setelah satu perbaikan ada di [project memory](#give-a-project-standing-context) untuk yang berikutnya.

33* **Build atau migrasi yang lebih besar dari satu sesi**: "Bangun apa yang dijelaskan `docs/spec.md`" atau "Pindahkan aplikasi dari ORM yang sudah usang." Pekerjaan terbagi menjadi thread yang masing-masing mengambil bagian, keputusan yang Anda minta Claude untuk diingat di awal mencapai thread cloud yang lebih baru, dan spec berubah serta bug yang Anda temukan selama build masuk ke percakapan yang sama.33* **Build atau migrasi yang lebih besar dari satu sesi**: "Bangun apa yang dijelaskan `docs/spec.md`" atau "Pindahkan aplikasi dari ORM yang sudah usang." Pekerjaan terbagi menjadi thread yang masing-masing mengambil bagian, keputusan yang Anda minta Claude untuk diingat di awal mencapai thread cloud yang lebih baru, dan spec berubah serta bug yang Anda temukan selama build masuk ke percakapan yang sama.

34* **Pekerjaan yang bukan kode**: folder kontrak atau ekspor tiket dukungan yang terus Anda kembali dengan pertanyaan baru, seperti "temukan sepuluh kesalahan integrasi paling umum di tiket ini." Unggah dokumen alih-alih menambahkan repositori, dan thread memberikan setiap laporan sebagai file di tab [**Library**](#see-what-needs-you-in-overview) project.34* **Pekerjaan yang bukan kode**: folder kontrak atau ekspor tiket dukungan yang terus Anda kembali dengan pertanyaan baru, seperti "temukan sepuluh kesalahan integrasi paling umum di tiket ini." Unggah dokumen alih-alih menambahkan repositori, dan thread memberikan setiap laporan sebagai file di [**Library**](#see-what-needs-you-in-overview) project.

35 35 

36Di salah satu dari situasi tersebut, Anda dapat mengirim batch tugas, memberi tahu Claude untuk memulai tanpa meminta Anda mengonfirmasi, lalu pergi. Ketika Anda kembali, Anda dapat menemukan thread yang membutuhkan Anda di bawah [**Waiting on you**](#see-what-needs-you-in-overview). Anda juga dapat meminta Claude untuk menjadwalkan sebagian pekerjaan sebagai [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md). Jika salah satu ini adalah situasi Anda, [buat project](#create-a-project).36Di salah satu dari situasi tersebut, Anda dapat mengirim batch tugas, memberi tahu Claude untuk memulai tanpa meminta Anda mengonfirmasi, lalu pergi. Ketika Anda kembali, Anda dapat menemukan thread yang membutuhkan Anda di bawah [**Waiting on you**](#see-what-needs-you-in-overview). Anda juga dapat meminta Claude untuk menjadwalkan sebagian pekerjaan sebagai [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md). Jika salah satu ini adalah situasi Anda, [buat project](#create-a-project).

37 37 


57 * `CLAUDE.md` di [setiap repositori project](#what-threads-pick-up-from-your-repositories), tetapi bukan skills, `.claude/settings.json`, atau `.mcp.json` dari repositori tersebut57 * `CLAUDE.md` di [setiap repositori project](#what-threads-pick-up-from-your-repositories), tetapi bukan skills, `.claude/settings.json`, atau `.mcp.json` dari repositori tersebut

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

59 * [Cloud environment](#choose-an-environment-for-threads) yang menetapkan akses jaringan, environment variable, rahasia jaringan, dan alat yang terinstal59 * [Cloud environment](#choose-an-environment-for-threads) yang menetapkan akses jaringan, environment variable, rahasia jaringan, dan alat yang terinstal

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

61 61 

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

63 63 

64Berikut adalah bagaimana bagian-bagian itu terhubung, dari Anda melalui percakapan ke thread yang melakukan pekerjaan, dengan **Overview** melacak keadaan mereka:64Berikut adalah bagaimana bagian-bagian itu terhubung, dari Anda melalui percakapan ke thread yang melakukan pekerjaan, dengan Overview melacak keadaan mereka:

65 65 

66![Diagram project. Anda menulis di percakapan project, di mana Claude menjawab atau memulai thread. Setiap cloud thread bekerja di cabang dan pull request sendiri. Pane Overview mencantumkan thread berdasarkan keadaan, seperti siap untuk ditinjau, menunggu Anda, dan bekerja.](https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview.svg?fit=max\&auto=format\&n=e8CLbxM17eD7cAiv\&q=85\&s=dbf446f69f0bbdb9961d21af207cb93b)66![Diagram project. Anda menulis di percakapan project, di mana Claude menjawab atau memulai thread. Setiap cloud thread bekerja di cabang dan pull request sendiri. Pane Overview mencantumkan thread berdasarkan keadaan, seperti siap untuk ditinjau, menunggu Anda, dan bekerja.](https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview.svg?fit=max\&auto=format\&n=e8CLbxM17eD7cAiv\&q=85\&s=dbf446f69f0bbdb9961d21af207cb93b)

67 67 


96 96 

97* **Name**: bagaimana project muncul di daftar **Projects**.97* **Name**: bagaimana project muncul di daftar **Projects**.

98* **What do you want to work on?** (opsional): satu baris yang menjadi tujuan project, seperti "Pertahankan latensi API p95 di bawah 200 ms". Claude dalam percakapan bekerja menuju itu. Tanpa tujuan, Claude bekerja dari tugas yang Anda kirim, dan Anda dapat menambahkan tujuan nanti di **Project settings > General**.98* **What do you want to work on?** (opsional): satu baris yang menjadi tujuan project, seperti "Pertahankan latensi API p95 di bawah 200 ms". Claude dalam percakapan bekerja menuju itu. Tanpa tujuan, Claude bekerja dari tugas yang Anda kirim, dan Anda dapat menambahkan tujuan nanti di **Project settings > General**.

99* **Context** (opsional): repositori GitHub yang dikerjakan project ini, ditambah file, folder, atau folder Google Drive apa pun yang harus dibaca thread. Klik **Add** untuk masing-masing. Tambahkan repositori yang paling banyak dibutuhkan tugas daripada setiap yang mungkin disentuh pekerjaan; [Tentukan repositori mana yang akan ditambahkan](#decide-which-repositories-to-add) mencakup pilihan, dan Anda dapat menambahkan lebih banyak nanti di **Project settings > Environment**.99* **Context** (opsional): repositori GitHub yang dikerjakan project ini, ditambah file, folder, atau folder Google Drive apa pun yang harus dibaca thread. Klik **+** untuk masing-masing. Tambahkan repositori yang paling banyak dibutuhkan tugas daripada setiap yang mungkin disentuh pekerjaan; [Tentukan repositori mana yang akan ditambahkan](#decide-which-repositories-to-add) mencakup pilihan, dan Anda dapat menambahkan lebih banyak nanti di **Project settings > Environment**.

100 100 

101Aturan berdiri tentang cara thread harus bekerja masuk ke [project instructions](#give-a-project-standing-context), yang Anda atur setelah project ada.101Aturan berdiri tentang cara thread harus bekerja masuk ke [project instructions](#give-a-project-standing-context), yang Anda atur setelah project ada.

102 102 


109* Mulai satu thread yang mengeksplorasi repositori tanpa mengubah apa pun dan mengusulkan langkah berikutnya, jika project memiliki repositori yang dapat dibaca.109* Mulai satu thread yang mengeksplorasi repositori tanpa mengubah apa pun dan mengusulkan langkah berikutnya, jika project memiliki repositori yang dapat dibaca.

110* Posting **Setup recommendations** yang diambil dari sesi cloud terbaru Anda: repositori untuk ditambahkan, tugas terjadwal untuk dibuat, dan thread yang dapat dimulai. Setiap repositori dan tugas terjadwal yang direkomendasikan dimulai dengan diaktifkan. Matikan yang tidak Anda inginkan, lalu klik **Update setup** untuk menambahkan sisanya, atau abaikan rekomendasi dan deskripsikan pekerjaan sendiri.110* Posting **Setup recommendations** yang diambil dari sesi cloud terbaru Anda: repositori untuk ditambahkan, tugas terjadwal untuk dibuat, dan thread yang dapat dimulai. Setiap repositori dan tugas terjadwal yang direkomendasikan dimulai dengan diaktifkan. Matikan yang tidak Anda inginkan, lalu klik **Update setup** untuk menambahkan sisanya, atau abaikan rekomendasi dan deskripsikan pekerjaan sendiri.

111 111 

112Project sekarang tercantum di bawah **Projects** di sidebar, dan percakapannya terbuka. [Batch pertama Anda](#your-first-batch) mencakup apa yang harus diatur sebelum Anda mengirimnya pekerjaan.112Project sekarang ada di sidebar, dan percakapannya terbuka. [Batch pertama Anda](#your-first-batch) mencakup apa yang harus diatur sebelum Anda mengirimnya pekerjaan.

113 113 

114### Mulai dari sesi yang ada114### Mulai dari sesi yang ada

115 115 


168 168 

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

170 170 

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

172 172 

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

174 174 


190 190 

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

192 192 

193Pane **Overview** di samping percakapan melacak thread project. Sudah terbuka pertama kali Anda membuka project baru. Tombol **Overview** di header project menutup dan membukanya kembali, dan menunjukkan titik ketika thread menunggu Anda.193Pane Overview di samping percakapan melacak thread project. Pane ini sudah terbuka pertama kali Anda membuka project baru. Untuk membukanya kembali setelah Anda menutupnya, klik tombol **Threads** di header project. Tombol tersebut menunjukkan titik ketika thread menunggu Anda.

194 194 

195Di aplikasi desktop, Anda juga mendapatkan notifikasi desktop ketika Claude memposting dalam percakapan, thread mengalami kesalahan, atau thread membutuhkan input Anda, jadi Anda tidak harus membuat project tetap terbuka untuk mengetahuinya. Untuk juga mendapatkan satu setiap kali thread menyelesaikan giliran, atau untuk mematikannya untuk project, pilih **Notifications** di menu sidebar project. Notifikasi ini hanya desktop: di browser, periksa titik pada tombol **Overview**.195Di aplikasi desktop, notifikasi muncul secara default ketika Claude memposting dalam percakapan, thread mengalami kesalahan, atau thread membutuhkan input Anda. Notifikasi tidak muncul saat Anda sedang melihat project. Untuk juga mendapatkan satu setiap kali thread menyelesaikan giliran, atau untuk mematikannya untuk project, pilih **Notifications** di menu sidebar project. Di browser, periksa titik pada tombol **Threads**.

196 196 

197Tab **Threads** pane mengelompokkan thread berdasarkan keadaan:197Tampilan **Threads** pane mengelompokkan thread berdasarkan keadaan:

198 198 

199| Grup | Apa yang ada di dalamnya |199| Grup | Apa yang ada di dalamnya |

200| :- | :- |200| :- | :- |


205| **Idle** | Thread yang selesai dan tidak menunggu apa pun |205| **Idle** | Thread yang selesai dan tidak menunggu apa pun |

206| **Resolved** | Thread yang ditandai selesai: oleh Anda dari menu thread, oleh Claude setelah Anda mengambil langkah terakhir, seperti merge pull request-nya, atau secara otomatis setelah seminggu tanpa aktivitas. Anda dapat membuka kembali dari menu yang sama |206| **Resolved** | Thread yang ditandai selesai: oleh Anda dari menu thread, oleh Claude setelah Anda mengambil langkah terakhir, seperti merge pull request-nya, atau secara otomatis setelah seminggu tanpa aktivitas. Anda dapat membuka kembali dari menu yang sama |

207 207 

208Tab lain pane adalah:208Buka file dan tugas terjadwal project di pane dari header project:

209 209 

210* **Library**: file dan folder yang Anda tambahkan dan file yang dihasilkan thread210* **Library**: file dan folder yang Anda tambahkan dan file yang dihasilkan thread. Klik tombol **Library** di samping **Threads**.

211* **Pull requests**: ditampilkan setelah thread membuka pull request211* **Scheduled tasks**: [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md) yang Claude atur dari project ini. Pilih di menu **⋯** pada header.

212* **Scheduled tasks**: [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md) yang Claude atur dari project ini

213 212 

214### Buka thread ketika Anda membutuhkan kontrol213### Buka thread ketika Anda membutuhkan kontrol

215 214 

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

217 216 

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

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


290| :- | :- | :- |289| :- | :- | :- |

291| Project memory | Catatan yang disimpan Claude tentang project, seperti persyaratan, keputusan, dan jebakan, disimpan sebagai file. Setiap thread cloud membaca file indeks `MEMORY.md` ketika dimulai dan membuka file lain ketika membutuhkannya | Minta Claude dalam percakapan project atau thread cloud apa pun untuk mengingat persyaratan, keputusan, atau jebakan, atau untuk melupakannya. Baca, edit, dan hapus file di **Project settings > Memory** |290| Project memory | Catatan yang disimpan Claude tentang project, seperti persyaratan, keputusan, dan jebakan, disimpan sebagai file. Setiap thread cloud membaca file indeks `MEMORY.md` ketika dimulai dan membuka file lain ketika membutuhkannya | Minta Claude dalam percakapan project atau thread cloud apa pun untuk mengingat persyaratan, keputusan, atau jebakan, atau untuk melupakannya. Baca, edit, dan hapus file di **Project settings > Memory** |

292| Project instructions | Teks yang dikirim ke setiap thread baru dan ke Claude dalam percakapan project, hingga 16.000 karakter. [Tulis project instructions](#write-project-instructions) mencakup apa yang harus dimasukkan | **Project settings > Memory > Project instructions**, atau minta Claude untuk mengubah instruksi |291| Project instructions | Teks yang dikirim ke setiap thread baru dan ke Claude dalam percakapan project, hingga 16.000 karakter. [Tulis project instructions](#write-project-instructions) mencakup apa yang harus dimasukkan | **Project settings > Memory > Project instructions**, atau minta Claude untuk mengubah instruksi |

293| Repositori, file, dan environment | Repositori yang dikloning setiap thread cloud, folder dan file yang dapat dibaca setiap thread di bawah `/mnt/project-files`, dan cloud environment yang dijalankan thread | Repositori dan environment di **Project settings > Environment**, atau minta Claude dalam percakapan untuk menambahkan repositori ke project. [File dan folder](#add-files-and-folders) dari **Add** di tab **Library** di **Overview** |292| Repositori, file, dan environment | Repositori yang dikloning setiap thread cloud, folder dan file yang dapat dibaca setiap thread di bawah `/mnt/project-files`, dan cloud environment yang dijalankan thread | Repositori dan environment di **Project settings > Environment**, atau minta Claude dalam percakapan untuk menambahkan repositori ke project. [File dan folder](#add-files-and-folders) dari **Add** di [**Library**](#see-what-needs-you-in-overview) project |

294 293 

295**Project settings > Memory** mencantumkan file-file ini di bawah **Auto memory**, karena Claude menulisnya sendiri saat bekerja di project. Mereka terpisah dari [auto memory](https://code.claude.com/docs/id/memory.md) yang disimpan Claude Code di mesin Anda, meskipun keduanya menggunakan indeks `MEMORY.md`. Project memory juga terpisah dari file `CLAUDE.md` di repositori project. Setiap thread cloud masih membaca file `CLAUDE.md` itu dari klonnya ketika dimulai, jadi masukkan instruksi tentang repositori di `CLAUDE.md`-nya dan catatan tentang project di project memory.294**Project settings > Memory** mencantumkan file-file ini di bawah **Auto memory**, karena Claude menulisnya sendiri saat bekerja di project. Mereka terpisah dari [auto memory](https://code.claude.com/docs/id/memory.md) yang disimpan Claude Code di mesin Anda, meskipun keduanya menggunakan indeks `MEMORY.md`. Project memory juga terpisah dari file `CLAUDE.md` di repositori project. Setiap thread cloud masih membaca file `CLAUDE.md` itu dari klonnya ketika dimulai, jadi masukkan instruksi tentang repositori di `CLAUDE.md`-nya dan catatan tentang project di project memory.

296 295 

297### Tulis project instructions296### Tulis project instructions

298 297 

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

300 299 

301* Apa project itu untuk300* Apa project itu untuk

302* Di mana pekerjaan terjadi: repositori mana, dari branch mana memulai, cara memberi nama pull request301* Di mana pekerjaan terjadi: repositori mana, dari branch mana memulai, cara memberi nama pull request


324* **Tambahkan ke project**, di dialog **New project**, di **Project settings > Environment**, atau dengan meminta Claude dalam percakapan untuk menambahkannya ke project. Setiap thread cloud dari saat itu mengklonnya dan dimulai dengan `CLAUDE.md`-nya dimuat, terlepas dari apakah tugas menyentuhnya.323* **Tambahkan ke project**, di dialog **New project**, di **Project settings > Environment**, atau dengan meminta Claude dalam percakapan untuk menambahkannya ke project. Setiap thread cloud dari saat itu mengklonnya dan dimulai dengan `CLAUDE.md`-nya dimuat, terlepas dari apakah tugas menyentuhnya.

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

326 325 

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

328 327 

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

330 329 


332 331 

333### Tambahkan file dan folder332### Tambahkan file dan folder

334 333 

335Tambahkan file dan folder yang ingin dibaca thread di field **Context** dialog **New project**, atau setelahnya dengan **Add** di tab **Library** di **Overview**. Batas-batas ini berlaku untuk apa yang Anda tambahkan:334Tambahkan file dan folder yang ingin dibaca thread di field **Context** dialog **New project**, atau setelahnya dengan **Add** di [**Library**](#see-what-needs-you-in-overview) project. Batas-batas ini berlaku untuk apa yang Anda tambahkan:

336 335 

337* **Library tab**: hingga 100 file dan 2 GB dalam satu pick, dengan satu file hingga 480 MB.336* **File yang Anda unggah di claude.ai/code atau di aplikasi desktop**: hingga 1.000 file dan 2 GB sekaligus, dengan satu file hingga 480 MB.

338* **New project dialog**: file di atas 30 MB dilewati, jadi tambahkan file yang lebih besar dari tab **Library** setelah Anda membuat project.337* **Folder yang Anda unggah**: file tersembunyi dan `node_modules` tidak ditambahkan. Project menyimpan hingga 10 folder dan folder Google Drive gabungan, dan file tunggal tidak dihitung terhadap batas itu.

339* **Folders**: ketika Anda menambahkan folder dari salah satu tempat, project menerima salinan dari 100 file pertamanya hingga 200 MB, tanpa file apa pun di atas 30 MB, file tersembunyi, atau `node_modules`. Project menyimpan hingga 10 folder dan folder Google Drive gabungan, dan file tunggal tidak dihitung terhadap batas itu.

340* **Changes after upload**: upload adalah salinan, jadi perubahan yang Anda buat di komputer Anda setelahnya tidak mencapai project sampai Anda mengunggah file lagi dan memilih **Replace** ketika ditanya tentang nama yang ada.338* **Changes after upload**: upload adalah salinan, jadi perubahan yang Anda buat di komputer Anda setelahnya tidak mencapai project sampai Anda mengunggah file lagi dan memilih **Replace** ketika ditanya tentang nama yang ada.

341 339 

342### Apa yang diambil thread dari repositori Anda340### Apa yang diambil thread dari repositori Anda


373 371 

374## Referensi pengaturan project372## Referensi pengaturan project

375 373 

376Anda mengubah pengaturan project di claude.ai/code atau di aplikasi desktop, bukan di `settings.json`. Buka **Project settings** dari **Settings** di menu sidebar project atau dari ikon gear di header project.374Anda mengubah pengaturan project di claude.ai/code atau di aplikasi desktop, bukan di `settings.json`. Buka **Project settings** dari **Settings** di menu sidebar project atau di menu **⋯** pada header project.

377 375 

378Pengaturan disimpan saat Anda mengubahnya; bidang teks yang sedang Anda edit, seperti tujuan atau instruksi, menampilkan **Save changes** dan **Discard** sampai Anda meninggalkannya. Perubahan instruksi, repositori, plugins, dan environment di **Project settings** mencapai thread baru, bukan thread yang sudah berjalan.376Pengaturan disimpan saat Anda mengubahnya; bidang teks yang sedang Anda edit, seperti tujuan atau instruksi, menampilkan **Save changes** dan **Discard** sampai Anda meninggalkannya. Perubahan instruksi, repositori, plugins, dan environment di **Project settings** mencapai thread baru, bukan thread yang sudah berjalan.

379 377 


434 432 

435 Project tersedia di Pro, Max, dan Ultra. Project adalah milik Anda sendiri: Anda satu-satunya yang mengirim pekerjaan atau melihat thread-nya, dan project menggunakan akses GitHub dan konektor Anda sendiri. [Bagaimana Claude Tag berbeda dari Cowork dan Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) memiliki perbandingan berdampingan.433 Project tersedia di Pro, Max, dan Ultra. Project adalah milik Anda sendiri: Anda satu-satunya yang mengirim pekerjaan atau melihat thread-nya, dan project menggunakan akses GitHub dan konektor Anda sendiri. [Bagaimana Claude Tag berbeda dari Cowork dan Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) memiliki perbandingan berdampingan.

436* **Cloud sessions**: setiap thread adalah [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) kecuali Anda meminta Claude untuk menjalankannya di mesin Anda. Bagaimanapun, Claude memulai dan melacaknya alih-alih Anda. Anda juga dapat membawa pekerjaan dari sesi cloud yang Anda mulai sendiri ke dalam project: pilih [**Continue in project**](#start-from-an-existing-cloud-session) di menu sidebar sesi tersebut.434* **Cloud sessions**: setiap thread adalah [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) kecuali Anda meminta Claude untuk menjalankannya di mesin Anda. Bagaimanapun, Claude memulai dan melacaknya alih-alih Anda. Anda juga dapat membawa pekerjaan dari sesi cloud yang Anda mulai sendiri ke dalam project: pilih [**Continue in project**](#start-from-an-existing-cloud-session) di menu sidebar sesi tersebut.

437* **Scheduled tasks**: ketika Anda meminta pekerjaan terjadwal dalam project, Claude membuat [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md) yang berjalan sebagai thread dalam project itu dan muncul di tab **Scheduled tasks**-nya. Tugas terjadwal yang Anda buat di luar project terus bekerja sendiri.435* **Scheduled tasks**: ketika Anda meminta pekerjaan terjadwal dalam project, Claude membuat [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md) yang berjalan sebagai thread dalam project itu dan muncul di tampilan **Scheduled tasks**-nya. Tugas terjadwal yang Anda buat di luar project terus bekerja sendiri.

438* **Remote Control**: [Remote Control](https://code.claude.com/docs/id/remote-control.md) menghubungkan claude.ai ke sesi Claude Code yang berjalan di mesin Anda. Ketika Anda meminta Claude dalam project untuk menjalankan thread di komputer Anda, project [menggunakan Remote Control untuk melakukannya](#run-a-thread-on-your-own-computer).436* **Remote Control**: [Remote Control](https://code.claude.com/docs/id/remote-control.md) menghubungkan claude.ai ke sesi Claude Code yang berjalan di mesin Anda. Ketika Anda meminta Claude dalam project untuk menjalankan thread di komputer Anda, project [menggunakan Remote Control untuk melakukannya](#run-a-thread-on-your-own-computer).

439* **Local sessions dan agent view**: sesi yang Anda mulai sendiri di terminal, IDE, atau environment lokal aplikasi desktop tetap berada di luar project Anda, meskipun Anda dapat [membawa pekerjaannya ke dalam salah satu project](#start-from-an-existing-cloud-session). [Agent view](https://code.claude.com/docs/id/agent-view.md) adalah layar untuk melacak beberapa sesi lokal berdampingan, dan Anda masih memulai masing-masing dan memberikan tugasnya sendiri.437* **Local sessions dan agent view**: sesi yang Anda mulai sendiri di terminal, IDE, atau environment lokal aplikasi desktop tetap berada di luar project Anda, meskipun Anda dapat [membawa pekerjaannya ke dalam salah satu project](#start-from-an-existing-cloud-session). [Agent view](https://code.claude.com/docs/id/agent-view.md) adalah layar untuk melacak beberapa sesi lokal berdampingan, dan Anda masih memulai masing-masing dan memberikan tugasnya sendiri.

440* **Worktrees**: [worktree](https://code.claude.com/docs/id/worktrees.md) memberikan setiap sesi lokal salinan kerjanya sendiri dari repositori. Thread cloud tidak membutuhkannya: setiap thread mengkloning repositorinya ke sandbox cloud sendiri dan bekerja di branch sendiri.438* **Worktrees**: [worktree](https://code.claude.com/docs/id/worktrees.md) memberikan setiap sesi lokal salinan kerjanya sendiri dari repositori. Thread cloud tidak membutuhkannya: setiap thread mengkloning repositorinya ke sandbox cloud sendiri dan bekerja di branch sendiri.


466Ketika beberapa thread kembali telah mengasumsikan sesuatu yang salah, bekerja di sekitar akses yang hilang, atau berhenti dengan "blocked", penyebabnya biasanya celah yang sama dalam setup project daripada masalah dengan setiap tugas. Urutkan thread mana yang solid sebelum Anda memperbaiki apa pun:464Ketika beberapa thread kembali telah mengasumsikan sesuatu yang salah, bekerja di sekitar akses yang hilang, atau berhenti dengan "blocked", penyebabnya biasanya celah yang sama dalam setup project daripada masalah dengan setiap tugas. Urutkan thread mana yang solid sebelum Anda memperbaiki apa pun:

467 465 

4681. Tanya Claude dalam percakapan: "Untuk setiap thread terbuka, daftarkan apa yang Anda minta untuk dilakukan, apa yang diasumsikan atau tidak dapat dijangkau, dan apa yang ditunggu." Claude membaca setiap thread dan menjawab dalam percakapan.4661. Tanya Claude dalam percakapan: "Untuk setiap thread terbuka, daftarkan apa yang Anda minta untuk dilakukan, apa yang diasumsikan atau tidak dapat dijangkau, dan apa yang ditunggu." Claude membaca setiap thread dan menjawab dalam percakapan.

4692. Untuk thread yang dimulai dari asumsi yang salah, buka thread dari **Overview** dan tandai resolved dari menunya, atau beri tahu apa yang harus dilakukan sebagai gantinya di kotak pesannya. Cabang dan pull request apa pun tetap di GitHub sampai Anda menghapusnya.4672. Untuk thread yang dimulai dari asumsi yang salah, buka thread dari Overview dan tandai resolved dari menunya, atau beri tahu apa yang harus dilakukan sebagai gantinya. Branch-nya dan pull request apa pun tetap di GitHub sampai Anda menghapusnya.

4703. Perbaiki celah sekali, di [project instructions](#give-a-project-standing-context) atau [environment](#choose-an-environment-for-threads), lalu kirim satu thread sebelum mengirim sisa pekerjaan lagi sebagai thread baru.4683. Perbaiki celah sekali, di [project instructions](#give-a-project-standing-context) atau [environment](#choose-an-environment-for-threads), lalu kirim satu thread sebelum mengirim sisa pekerjaan lagi sebagai thread baru.

471 469 

472### Claude belum merespons470### Claude belum merespons

claude-security.md +50 −50

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# Pindai basis kode Anda untuk menemukan kerentanan5# Pindai codebase Anda untuk mencari kerentanan

6 6 

7> Instal plugin Claude Security untuk memindai basis kode Anda mencari kerentanan dalam sesi Claude Code dan ubah temuan menjadi patch yang Anda tinjau dan terapkan.7> Instal plugin Claude Security untuk memindai codebase Anda guna mencari kerentanan dalam sesi Claude Code dan mengubah temuan menjadi patch yang Anda tinjau dan terapkan.

8 8 

9Plugin Claude Security menjalankan pemindaian kerentanan multi-agent dari codebase Anda di dalam sesi Claude Code. [Secara default](#choose-a-scan-effort), saat Anda memindai seluruh repositori, agent Claude memetakan arsitektur Anda, membangun model ancaman, berburu kerentanan, dan secara independen meninjau setiap temuan sebelum menulis laporan.9Plugin Claude Security menjalankan pemindaian kerentanan multi-agent pada codebase Anda di dalam sesi Claude Code. [Secara default](#choose-a-scan-effort), saat Anda memindai seluruh repositori, agent Claude memetakan arsitektur Anda, membangun model ancaman, mencari kerentanan, dan meninjau setiap temuan secara independen sebelum menulis laporan.

10 10 

11Gunakan plugin untuk memindai seluruh repositori atau [hanya serangkaian perubahan](#scan-only-your-changes), seperti diff branch, diff pull request, atau satu commit, kemudian ubah temuan yang Anda pilih menjadi patch yang Anda tinjau dan terapkan sendiri.11Gunakan plugin ini untuk memindai seluruh repositori atau [hanya sekumpulan perubahan](#scan-only-your-changes), seperti diff dari sebuah branch, diff dari sebuah pull request, atau satu commit, lalu ubah temuan yang Anda pilih menjadi patch yang Anda tinjau dan terapkan sendiri.

12 12 

13Plugin berjalan secara lokal dalam sesi Anda, menggunakan [model mana pun yang Anda miliki akses di Claude Code](#models-and-providers), dan setiap pemindaian dihitung terhadap [penggunaan](https://code.claude.com/docs/id/costs.md) Anda. Jika Anda menginginkan layanan terkelola yang memantau repositori Anda, atau ingin menjalankan pemindaian pada [Claude Mythos](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5), lihat produk [Claude Security](https://claude.com/product/claude-security), tersedia di paket Enterprise.13Plugin ini berjalan secara lokal dalam sesi Anda, menggunakan [model apa pun yang dapat Anda akses di Claude Code](#models-and-providers), dan setiap pemindaian dihitung dalam [penggunaan](https://code.claude.com/docs/id/costs.md) Anda. Jika Anda menginginkan layanan terkelola yang memantau repositori Anda, atau ingin menjalankan pemindaian dengan [Claude Mythos](https://platform.claude.com/docs/en/about-claude/models/introducing-claude-fable-5-and-claude-mythos-5), lihat produk [Claude Security](https://claude.com/product/claude-security), yang tersedia pada paket Enterprise.

14 14 

15Plugin ini juga berbeda dari alat tinjauan yang sudah ada di Claude Code: plugin [panduan keamanan](https://code.claude.com/docs/id/security-guidance.md) meninjau kode saat Claude menulisnya, [`/security-review`](https://code.claude.com/docs/id/commands#all-commands) menjalankan satu kali melewati cabang Anda, dan [Code Review](https://code.claude.com/docs/id/code-review.md) meninjau permintaan tarik. Untuk cara lapisan bertumpuk, lihat [Bagaimana plugin cocok dengan alat keamanan lainnya](#how-the-plugin-fits-with-other-security-tools).15Plugin ini juga berbeda dari alat peninjauan yang sudah ada di Claude Code: [plugin panduan keamanan](https://code.claude.com/docs/id/security-guidance.md) meninjau kode saat Claude menulisnya, [`/security-review`](https://code.claude.com/docs/id/commands#all-commands) menjalankan satu kali pemeriksaan pada branch Anda, dan [Code Review](https://code.claude.com/docs/id/code-review.md) meninjau pull request. Untuk mengetahui bagaimana lapisan-lapisan ini saling melengkapi, lihat [Bagaimana plugin ini berpadu dengan alat keamanan lainnya](#how-the-plugin-fits-with-other-security-tools).

16 16 

17## Prasyarat17## Prasyarat

18 18 


23* Linux, macOS, atau Windows.23* Linux, macOS, atau Windows.

24* Git, untuk pemindaian perubahan dan untuk mengubah temuan menjadi patch; pekerjaan tersebut tidak mendukung sistem kontrol versi lainnya. Pemindaian lengkap berfungsi di direktori apa pun, dengan atau tanpa kontrol versi.24* Git, untuk pemindaian perubahan dan untuk mengubah temuan menjadi patch; pekerjaan tersebut tidak mendukung sistem kontrol versi lainnya. Pemindaian lengkap berfungsi di direktori apa pun, dengan atau tanpa kontrol versi.

25 25 

26## Models and providers26## Model dan penyedia

27 27 

28Pemindaian berjalan di dalam sesi Claude Code Anda. Plugin tidak melakukan panggilan model sendiri, jadi tidak ada kunci API terpisah atau pengaturan penyedia yang perlu dikonfigurasi.28Pemindaian berjalan di dalam sesi Claude Code Anda. Plugin ini tidak melakukan panggilan model sendiri, sehingga tidak ada kunci API atau pengaturan penyedia terpisah yang perlu dikonfigurasi.

29 29 

30* **Model**: agen yang mencari kerentanan, memverifikasi temuan, dan menulis serta meninjau patch berjalan pada [model sesi Anda](https://code.claude.com/docs/id/sub-agents.md#choose-a-model). Untuk mengubahnya, jalankan [`/model`](https://code.claude.com/docs/id/model-config#setting-your-model) dalam sesi Anda sebelum memulai pemindaian. Beberapa langkah pendukung, seperti pemetaan repositori, menggunakan [alias `sonnet`](https://code.claude.com/docs/id/model-config#model-aliases) sebagai gantinya.30* **Model**: agent yang memburu kerentanan, memverifikasi temuan, serta menulis dan meninjau patch berjalan pada [model sesi Anda](https://code.claude.com/docs/id/sub-agents.md#choose-a-model). Untuk mengubahnya, jalankan [`/model`](https://code.claude.com/docs/id/model-config#setting-your-model) di sesi Anda sebelum memulai pemindaian. Beberapa langkah pendukung, seperti memetakan repositori, menggunakan [alias `sonnet`](https://code.claude.com/docs/id/model-config#model-aliases) sebagai gantinya.

31* **Provider**: pemindaian berjalan pada paket berbayar, dengan akses API Anthropic, atau pada [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md) seperti [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/id/google-vertex-ai.md), atau [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md).31* **Penyedia**: pemindaian berjalan pada paket berbayar, dengan akses Anthropic API, atau pada [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md) seperti [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/id/google-vertex-ai.md), atau [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md).

32 32 

33Pada penyedia pihak ketiga, alias `sonnet` dapat diselesaikan ke versi yang berbeda daripada yang ada di API Anthropic. Jika akun Anda tidak dapat menggunakan versi tersebut, [pin versi model Anda](https://code.claude.com/docs/id/model-config.md#pin-models-for-third-party-deployments), termasuk `ANTHROPIC_DEFAULT_SONNET_MODEL`.33Pada penyedia pihak ketiga, alias `sonnet` dapat di-resolve ke versi yang berbeda dibandingkan pada Anthropic API. Jika akun Anda tidak dapat menggunakan versi tersebut, [sematkan versi model Anda](https://code.claude.com/docs/id/model-config.md#pin-models-for-third-party-deployments), termasuk `ANTHROPIC_DEFAULT_SONNET_MODEL`.

34 34 

35[Fallback model otomatis](https://code.claude.com/docs/id/model-config.md#automatic-model-fallback) menjalankan kembali permintaan yang ditandai oleh penjaga model. Pada Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry, permintaan dapat berakhir dengan pesan penolakan sebagai gantinya, tergantung pada [cara penyebaran Anda diatur](https://code.claude.com/docs/id/model-config.md#enable-fallback-on-bedrock-agent-platform-and-foundry).35[Fallback model otomatis](https://code.claude.com/docs/id/model-config.md#automatic-model-fallback) menjalankan ulang permintaan yang ditandai oleh safeguard model. Pada Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry, permintaan tersebut dapat berakhir dengan pesan penolakan sebagai gantinya, bergantung pada [cara deployment Anda disiapkan](https://code.claude.com/docs/id/model-config.md#enable-fallback-on-bedrock-agent-platform-and-foundry).

36 36 

37## Instal plugin37## Instal plugin

38 38 


61 61 

62Untuk menghapus plugin, copot dari menu `/plugin`, atau jalankan `claude plugin uninstall claude-security` di terminal Anda.62Untuk menghapus plugin, copot dari menu `/plugin`, atau jalankan `claude plugin uninstall claude-security` di terminal Anda.

63 63 

64## Pindai dan perbaiki basis kode Anda64## Pindai dan perbaiki codebase Anda

65 65 

66Plugin menambahkan satu perintah, `/claude-security`, yang membuka menu dari tiga pekerjaannya: memindai basis kode, memindai serangkaian perubahan, dan menyarankan patch. Jalur bahagia menjalankan pemindaian penuh, kemudian mengubah temuannya menjadi patch:66Plugin ini menambahkan satu perintah, `/claude-security`, yang membuka menu berisi tiga tugasnya: memindai codebase, memindai sekumpulan perubahan, dan menyarankan patch. Alur utamanya menjalankan pemindaian penuh, lalu mengubah temuannya menjadi patch:

67 67 

68**1. Buka menu Claude Security**68**1. Buka menu Claude Security**

69 69 


71 71 

72**2. Pilih apa yang akan dipindai**72**2. Pilih apa yang akan dipindai**

73 73 

74Plugin membaca repositori Anda terlebih dahulu, kemudian menawarkan seluruh repositori atau area terfokus, dengan jumlah file dan biaya relatif setiap opsi dinyatakan. Pilih seluruh repositori, atau jawab "I don't know" dan plugin memilih default yang masuk akal untuk ukuran repositori Anda.74Plugin membaca repositori Anda terlebih dahulu, lalu menawarkan seluruh repositori atau area yang terfokus. Pilih seluruh repositori, atau jawab "I don't know" dan plugin akan memilih default yang masuk akal untuk ukuran repositori Anda.

75 75 

76**3. Konfirmasi eksekusi**76**3. Konfirmasi eksekusi**

77 77 

78Pemindaian mungkin memakan waktu, mungkin menggunakan jumlah token yang signifikan, dan memerlukan Claude Code tetap terbuka saat selesai. Tidak ada yang berjalan sampai Anda mengonfirmasi.78Pemindaian dapat memakan waktu cukup lama, dapat menggunakan token dalam jumlah yang signifikan, dan memerlukan Claude Code tetap terbuka hingga selesai. Tidak ada yang berjalan sampai Anda mengonfirmasi.

79 79 

80**4. Baca laporan**80**4. Baca laporan**

81 81 

82Saat pemindaian berjalan, laporan setiap tahap saat dimulai, dengan detail tersedia di bawah [`/workflows`](https://code.claude.com/docs/id/workflows). Hasil mendarat di direktori dengan stempel waktu di repositori Anda, dijelaskan dalam [Baca hasil pemindaian](#read-the-scan-results).82Selama pemindaian berjalan, pemindaian melaporkan setiap tahap saat dimulai, dengan detail yang tersedia di [`/workflows`](https://code.claude.com/docs/id/workflows). Hasil ditulis ke direktori bertanda waktu di repositori Anda, seperti yang dijelaskan di [Membaca hasil pemindaian](#read-the-scan-results).

83 83 

84**5. Ubah temuan menjadi patch**84**5. Ubah temuan menjadi patch**

85 85 

86Jalankan `/claude-security` lagi dan pilih **Suggest patches**, kemudian pilih temuan mana yang akan ditangani. Patch yang ditinjau mendarat di folder `patches/` laporan; [Perbaiki temuan](#fix-findings) mencakup cara setiap patch dibangun dan ditinjau.86Jalankan `/claude-security` lagi dan pilih **Suggest patches**, lalu pilih temuan mana yang akan ditangani. Patch yang telah ditinjau ditulis ke folder `patches/` milik laporan; [Memperbaiki temuan](#fix-findings) menjelaskan bagaimana setiap patch dibuat dan ditinjau.

87 87 

88**6. Terapkan patch yang Anda terima**88**6. Terapkan patch yang Anda terima**

89 89 

90Terapkan setiap patch dari shell Anda dengan `git apply`, dalam permintaan tarik sendirinya. Patch tidak pernah diterapkan secara otomatis.90Terapkan setiap patch dari shell Anda dengan `git apply`, masing-masing dalam pull request tersendiri. Patch tidak pernah diterapkan secara otomatis.

91 91 

92Anda tidak harus memulai dari menu: minta pekerjaan secara langsung, sebagai argumen untuk perintah, seperti `/claude-security scan my branch`, atau dalam bahasa biasa, seperti "scan commit abc1234". Plugin bekerja terbaik dalam [mode otomatis](https://code.claude.com/docs/id/permission-modes.md), yang memungkinkan agen pemindaian untuk melanjutkan tanpa permintaan izin di setiap langkah.92Anda tidak harus memulai dari menu: minta tugas secara langsung, sebagai argumen untuk perintah, seperti `/claude-security scan my branch`, atau dalam bahasa biasa, seperti "scan commit abc1234". Plugin ini bekerja paling baik dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md), yang memungkinkan agent pemindaian melanjutkan tanpa permintaan izin di setiap langkah.

93 93 

94### Pindai hanya perubahan Anda94### Pindai hanya perubahan Anda

95 95 

96Ketika cabang Anda memiliki komit yang tidak dimiliki basis, menu `/claude-security` menawarkan untuk memindai hanya diff itu, sehingga Anda dapat memeriksa cabang sebelum menggabungkan. Anda juga dapat memindai salah satu permintaan tarik terbuka Anda, atau komit tunggal dengan memintanya, seperti "scan commit abc1234". Hanya perubahan yang berkomit yang dipindai: komit atau stash edit yang sedang berlangsung terlebih dahulu, atau jalankan pemindaian penuh, yang membaca pohon kerja.96Ketika branch Anda memiliki commit yang tidak dimiliki base-nya, menu `/claude-security` menawarkan untuk memindai hanya diff tersebut, sehingga Anda dapat memeriksa branch sebelum melakukan merge. Anda juga dapat memindai salah satu pull request Anda yang terbuka, atau satu commit dengan memintanya, seperti "scan commit abc1234". Hanya perubahan yang sudah di-commit yang dipindai: lakukan commit atau stash pada suntingan yang sedang berlangsung terlebih dahulu, atau jalankan pemindaian penuh, yang membaca working tree.

97 97 

98Pemindaian perubahan memerlukan repositori git; pemindaian penuh direktori tanpa versi masih berfungsi. Menemukan permintaan tarik terbuka Anda adalah satu-satunya langkah yang menjangkau jaringan, dan ditawarkan hanya ketika sesi Anda sudah memiliki izin untuk menjalankan CLI GitHub dan `gh` masuk.98Pemindaian perubahan memerlukan repositori git; pemindaian penuh pada direktori tanpa versi tetap berfungsi. Pencarian pull request Anda yang terbuka hanya ditawarkan ketika sesi Anda sudah memiliki izin untuk menjalankan GitHub CLI dan `gh` sudah masuk.

99 99 

100### Cakupan repositori besar100### Batasi cakupan repositori besar

101 101 

102Di repositori besar, pindai satu area sekaligus alih-alih seluruh pohon. Pilih salah satu cakupan terfokus yang ditawarkan plugin, seperti lapisan API atau kode autentikasi Anda, dan pemindaian menyesuaikan cakupannya dengan apa yang Anda pilih. Bagian cakupan laporan menyatakan apa yang diperiksa dan tidak diperiksa. Jalankan pemindaian lain di area berbeda kapan saja.102Pada repositori besar, pindai satu area pada satu waktu alih-alih seluruh tree. Pilih salah satu cakupan terfokus yang ditawarkan plugin, seperti lapisan API Anda atau kode autentikasi Anda, dan eksekusi akan menyesuaikan ukurannya dengan apa yang Anda pilih. Bagian cakupan pada laporan menyatakan apa yang diperiksa dan apa yang tidak. Jalankan pemindaian lain pada area yang berbeda kapan saja.

103 103 

104### Pilih upaya pemindaian104### Pilih tingkat upaya pemindaian

105 105 

106Upaya pemindaian menentukan seberapa dalam pemindaian dilakukan. Temuan Anda melalui verifikasi independen yang sama pada `low`, `medium`, dan `high`.106Upaya pemindaian menentukan seberapa dalam pemindaian dilakukan. Temuan Anda melalui verifikasi independen yang sama pada `low`, `medium`, dan `high`.

107 107 

108* **`low`**: tinjauan pertama yang cepat. Upaya ini melewati peta arsitektur dan model ancaman saat Anda memindai codebase Anda.108* **`low`**: tinjauan awal yang cepat. Tingkat ini melewati peta arsitektur dan model ancaman saat Anda memindai codebase Anda.

109* **`medium`**: default.109* **`medium`**: default.

110* **`high`**: apa yang dilakukan `medium`, ditambah perburuan kerentanan yang lebih banyak dalam kode yang sama.110* **`high`**: apa yang dilakukan `medium`, ditambah pencarian kerentanan yang lebih banyak pada kode yang sama.

111 111 

112Sebutkan upaya pemindaian dalam permintaan Anda di prompt Claude Code, seperti `/claude-security scan my public API code at high` atau `/claude-security scan my branch at high`.112Sebutkan upaya pemindaian dalam permintaan Anda di prompt Claude Code, seperti `/claude-security scan my public API code at high` atau `/claude-security scan my branch at high`.

113 113 

114Jika pemindaian repositori besar menemukan lebih sedikit dari yang Anda harapkan, pilih upaya pemindaian `high`, lakukan pemindaian kedua kalinya, atau lakukan keduanya. Masing-masing dapat melaporkan temuan yang tidak dilaporkan oleh satu pemindaian `medium`.114Jika pemindaian repositori besar menemukan lebih sedikit dari yang Anda harapkan, pilih upaya pemindaian `high`, lakukan pemindaian kedua kalinya, atau lakukan keduanya. Masing-masing dapat melaporkan temuan yang tidak dilaporkan oleh satu pemindaian `medium`.

115 115 

116### Baca hasil pemindaian116### Membaca hasil pemindaian

117 117 

118Setiap pemindaian menulis hasilnya ke direktori `CLAUDE-SECURITY-<timestamp>/` dengan stempel waktu di repositori Anda:118Setiap pemindaian menulis hasilnya ke direktori bertanda waktu `CLAUDE-SECURITY-<timestamp>/` di repositori Anda:

119 119 

120* **`CLAUDE-SECURITY-RESULTS.md`**: laporan, dengan ID setiap temuan, seperti `F1`, ditambah dampak, skenario eksploitasi, keparahan, kepercayaan diri, dan rekomendasi120* **`CLAUDE-SECURITY-RESULTS.md`**: laporan, dengan ID setiap temuan, seperti `F1`, beserta dampak, skenario eksploitasi, tingkat keparahan, tingkat keyakinan, dan rekomendasinya

121* **`CLAUDE-SECURITY-RESULTS.jsonl`**: temuan yang sama dalam bentuk yang dapat dibaca mesin, satu objek JSON per baris121* **`CLAUDE-SECURITY-RESULTS.jsonl`**: temuan yang sama dalam bentuk yang dapat dibaca mesin, satu objek JSON per baris

122* **`CLAUDE-SECURITY-RESULTS.sarif`**: temuan yang sama sebagai log [SARIF 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) untuk pemindaian kode GitHub dan alat lain yang membaca standar. Pemindaian mengklasifikasikan temuan di bawah kategori kelemahan [CWE](https://cwe.mitre.org/) mereka122* **`CLAUDE-SECURITY-RESULTS.sarif`**: temuan yang sama sebagai log [SARIF 2.1.0](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) untuk GitHub code scanning dan tool lain apa pun yang membaca standar tersebut. Pemindaian mengklasifikasikan temuan berdasarkan kategori kelemahan [CWE](https://cwe.mitre.org/)

123* **`CLAUDE-SECURITY-REVISION-<commit>.json`**: stempel revisi, mencatat commit mana yang dipindai, pada [upaya pemindaian](#choose-a-scan-effort) apa, apakah perubahan yang belum di-commit merupakan bagian dari pohon yang dipindai, dan seberapa menyeluruh eksekusi diverifikasi, sehingga laporan selalu terikat pada kode yang dijelaskannya. Pemindaian di luar kontrol versi memberi stempel `UNVERSIONED` sebagai pengganti commit123* **`CLAUDE-SECURITY-REVISION-<commit>.json`**: penanda revisi, yang mencatat commit mana yang dipindai, pada [upaya pemindaian](#choose-a-scan-effort) apa, apakah perubahan yang belum di-commit termasuk dalam tree yang dipindai, dan seberapa menyeluruh eksekusi diverifikasi. Pemindaian di luar kontrol versi menandai `UNVERSIONED` sebagai pengganti commit

124 124 

125Direktori itu adalah satu-satunya perubahan yang dibuat pemindaian pada checkout Anda, dan membawa `.gitignore` sendiri, sehingga `git add` yang tersesat tidak pernah menyapu laporan ke dalam komit. Untuk menyimpan laporan dalam riwayat untuk jejak audit, hapus satu file `.gitignore` itu dan komit direktori seperti yang lain.125Direktori tersebut adalah satu-satunya perubahan yang dibuat pemindaian pada checkout Anda, dan direktori itu membawa `.gitignore` sendiri, sehingga `git add` yang tidak disengaja tidak akan pernah memasukkan laporan ke dalam commit. Untuk menyimpan laporan dalam riwayat sebagai jejak audit, hapus satu file `.gitignore` tersebut dan lakukan commit pada direktori seperti direktori lainnya.

126 126 

127Temuan hanya muncul dalam laporan setelah agen verifikasi independen menganalisisnya, yang membuat laporan singkat dan layak dibaca. Pemindaian bersifat nondeterministik: dua pemindaian kode yang sama dapat mengungkap temuan yang berbeda. Jalankan pemindaian secara teratur, dan gunakan stempel revisi untuk mengatribusikan setiap laporan ke kode dan pengaturan yang tepat yang dicakupnya.127Temuan hanya muncul di laporan setelah agent verifikator independen menganalisisnya, yang menjaga laporan tetap singkat dan layak dibaca. Pemindaian bersifat nondeterministik: dua pemindaian pada kode yang sama dapat memunculkan temuan yang berbeda. Jalankan pemindaian secara rutin.

128 128 

129## Perbaiki temuan129## Memperbaiki temuan

130 130 

131Mulai alur perbaikan dengan memilih **Suggest patches** dari menu `/claude-security`, atau tanyakan dalam bahasa biasa, seperti "fix finding F3", kemudian pilih temuan mana dari laporan yang akan ditangani. Patch dibangun terhadap kode yang berkomit, dan laporan harus masih menjelaskan kode yang Anda miliki: temuan yang kodenya telah berubah sejak saat itu dilewati dengan catatan, dan plugin menawarkan pemindaian segar alih-alih menambal dari laporan basi. Setiap patch dirancang dalam salinan kerja sementara repositori Anda, sehingga file sumber Anda tetap tidak tersentuh sampai Anda menerapkan patch sendiri.131Mulai alur perbaikan dengan memilih **Suggest patches** dari menu `/claude-security`, atau minta dalam bahasa sehari-hari, seperti "fix finding F3", lalu pilih temuan mana dari laporan yang ingin ditangani. Patch dibuat berdasarkan kode yang sudah di-commit, dan laporan harus masih menggambarkan kode yang Anda miliki: temuan yang kodenya telah berubah sejak itu akan dilewati dengan sebuah catatan, dan plugin akan menawarkan pemindaian baru alih-alih membuat patch dari laporan yang sudah usang. Setiap patch disusun dalam salinan sementara repositori Anda, sehingga file sumber Anda tetap tidak tersentuh hingga Anda sendiri menerapkan patch.

132 132 

133Sebelum pengiriman, setiap patch ditinjau oleh agen yang independen dari yang menulisnya, yang menjalankan tes proyek Anda terhadap perubahan ketika kode memilikinya dan membaca diff menurut penilaiannya sendiri untuk apa pun yang baru yang mungkin diperkenalkannya. Patch ditulis hanya ketika tinjauan itu dapat membuktikan bahwa perubahan mengatasi satu temuan, tidak memperkenalkan kerentanan baru, dan membiarkan perilaku lainnya tidak berubah. Ketika tidak dapat membuktikan ketiga-tiganya, Anda mendapatkan catatan singkat yang menjelaskan alasannya alih-alih patch.133Sebelum diserahkan, setiap patch ditinjau oleh agent yang independen dari agent yang menulisnya, yang menjalankan pengujian proyek Anda terhadap perubahan tersebut jika kode memiliki pengujian dan membaca diff secara mandiri untuk mencari hal baru apa pun yang mungkin ditimbulkannya. Patch hanya ditulis jika tinjauan tersebut dapat menjamin bahwa perubahan menangani satu temuan tersebut, tidak menimbulkan kerentanan baru, dan membiarkan perilaku lainnya tidak berubah. Jika tinjauan tidak dapat menjamin ketiga hal tersebut, Anda akan mendapatkan catatan singkat yang menjelaskan alasannya alih-alih patch.

134 134 

135### Patch tidak pernah diterapkan secara otomatis135### Patch tidak pernah diterapkan secara otomatis

136 136 

137Menerapkan patch selalu keputusan Anda. Patch mendarat di folder `patches/` laporan, satu `F<n>.patch` per temuan dengan catatan di sebelahnya menjelaskan perubahan. Terapkan satu dari shell Anda, atau minta Claude untuk menerapkannya dan membuka permintaan tarik:137Menerapkan patch selalu menjadi keputusan Anda. Patch ditulis ke folder `patches/` laporan, satu `F<n>.patch` per temuan dengan catatan di sampingnya yang menjelaskan perubahan tersebut. Terapkan patch dari shell Anda, atau minta Claude untuk menerapkannya dan membuka pull request:

138 138 

139```bash theme={null}139```bash theme={null}

140git apply CLAUDE-SECURITY-<timestamp>/patches/F1.patch140git apply CLAUDE-SECURITY-<timestamp>/patches/F1.patch

141```141```

142 142 

143Ketika kode yang dipatch tidak memiliki tes, catatan patch mengatakan demikian, sehingga Anda tahu tinjauannya berjalan tanpa pengujian. Terapkan setiap patch dalam permintaan tariknya sendiri sehingga dapat ditinjau dan diuji sendiri.143Jika kode yang di-patch tidak memiliki pengujian, catatan patch akan menyebutkannya, sehingga Anda tahu bahwa tinjauannya berjalan tanpa lulus pengujian. Terapkan setiap patch dalam pull request tersendiri agar dapat ditinjau dan diuji secara terpisah.

144 144 

145## Bagaimana plugin cocok dengan alat keamanan lainnya145## Bagaimana plugin ini melengkapi tool keamanan lainnya

146 146 

147Plugin Claude Security adalah lapisan pemindaian mendalam sesuai permintaan dalam tumpukan pertahanan berlapis, bersama dengan plugin [security guidance](https://code.claude.com/docs/id/security-guidance.md), [`/security-review`](https://code.claude.com/docs/id/commands#all-commands), [Code Review](https://code.claude.com/docs/id/code-review.md), produk [Claude Security](https://claude.com/product/claude-security) yang dikelola, dan pemindai yang ada:147Plugin Claude Security adalah lapisan pemindaian mendalam sesuai permintaan dalam tumpukan pertahanan berlapis (defense-in-depth), bersama dengan [plugin panduan keamanan](https://code.claude.com/docs/id/security-guidance.md), [`/security-review`](https://code.claude.com/docs/id/commands#all-commands), [Code Review](https://code.claude.com/docs/id/code-review.md), produk terkelola [Claude Security](https://claude.com/product/claude-security), dan pemindai yang sudah Anda miliki:

148 148 

149| Tahap | Alat | Apa yang dicakup |149| Tahap | Tool | Cakupan |

150| :- | :- | :- |150| :- | :- | :- |

151| Dalam sesi | Plugin [Security guidance](https://code.claude.com/docs/id/security-guidance.md) | Kerentanan umum dalam kode yang ditulis Claude, diperbaiki dalam sesi yang sama |151| Dalam sesi | [Plugin panduan keamanan](https://code.claude.com/docs/id/security-guidance.md) | Kerentanan umum dalam kode yang ditulis Claude, diperbaiki dalam sesi yang sama |

152| Sesuai permintaan, satu kali melewati | [`/security-review`](https://code.claude.com/docs/id/commands#all-commands) | Satu kali lintasan keamanan pada cabang saat ini |152| Sesuai permintaan, satu kali jalan | [`/security-review`](https://code.claude.com/docs/id/commands#all-commands) | Pemeriksaan keamanan satu kali pada branch saat ini |

153| Sesuai permintaan, pemindaian mendalam | Plugin Claude Security | Pemindaian multi-agen repositori atau diff, dengan temuan dan patch yang ditinjau secara independen |153| Sesuai permintaan, pemindaian mendalam | Plugin Claude Security | Pemindaian multi-agen terhadap repositori atau diff, dengan temuan dan patch yang ditinjau secara independen |

154| Pada permintaan tarik | [Code Review](https://code.claude.com/docs/id/code-review.md), paket Team dan Enterprise | Tinjauan kebenaran dan keamanan multi-agen dengan konteks basis kode penuh |154| Pada pull request | [Code Review](https://code.claude.com/docs/id/code-review.md), paket Team dan Enterprise | Peninjauan kebenaran dan keamanan multi-agen dengan konteks codebase lengkap |

155| Dikelola | [Claude Security](https://claude.com/product/claude-security), paket Enterprise | Pemindaian yang dihosting yang memantau repositori yang terhubung |155| Terkelola | [Claude Security](https://claude.com/product/claude-security), paket Enterprise | Pemindaian yang di-hosting yang memantau repositori yang terhubung |

156| Di CI | Pemindai analisis statis dan ketergantungan yang ada | Aturan khusus bahasa, pemeriksaan rantai pasokan, dan penegakan kebijakan |156| Dalam CI | Pemindai analisis statis dan dependensi yang sudah Anda miliki | Aturan khusus bahasa, pemeriksaan rantai pasokan, dan penegakan kebijakan |

157 157 

158Plugin tidak menggantikan alat keamanan kode sumber yang ada. Jalankan bersama analisis statis, pemindaian ketergantungan, dan tinjauan kode: alat ini bernalar tentang kode Anda seperti peneliti keamanan manusia, yang melengkapi pemeriksaan deterministik yang disediakan alat tersebut.158Plugin ini tidak menggantikan tool keamanan kode sumber yang sudah Anda miliki. Jalankan plugin ini bersama analisis statis, pemindaian dependensi, dan code review: plugin ini menalar kode Anda seperti yang dilakukan oleh peneliti keamanan manusia, yang melengkapi pemeriksaan deterministik yang disediakan oleh tool tersebut.

159 159 

160## Pemecahan masalah160## Pemecahan masalah

161 161 

Details

102* **Peran**: pada setiap paket, Anda dapat menambahkan dan menghapus rahasia di lingkungan Anda sendiri apa pun peran Anda. Pada Team dan Enterprise, Owner memegang peran admin organisasi di organisasi claude.ai Anda dan Admin tidak, yang mengubah apa yang Anda lihat dalam kasus-kasus berikut:102* **Peran**: pada setiap paket, Anda dapat menambahkan dan menghapus rahasia di lingkungan Anda sendiri apa pun peran Anda. Pada Team dan Enterprise, Owner memegang peran admin organisasi di organisasi claude.ai Anda dan Admin tidak, yang mengubah apa yang Anda lihat dalam kasus-kasus berikut:

103 * **Lingkungan Anda sendiri**: tanpa peran admin organisasi, **Add secret** membuka [formulir yang lebih singkat](#add-a-secret-without-the-role)103 * **Lingkungan Anda sendiri**: tanpa peran admin organisasi, **Add secret** membuka [formulir yang lebih singkat](#add-a-secret-without-the-role)

104 * **Lingkungan bersama**: Owner [menambahkan dan menghapus rahasianya](#add-a-credential) dari pengaturan admin. Tanpa peran admin organisasi, minta Owner untuk menambahkan rahasia, karena dialog lingkungan tidak memiliki bagian **Network secrets**104 * **Lingkungan bersama**: Owner [menambahkan dan menghapus rahasianya](#add-a-credential) dari pengaturan admin. Tanpa peran admin organisasi, minta Owner untuk menambahkan rahasia, karena dialog lingkungan tidak memiliki bagian **Network secrets**

105* **Jenis lingkungan**: lingkungan cloud yang di-host Anthropic yang sudah ada. [Lingkungan yang di-host sendiri](https://code.claude.com/docs/id/self-hosted-environments) tidak memiliki rahasia jaringan105* **Jenis lingkungan**: lingkungan cloud yang di-host Anthropic. [Lingkungan yang di-host sendiri](https://code.claude.com/docs/id/self-hosted-environments) tidak memiliki rahasia jaringan

106* **Jangkauan API**: API menerima koneksi dari internet, karena permintaan meninggalkan dari jaringan Anthropic106* **Jangkauan API**: API menerima koneksi dari internet, karena permintaan meninggalkan dari jaringan Anthropic

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

108 108 


422 422 

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

424 424 

425## Skrip setup425## Setup script

426 426 

427Skrip setup adalah skrip Bash yang berjalan ketika sesi cloud baru dimulai, sebelum Claude Code diluncurkan. Gunakan skrip setup untuk menginstal dependensi, mengonfigurasi alat, atau mengambil apa pun yang dibutuhkan sesi yang tidak diinstal sebelumnya.427Setup script adalah skrip Bash yang berjalan saat sesi cloud baru dimulai, sebelum Claude Code diluncurkan. Gunakan setup script untuk menginstal dependensi, mengonfigurasi tool, atau mengambil apa pun yang dibutuhkan sesi yang belum terinstal sebelumnya.

428 428 

429Skrip berjalan sebagai root di Ubuntu 24.04, jadi `apt install` dan sebagian besar manajer paket bahasa bekerja.429Skrip berjalan sebagai root di Ubuntu 24.04, sehingga `apt install` dan sebagian besar manajer paket bahasa dapat berfungsi.

430 430 

431### Menambahkan skrip setup431### Menambahkan setup script

432 432 

433Untuk menambahkan skrip setup ke lingkungan Anda sendiri, Anda dapat mengetik atau menempelkannya, atau memuat file teks seperti `setup.sh`. [Tambahkan atau edit lingkungan](#configure-your-environment) dan pilih baris **Setup script**. Masukkan skrip di kotak yang terbuka, atau pilih **Choose file** untuk mengganti isi kotak dengan teks dari file berukuran hingga 64 KB. Kemudian pilih **Add environment** atau **Save changes**.433Untuk menambahkan setup script ke environment Anda sendiri, Anda dapat mengetik atau menempelkannya, atau memuat file teks seperti `setup.sh`. [Tambahkan atau edit environment](#configure-your-environment) lalu pilih baris **Setup script**. Masukkan skrip di kotak yang terbuka, atau pilih **Choose file** untuk mengganti isi kotak dengan teks dari file berukuran hingga 64 KB. Kemudian pilih **Add environment** atau **Save changes**.

434 434 

435Contoh ini menginstal [ShellCheck](https://www.shellcheck.net/), yang tidak diinstal sebelumnya.435Contoh ini menginstal [ShellCheck](https://www.shellcheck.net/), yang belum terinstal sebelumnya.

436 436 

437```bash theme={null}437```bash theme={null}

438#!/bin/bash438#!/bin/bash


441 441 

442### Persyaratan skrip442### Persyaratan skrip

443 443 

444Skrip setup memiliki empat batasan untuk ditulis:444Setup script memiliki empat batasan yang perlu diperhatikan saat menulisnya:

445 445 

446* **Exit zero**: jika skrip keluar non-zero, sesi [gagal dimulai](https://code.claude.com/docs/id/web-quickstart.md#setup-script-failed) atau dimulai tanpa apa pun yang gagal diinstal oleh skrip. Tambahkan `|| true` ke perintah non-kritis sehingga kegagalan instalasi sesekali tidak membuat skrip gagal.446* **Keluar dengan kode nol**: jika skrip keluar dengan kode bukan nol, sesi [gagal dimulai](https://code.claude.com/docs/id/web-quickstart.md#setup-script-failed) atau dimulai tanpa apa pun yang gagal diinstal oleh skrip. Tambahkan `|| true` pada perintah yang tidak kritis agar kegagalan instalasi yang sesekali terjadi tidak membuat skrip gagal.

447* **Selesai dalam lima menit**: jaga runtime total skrip di bawah kira-kira lima menit sehingga [cache lingkungan](#environment-caching) dapat dibangun. Ketika setup memakan waktu lebih lama dari itu, lingkungan tidak di-cache. Jalankan instalasi independen secara paralel dengan `&` dan `wait`, dan pindahkan unduhan tunggal apa pun yang tidak cocok ke [hook SessionStart](#setup-scripts-vs-sessionstart-hooks) yang meluncurkannya di latar belakang. Jika sesi baru macet atau gagal selama setup, lihat [New sessions hang or time out during setup](https://code.claude.com/docs/id/web-quickstart.md#new-sessions-hang-or-time-out-during-setup).447* **Selesai dalam lima menit**: jaga total waktu eksekusi skrip di bawah kira-kira lima menit agar [cache environment](#environment-caching) dapat di-build. Jika setup memakan waktu lebih lama dari itu, environment tidak di-cache. Jalankan instalasi yang independen secara paralel dengan `&` dan `wait`, dan pindahkan unduhan tunggal apa pun yang tidak muat ke dalam [hook SessionStart](#setup-scripts-vs-sessionstart-hooks) yang menjalankannya di latar belakang. Jika sesi baru macet atau gagal selama setup, lihat [New sessions hang or time out during setup](https://code.claude.com/docs/id/web-quickstart.md#new-sessions-hang-or-time-out-during-setup).

448* **Akses jaringan untuk instalasi**: instalasi paket perlu menjangkau registri. Tingkat **Trusted** default mencakup [registri paket umum](#default-allowed-domains) termasuk npm, PyPI, RubyGems, dan crates.io; dengan akses jaringan **None**, instalasi gagal.448* **Akses jaringan untuk instalasi**: instalasi paket perlu menjangkau registri. Level default **Trusted** mencakup [registri paket umum](#default-allowed-domains) termasuk npm, PyPI, RubyGems, dan crates.io; dengan akses jaringan **None**, instalasi gagal.

449* **Variabel lingkungan belum diatur**: skrip berjalan sebelum sesi mengatur [environment variable](#set-environment-variables) lingkungan. Atur nilai apa pun yang dibutuhkan skrip di dalam skrip itu sendiri.449* **Variabel environment belum diatur**: skrip berjalan sebelum sesi mengatur [environment variable](#set-environment-variables) milik environment. Atur nilai apa pun yang dibutuhkan skrip di dalam skrip itu sendiri.

450 450 

451### Caching lingkungan451### Caching environment

452 452 

453Skrip setup berjalan pertama kali Anda memulai sesi di lingkungan. Ketika setup selesai dalam [kira-kira lima menit](#script-requirements), Anthropic membuat snapshot sistem file dan menggunakan kembali snapshot itu sebagai titik awal untuk sesi nanti. Sesi baru dimulai dengan dependensi, alat, dan gambar Docker Anda sudah di disk, dan melewati langkah skrip setup. Ini menjaga startup cepat bahkan ketika skrip menginstal toolchain besar atau menarik gambar kontainer. Jika setup memakan waktu lebih lama dari kira-kira lima menit, lingkungan tidak di-cache.453Setup script berjalan saat pertama kali Anda memulai sesi di suatu environment. Ketika setup selesai dalam [kira-kira lima menit](#script-requirements), Anthropic mengambil snapshot filesystem dan menggunakan kembali snapshot tersebut sebagai titik awal untuk sesi-sesi berikutnya. Sesi baru dimulai dengan dependensi, tool, dan image Docker Anda yang sudah ada di disk, dan melewati langkah setup script. Hal ini menjaga startup tetap cepat bahkan ketika skrip menginstal toolchain besar atau menarik image container. Jika setup memakan waktu lebih dari kira-kira lima menit, environment tidak di-cache.

454 454 

455Cache adalah snapshot sistem file, jadi menyimpan apa yang ditulis skrip setup ke disk dan kehilangan apa pun yang hanya berjalan. Paket yang Anda instal, gambar Docker yang Anda tarik, dan file yang Anda tulis semuanya terbawa. Database yang dimulai skrip, tumpukan `docker compose up`, atau proses latar belakang lainnya tidak; mulai mereka per sesi dengan meminta Claude atau dengan [hook SessionStart](#setup-scripts-vs-sessionstart-hooks).455Cache adalah snapshot filesystem, sehingga menyimpan apa yang ditulis setup script ke disk dan kehilangan apa pun yang hanya sedang berjalan. Paket yang Anda instal, image Docker yang Anda tarik, dan file yang Anda tulis semuanya terbawa. Database yang dijalankan skrip, stack `docker compose up`, atau proses latar belakang lainnya tidak terbawa; jalankan hal-hal tersebut per sesi dengan meminta Claude atau dengan [hook SessionStart](#setup-scripts-vs-sessionstart-hooks).

456 456 

457Skrip setup berjalan lagi untuk membangun ulang cache ketika Anda mengubah skrip setup lingkungan atau host jaringan yang diizinkan, dan ketika cache mencapai kedaluwarsa setelah kira-kira tujuh hari. Di lingkungan yang dihosting Anthropic, skrip setup tidak berjalan ketika VM sesi [dipulihkan setelah menganggur](#set-environment-variables), jadi perubahan pada skrip mencapai sesi yang ada hanya ketika VM-nya [dirampas](https://code.claude.com/docs/id/claude-code-on-the-web.md#environment-expired) dan dibangun ulang. Untuk menerapkan perubahan segera, jalankan perintah dalam sesi atau mulai sesi baru.457Setup script berjalan lagi untuk membangun ulang cache ketika Anda mengubah setup script environment atau host jaringan yang diizinkan, dan ketika cache mencapai masa kedaluwarsanya setelah kira-kira tujuh hari. Di environment yang di-host Anthropic, setup script tidak berjalan ketika VM sesi [dipulihkan setelah tidak aktif](#set-environment-variables), sehingga perubahan pada skrip hanya mencapai sesi yang sudah ada ketika VM-nya telah [diambil kembali](https://code.claude.com/docs/id/claude-code-on-the-web.md#environment-expired) dan di-build ulang. Untuk menerapkan perubahan segera, jalankan perintah di dalam sesi atau mulai sesi baru.

458 458 

459Anda tidak perlu mengaktifkan caching atau mengelola snapshot sendiri.459Anda tidak perlu mengaktifkan caching atau mengelola snapshot sendiri.

460 460 

461### Skrip setup vs. hook SessionStart461### Setup script vs. hook SessionStart

462 462 

463Gunakan skrip setup untuk menyediakan VM itu sendiri: toolchain dan alat CLI yang tidak [diinstal sebelumnya](#installed-tools). Gunakan [hook SessionStart](https://code.claude.com/docs/id/hooks.md#sessionstart) untuk setup proyek yang harus berjalan di mana-mana, cloud dan lokal, seperti `npm install`.463Gunakan setup script untuk menyiapkan VM itu sendiri: toolchain dan tool CLI yang belum [terinstal sebelumnya](#installed-tools). Gunakan [hook SessionStart](https://code.claude.com/docs/id/hooks.md#sessionstart) untuk setup proyek yang harus berjalan di mana saja, baik cloud maupun lokal, seperti `npm install`.

464 464 

465Skrip setup dan hook SessionStart berjalan dalam urutan tetap ketika sesi cloud dimulai. Tabel membandingkan di mana Anda mengonfigurasinya, kapan mereka berjalan, dan di mana mereka berjalan.465Setup script dan hook SessionStart berjalan dalam urutan tetap saat sesi cloud dimulai. Tabel berikut membandingkan tempat Anda mengonfigurasinya, kapan keduanya berjalan, dan di mana keduanya berjalan.

466 466 

467| | Skrip setup | Hook SessionStart |467| | Setup script | Hook SessionStart |

468| - | - | - |468| - | - | - |

469| **Di mana Anda mengonfigurasinya** | Dialog lingkungan di [claude.ai/code](https://claude.ai/code), ditambah halaman admin **Cloud environments** untuk [lingkungan bersama](#organization-shared-environments) | File [pengaturan](https://code.claude.com/docs/id/settings.md#where-settings-live) seperti `.claude/settings.json` repo Anda; lihat [Apa yang terbawa dari setup Anda](#what-carries-over-from-your-setup) untuk file mana yang menjangkau sesi cloud |469| **Tempat Anda mengonfigurasinya** | Dialog environment di [claude.ai/code](https://claude.ai/code), ditambah halaman admin **Cloud environments** untuk [environment bersama](#organization-shared-environments) | [File pengaturan](https://code.claude.com/docs/id/settings.md#where-settings-live) seperti `.claude/settings.json` di repo Anda; lihat [What carries over from your setup](#what-carries-over-from-your-setup) untuk file mana saja yang mencapai sesi cloud |

470| **Kapan mereka berjalan** | Sebelum Claude Code diluncurkan, dilewati ketika [lingkungan cache](#environment-caching) ada | Setelah Claude Code diluncurkan, di setiap sesi termasuk yang dilanjutkan |470| **Kapan berjalan** | Sebelum Claude Code diluncurkan, dilewati ketika [environment yang di-cache](#environment-caching) sudah ada | Setelah Claude Code diluncurkan, pada setiap sesi termasuk yang dilanjutkan |

471| **Di mana mereka berjalan** | Sesi cloud saja | Sesi lokal dan cloud |471| **Di mana berjalan** | Hanya sesi cloud | Sesi lokal dan cloud |

472 472 

473Jika Anda memiliki hook SessionStart di `~/.claude/settings.json` tingkat pengguna, jangan harapkan mereka di cloud. Pengaturan tingkat pengguna tetap di mesin Anda. Hook mana yang berjalan tergantung di mana sesi berjalan:473Jika Anda memiliki hook SessionStart di `~/.claude/settings.json` tingkat pengguna, jangan berharap hook tersebut ada di cloud. Pengaturan tingkat pengguna tetap berada di mesin Anda. Hook lain mana yang berjalan bergantung pada tempat sesi berjalan:

474 474 

475* **Lingkungan yang dihosting Anthropic**: Claude Code menjalankan hook dari [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md) organisasi Anda dan, di luar thread [proyek](https://code.claude.com/docs/id/claude-projects.md#what-threads-pick-up-from-your-repositories), dari repositori. Sesi [Claude Tag](https://claude.com/docs/claude-tag/overview) tidak menerima pengaturan terkelola server, jadi hook dari pengaturan terkelola server tidak berjalan di sana.475* **Environment yang di-host Anthropic**: Claude Code menjalankan hook dari [pengaturan yang dikelola server](https://code.claude.com/docs/id/server-managed-settings.md) organisasi Anda dan, di luar thread [proyek](https://code.claude.com/docs/id/claude-projects.md#what-threads-pick-up-from-your-repositories), dari repositori. Sesi [Claude Tag](https://claude.com/docs/claude-tag/overview) tidak menerima pengaturan yang dikelola server, sehingga hook dari pengaturan yang dikelola server tidak berjalan di sana.

476* **[Lingkungan yang dihosting sendiri](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#permissions-and-tool-approval)**: Claude Code juga menjalankan hook yang ditanam operator dari `~/.claude/` host runner, dan hook dalam file pengaturan yang dikelola gambar runner ketika file itu adalah salah satu dari [sumber yang dikelola Claude Code terapkan](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources).476* **[Environment self-hosted](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#permissions-and-tool-approval)**: Claude Code juga menjalankan hook yang disiapkan operator dari `~/.claude/` di host runner, serta hook di file pengaturan terkelola milik image runner ketika file tersebut merupakan salah satu [sumber terkelola yang diterapkan Claude Code](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources).

477 477 

478### Instal dependensi dengan hook SessionStart478### Menginstal dependensi dengan hook SessionStart

479 479 

480Untuk menginstal dependensi hanya di sesi cloud di luar thread [proyek](https://code.claude.com/docs/id/claude-projects.md#what-threads-pick-up-from-your-repositories), pasangkan hook SessionStart dengan skrip yang memeriksa di mana itu berjalan.480Untuk menginstal dependensi hanya di sesi cloud di luar thread [proyek](https://code.claude.com/docs/id/claude-projects.md#what-threads-pick-up-from-your-repositories), pasangkan hook SessionStart dengan skrip yang memeriksa di mana ia berjalan.

481 481 

482Pertama, tambahkan hook SessionStart ke `.claude/settings.json` repo Anda. Konfigurasi ini memberitahu Claude Code untuk menjalankan `scripts/install_pkgs.sh` dari repositori Anda setiap kali sesi dimulai atau dilanjutkan:482Pertama, tambahkan hook SessionStart ke `.claude/settings.json` di repo Anda. Konfigurasi ini memberi tahu Claude Code untuk menjalankan `scripts/install_pkgs.sh` dari repositori Anda setiap kali sesi dimulai atau dilanjutkan:

483 483 

484```json theme={null}484```json theme={null}

485{485{


499}499}

500```500```

501 501 

502`matcher` membatasi hook ke acara `startup` dan `resume`, dan `$CLAUDE_PROJECT_DIR` diselesaikan ke akar repositori, jadi hook menemukan skrip terlepas dari direktori kerja sesi.502`matcher` membatasi hook pada event `startup` dan `resume`, dan `$CLAUDE_PROJECT_DIR` di-resolve ke root repositori, sehingga hook menemukan skrip terlepas dari direktori kerja sesi.

503 503 

504Selanjutnya, buat skrip di `scripts/install_pkgs.sh`. Skrip ini keluar segera di luar cloud, kemudian menginstal dependensi Anda. Skrip ini melewati `npm install` selama `package.json`, `package-lock.json`, dan skrip itu sendiri tidak berubah sejak instalasi terakhir yang berhasil:504Selanjutnya, buat skrip di `scripts/install_pkgs.sh`. Skrip ini langsung keluar jika di luar cloud, lalu menginstal dependensi Anda. Skrip ini melewati `npm install` selama `package.json`, `package-lock.json`, dan skrip itu sendiri tidak berubah sejak instalasi terakhir yang berhasil:

505 505 

506```bash theme={null}506```bash theme={null}

507#!/bin/bash507#!/bin/bash


526exit 0526exit 0

527```527```

528 528 

529Pemeriksaan `CLAUDE_CODE_REMOTE` adalah apa yang membatasi instalasi ke sesi cloud: VM sesi membawa variabel itu sebagai `true`, tidak pernah `true` secara lokal, jadi di laptop Anda skrip keluar sebelum menginstal apa pun.529Pemeriksaan `CLAUDE_CODE_REMOTE` inilah yang membatasi instalasi pada sesi cloud: environment VM sesi membawa variabel tersebut dengan nilai `true`, nilainya tidak pernah `true` secara lokal, sehingga di laptop Anda skrip keluar sebelum menginstal apa pun.

530 530 

531Untuk memastikan `npm install` berhasil, mulai sesi cloud dan minta Claude menampilkan `node_modules/.install_pkgs.sha256`. File tersebut mencantumkan hash untuk masing-masing dari ketiga file. Jika file tersebut tidak ada, minta Claude menjalankan `npm install` dan melaporkan kesalahannya.531Untuk memastikan `npm install` berhasil, mulai sesi cloud dan minta Claude untuk menampilkan `node_modules/.install_pkgs.sha256`. File tersebut mencantumkan hash untuk masing-masing dari ketiga file. Jika file tersebut tidak ada, minta Claude untuk menjalankan `npm install` dan melaporkan error-nya.

532 532 

533> [!NOTE]533> [!NOTE]

534>534>

535> Jika `npm install` membaca file lain, seperti `package.json` milik workspace, `.npmrc`, atau input skrip `postinstall` Anda, tambahkan file-file tersebut ke perintah `sha256sum` yang menyimpan hash. Jika tidak, Anda akan tetap menggunakan paket lama setelah salah satu file tersebut berubah.535> Jika `npm install` membaca file lain, seperti `package.json` milik workspace, `.npmrc`, atau input skrip `postinstall` Anda, tambahkan file-file tersebut ke perintah `sha256sum` yang menyimpan hash. Jika tidak, Anda tetap menggunakan paket lama setelah salah satu file tersebut berubah.

536 536 

537#### Batasan di sesi cloud537#### Keterbatasan di sesi cloud

538 538 

539Hook SessionStart berperilaku sama di cloud seperti secara lokal, dengan peringatan ini:539Hook SessionStart berperilaku sama di cloud seperti secara lokal, dengan catatan berikut:

540 540 

541* **Satu repositori per sesi**: di lingkungan yang dihosting Anthropic, sesi dengan beberapa repositori tidak memuat hook dari `.claude/settings.json` repositori apa pun, jadi hook SessionStart yang Anda tentukan di sana tidak berjalan. Instal dependensi untuk sesi tersebut dengan [skrip setup](#setup-scripts) sebagai gantinya. Untuk lingkungan yang dihosting sendiri, lihat [pengaturan repositori mana yang berlaku](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#repository-settings-in-sessions-with-several-repositories).541* **Satu repositori per sesi**: di environment yang di-host Anthropic, sesi dengan beberapa repositori tidak memuat hook dari `.claude/settings.json` milik repositori mana pun, sehingga hook SessionStart yang Anda definisikan di sana tidak berjalan. Sebagai gantinya, instal dependensi untuk sesi-sesi tersebut dengan [setup script](#setup-scripts). Untuk environment self-hosted, lihat [pengaturan repositori mana yang berlaku](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#repository-settings-in-sessions-with-several-repositories).

542* **Tidak di thread cloud proyek**: thread cloud dalam [proyek](https://code.claude.com/docs/id/claude-projects.md#what-threads-pick-up-from-your-repositories) tidak menjalankan hook dari `.claude/settings.json` repositori, berapa pun jumlah repositorinya. Di lingkungan yang dihosting Anthropic, instal dependensi untuk thread dengan [skrip setup](#setup-scripts). Di lingkungan yang dihosting sendiri, gunakan hook di [pengaturan host runner](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#repository-settings-in-sessions-with-several-repositories) sebagai gantinya.542* **Tidak di thread cloud proyek**: thread cloud di dalam [proyek](https://code.claude.com/docs/id/claude-projects.md#what-threads-pick-up-from-your-repositories) tidak menjalankan hook dari `.claude/settings.json` milik repositori, berapa pun jumlah repositorinya. Di environment yang di-host Anthropic, instal dependensi untuk thread dengan [setup script](#setup-scripts). Di environment self-hosted, gunakan hook di [pengaturan host runner](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#repository-settings-in-sessions-with-several-repositories) sebagai gantinya.

543* **Tidak ada scoping khusus cloud**: hook berjalan di sesi lokal dan cloud. Untuk melewati eksekusi lokal, keluar lebih awal kecuali variabel lingkungan `CLAUDE_CODE_REMOTE` adalah `true`, cara yang ditunjukkan oleh [skrip instalasi dependensi](#install-dependencies-with-a-sessionstart-hook).543* **Tidak ada pembatasan khusus cloud**: hook berjalan di sesi lokal maupun cloud. Untuk melewati eksekusi lokal, keluar lebih awal kecuali jika environment variable `CLAUDE_CODE_REMOTE` bernilai `true`, seperti yang dilakukan [skrip instalasi dependensi](#install-dependencies-with-a-sessionstart-hook).

544* **Memerlukan akses jaringan**: perintah instalasi perlu menjangkau registri paket. Jika lingkungan Anda menggunakan akses jaringan **None**, hook ini gagal. [Allowlist default](#default-allowed-domains) di bawah **Trusted** mencakup npm, PyPI, RubyGems, dan crates.io.544* **Memerlukan akses jaringan**: perintah instalasi perlu menjangkau registri paket. Jika environment Anda menggunakan akses jaringan **None**, hook ini gagal. [Allowlist default](#default-allowed-domains) di bawah **Trusted** mencakup npm, PyPI, RubyGems, dan crates.io.

545* **Kompatibilitas proxy**: di lingkungan yang dihosting Anthropic, semua lalu lintas keluar melewati [proxy keamanan](#security-proxy), dan beberapa manajer paket tidak bekerja dengan benar dengannya; Bun adalah contoh yang diketahui. Di [lingkungan yang dihosting sendiri](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#default-deny-egress), lalu lintas keluar melewati batas jaringan Anda sendiri.545* **Kompatibilitas proxy**: di environment yang di-host Anthropic, semua lalu lintas keluar melewati [proxy keamanan](#security-proxy), dan beberapa manajer paket tidak berfungsi dengan benar dengannya; Bun adalah contoh yang diketahui. Di [environment self-hosted](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#default-deny-egress), lalu lintas keluar melewati batas jaringan Anda sendiri.

546* **Menambah latensi startup**: hook berjalan setiap kali sesi dimulai atau dilanjutkan, tidak seperti skrip setup yang mendapat manfaat dari [caching lingkungan](#environment-caching). Jaga skrip instalasi tetap cepat dengan melewati pekerjaan yang sudah selesai, seperti yang dilakukan oleh [skrip instalasi dependensi](#install-dependencies-with-a-sessionstart-hook).546* **Menambah latensi startup**: hook berjalan setiap kali sesi dimulai atau dilanjutkan, tidak seperti setup script yang mendapat manfaat dari [caching environment](#environment-caching). Jaga agar skrip instalasi tetap cepat dengan melewati pekerjaan yang sudah selesai, seperti yang dilakukan [skrip instalasi dependensi](#install-dependencies-with-a-sessionstart-hook).

547 547 

548Untuk menyesuaikan gambar dasar, gunakan skrip setup untuk menginstal apa yang Anda butuhkan di atas [gambar yang disediakan](#installed-tools), atau jalankan gambar Anda sendiri sebagai kontainer bersama Claude dengan `docker compose`. Mengganti gambar dasar sepenuhnya belum didukung.548Untuk menyesuaikan base image, gunakan setup script untuk menginstal apa yang Anda butuhkan di atas [image yang disediakan](#installed-tools), atau jalankan image Anda sendiri sebagai container di samping Claude dengan `docker compose`. Mengganti base image sepenuhnya belum didukung.

549 549 

550## Domain yang diizinkan default550## Domain yang diizinkan default

551 551 

Details

14>14>

15> Agar setiap pull request dalam repositori ditinjau secara otomatis di GitHub, lihat [Code Review](https://code.claude.com/docs/id/code-review.md), layanan terkelola yang diaktifkan oleh Owner untuk organisasi Anda.15> Agar setiap pull request dalam repositori ditinjau secara otomatis di GitHub, lihat [Code Review](https://code.claude.com/docs/id/code-review.md), layanan terkelola yang diaktifkan oleh Owner untuk organisasi Anda.

16 16 

17`/review` adalah alias dari `/code-review`. Sebelum v2.1.223, `/review` adalah perintah terpisah yang menjalankan review read-only satu kali terhadap pull request GitHub.17`/review` adalah alias dari `/code-review`.

18 18 

19**1. Jalankan /code-review**19**1. Jalankan /code-review**

20 20 


91* **`ultra`**: review tidak menggunakan maupun memperbarui tingkat yang diingat91* **`ultra`**: review tidak menggunakan maupun memperbarui tingkat yang diingat

92* **Tidak pernah mengetik tingkat**: review menggunakan effort sesi saat ini92* **Tidak pernah mengetik tingkat**: review menggunakan effort sesi saat ini

93 93 

94Sebelum v2.1.223, `/code-review` tanpa tingkat selalu menggunakan effort sesi saat ini.

95 

96### Posting temuan ke merge request GitLab94### Posting temuan ke merge request GitLab

97 95 

98Ketika Anda memberikan `--comment` untuk merge request GitLab, Claude Code memposting temuan melalui CLI `glab` milik GitLab. Memerlukan Claude Code v2.1.257 atau yang lebih baru. Ketika `glab` tidak terinstal, Claude mencetak temuan di terminal sebagai gantinya.96Ketika Anda memberikan `--comment` untuk merge request GitLab, Claude Code memposting temuan melalui CLI `glab` milik GitLab. Memerlukan Claude Code v2.1.257 atau yang lebih baru. Ketika `glab` tidak terinstal, Claude mencetak temuan di terminal sebagai gantinya.

commands.md +2 −2

Details

104| `/install-github-app` | Pasang Aplikasi GitHub Claude untuk repositori, dengan langkah opsional untuk menyiapkan workflow [GitHub Actions](https://code.claude.com/docs/id/github-actions.md) dan rahasia. Memandu Anda melalui pemilihan repo dan konfigurasi integrasi. Hanya bekerja dengan repositori github.com. Ketika remote git repositori Anda berada di gitlab.com atau bitbucket.org, perintah mencetak pemberitahuan dan keluar alih-alih memulai pengaturan. Untuk menjalankan Claude Code dari pipeline GitLab, lihat [GitLab CI/CD](https://code.claude.com/docs/id/gitlab-ci-cd.md) |104| `/install-github-app` | Pasang Aplikasi GitHub Claude untuk repositori, dengan langkah opsional untuk menyiapkan workflow [GitHub Actions](https://code.claude.com/docs/id/github-actions.md) dan rahasia. Memandu Anda melalui pemilihan repo dan konfigurasi integrasi. Hanya bekerja dengan repositori github.com. Ketika remote git repositori Anda berada di gitlab.com atau bitbucket.org, perintah mencetak pemberitahuan dan keluar alih-alih memulai pengaturan. Untuk menjalankan Claude Code dari pipeline GitLab, lihat [GitLab CI/CD](https://code.claude.com/docs/id/gitlab-ci-cd.md) |

105| `/install-slack-app` | Pasang aplikasi Claude Slack. Membuka browser untuk menyelesaikan alur OAuth |105| `/install-slack-app` | Pasang aplikasi Claude Slack. Membuka browser untuk menyelesaikan alur OAuth |

106| `/keybindings` | Buka file [pintasan keyboard](https://code.claude.com/docs/id/keybindings.md) Anda |106| `/keybindings` | Buka file [pintasan keyboard](https://code.claude.com/docs/id/keybindings.md) Anda |

107| `/list-agents` | Daftar subagent, rekan [tim agent](https://code.claude.com/docs/id/agent-teams.md), dan sesi Claude Code lainnya yang dapat dikirimi pesan oleh Claude, dengan nama yang digunakan untuk masing-masing. Lihat [pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md). Juga tersedia sebagai `/peers`. Memerlukan Claude Code v2.1.224 atau lebih baru; versi sebelumnya melaporkan `Unknown command: /list-agents`. Baris rekan dan baris pertama yang menunjukkan nama sesi sendiri memerlukan v2.1.239 atau lebih baru. Hanya tersedia dalam sesi di mana [pesan lintas sesi diaktifkan](https://code.claude.com/docs/id/cross-session-messaging.md#availability) |107| `/list-agents` | Daftar subagent, rekan [tim agent](https://code.claude.com/docs/id/agent-teams.md), dan sesi Claude Code lainnya yang dapat dikirimi pesan oleh Claude, dengan nama yang digunakan untuk masing-masing. Lihat [pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md). Juga tersedia sebagai `/peers`. Baris rekan dan baris pertama yang menunjukkan nama sesi sendiri memerlukan v2.1.239 atau lebih baru. Hanya tersedia dalam sesi di mana [pesan lintas sesi diaktifkan](https://code.claude.com/docs/id/cross-session-messaging.md#availability) |

108| `/login` | Masuk ke akun Anthropic Anda |108| `/login` | Masuk ke akun Anthropic Anda |

109| `/logout` | Keluar dari akun Anthropic Anda |109| `/logout` | Keluar dari akun Anthropic Anda |

110| `/loop [interval] [prompt]` | **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills).** Jalankan prompt berulang kali saat sesi tetap terbuka. Hilangkan interval dan Claude [mengatur kecepatan sendiri di antara iterasi](https://code.claude.com/docs/id/scheduled-tasks.md#let-claude-choose-the-interval). Hilangkan prompt dan Claude menjalankan [prompt pemeliharaan bawaan](https://code.claude.com/docs/id/scheduled-tasks.md#run-the-built-in-maintenance-prompt) atau [`loop.md`](https://code.claude.com/docs/id/scheduled-tasks#customize-the-default-prompt-with-loop-md) Anda. Contoh: `/loop 5m check if the deploy finished`. Lihat [Jalankan prompt sesuai jadwal](https://code.claude.com/docs/id/scheduled-tasks.md). Alias: `/proactive` |110| `/loop [interval] [prompt]` | **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills).** Jalankan prompt berulang kali saat sesi tetap terbuka. Hilangkan interval dan Claude [mengatur kecepatan sendiri di antara iterasi](https://code.claude.com/docs/id/scheduled-tasks.md#let-claude-choose-the-interval). Hilangkan prompt dan Claude menjalankan [prompt pemeliharaan bawaan](https://code.claude.com/docs/id/scheduled-tasks.md#run-the-built-in-maintenance-prompt) atau [`loop.md`](https://code.claude.com/docs/id/scheduled-tasks#customize-the-default-prompt-with-loop-md) Anda. Contoh: `/loop 5m check if the deploy finished`. Lihat [Jalankan prompt sesuai jadwal](https://code.claude.com/docs/id/scheduled-tasks.md). Alias: `/proactive` |


132| `/rename [name]` | Ganti nama sesi saat ini dan tampilkan nama di bilah prompt. Tanpa nama, auto-generate dari riwayat percakapan. Juga tersedia dalam mode non-interaktif (`-p`). Dari setiap surface penggantian nama, termasuk claude.ai dan aplikasi desktop, Claude Code mengganti karakter kontrol dan tidak terlihat dalam nama baru dengan spasi dan membatasi nama pada 200 karakter. Jika nama kosong setelah karakter tidak terlihat dihapus, Claude Code menolaknya dan menunjukkan `That name is empty once invisible characters are removed. Usage: /rename <name>`. Penggantian karakter dan batas panjang memerlukan Claude Code v2.1.221 atau lebih baru |132| `/rename [name]` | Ganti nama sesi saat ini dan tampilkan nama di bilah prompt. Tanpa nama, auto-generate dari riwayat percakapan. Juga tersedia dalam mode non-interaktif (`-p`). Dari setiap surface penggantian nama, termasuk claude.ai dan aplikasi desktop, Claude Code mengganti karakter kontrol dan tidak terlihat dalam nama baru dengan spasi dan membatasi nama pada 200 karakter. Jika nama kosong setelah karakter tidak terlihat dihapus, Claude Code menolaknya dan menunjukkan `That name is empty once invisible characters are removed. Usage: /rename <name>`. Penggantian karakter dan batas panjang memerlukan Claude Code v2.1.221 atau lebih baru |

133| `/restart` | Mulai ulang Claude Code dan lanjutkan sesi ini, yang menerapkan pembaruan yang telah terpasang. Jalankan ketika footer menawarkannya setelah pembaruan terpasang. Memerlukan paket Pro, Max, atau Ultra dan instalasi native di macOS atau Linux, bukan WSL. Memerlukan Claude Code v2.1.288 atau lebih baru. Alias: `/update` |133| `/restart` | Mulai ulang Claude Code dan lanjutkan sesi ini, yang menerapkan pembaruan yang telah terpasang. Jalankan ketika footer menawarkannya setelah pembaruan terpasang. Memerlukan paket Pro, Max, atau Ultra dan instalasi native di macOS atau Linux, bukan WSL. Memerlukan Claude Code v2.1.288 atau lebih baru. Alias: `/update` |

134| `/resume [session]` | Lanjutkan percakapan berdasarkan ID atau nama, atau buka pemilih sesi. [Sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) muncul di pemilih ditandai dengan `bg`. Melanjutkan satu yang masih berjalan, dari pemilih atau berdasarkan ID atau nama, [membuka sesi itu](https://code.claude.com/docs/id/sessions.md#resume-a-running-background-session): percakapan saat ini Anda pindah ke latar belakang dan terminal ini melampirkan ke yang berjalan. Tekan `←` pada prompt kosong untuk kembali ke tampilan agent, yang juga mencantumkan percakapan yang Anda tinggalkan. Sebelum v2.1.285, Claude Code menolak dan memberi tahu Anda untuk membuka sesi dengan `claude attach` atau menghentikannya terlebih dahulu. Alias: `/continue` |134| `/resume [session]` | Lanjutkan percakapan berdasarkan ID atau nama, atau buka pemilih sesi. [Sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) muncul di pemilih ditandai dengan `bg`. Melanjutkan satu yang masih berjalan, dari pemilih atau berdasarkan ID atau nama, [membuka sesi itu](https://code.claude.com/docs/id/sessions.md#resume-a-running-background-session): percakapan saat ini Anda pindah ke latar belakang dan terminal ini melampirkan ke yang berjalan. Tekan `←` pada prompt kosong untuk kembali ke tampilan agent, yang juga mencantumkan percakapan yang Anda tinggalkan. Sebelum v2.1.285, Claude Code menolak dan memberi tahu Anda untuk membuka sesi dengan `claude attach` atau menghentikannya terlebih dahulu. Alias: `/continue` |

135| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | Alias dari [`/code-review`](https://code.claude.com/docs/id/code-review-local): meninjau diff saat ini, atau nomor PR, branch, atau jalur yang Anda berikan, seperti `/review 1234`, dan mengambil tingkat effort dan flag yang sama. Tanpa level yang diberikan, tinjauan menggunakan kembali level `low` hingga `max` terakhir yang Anda ketik; lihat [Tinjau secara lokal dengan `/code-review`](https://code.claude.com/docs/id/code-review-local) untuk aturan yang tepat. Untuk tinjauan cloud mendalam, gunakan [`/code-review ultra`](https://code.claude.com/docs/id/ultrareview). Sebelum v2.1.223, `/review` adalah perintah terpisah yang menjalankan tinjauan read-only satu lintasan dari pull request GitHub berdasarkan nomor, mencantumkan PR terbuka untuk dipilih saat dijalankan tanpa argumen; dari v2.1.186 hingga v2.1.201, itu menjalankan mesin multi-agent yang sama seperti `/code-review medium` |135| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | Alias dari [`/code-review`](https://code.claude.com/docs/id/code-review-local): meninjau diff saat ini, atau nomor PR, branch, atau jalur yang Anda berikan, seperti `/review 1234`, dan mengambil tingkat effort dan flag yang sama. Tanpa level yang diberikan, tinjauan menggunakan kembali level `low` hingga `max` terakhir yang Anda ketik; lihat [Tinjau secara lokal dengan `/code-review`](https://code.claude.com/docs/id/code-review-local) untuk aturan yang tepat. Untuk tinjauan cloud mendalam, gunakan [`/code-review ultra`](https://code.claude.com/docs/id/ultrareview) |

136| `/rewind` | Putar ulang percakapan dan/atau kode ke titik sebelumnya, atau ringkas dari pesan yang dipilih. Lihat [checkpointing](https://code.claude.com/docs/id/checkpointing.md). Alias: `/checkpoint`, `/undo` |136| `/rewind` | Putar ulang percakapan dan/atau kode ke titik sebelumnya, atau ringkas dari pesan yang dipilih. Lihat [checkpointing](https://code.claude.com/docs/id/checkpointing.md). Alias: `/checkpoint`, `/undo` |

137| `/run` | **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills).** Luncurkan dan jalankan aplikasi proyek Anda untuk melihat perubahan bekerja, bukan hanya lulus tes. Lihat [Jalankan dan verifikasi aplikasi Anda](https://code.claude.com/docs/id/skills.md#run-and-verify-your-app) |137| `/run` | **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills).** Luncurkan dan jalankan aplikasi proyek Anda untuk melihat perubahan bekerja, bukan hanya lulus tes. Lihat [Jalankan dan verifikasi aplikasi Anda](https://code.claude.com/docs/id/skills.md#run-and-verify-your-app) |

138| `/run-skill-generator` | **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills).** Ajarkan `/run` dan `/verify` cara mem-build, meluncurkan, dan menjalankan aplikasi proyek Anda dari lingkungan bersih dengan menulis [skill](https://code.claude.com/docs/id/skills.md#run-and-verify-your-app) per-proyek |138| `/run-skill-generator` | **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills).** Ajarkan `/run` dan `/verify` cara mem-build, meluncurkan, dan menjalankan aplikasi proyek Anda dari lingkungan bersih dengan menulis [skill](https://code.claude.com/docs/id/skills.md#run-and-verify-your-app) per-proyek |

costs.md +6 −6

Details

292 292 

293[Hook](https://code.claude.com/docs/id/hooks.md) kustom dapat memproses data sebelum Claude melihatnya. Alih-alih Claude membaca file log 10.000 baris untuk menemukan kesalahan, hook dapat melakukan grep untuk `ERROR` dan mengembalikan hanya baris yang cocok, mengurangi konteks dari puluhan ribu token menjadi ratusan.293[Hook](https://code.claude.com/docs/id/hooks.md) kustom dapat memproses data sebelum Claude melihatnya. Alih-alih Claude membaca file log 10.000 baris untuk menemukan kesalahan, hook dapat melakukan grep untuk `ERROR` dan mengembalikan hanya baris yang cocok, mengurangi konteks dari puluhan ribu token menjadi ratusan.

294 294 

295[Skill](https://code.claude.com/docs/id/skills.md) dapat memberi Claude pengetahuan domain sehingga tidak harus menjelajahi. Misalnya, skill "codebase-overview" dapat mendeskripsikan arsitektur proyek Anda, direktori kunci, dan konvensi penamaan. Ketika Claude memanggil skill, ia mendapatkan konteks ini segera daripada menghabiskan token membaca beberapa file untuk memahami struktur.295Hook PreToolUse ini memangkas output tes menjadi 100 baris terakhirnya:

296 

297Misalnya, hook PreToolUse ini memfilter output tes untuk menampilkan hanya kegagalan:

298 296 

299> [tab] settings.json297> [tab] settings.json

300>298>


320 318 

321> [tab] filter-test-output.sh319> [tab] filter-test-output.sh

322>320>

323> 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:321> 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, jika ya, hanya mempertahankan 100 baris terakhir dari outputnya:

324>322>

325> ```bash theme={null}323> ```bash theme={null}

326> #!/bin/bash324> #!/bin/bash

327> input=$(cat)325> input=$(cat)

328> cmd=$(echo "$input" | jq -r '.tool_input.command')326> cmd=$(echo "$input" | jq -r '.tool_input.command')

329>327>

330> # If running tests, filter to show only failures328> # If running tests, keep only the last 100 lines

331> pattern='^(npm test|pytest|go test)( [^;&|<>`$#\\[:cntrl:]]*)?$'329> pattern='^(npm test|pytest|go test)( [^;&|<>`$#\\[:cntrl:]]*)?$'

332> if [[ "$cmd" =~ $pattern ]]; then330> if [[ "$cmd" =~ $pattern ]]; then

333> filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"331> filtered_cmd="$cmd 2>&1 | tail -n 100"

334> echo "$input" | jq --arg filtered "$filtered_cmd" \332> echo "$input" | jq --arg filtered "$filtered_cmd" \

335> '{hookSpecificOutput: {hookEventName: "PreToolUse", updatedInput: (.tool_input + {command: $filtered})}}'333> '{hookSpecificOutput: {hookEventName: "PreToolUse", updatedInput: (.tool_input + {command: $filtered})}}'

336> else334> else


340 338 

341Untuk memverifikasi pengaturan, jalankan `/hooks` dan periksa bahwa hook muncul di bawah PreToolUse. Anda juga dapat memulai Claude Code dengan `claude --debug-file ./claude-debug.txt` dan minta Claude untuk menjalankan `npm test`. Ketika hook menulis ulang perintah, file log tersebut berisi baris `modified tool input keys` yang mencantumkan `command` dan bidang input Bash lainnya.339Untuk memverifikasi pengaturan, jalankan `/hooks` dan periksa bahwa hook muncul di bawah PreToolUse. Anda juga dapat memulai Claude Code dengan `claude --debug-file ./claude-debug.txt` dan minta Claude untuk menjalankan `npm test`. Ketika hook menulis ulang perintah, file log tersebut berisi baris `modified tool input keys` yang mencantumkan `command` dan bidang input Bash lainnya.

342 340 

341[Skill](https://code.claude.com/docs/id/skills.md) dapat memberi Claude pengetahuan domain sehingga tidak harus menjelajahi. Misalnya, skill "codebase-overview" dapat mendeskripsikan arsitektur proyek Anda, direktori kunci, dan konvensi penamaan. Ketika Claude memanggil skill, ia mendapatkan konteks ini segera daripada menghabiskan token membaca beberapa file untuk memahami struktur.

342 

343### Pindahkan instruksi dari CLAUDE.md ke skills343### Pindahkan instruksi dari CLAUDE.md ke skills

344 344 

345File [CLAUDE.md](https://code.claude.com/docs/id/memory.md) Anda dimuat ke konteks saat awal sesi. Jika berisi instruksi terperinci untuk alur kerja spesifik (seperti ulasan PR atau migrasi database), token tersebut ada bahkan ketika Anda melakukan pekerjaan yang tidak terkait. [Skills](https://code.claude.com/docs/id/skills.md) dimuat sesuai permintaan hanya saat dipanggil, jadi memindahkan instruksi khusus ke skills menjaga konteks dasar Anda tetap lebih kecil. Usahakan untuk menjaga CLAUDE.md di bawah 200 baris dengan hanya menyertakan hal-hal penting.345File [CLAUDE.md](https://code.claude.com/docs/id/memory.md) Anda dimuat ke konteks saat awal sesi. Jika berisi instruksi terperinci untuk alur kerja spesifik (seperti ulasan PR atau migrasi database), token tersebut ada bahkan ketika Anda melakukan pekerjaan yang tidak terkait. [Skills](https://code.claude.com/docs/id/skills.md) dimuat sesuai permintaan hanya saat dipanggil, jadi memindahkan instruksi khusus ke skills menjaga konteks dasar Anda tetap lebih kecil. Usahakan untuk menjaga CLAUDE.md di bawah 200 baris dengan hanya menyertakan hal-hal penting.

Details

56 56 

57### Penyampaian pesan57### Penyampaian pesan

58 58 

59Claude penerima membaca pesan di antara panggilan tool selama giliran aktif, sehingga tool yang sedang berjalan tidak pernah diinterupsi. Ketika sesi penerima sedang idle, Claude Code memulai giliran baru dengan pesan tersebut.59Claude penerima membaca pesan di antara panggilan tool selama giliran aktif. Ketika sesi penerima sedang idle, Claude Code memulai giliran baru dengan pesan tersebut.

60 60 

61Pesan dari sesi lain tiba sebagai teks biasa. Jika pesan menyebutkan file atau [resource MCP](https://code.claude.com/docs/id/mcp.md#use-mcp-resources) dengan `@`, Claude melihat mention tersebut sebagaimana tertulis dan Claude Code tidak melampirkan apa pun, baik pesan tersebut memulai giliran baru maupun tiba selama giliran berlangsung. Claude tetap dapat membuka path yang disebutkan di mesin penerima dengan tool-nya sendiri, sesuai dengan izin sesi tersebut.61Pesan dari sesi lain tiba sebagai teks biasa. Jika pesan menyebutkan file atau [resource MCP](https://code.claude.com/docs/id/mcp.md#use-mcp-resources) dengan `@`, Claude melihat mention tersebut sebagaimana tertulis dan Claude Code tidak melampirkan apa pun, baik pesan tersebut memulai giliran baru maupun tiba selama giliran berlangsung. Claude tetap dapat membuka path yang disebutkan di mesin penerima dengan tool-nya sendiri, sesuai dengan izin sesi tersebut.

62 62 

desktop.md +3 −3

Details

256 256 

257### Minimalkan pane257### Minimalkan pane

258 258 

259Untuk tetap menampilkan Terminal, Browser, atau [iOS Simulator](https://code.claude.com/docs/id/desktop-ios-simulator.md) dalam ukuran kecil, klik **Minimize** di header pane. Tombol ini memerlukan Claude Desktop v4.0.0 atau lebih baru dan akun Claude, bukan [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md). Pane Browser hanya memilikinya di sesi lokal.259Untuk tetap menampilkan Terminal, Browser, [iOS Simulator](https://code.claude.com/docs/id/desktop-ios-simulator.md), atau [side chat](#ask-a-side-question-without-derailing-the-session) dalam ukuran kecil, klik **Minimize** di header pane. Tombol ini memerlukan Claude Desktop v4.0.0 atau lebih baru dan akun Claude, bukan [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md). Pane Browser hanya memilikinya di sesi lokal.

260 260 

261Pane yang diminimalkan berada di [panel detail sesi](#see-session-details) selama panel tersebut tampil di layar, dan mengambang di salah satu sudut chat jika tidak:261Pane yang diminimalkan berada di [panel detail sesi](#see-session-details) selama panel tersebut tampil di layar, dan mengambang di salah satu sudut chat jika tidak:

262 262 


1382 1382 

1383> [accordion] Kapan pengeditan di worktree tetap berfungsi1383> [accordion] Kapan pengeditan di worktree tetap berfungsi

1384>1384>

1385> Pada mesin jarak jauh Linux atau macOS, pemeriksaan tidak melewati Desktop, sehingga pengeditan di dalam worktree tetap berfungsi saat Desktop terputus. Sebelum Claude Desktop v2.37337.0, hal ini hanya berlaku pada mesin jarak jauh Linux.1385> Pada mesin jarak jauh Linux atau macOS, pengeditan di dalam worktree dapat tetap berfungsi saat Desktop terputus, karena pemeriksaan pada setiap pengeditan dapat berjalan tanpa Desktop. Sebelum [Claude Desktop v2.37337.0](#check-your-version), ini hanya berfungsi pada mesin jarak jauh Linux.

1386>1386>

1387> Pengeditan tetap gagal dalam beberapa kasus, termasuk kasus-kasus berikut:1387> Pengeditan tetap gagal dalam beberapa kasus, termasuk kasus-kasus berikut:

1388>1388>


2050 2050 

2051* **Sesi lokal di mesin ini**: file pengaturan terkelola yang di-deploy ke disk berlaku. Pengaturan terkelola yang didorong dari jarak jauh melalui konsol admin juga mencapai sesi ini di API Anthropic ketika sesi mengautentikasi dengan [login yang memenuhi syarat](https://code.claude.com/docs/id/server-managed-settings.md#platform-availability), mengikuti [urutan prioritas pengaturan](https://code.claude.com/docs/id/settings.md#settings-precedence) yang sama seperti CLI terminal.2051* **Sesi lokal di mesin ini**: file pengaturan terkelola yang di-deploy ke disk berlaku. Pengaturan terkelola yang didorong dari jarak jauh melalui konsol admin juga mencapai sesi ini di API Anthropic ketika sesi mengautentikasi dengan [login yang memenuhi syarat](https://code.claude.com/docs/id/server-managed-settings.md#platform-availability), mengikuti [urutan prioritas pengaturan](https://code.claude.com/docs/id/settings.md#settings-precedence) yang sama seperti CLI terminal.

2052* **[Sesi cloud](#cloud-sessions)**: menerima [server-managed settings](https://code.claude.com/docs/id/server-managed-settings.md); file yang di-deploy ke perangkat tidak mencapainya, karena mereka berjalan pada VM yang dikelola Anthropic. Sesi yang dialihkan ke [self-hosted environment](https://code.claude.com/docs/id/self-hosted-environments) juga membaca file pengaturan terkelola dalam gambar runner. [Bagaimana Claude Code menggabungkan sumber yang dikelola](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources) mengatakan kapan file tersebut berlaku.2052* **[Sesi cloud](#cloud-sessions)**: menerima [server-managed settings](https://code.claude.com/docs/id/server-managed-settings.md); file yang di-deploy ke perangkat tidak mencapainya, karena mereka berjalan pada VM yang dikelola Anthropic. Sesi yang dialihkan ke [self-hosted environment](https://code.claude.com/docs/id/self-hosted-environments) juga membaca file pengaturan terkelola dalam gambar runner. [Bagaimana Claude Code menggabungkan sumber yang dikelola](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources) mengatakan kapan file tersebut berlaku.

2053* **[Sesi SSH](#ssh-sessions)**: sesi membaca file pengaturan terkelola dari host jarak jauh. Desktop itu sendiri membaca `sshConfigs`, `sshHostAllowlist`, `disableSshSavedPasswords`, dan `disableDesktopLocalSessions` di mesin lokal. Jika Anda memberikan lebih dari satu sumber terkelola, Desktop membacanya dari [satu sumber secara default](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources).2053* **[Sesi SSH](#ssh-sessions)**: sesi membaca file pengaturan terkelola dari host jarak jauh. Desktop itu sendiri membaca `sshConfigs`, `sshHostAllowlist`, `disableSshSavedPasswords`, dan `disableDesktopLocalSessions` di mesin lokal. Jika Anda memberikan lebih dari satu sumber terkelola, Desktop membacanya dari [satu sumber secara default](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources). Jika Anda mengatur `permissions.disableBypassPermissionsMode` atau `disableAutoMode` dalam pengaturan terkelola yang berlaku di mesin lokal, pemilih mode sesi SSH tidak menawarkan mode tersebut, apa pun yang diatur oleh host jarak jauh.

2054* **[Cowork](https://claude.com/docs/cowork/overview) sessions**: dalam sesi Cowork di mesin ini, Claude Code tidak pernah mengambil pengaturan konsol admin, bahkan ketika pengguna masuk dengan akun Team atau Enterprise, dan membaca kebijakan yang di-deploy ke mesin kecuali konfigurasi Claude Desktop Anda menetapkan `requireCoworkFullVmSandbox`. Sesi Cowork jarak jauh tidak menerima keduanya. Lihat [di mana dan kapan kebijakan berlaku](https://code.claude.com/docs/id/managed-settings.md#where-and-when-a-policy-applies) untuk file perangkat mana yang mencapai Cowork, dan [MCP permission rules](https://code.claude.com/docs/id/permissions.md#mcp) untuk bagaimana aturan `Bash` dan `WebFetch` berlaku untuk tools Cowork.2054* **[Cowork](https://claude.com/docs/cowork/overview) sessions**: dalam sesi Cowork di mesin ini, Claude Code tidak pernah mengambil pengaturan konsol admin, bahkan ketika pengguna masuk dengan akun Team atau Enterprise, dan membaca kebijakan yang di-deploy ke mesin kecuali konfigurasi Claude Desktop Anda menetapkan `requireCoworkFullVmSandbox`. Sesi Cowork jarak jauh tidak menerima keduanya. Lihat [di mana dan kapan kebijakan berlaku](https://code.claude.com/docs/id/managed-settings.md#where-and-when-a-policy-applies) untuk file perangkat mana yang mencapai Cowork, dan [MCP permission rules](https://code.claude.com/docs/id/permissions.md#mcp) untuk bagaimana aturan `Bash` dan `WebFetch` berlaku untuk tools Cowork.

2055 2055 

2056Dalam sesi lokal dan SSH, aplikasi desktop mengirimkan setiap konektor claude.ai yang terhubung pengguna ke Claude Code secara langsung. Tidak ada pengaturan MCP atau `managed-mcp.json` yang mencapai konektor tersebut, sumber pengaturan atau lokasi file mana pun yang Anda gunakan. Untuk memblokir tools konektor dalam sesi ini, gunakan [connector tool controls](https://code.claude.com/docs/id/mcp.md#organization-controls-on-connector-tools) organisasi Anda. [Bagaimana konektor mencapai Claude Code](https://code.claude.com/docs/id/mcp.md#how-connectors-reach-claude-code) menunjukkan pengaturan mana yang mengatur konektor di setiap jenis sesi.2056Dalam sesi lokal dan SSH, aplikasi desktop mengirimkan setiap konektor claude.ai yang terhubung pengguna ke Claude Code secara langsung. Tidak ada pengaturan MCP atau `managed-mcp.json` yang mencapai konektor tersebut, sumber pengaturan atau lokasi file mana pun yang Anda gunakan. Untuk memblokir tools konektor dalam sesi ini, gunakan [connector tool controls](https://code.claude.com/docs/id/mcp.md#organization-controls-on-connector-tools) organisasi Anda. [Bagaimana konektor mencapai Claude Code](https://code.claude.com/docs/id/mcp.md#how-connectors-reach-claude-code) menunjukkan pengaturan mana yang mengatur konektor di setiap jenis sesi.

Details

8 8 

9> [!NOTE]9> [!NOTE]

10>10>

11> Pane iOS Simulator berada dalam beta publik di Claude Code Desktop di macOS. Tersedia di paket Pro, Max, Ultra, Team, dan Enterprise, kecuali di organisasi Enterprise yang memiliki konfigurasi HIPAA yang diaktifkan.11> Pane iOS Simulator berada dalam beta publik di Claude Code Desktop di macOS. Tersedia di paket Pro, Max, Ultra, Team, dan Enterprise, kecuali di organisasi Enterprise yang memiliki konfigurasi HIPAA yang diaktifkan. Fitur ini tidak tersedia jika Anda menggunakan [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md).

12 12 

13Pane iOS Simulator menampilkan aplikasi Anda berjalan di Apple iOS Simulator di samping percakapan Anda di Claude Code Desktop. Ketika Claude membangun, memasang, meluncurkan, atau memeriksa aplikasi Anda di simulator, pane terbuka secara otomatis dan melakukan streaming layar perangkat secara langsung. Gunakan untuk menonton Claude menjalankan dan menguji aplikasi Anda, atau ketuk aplikasi sendiri sementara Claude terus bekerja.13Pane iOS Simulator menampilkan aplikasi Anda berjalan di Apple iOS Simulator di samping percakapan Anda di Claude Code Desktop. Ketika Claude membangun, memasang, meluncurkan, atau memeriksa aplikasi Anda di simulator, pane terbuka secara otomatis dan melakukan streaming layar perangkat secara langsung. Gunakan untuk menonton Claude menjalankan dan menguji aplikasi Anda, atau ketuk aplikasi sendiri sementara Claude terus bekerja.

14 14 


147* Nyatakan tujuan secara eksplisit, misalnya "jalankan aplikasi di iOS Simulator dan ketuk melalui alur pendaftaran".147* Nyatakan tujuan secara eksplisit, misalnya "jalankan aplikasi di iOS Simulator dan ketuk melalui alur pendaftaran".

148* Konfirmasi Xcode dan simulator iOS terinstal dan Anda menggunakan [versi Xcode yang direkomendasikan](#requirements).148* Konfirmasi Xcode dan simulator iOS terinstal dan Anda menggunakan [versi Xcode yang direkomendasikan](#requirements).

149* Jika organisasi Anda mengelola Claude Code, [alat simulator mungkin dinonaktifkan oleh kebijakan](#turn-off-simulator-access).149* Jika organisasi Anda mengelola Claude Code, [alat simulator mungkin dinonaktifkan oleh kebijakan](#turn-off-simulator-access).

150* Jika Anda berada di organisasi Enterprise yang memiliki konfigurasi HIPAA diaktifkan, pane simulator tidak tersedia untuk Anda.150* Jika Anda berada di organisasi Enterprise yang memiliki konfigurasi HIPAA diaktifkan, atau Anda menggunakan [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md), pane simulator tidak tersedia untuk Anda.

151* Pane simulator memerlukan Claude Desktop v1.24012.0 atau lebih baru. Buka **Claude > Check for Updates…**, lalu restart aplikasi.151* Pane simulator memerlukan Claude Desktop v1.24012.0 atau lebih baru. Buka **Claude > Check for Updates…**, lalu restart aplikasi.

152 152 

153### Pane simulator mengatakan tidak ada simulator yang ditemukan153### Pane simulator mengatakan tidak ada simulator yang ditemukan

env-vars.md +5 −5

Details

204| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Tetapkan ke `0` untuk mencegah Claude Code membuka browser secara otomatis ketika [artifact](https://code.claude.com/docs/id/artifacts.md#create-an-artifact) baru dipublikasikan |204| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Tetapkan ke `0` untuk mencegah Claude Code membuka browser secara otomatis ketika [artifact](https://code.claude.com/docs/id/artifacts.md#create-an-artifact) baru dipublikasikan |

205| `CLAUDE_CODE_ARTIFACT_COMMENTS` | Tetapkan ke `0` untuk menghentikan Claude membaca dan membalas [komentar pada artifact](https://code.claude.com/docs/id/artifacts.md#collect-comments-on-an-artifact). Tidak berpengaruh ketika `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` telah [menonaktifkan artifact](https://code.claude.com/docs/id/artifacts.md#availability). Memerlukan Claude Code v2.1.221 atau lebih baru |205| `CLAUDE_CODE_ARTIFACT_COMMENTS` | Tetapkan ke `0` untuk menghentikan Claude membaca dan membalas [komentar pada artifact](https://code.claude.com/docs/id/artifacts.md#collect-comments-on-an-artifact). Tidak berpengaruh ketika `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` telah [menonaktifkan artifact](https://code.claude.com/docs/id/artifacts.md#availability). Memerlukan Claude Code v2.1.221 atau lebih baru |

206| `CLAUDE_CODE_ARTIFACT_COMMENTS_AUTOREACT` | Tetapkan ke `0` untuk menghentikan Claude [membalas sendiri komentar yang dikirimkan kepadanya](https://code.claude.com/docs/id/artifacts.md#let-claude-reply-to-comments-on-its-own). Memerlukan Claude Code v2.1.228 atau lebih baru |206| `CLAUDE_CODE_ARTIFACT_COMMENTS_AUTOREACT` | Tetapkan ke `0` untuk menghentikan Claude [membalas sendiri komentar yang dikirimkan kepadanya](https://code.claude.com/docs/id/artifacts.md#let-claude-reply-to-comments-on-its-own). Memerlukan Claude Code v2.1.228 atau lebih baru |

207| `CLAUDE_CODE_ARTIFACT_PUBLISH_EDITS` | Tetapkan ke `0` untuk menghentikan Claude menerapkan perubahan kecil pada file [artifact](https://code.claude.com/docs/id/artifacts.md#update-an-artifact) sebagai bagian dari proses publikasinya. Claude kemudian mengedit file dengan tool pengeditan filenya dan memublikasikannya sebagai langkah terpisah. Memerlukan Claude Code v2.1.300 atau lebih baru |207| `CLAUDE_CODE_ARTIFACT_PUBLISH_EDITS` | Atur ke `0` untuk menghentikan Claude [menerapkan perubahan kecil](https://code.claude.com/docs/id/artifacts.md#turn-off-one-step-artifact-updates) pada file artifact sebagai bagian dari memublikasikannya. Claude kemudian mengedit file dengan tool pengeditan filenya dan memublikasikannya sebagai langkah terpisah. Memerlukan Claude Code v2.1.300 atau lebih baru |

208| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Tetapkan ke `0` untuk menghilangkan [blok atribusi](https://code.claude.com/docs/id/llm-gateway-protocol.md#system-prompt-attribution-block), yang membawa versi klien dan sidik jari prompt, dari awal system prompt. Caching pada koneksi langsung ke Anthropic API tidak terpengaruh dalam kedua kasus. Dalam beberapa penyiapan koneksi langsung, Claude Code tetap menyertakan blok tersebut pada permintaan pengklasifikasi [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) bahkan ketika Anda menetapkan `0`. Di [Blok atribusi system prompt](https://code.claude.com/docs/id/llm-gateway-protocol.md#system-prompt-attribution-block), periksa koneksi dan kredensial mana yang dicakup oleh hal ini. Sebelum v2.1.181, blok tersebut menyertakan token per permintaan pada URL dasar kustom dan koneksi Microsoft Foundry, jadi pada versi tersebut tetapkan ke `0` ketika LLM gateway Anda melakukan cache berdasarkan body permintaan atau meneruskan permintaan ke penyedia pihak ketiga, atau ketika Anda terhubung ke Microsoft Foundry secara langsung |208| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Tetapkan ke `0` untuk menghilangkan [blok atribusi](https://code.claude.com/docs/id/llm-gateway-protocol.md#system-prompt-attribution-block), yang membawa versi klien dan sidik jari prompt, dari awal system prompt. Caching pada koneksi langsung ke Anthropic API tidak terpengaruh dalam kedua kasus. Dalam beberapa penyiapan koneksi langsung, Claude Code tetap menyertakan blok tersebut pada permintaan pengklasifikasi [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) bahkan ketika Anda menetapkan `0`. Di [Blok atribusi system prompt](https://code.claude.com/docs/id/llm-gateway-protocol.md#system-prompt-attribution-block), periksa koneksi dan kredensial mana yang dicakup oleh hal ini. Sebelum v2.1.181, blok tersebut menyertakan token per permintaan pada URL dasar kustom dan koneksi Microsoft Foundry, jadi pada versi tersebut tetapkan ke `0` ketika LLM gateway Anda melakukan cache berdasarkan body permintaan atau meneruskan permintaan ke penyedia pihak ketiga, atau ketika Anda terhubung ke Microsoft Foundry secara langsung |

209| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Dihapus di v2.1.283. Gunakan `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` sebagai gantinya |209| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Dihapus di v2.1.283. Gunakan `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` sebagai gantinya |

210| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Tetapkan jendela auto-compact, yaitu seberapa penuh konteks sebelum compaction, dari `100000` hingga `1000000` token. Nilai dengan sufiks seperti `200k` memerlukan v2.1.304 atau lebih baru. Untuk urutan prioritas terhadap cara lain menetapkan jendela dan efeknya pada `used_percentage` baris status, lihat [Tetapkan jendela auto-compact](https://code.claude.com/docs/id/model-config.md#set-the-auto-compact-window) |210| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Tetapkan jendela auto-compact, yaitu seberapa penuh konteks sebelum compaction, dari `100000` hingga `1000000` token. Nilai dengan sufiks seperti `200k` memerlukan v2.1.304 atau lebih baru. Untuk urutan prioritas terhadap cara lain menetapkan jendela dan efeknya pada `used_percentage` baris status, lihat [Tetapkan jendela auto-compact](https://code.claude.com/docs/id/model-config.md#set-the-auto-compact-window) |


502| `OTEL_LOG_TOOL_CONTENT` | Atur ke `1` untuk menyertakan konten tool dalam event span OpenTelemetry `tool.output`. Atribut span membawa konten tool di bawah [gerbang kontrolnya sendiri](https://code.claude.com/docs/id/monitoring-usage.md#new-context-gates). Memerlukan [tracing](https://code.claude.com/docs/id/monitoring-usage.md#traces-beta). Nonaktif secara default untuk melindungi data sensitif. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan dalam [pengaturan proyek dan lokal](https://code.claude.com/docs/id/settings-reference.md#variables-claude-code-ignores-in-env), kecuali nilai off yang dijelaskan di bagian tersebut. Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md#tool-output-span-event) |502| `OTEL_LOG_TOOL_CONTENT` | Atur ke `1` untuk menyertakan konten tool dalam event span OpenTelemetry `tool.output`. Atribut span membawa konten tool di bawah [gerbang kontrolnya sendiri](https://code.claude.com/docs/id/monitoring-usage.md#new-context-gates). Memerlukan [tracing](https://code.claude.com/docs/id/monitoring-usage.md#traces-beta). Nonaktif secara default untuk melindungi data sensitif. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan dalam [pengaturan proyek dan lokal](https://code.claude.com/docs/id/settings-reference.md#variables-claude-code-ignores-in-env), kecuali nilai off yang dijelaskan di bagian tersebut. Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md#tool-output-span-event) |

503| `OTEL_LOG_TOOL_DETAILS` | Atur ke `1` untuk menyertakan argumen input tool; nama server MCP; nama workflow yang ditulis pengguna; string error mentah pada kegagalan tool; `category` penolakan pada event `api_refusal`; nama agent, skill, plugin, dan server MCP yang sebenarnya pada [metrik biaya dan token](https://code.claude.com/docs/id/monitoring-usage.md#cost-counter); serta detail tool lainnya dalam metrik, trace, dan log OpenTelemetry. Nonaktif secara default untuk melindungi PII. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan dalam [pengaturan proyek dan lokal](https://code.claude.com/docs/id/settings-reference.md#variables-claude-code-ignores-in-env), kecuali nilai off yang dijelaskan di bagian tersebut. Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |503| `OTEL_LOG_TOOL_DETAILS` | Atur ke `1` untuk menyertakan argumen input tool; nama server MCP; nama workflow yang ditulis pengguna; string error mentah pada kegagalan tool; `category` penolakan pada event `api_refusal`; nama agent, skill, plugin, dan server MCP yang sebenarnya pada [metrik biaya dan token](https://code.claude.com/docs/id/monitoring-usage.md#cost-counter); serta detail tool lainnya dalam metrik, trace, dan log OpenTelemetry. Nonaktif secara default untuk melindungi PII. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan dalam [pengaturan proyek dan lokal](https://code.claude.com/docs/id/settings-reference.md#variables-claude-code-ignores-in-env), kecuali nilai off yang dijelaskan di bagian tersebut. Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |

504| `OTEL_LOG_USER_PROMPTS` | Atur ke `1` untuk menyertakan teks prompt pengguna dalam trace dan log OpenTelemetry. Nonaktif secara default (prompt disamarkan). Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan dalam [pengaturan proyek dan lokal](https://code.claude.com/docs/id/settings-reference.md#variables-claude-code-ignores-in-env), kecuali nilai off yang dijelaskan di bagian tersebut. Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |504| `OTEL_LOG_USER_PROMPTS` | Atur ke `1` untuk menyertakan teks prompt pengguna dalam trace dan log OpenTelemetry. Nonaktif secara default (prompt disamarkan). Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan dalam [pengaturan proyek dan lokal](https://code.claude.com/docs/id/settings-reference.md#variables-claude-code-ignores-in-env), kecuali nilai off yang dijelaskan di bagian tersebut. Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |

505| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Atur ke `false` untuk mengecualikan UUID akun dari atribut metrik (default: disertakan). Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |505| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Atur ke `false` untuk mengecualikan UUID akun dari atribut metrik dan event (default: disertakan). Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |

506| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Atur ke `true` untuk menyertakan entrypoint sesi dalam atribut metrik (default: dikecualikan). Ditambahkan di v2.1.152. Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |506| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Atur ke `true` untuk menyertakan entrypoint sesi dalam atribut metrik dan event (default: dikecualikan). Ditambahkan di v2.1.152. Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |

507| `OTEL_METRICS_INCLUDE_REPOSITORY` | Atur ke `true` untuk menandai metrik dan event OpenTelemetry dengan atribut `vcs.*` yang mengidentifikasi repositori sesi (default: dikecualikan). Memerlukan Claude Code v2.1.269 atau yang lebih baru. Lihat [Atribut repositori](https://code.claude.com/docs/id/monitoring-usage.md#repository-attributes) |507| `OTEL_METRICS_INCLUDE_REPOSITORY` | Atur ke `true` untuk menandai metrik dan event OpenTelemetry dengan atribut `vcs.*` yang mengidentifikasi repositori sesi (default: dikecualikan). Memerlukan Claude Code v2.1.269 atau yang lebih baru. Lihat [Atribut repositori](https://code.claude.com/docs/id/monitoring-usage.md#repository-attributes) |

508| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Sejak v2.1.161, Claude Code melampirkan kunci `OTEL_RESOURCE_ATTRIBUTES` ke label datapoint metrik. Atur ke `false` untuk mengecualikannya (default: disertakan). Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md#multi-team-organization-support) |508| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Sejak v2.1.161, Claude Code melampirkan kunci `OTEL_RESOURCE_ATTRIBUTES` ke label datapoint metrik. Atur ke `false` untuk mengecualikannya (default: disertakan). Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md#multi-team-organization-support) |

509| `OTEL_METRICS_INCLUDE_SESSION_ID` | Atur ke `false` untuk mengecualikan ID sesi dari atribut metrik (default: disertakan). Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |509| `OTEL_METRICS_INCLUDE_SESSION_ID` | Atur ke `false` untuk mengecualikan ID sesi dari atribut metrik dan event (default: disertakan). Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |

510| `OTEL_METRICS_INCLUDE_VERSION` | Atur ke `true` untuk menyertakan versi Claude Code dalam atribut metrik (default: dikecualikan). Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |510| `OTEL_METRICS_INCLUDE_VERSION` | Atur ke `true` untuk menyertakan versi Claude Code dalam atribut metrik dan event (default: dikecualikan). Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |

511| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Menimpa anggaran karakter untuk metadata skill yang ditampilkan ke [tool Skill](https://code.claude.com/docs/id/skills.md#control-who-invokes-a-skill). Anggaran diskalakan secara dinamis pada 1% dari context window, dengan fallback 8.000 karakter. Nama lama dipertahankan untuk kompatibilitas mundur |511| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Menimpa anggaran karakter untuk metadata skill yang ditampilkan ke [tool Skill](https://code.claude.com/docs/id/skills.md#control-who-invokes-a-skill). Anggaran diskalakan secara dinamis pada 1% dari context window, dengan fallback 8.000 karakter. Nama lama dipertahankan untuk kompatibilitas mundur |

512| `TASK_MAX_OUTPUT_LENGTH` | Dihapus di v2.1.277 dan kini tidak berpengaruh, bersama dengan tool `TaskOutput` yang ukurannya diaturnya. Sebelumnya mengatur jumlah maksimum karakter output [tugas latar belakang](https://code.claude.com/docs/id/tools-reference.md#background-commands) yang disimpan oleh tool `TaskOutput`. Claude membaca file output tugas latar belakang dengan `Read` sebagai gantinya |512| `TASK_MAX_OUTPUT_LENGTH` | Dihapus di v2.1.277 dan kini tidak berpengaruh, bersama dengan tool `TaskOutput` yang ukurannya diaturnya. Sebelumnya mengatur jumlah maksimum karakter output [tugas latar belakang](https://code.claude.com/docs/id/tools-reference.md#background-commands) yang disimpan oleh tool `TaskOutput`. Claude membaca file output tugas latar belakang dengan `Read` sebagai gantinya |

513| `USE_BUILTIN_RIPGREP` | Atur ke `0` untuk menggunakan `rg` yang terinstal di sistem alih-alih `rg` yang disertakan dengan Claude Code |513| `USE_BUILTIN_RIPGREP` | Atur ke `0` untuk menggunakan `rg` yang terinstal di sistem alih-alih `rg` yang disertakan dengan Claude Code |

errors.md +1130 −1001

Details

104| `Failed to authenticate: OAuth session expired and could not be refreshed` | [Authentication](#login-expired) |104| `Failed to authenticate: OAuth session expired and could not be refreshed` | [Authentication](#login-expired) |

105| `Could not refresh your login because another Claude Code process is refreshing it` | [Authentication](#could-not-refresh-your-login) |105| `Could not refresh your login because another Claude Code process is refreshing it` | [Authentication](#could-not-refresh-your-login) |

106| `Failed to refresh OAuth token: another Claude Code process is refreshing it or exited mid-refresh` | [Authentication](#could-not-refresh-your-login) |106| `Failed to refresh OAuth token: another Claude Code process is refreshing it or exited mid-refresh` | [Authentication](#could-not-refresh-your-login) |

107| `Could not refresh your login: the disk that holds the Claude Code config directory (~/.claude by default), or your disk quota on it, is full` | [Autentikasi](#could-not-refresh-your-login-disk-full) |

108| `Failed to refresh OAuth token: the disk that holds the Claude Code config directory (~/.claude by default), or your disk quota on it, is full` | [Autentikasi](#could-not-refresh-your-login-disk-full) |

107| `Your account is on hold and can't use Claude Code. View details or appeal: https://claude.ai/restricted` | [Authentication](#your-account-is-on-hold) |109| `Your account is on hold and can't use Claude Code. View details or appeal: https://claude.ai/restricted` | [Authentication](#your-account-is-on-hold) |

108| `Your account is on hold and can't sign in to Claude Code. View details or appeal: https://claude.ai/restricted` | [Authentication](#your-account-is-on-hold) |110| `Your account is on hold and can't sign in to Claude Code. View details or appeal: https://claude.ai/restricted` | [Authentication](#your-account-is-on-hold) |

109| `Anthropic profile login expired · Re-authenticate your Anthropic profile` | [Authentication](#anthropic-profile-login-expired) |111| `Anthropic profile login expired · Re-authenticate your Anthropic profile` | [Authentication](#anthropic-profile-login-expired) |


242| `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [Command-line errors](#the-current-directory-no-longer-exists) |244| `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [Command-line errors](#the-current-directory-no-longer-exists) |

243| `Temp directory <dir> ... Refusing to use it` / `Claude Code's temporary directory <dir> could not be created` | [Command-line errors](#temp-directory-refused-or-cannot-be-created) |245| `Temp directory <dir> ... Refusing to use it` / `Claude Code's temporary directory <dir> could not be created` | [Command-line errors](#temp-directory-refused-or-cannot-be-created) |

244| `ENOSPC: no space left on device, mkdir '<dir>'` | [Command-line errors](#temp-directory-refused-or-cannot-be-created) |246| `ENOSPC: no space left on device, mkdir '<dir>'` | [Command-line errors](#temp-directory-refused-or-cannot-be-created) |

247| `Error: Claude Code could not save ... because the disk is full (ENOSPC)` / `because your disk quota is used up (EDQUOT)` | [Kesalahan command-line](#could-not-save-because-the-disk-is-full) |

245| `couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded` | [Command-line errors](#directory-couldnt-be-resolved-to-a-real-location) |248| `couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded` | [Command-line errors](#directory-couldnt-be-resolved-to-a-real-location) |

246| `Error: Workspace not trusted` saat memulai Remote Control | [Command-line errors](#workspace-not-trusted-when-starting-remote-control) |249| `Error: Workspace not trusted` saat memulai Remote Control | [Command-line errors](#workspace-not-trusted-when-starting-remote-control) |

247| `Error: Workspace not trusted` saat menjalankan `claude ultrareview` | [Command-line errors](#workspace-not-trusted-when-running-claude-ultrareview) |250| `Error: Workspace not trusted` saat menjalankan `claude ultrareview` | [Command-line errors](#workspace-not-trusted-when-running-claude-ultrareview) |

248| `Ultrareview did not start` | [Command-line errors](#ultrareview-did-not-start) |251| `Ultrareview did not start` | [Command-line errors](#ultrareview-did-not-start) |

252| `Remote Control did not start: "<question>" got no answer` | [Kesalahan command-line](#remote-control-did-not-start-got-no-answer) |

249| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Command-line errors](#not-carried-over-to-the-sessions-remote-control-starts) |253| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Command-line errors](#not-carried-over-to-the-sessions-remote-control-starts) |

250| `--sandbox is not supported by claude remote-control` / `--no-sandbox is not supported by claude remote-control` | [Command-line errors](#sandbox-is-not-supported-by-claude-remote-control) |254| `--sandbox is not supported by claude remote-control` / `--no-sandbox is not supported by claude remote-control` | [Command-line errors](#sandbox-is-not-supported-by-claude-remote-control) |

251| `` `claude import` is not yet available in this build `` | [Command-line errors](#claude-import-is-not-yet-available-in-this-build) |255| `` `claude import` is not yet available in this build `` | [Command-line errors](#claude-import-is-not-yet-available-in-this-build) |


320| `The packages it lists are not installed` / `The packages it lists were not installed, because` | [Plugin troubleshooting](https://code.claude.com/docs/id/plugins/troubleshooting.md#the-packages-it-lists-are-not-installed) |324| `The packages it lists are not installed` / `The packages it lists were not installed, because` | [Plugin troubleshooting](https://code.claude.com/docs/id/plugins/troubleshooting.md#the-packages-it-lists-are-not-installed) |

321| `does not load (...), so Claude Code ignores the whole file` | [Plugin troubleshooting](https://code.claude.com/docs/id/plugins/troubleshooting.md#does-not-load-so-claude-code-ignores-the-whole-file) |325| `does not load (...), so Claude Code ignores the whole file` | [Plugin troubleshooting](https://code.claude.com/docs/id/plugins/troubleshooting.md#does-not-load-so-claude-code-ignores-the-whole-file) |

322| `path escapes plugin directory` | [Plugin errors](#path-escapes-plugin-directory) |326| `path escapes plugin directory` | [Plugin errors](#path-escapes-plugin-directory) |

327| `path not read: <path> is absolute or has a ".." part` | [Kesalahan plugin](#server-file-path-not-read) |

323| `Plugin not loaded: its manifest <path> was not read` | [Plugin errors](#plugin-not-loaded-its-manifest-was-not-read) |328| `Plugin not loaded: its manifest <path> was not read` | [Plugin errors](#plugin-not-loaded-its-manifest-was-not-read) |

324| `path could not be checked` | [Plugin errors](#path-could-not-be-checked) |329| `path could not be checked` | [Plugin errors](#path-could-not-be-checked) |

325| `its marketplace entry path does not stay inside the marketplace directory` | [Plugin errors](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) |330| `its marketplace entry path does not stay inside the marketplace directory` | [Plugin errors](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) |


368| `Refusing to write <path>: where it leads on disk could not be determined` / `Refusing to read <path>: where it leads on disk could not be determined` | [Tool errors](#refusing-after-a-symlink-changed) |373| `Refusing to write <path>: where it leads on disk could not be determined` / `Refusing to read <path>: where it leads on disk could not be determined` | [Tool errors](#refusing-after-a-symlink-changed) |

369| `Refusing to search <path>: a path one of its Read deny rules is written through changed while the search was being prepared` / `Refusing to search <path>: it could not be opened` | [Tool errors](#refusing-after-a-symlink-changed) |374| `Refusing to search <path>: a path one of its Read deny rules is written through changed while the search was being prepared` / `Refusing to search <path>: it could not be opened` | [Tool errors](#refusing-after-a-symlink-changed) |

370| `its permission check expired before it ran (too many concurrent file operations)` / `ripgrep was found only by name on PATH` | [Tool errors](#refusing-after-a-symlink-changed) |375| `its permission check expired before it ran (too many concurrent file operations)` / `ripgrep was found only by name on PATH` | [Tool errors](#refusing-after-a-symlink-changed) |

376| `The search failed, so this is not a "no matches" result: matches may exist` | [Kesalahan tool](#the-search-failed) |

371| `task output swap refused (tasks dir moved or linked)` | [Tool errors](#task-output-swap-refused) |377| `task output swap refused (tasks dir moved or linked)` | [Tool errors](#task-output-swap-refused) |

372| `Command killed: its output file was replaced or could no longer be verified` | [Tool errors](#task-output-swap-refused) |378| `Command killed: its output file was replaced or could no longer be verified` | [Tool errors](#task-output-swap-refused) |

373| `Disk full: this computer's volume holding <dir> (Claude Code's temporary directory) has <n> MB free` / `Nearly out of inodes: this computer's volume holding <dir>` | [Tool errors](#disk-quota-or-temp-filesystem-is-full) |379| `Disk full: this computer's volume holding <dir> (Claude Code's temporary directory) has <n> MB free` / `Nearly out of inodes: this computer's volume holding <dir>` | [Tool errors](#disk-quota-or-temp-filesystem-is-full) |


377| `Command output was lost: the temp filesystem at <dir> is full` / `is out of inodes` | [Tool errors](#disk-quota-or-temp-filesystem-is-full) |383| `Command output was lost: the temp filesystem at <dir> is full` / `is out of inodes` | [Tool errors](#disk-quota-or-temp-filesystem-is-full) |

378| `File is not valid UTF-8. It may use a legacy encoding such as Windows-1252, Shift-JIS or GBK, or be binary` | [Tool errors](#file-is-not-valid-utf-8) |384| `File is not valid UTF-8. It may use a legacy encoding such as Windows-1252, Shift-JIS or GBK, or be binary` | [Tool errors](#file-is-not-valid-utf-8) |

379| `git is not installed on this Mac. To install it, run xcode-select --install, then try again.` | [Error tool](#git-is-not-installed-on-this-mac) |385| `git is not installed on this Mac. To install it, run xcode-select --install, then try again.` | [Error tool](#git-is-not-installed-on-this-mac) |

386| `Refusing to apply edits to <path>: a hook is configured for file edits in this session` | [Kesalahan tool](#a-hook-is-configured-for-file-edits) |

380| `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [Tool errors](#the-source-file-is-not-valid-utf-8-text) |387| `the source file is not valid UTF-8 text` / `the source file is not valid UTF-16 text` | [Tool errors](#the-source-file-is-not-valid-utf-8-text) |

381| `the source file has the replacement character U+FFFD` | [Tool errors](#the-source-file-is-not-valid-utf-8-text) |388| `the source file has the replacement character U+FFFD` | [Tool errors](#the-source-file-is-not-valid-utf-8-text) |

382| `Not published: that file is on a network share` | [Tool errors](#not-published-that-file-is-on-a-network-share) |389| `Not published: that file is on a network share` | [Tool errors](#not-published-that-file-is-on-a-network-share) |


387| `The safety check for domain ... is rate-limited` | [Tool errors](#webfetch-domain-safety-check-failed) |394| `The safety check for domain ... is rate-limited` | [Tool errors](#webfetch-domain-safety-check-failed) |

388| `The safety check for domain ... is temporarily rate-limited` | [Tool errors](#webfetch-domain-safety-check-failed) |395| `The safety check for domain ... is temporarily rate-limited` | [Tool errors](#webfetch-domain-safety-check-failed) |

389| `Unable to verify if domain ... is safe to fetch` | [Tool errors](#webfetch-domain-safety-check-failed) |396| `Unable to verify if domain ... is safe to fetch` | [Tool errors](#webfetch-domain-safety-check-failed) |

397| `MCP tool "<tool>" on server "<server>" gave no answer that could be read` / `answered without its text` | [Cara hasil hook tool MCP dibaca](https://code.claude.com/docs/id/hooks.md#how-the-tools-result-is-read) |

390| `Can't open MCP settings while no terminal is attached to this background session` | [Background session errors](#commands-refused-in-a-background-session) |398| `Can't open MCP settings while no terminal is attached to this background session` | [Background session errors](#commands-refused-in-a-background-session) |

391| `Can't open MCP settings in a background session` | [Background session errors](#commands-refused-in-a-background-session) |399| `Can't open MCP settings in a background session` | [Background session errors](#commands-refused-in-a-background-session) |

392| `blocked because the path is spelled in a form that cannot be safely resolved` | [Background session errors](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) |400| `blocked because the path is spelled in a form that cannot be safely resolved` | [Background session errors](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) |


397| `Can't open — this session is running in another terminal` | [Background session errors](#this-session-is-running-in-another-terminal) |405| `Can't open — this session is running in another terminal` | [Background session errors](#this-session-is-running-in-another-terminal) |

398| `This conversation is already open in another running Claude session` | [Background session errors](#this-session-is-running-in-another-terminal) |406| `This conversation is already open in another running Claude session` | [Background session errors](#this-session-is-running-in-another-terminal) |

399| `This session's saved conversation is no longer on disk` | [Background session errors](#this-sessions-saved-conversation-is-no-longer-on-disk) |407| `This session's saved conversation is no longer on disk` | [Background session errors](#this-sessions-saved-conversation-is-no-longer-on-disk) |

408| `This forked session could not be started. Fork the conversation again to retry.` | [Kesalahan sesi latar belakang](#this-forked-session-could-not-be-started) |

400| `Bypass permissions was requested at launch and ignored` | [Bypass permissions ignored in a background session](https://code.claude.com/docs/id/permission-modes.md#bypass-permissions-ignored-in-a-background-session) |409| `Bypass permissions was requested at launch and ignored` | [Bypass permissions ignored in a background session](https://code.claude.com/docs/id/permission-modes.md#bypass-permissions-ignored-in-a-background-session) |

401| `kept <id> — its worktree is still at <path>` | [Kesalahan sesi latar belakang](#worktree-has-commits-that-are-not-pushed-anywhere) jika baris berikutnya dari pesan menyebutkan commit yang belum di-push, jika tidak, [Apa yang dihapus saat menghapus sesi](https://code.claude.com/docs/id/agent-view.md#what-deleting-a-session-removes) |410| `kept <id> — its worktree is still at <path>` | [Kesalahan sesi latar belakang](#worktree-has-commits-that-are-not-pushed-anywhere) jika baris berikutnya dari pesan menyebutkan commit yang belum di-push, jika tidak, [Apa yang dihapus saat menghapus sesi](https://code.claude.com/docs/id/agent-view.md#what-deleting-a-session-removes) |

402| `kept <id> — <n> unpushed commits on <branch>` | [Background session errors](#worktree-has-commits-that-are-not-pushed-anywhere) |411| `kept <id> — <n> unpushed commits on <branch>` | [Background session errors](#worktree-has-commits-that-are-not-pushed-anywhere) |


548| [`CLAUDE_CODE_MAX_RETRIES`](https://code.claude.com/docs/id/env-vars) | 10 | Jumlah percobaan retry. Dibatasi pada 15 mulai v2.1.186; mulai v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` menaikkan default dan menghapus batas. Turunkan untuk menampilkan kegagalan lebih cepat dalam script. |557| [`CLAUDE_CODE_MAX_RETRIES`](https://code.claude.com/docs/id/env-vars) | 10 | Jumlah percobaan retry. Dibatasi pada 15 mulai v2.1.186; mulai v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` menaikkan default dan menghapus batas. Turunkan untuk menampilkan kegagalan lebih cepat dalam script. |

549| [`CLAUDE_CODE_RETRY_WATCHDOG`](https://code.claude.com/docs/id/env-vars) | unset | Atur ke `1` dalam sesi tanpa pengawasan seperti CI jobs untuk mencoba ulang `429` dan `529` capacity errors tanpa batas bukan gagal setelah `CLAUDE_CODE_MAX_RETRIES` percobaan. Claude Code gagal sekaligus ketika standard-speed request mendapat `429` yang melaporkan spend limit atau kredit penggunaan yang habis, bahkan satu dari [gateway spend cap](#spend-limit-reached) yang reset pada jadwal. Sebelum v2.1.239, watchdog mencoba ulang ini tanpa batas. Untuk fast mode requests, lihat [Handle rate limits](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Pada v2.1.199 atau lebih baru itu juga menaikkan default retry count untuk transient errors lainnya, seperti server errors, timeouts, dan dropped connections, menjadi 300, kira-kira tiga jam backoff, dan menghapus batas 15 pada `CLAUDE_CODE_MAX_RETRIES` jika Anda menetapkan variabel itu secara eksplisit. |558| [`CLAUDE_CODE_RETRY_WATCHDOG`](https://code.claude.com/docs/id/env-vars) | unset | Atur ke `1` dalam sesi tanpa pengawasan seperti CI jobs untuk mencoba ulang `429` dan `529` capacity errors tanpa batas bukan gagal setelah `CLAUDE_CODE_MAX_RETRIES` percobaan. Claude Code gagal sekaligus ketika standard-speed request mendapat `429` yang melaporkan spend limit atau kredit penggunaan yang habis, bahkan satu dari [gateway spend cap](#spend-limit-reached) yang reset pada jadwal. Sebelum v2.1.239, watchdog mencoba ulang ini tanpa batas. Untuk fast mode requests, lihat [Handle rate limits](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Pada v2.1.199 atau lebih baru itu juga menaikkan default retry count untuk transient errors lainnya, seperti server errors, timeouts, dan dropped connections, menjadi 300, kira-kira tiga jam backoff, dan menghapus batas 15 pada `CLAUDE_CODE_MAX_RETRIES` jika Anda menetapkan variabel itu secara eksplisit. |

550| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](https://code.claude.com/docs/id/env-vars) | unset | Waktu maksimum dalam milidetik yang dihabiskan setiap permintaan API untuk menunggu kesalahan `429` dan `529` ketika `CLAUDE_CODE_RETRY_WATCHDOG` ditetapkan. Ketika tidak ditetapkan, waktu tunggunya tidak terbatas. Memerlukan Claude Code v2.1.295 atau lebih baru. |559| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](https://code.claude.com/docs/id/env-vars) | unset | Waktu maksimum dalam milidetik yang dihabiskan setiap permintaan API untuk menunggu kesalahan `429` dan `529` ketika `CLAUDE_CODE_RETRY_WATCHDOG` ditetapkan. Ketika tidak ditetapkan, waktu tunggunya tidak terbatas. Memerlukan Claude Code v2.1.295 atau lebih baru. |

560| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS` | tanpa batas | Dengan `CLAUDE_CODE_RETRY_WATCHDOG` ditetapkan, waktu terlama dalam milidetik yang ditunggu satu permintaan hingga [batas penggunaan](#youve-hit-your-session-limit) paket Anda, seperti batas sesi atau batas mingguan, direset. Ketika reset lebih jauh dari batas ini, permintaan langsung gagal, kecuali kredit penggunaan masih memiliki ruang atau API tidak dapat memeriksanya. Dalam kasus tersebut, permintaan dicoba ulang, dan gagal jika batas ini terlewati sebelum berhasil. Memerlukan Claude Code v2.1.301 atau lebih baru. |

551| [`CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS`](https://code.claude.com/docs/id/env-vars) | unset | Interval minimum dalam milidetik di antara pemeriksaan apakah [batas penggunaan](#youve-hit-your-session-limit) sudah dicabut, sementara permintaan menunggu batas tersebut direset dengan `CLAUDE_CODE_RETRY_WATCHDOG` ditetapkan. Ketika pemeriksaan menemukan batas sudah dicabut, permintaan langsung dikirim. Berikan angka polos dari `60000` hingga `10800000`. Ketika tidak ditetapkan atau di luar rentang tersebut, tidak ada pemeriksaan yang dilakukan. Untuk kapan Claude Code melewati pemeriksaan ini, lihat [referensi environment variable](https://code.claude.com/docs/id/env-vars.md). Memerlukan Claude Code v2.1.305 atau lebih baru. |561| [`CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS`](https://code.claude.com/docs/id/env-vars) | unset | Interval minimum dalam milidetik di antara pemeriksaan apakah [batas penggunaan](#youve-hit-your-session-limit) sudah dicabut, sementara permintaan menunggu batas tersebut direset dengan `CLAUDE_CODE_RETRY_WATCHDOG` ditetapkan. Ketika pemeriksaan menemukan batas sudah dicabut, permintaan langsung dikirim. Berikan angka polos dari `60000` hingga `10800000`. Ketika tidak ditetapkan atau di luar rentang tersebut, tidak ada pemeriksaan yang dilakukan. Untuk kapan Claude Code melewati pemeriksaan ini, lihat [referensi environment variable](https://code.claude.com/docs/id/env-vars.md). Memerlukan Claude Code v2.1.305 atau lebih baru. |

552| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](https://code.claude.com/docs/id/env-vars) | 500 | Penundaan awal dalam milidetik dari backoff di antara retry permintaan yang ditolak API dengan kesalahan `529` overloaded. Naikkan, hingga 32000, untuk menyebarkan retry dalam rentang waktu yang lebih panjang ketika API sedang mencapai kapasitas. Tidak berpengaruh ketika `CLAUDE_CODE_RETRY_WATCHDOG` diatur ke `1`, atau ketika permintaan yang ditolak dikirim dalam [fast mode](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Memerlukan Claude Code v2.1.292 atau lebih baru. |562| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](https://code.claude.com/docs/id/env-vars) | 500 | Penundaan awal dalam milidetik dari backoff di antara retry permintaan yang ditolak API dengan kesalahan `529` overloaded. Naikkan, hingga 32000, untuk menyebarkan retry dalam rentang waktu yang lebih panjang ketika API sedang mencapai kapasitas. Tidak berpengaruh ketika `CLAUDE_CODE_RETRY_WATCHDOG` diatur ke `1`, atau ketika permintaan yang ditolak dikirim dalam [fast mode](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Memerlukan Claude Code v2.1.292 atau lebih baru. |

553| [`CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS`](https://code.claude.com/docs/id/env-vars) | 32000 | Batas atas dalam milidetik untuk backoff di antara retry permintaan yang ditolak API dengan kesalahan `529` overloaded. Naikkan, hingga 64000, agar jarak antar retry berikutnya terus bertambah ketika API sedang mencapai kapasitas. Tidak berpengaruh ketika `CLAUDE_CODE_RETRY_WATCHDOG` diatur ke `1`, atau ketika permintaan yang ditolak dikirim dalam [fast mode](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Memerlukan Claude Code v2.1.296 atau lebih baru. |563| [`CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS`](https://code.claude.com/docs/id/env-vars) | 32000 | Batas atas dalam milidetik untuk backoff di antara retry permintaan yang ditolak API dengan kesalahan `529` overloaded. Naikkan, hingga 64000, agar jarak antar retry berikutnya terus bertambah ketika API sedang mencapai kapasitas. Tidak berpengaruh ketika `CLAUDE_CODE_RETRY_WATCHDOG` diatur ke `1`, atau ketika permintaan yang ditolak dikirim dalam [fast mode](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Memerlukan Claude Code v2.1.296 atau lebih baru. |

554| [`API_TIMEOUT_MS`](https://code.claude.com/docs/id/env-vars) | 600000 | Waktu dalam milidetik yang dimiliki setiap percobaan permintaan untuk menerima response headers-nya. Ini tidak membatasi berapa lama respons streaming berjalan setelah itu. Naikkan untuk jaringan lambat atau proxy. Untuk cara ini membatasi first-byte deadline, lihat [No response from API](#no-response-from-api). |564| [`API_TIMEOUT_MS`](https://code.claude.com/docs/id/env-vars) | 600000 | Waktu dalam milidetik yang dimiliki setiap percobaan permintaan untuk menerima response headers-nya. Ini tidak membatasi berapa lama respons streaming berjalan setelah itu. Naikkan untuk jaringan lambat atau proxy. Untuk cara ini membatasi first-byte deadline, lihat [No response from API](#no-response-from-api). |

555| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](https://code.claude.com/docs/id/env-vars) | unset | Batas pengiriman ulang [permintaan non-streaming](#streaming-response-ended-before-any-complete-data-was-received) yang mengalami timeout. Saat batas tercapai, permintaan gagal. Respons dari Claude yang membutuhkan waktu lebih lama dari timeout untuk dihasilkan akan mengalami timeout lagi pada setiap pengiriman ulang, jadi tetapkan angka rendah seperti `0` agar gagal lebih cepat. Setiap percobaan non-streaming mengalami timeout setelah 300 detik dalam sesi lokal, atau setelah `API_TIMEOUT_MS` ketika Anda menetapkan nilai positif. Memerlukan Claude Code v2.1.285 atau lebih baru. |565| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](https://code.claude.com/docs/id/env-vars) | unset | Batas pengiriman ulang [permintaan non-streaming](#streaming-response-ended-before-any-complete-data-was-received) yang mengalami timeout. Saat batas tercapai, permintaan gagal. Respons dari Claude yang membutuhkan waktu lebih lama dari timeout untuk dihasilkan akan mengalami timeout lagi pada setiap pengiriman ulang, jadi tetapkan angka rendah seperti `0` agar gagal lebih cepat. Untuk timeout setiap percobaan, lihat [Berapa lama percobaan non-streaming menunggu](#how-long-a-non-streaming-attempt-waits). Memerlukan Claude Code v2.1.285 atau lebih baru. |

556| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](https://code.claude.com/docs/id/env-vars) | unset | Deadline dalam milliseconds untuk first response byte dari streaming request. Memerlukan Claude Code v2.1.242 atau lebih baru. Untuk bagaimana Claude Code memilih deadline ketika ini unset, lihat [No response from API](#no-response-from-api). |566| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](https://code.claude.com/docs/id/env-vars) | unset | Deadline dalam milliseconds untuk first response byte dari streaming request. Memerlukan Claude Code v2.1.242 atau lebih baru. Untuk bagaimana Claude Code memilih deadline ketika ini unset, lihat [No response from API](#no-response-from-api). |

557 567 

568#### Berapa lama percobaan non-streaming menunggu

569 

570Percobaan non-streaming berakhir pada request timeout-nya atau pada body idle timeout, mana saja yang terjadi lebih dulu:

571 

572* **Request timeout**: `API_TIMEOUT_MS` ketika Anda menetapkan nilai positif, jika tidak 300 detik dalam sesi lokal.

573* **[Body idle timeout](https://code.claude.com/docs/id/network-config.md#streaming-idle-watchdogs)**: 5 hingga 6 menit tanpa respons, setinggi apa pun Anda menetapkan `API_TIMEOUT_MS`, di tempat timeout ini berjalan dan Anda belum mematikannya.

574 

558## Kesalahan server575## Kesalahan server

559 576 

560Sebagian besar kesalahan ini berasal dari penyedia inferensi: layanan Anthropic di Anthropic API, dan layanan di balik endpoint penyedia tersebut di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau gateway khusus. [Auto mode tidak dapat menentukan keamanan suatu tindakan](#auto-mode-cannot-determine-the-safety-of-an-action) dan [Agent dihentikan lebih awal karena kesalahan API](#agent-terminated-early-due-to-an-api-error) juga mencakup penyebab di sisi Anda, seperti akun Amazon Bedrock yang tidak dapat memanggil model pengklasifikasi atau subagent yang mencapai batas penggunaan.577Sebagian besar kesalahan ini berasal dari penyedia inferensi: layanan Anthropic di Anthropic API, dan layanan di balik endpoint penyedia tersebut di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau gateway khusus. [Auto mode tidak dapat menentukan keamanan suatu tindakan](#auto-mode-cannot-determine-the-safety-of-an-action) dan [Agent dihentikan lebih awal karena kesalahan API](#agent-terminated-early-due-to-an-api-error) juga mencakup penyebab di sisi Anda, seperti akun Amazon Bedrock yang tidak dapat memanggil model pengklasifikasi atau subagent yang mencapai batas penggunaan.


1436 1453 

1437Ini bukan kondisi yang sama dengan [OAuth token revoked or expired](#oauth-token-revoked-or-expired). Pesan-pesan tersebut melaporkan penolakan yang dikembalikan API. Claude Code sendiri yang menghasilkan `Login expired` untuk login yang sudah gagal diperbaruinya, sehingga tidak mengirimkan permintaan. Ketika pembaruan gagal karena akun itu sendiri ditangguhkan, bukan karena login yang usang, Claude Code menampilkan [Your account is on hold](#your-account-is-on-hold) sebagai gantinya.1454Ini bukan kondisi yang sama dengan [OAuth token revoked or expired](#oauth-token-revoked-or-expired). Pesan-pesan tersebut melaporkan penolakan yang dikembalikan API. Claude Code sendiri yang menghasilkan `Login expired` untuk login yang sudah gagal diperbaruinya, sehingga tidak mengirimkan permintaan. Ketika pembaruan gagal karena akun itu sendiri ditangguhkan, bukan karena login yang usang, Claude Code menampilkan [Your account is on hold](#your-account-is-on-hold) sebagai gantinya.

1438 1455 

1439Sesi yang diautentikasi dengan kunci API, [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/id/env-vars), atau penyedia pihak ketiga tidak menggunakan login tersimpan dan tidak pernah melihat pesan ini.

1440 

1441Anda dapat memeriksa kondisi ini sebelum permintaan gagal: [`/status`](https://code.claude.com/docs/id/commands) menampilkan baris `Login` yang berbunyi `Expired — log in again`, ditambah organisasi dan email yang disimpan untuk login yang kedaluwarsa. Baris ini hanya muncul ketika login tersimpan adalah kredensial aktif Anda dan tidak dapat lagi di-refresh. Sesi yang diautentikasi dengan cara lain tidak menampilkan baris ini, meskipun login yang kedaluwarsa masih tersimpan. Sebelum v2.1.210, `/status` tidak memberikan indikasi dalam kondisi ini bahwa login pernah ada, karena kredensial yang dihapus tidak menyisakan apa pun untuk dilaporkan.1456Anda dapat memeriksa kondisi ini sebelum permintaan gagal: [`/status`](https://code.claude.com/docs/id/commands) menampilkan baris `Login` yang berbunyi `Expired — log in again`, ditambah organisasi dan email yang disimpan untuk login yang kedaluwarsa. Baris ini hanya muncul ketika login tersimpan adalah kredensial aktif Anda dan tidak dapat lagi di-refresh. Sesi yang diautentikasi dengan cara lain tidak menampilkan baris ini, meskipun login yang kedaluwarsa masih tersimpan. Sebelum v2.1.210, `/status` tidak memberikan indikasi dalam kondisi ini bahwa login pernah ada, karena kredensial yang dihapus tidak menyisakan apa pun untuk dilaporkan.

1442 1457 

1443**Yang perlu dilakukan:**1458**Yang perlu dilakukan:**


1461Failed to refresh OAuth token: another Claude Code process is refreshing it or exited mid-refresh. This is usually transient; retry in a minute, and if it persists close other Claude Code processes or sign in again1476Failed to refresh OAuth token: another Claude Code process is refreshing it or exited mid-refresh. This is usually transient; retry in a minute, and if it persists close other Claude Code processes or sign in again

1462```1477```

1463 1478 

1464Sesi yang diautentikasi dengan kunci API, [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/id/env-vars), atau penyedia pihak ketiga tidak menggunakan login tersimpan dan tidak pernah melihat pesan ini.

1465 

1466**Yang perlu dilakukan:**1479**Yang perlu dilakukan:**

1467 1480 

1468* Coba lagi dalam satu menit. Jika proses lain menyelesaikan refresh terlebih dahulu, sesi ini menggunakan login yang telah diperbarui.1481* Coba lagi dalam satu menit. Jika proses lain menyelesaikan refresh terlebih dahulu, sesi ini menggunakan login yang telah diperbarui.

1469* Jika pesan terus muncul, tutup jendela dan proses Claude Code lainnya, lalu coba lagi.1482* Jika pesan terus muncul, tutup jendela dan proses Claude Code lainnya, lalu coba lagi.

1470* Jika pesan muncul tanpa ada proses Claude Code lain yang berjalan, jalankan `/login`. Masuk kembali tidak menunggu kunci refresh.1483* Jika pesan muncul tanpa ada proses Claude Code lain yang berjalan, jalankan `/login`. Masuk kembali tidak menunggu kunci refresh.

1471 1484 

1485### Could not refresh your login: the disk that holds the Claude Code config directory is full

1486 

1487Kosongkan ruang pada disk yang menyimpan direktori konfigurasi Claude Code, lalu kirim pesan Anda lagi. Masuk kembali tidak akan membantu selama disk penuh, karena login baru tidak dapat disimpan. Direktori konfigurasi adalah `~/.claude` di direktori home Anda kecuali Anda mengatur [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars).

1488 

1489```text wrap theme={null}

1490Could not refresh your login: the disk that holds the Claude Code config directory (~/.claude by default), or your disk quota on it, is full · Delete files you no longer need on that disk, then try again · Signing in again won't help

1491```

1492 

1493Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) (`-p`) dan [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), pesannya berbunyi:

1494 

1495```text wrap theme={null}

1496Failed to refresh OAuth token: the disk that holds the Claude Code config directory (~/.claude by default), or your disk quota on it, is full. Delete files you no longer need on that disk and retry; signing in again won't help

1497```

1498 

1499**Yang harus dilakukan:**

1500 

1501* Untuk skrip, jalankan ulang perintah `claude -p`-nya

1502* Jika disk sudah menunjukkan ruang kosong, kehabisan kuota disk atau inode menghasilkan pesan yang sama. Hapus file milik Anda sendiri di disk tersebut. Jika pesan muncul kembali, hapus banyak file kecil alih-alih beberapa file besar, karena setiap file memakan satu inode berapa pun ukurannya.

1503 

1472### Couldn't save your login1504### Couldn't save your login

1473 1505 

1474Anda masuk dengan claude.ai, tetapi Claude Code tidak dapat menyimpan login ke penyimpanan kredensialnya, sehingga login tidak selesai. Di macOS, hal ini dapat terjadi ketika login keychain terkunci, misalnya saat sleep atau idle, setelah Claude Code sudah membaca atau menyimpan kredensial di dalamnya selama sesi yang sama.1506Anda masuk dengan claude.ai, tetapi Claude Code tidak dapat menyimpan login ke penyimpanan kredensialnya, sehingga login tidak selesai. Di macOS, hal ini dapat terjadi ketika login keychain terkunci, misalnya saat sleep atau idle, setelah Claude Code sudah membaca atau menyimpan kredensial di dalamnya selama sesi yang sama.


2361 2393 

2362## Kesalahan permintaan2394## Kesalahan permintaan

2363 2395 

2364Kesalahan ini berkaitan dengan konten permintaan Anda. Sebagian besar kembali dari API setelah menolak permintaan; beberapa diproduksi secara lokal oleh Claude Code sebelum permintaan dikirim.2396Kesalahan-kesalahan ini berkaitan dengan isi permintaan Anda. Sebagian besar dikembalikan oleh API setelah API menolak permintaan tersebut; beberapa dihasilkan secara lokal oleh Claude Code sebelum permintaan apa pun dikirim.

2365 2397 

2366### Prompt terlalu panjang2398### Prompt is too long

2367 2399 

2368Percakapan ditambah file yang dilampirkan melebihi context window model.2400Percakapan beserta file terlampir melebihi context window model.

2369 2401 

2370```text theme={null}2402```text theme={null}

2371Prompt is too long2403Prompt is too long


2377Context limit reached · /compact or /clear to continue2409Context limit reached · /compact or /clear to continue

2378```2410```

2379 2411 

2380Baris hanya menyebutkan `/clear` ketika [`DISABLE_COMPACT`](https://code.claude.com/docs/id/env-vars) diatur. Bentuk kesalahan yang lebih panjang, seperti bentuk kegagalan compaction di bawah, tetap mempertahankan pesan `Prompt is too long ·`. Dalam output `-p` dan transkrip, teksnya tetap `Prompt is too long`.2412Baris tersebut hanya menyebut `/clear` ketika [`DISABLE_COMPACT`](https://code.claude.com/docs/id/env-vars) diatur. Bentuk kesalahan yang lebih panjang, seperti bentuk compaction gagal di bawah ini, tetap menggunakan kata-kata `Prompt is too long ·`. Dalam output `-p` dan transkrip, teksnya tetap `Prompt is too long`.

2381 2413 

2382Ketika Anda mematikan auto-compact di [pengaturan pengguna](https://code.claude.com/docs/id/settings-reference.md#autocompactenabled), baris juga mengatakan demikian:2414Ketika Anda mematikan auto-compact di [pengaturan pengguna](https://code.claude.com/docs/id/settings-reference.md#autocompactenabled) Anda, baris tersebut juga menyebutkannya:

2383 2415 

2384```text theme={null}2416```text theme={null}

2385Context limit reached · /compact or /clear to continue · auto-compact is off · /config to turn it on2417Context limit reached · /compact or /clear to continue · auto-compact is off · /config to turn it on

2386```2418```

2387 2419 

2388Tombol **Auto-compact** di `/config` menulis `autoCompactEnabled` ke pengaturan pengguna. Petunjuk muncul hanya ketika perubahan `/config` akan berlaku. Misalnya, tidak muncul ketika [`DISABLE_AUTO_COMPACT`](https://code.claude.com/docs/id/env-vars) atau [`DISABLE_COMPACT`](https://code.claude.com/docs/id/env-vars) mematikan auto-compact. Juga tidak muncul ketika cakupan prioritas lebih tinggi, seperti pengaturan proyek atau terkelola, menetapkan `autoCompactEnabled` ke `false`. Sebelum v2.1.235, baris tidak membawa petunjuk auto-compact.2420Toggle **Auto-compact** di `/config` menulis `autoCompactEnabled` ke pengaturan pengguna. Petunjuk ini hanya muncul ketika perubahan di `/config` akan berlaku. Misalnya, petunjuk ini tidak muncul ketika [`DISABLE_AUTO_COMPACT`](https://code.claude.com/docs/id/env-vars) atau [`DISABLE_COMPACT`](https://code.claude.com/docs/id/env-vars) mematikan auto-compact. Petunjuk ini juga tidak muncul ketika cakupan dengan prioritas lebih tinggi, seperti pengaturan proyek atau pengaturan terkelola, mengatur `autoCompactEnabled` ke `false`. Sebelum v2.1.235, baris tersebut tidak memuat petunjuk auto-compact.

2389 2421 

2390Amazon Bedrock melaporkan kondisi ini sebagai `Input is too long for requested model.`, yang Claude Code tangani dengan cara yang sama. Sebelum v2.1.217, Claude Code tidak mengenali pesan Bedrock, jadi auto-compact tidak pernah dipicu dan `/compact` gagal dengan kesalahan yang sama.2422Amazon Bedrock melaporkan kondisi ini sebagai `Input is too long for requested model.`, yang ditangani Claude Code dengan cara yang sama. Sebelum v2.1.217, Claude Code tidak mengenali kata-kata Bedrock tersebut, sehingga auto-compact tidak pernah terpicu olehnya dan `/compact` gagal dengan kesalahan yang sama.

2391 2423 

2392Gateway [Claude apps](https://code.claude.com/docs/id/claude-apps-gateway-config.md#upstream-error-messages) melaporkan kondisi ini sebagai `capability_rejected: prompt_too_long` ketika upstream cloud menolak permintaan dalam bentuk kesalahan penyedia sendiri. Claude Code memperlakukan token yang sama dengan `Prompt is too long`. Sebelum v2.1.228, Claude Code tidak mengenali token, jadi auto-compact tidak dipicu.2424[Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway-config.md#upstream-error-messages) melaporkan kondisi ini sebagai `capability_rejected: prompt_too_long` ketika upstream cloud menolak permintaan dalam bentuk kesalahan milik penyedia itu sendiri. Claude Code memperlakukan token tersebut sama dengan `Prompt is too long`. Sebelum v2.1.228, Claude Code tidak mengenali token tersebut, sehingga auto-compact tidak terpicu olehnya.

2393 2425 

2394Ketika compaction otomatis berjalan pada giliran ini dan gagal pada kesalahan yang mendasar, seperti model yang tidak tersedia atau kegagalan autentikasi, pesan menyebutkan kesalahan itu setelah pemisah:2426Ketika compaction otomatis berjalan pada giliran ini dan gagal karena kesalahan yang mendasarinya, seperti model yang tidak tersedia atau kegagalan autentikasi, pesan tersebut menyebutkan kesalahan itu setelah pemisah:

2395 2427 

2396```text theme={null}2428```text theme={null}

2397Prompt is too long · automatic compaction failed: <the underlying error>2429Prompt is too long · automatic compaction failed: <the underlying error>

2398```2430```

2399 2431 

2400Selesaikan kesalahan yang dinamai terlebih dahulu; `/compact` gagal pada kesalahan yang sama sampai Anda melakukannya. Sebelum v2.1.229, compaction otomatis yang gagal menampilkan `Prompt is too long` tanpa penyebabnya.2432Selesaikan kesalahan yang disebutkan terlebih dahulu; `/compact` akan gagal dengan kesalahan yang sama sampai Anda melakukannya. Sebelum v2.1.229, compaction otomatis yang gagal menampilkan `Prompt is too long` tanpa penyebabnya.

2401 2433 

2402Ketika compaction otomatis berjalan pada kesalahan ini, biasanya merangkum pertukaran tertua Anda dan menyimpan yang terbaru. Sebagai upaya terakhir, Claude Code merangkum secara berbeda:2434Ketika compaction otomatis berjalan karena kesalahan ini, biasanya compaction merangkum pertukaran terlama Anda dan mempertahankan yang terbaru. Sebagai upaya terakhir, Claude Code merangkum dengan cara berbeda:

2403 2435 

2404* Ketika tidak dapat merangkum seluruh pertukaran, Claude Code menyimpan prompt terbaru Anda kata demi kata dan merangkum semuanya sebelumnya.2436* Ketika tidak dapat merangkum satu pun pertukaran secara utuh, Claude Code mempertahankan prompt terbaru Anda kata demi kata dan merangkum semua yang ada sebelumnya.

2405* Dalam hal itu, ketika percakapan tidak berakhir dengan prompt Anda, Claude Code merangkum seluruh percakapan sebagai gantinya.2437* Dalam kasus tersebut, ketika percakapan tidak diakhiri dengan prompt Anda, Claude Code merangkum seluruh percakapan sebagai gantinya.

2406 2438 

2407Claude Code melewati pemulihan ini ketika konten yang akan dibawanya tidak menyimpan balasan model dan kurang dari sekitar 1.000 token teks Anda sendiri, seperti pengiriman ulang singkat setelah tempel berukuran besar. Jalankan `/clear` untuk memulai segar. Sebelum v2.1.269, compaction gagal setiap kali tidak dapat merangkum seluruh pertukaran, jadi sesi dalam keadaan itu mengalami kesalahan ini lagi pada setiap giliran.2439Claude Code melewati pemulihan ini ketika konten yang akan dibawanya tidak memuat balasan model dan memuat kurang dari sekitar 1.000 token teks Anda sendiri, seperti retry singkat yang dikirim setelah tempelan berukuran terlalu besar. Jalankan `/clear` untuk memulai dari awal. Sebelum v2.1.269, compaction gagal setiap kali tidak dapat merangkum satu pertukaran secara utuh, sehingga sesi dalam keadaan tersebut mengalami kesalahan ini lagi di setiap giliran.

2408 2440 

2409Percakapan pertukaran tunggal tidak memiliki giliran sebelumnya untuk dirangkum. Ketika compaction otomatis akan berjalan pada satu, Claude Code melewati upaya dan menjelaskan apa yang mengisi permintaan sebagai gantinya. Ketika API tidak melaporkan jumlah token dalam kesalahannya, pesan berbunyi:2441Percakapan dengan satu pertukaran tidak memiliki giliran sebelumnya untuk dirangkum. Ketika compaction otomatis seharusnya berjalan pada percakapan seperti itu, Claude Code melewati upaya tersebut dan menjelaskan apa yang mengisi permintaan. Ketika API tidak melaporkan jumlah token dalam kesalahannya, pesannya berbunyi:

2410 2442 

2411```text theme={null}2443```text theme={null}

2412Prompt is too long · this conversation is a single exchange and cannot be compacted — the request size comes mostly from system prompt, tool definitions, or attachments.2444Prompt is too long · this conversation is a single exchange and cannot be compacted — the request size comes mostly from system prompt, tool definitions, or attachments.

2413```2445```

2414 2446 

2415Ketika API melaporkan jumlah token dalam kesalahannya, Claude Code membandingkannya dengan estimasi sendiri tentang ukuran percakapan untuk mengetahui mana yang paling banyak dari permintaan: konten percakapan sendiri, atau system prompt, definisi tool, dan konten lampiran yang Claude Code kirim dengannya. Ketika konten percakapan sendiri paling banyak dari permintaan, pesan berbunyi:2447Ketika API melaporkan jumlah token dalam kesalahannya, Claude Code membandingkannya dengan perkiraannya sendiri tentang ukuran percakapan untuk menentukan mana yang merupakan sebagian besar permintaan: konten percakapan itu sendiri, atau system prompt, definisi tool, dan konten lampiran yang dikirim Claude Code bersamanya. Ketika konten percakapan itu sendiri merupakan sebagian besar permintaan, pesannya berbunyi:

2416 2448 

2417```text theme={null}2449```text theme={null}

2418Prompt is too long · the request is ~<request tokens> tokens (limit <limit>) and this conversation's own content is most of it. A single-exchange conversation cannot be compacted; start with less content (smaller files or pasted text).2450Prompt is too long · the request is ~<request tokens> tokens (limit <limit>) and this conversation's own content is most of it. A single-exchange conversation cannot be compacted; start with less content (smaller files or pasted text).

2419```2451```

2420 2452 

2421Ketika sebagian besar permintaan berada di luar percakapan, pesan berbunyi:2453Ketika sebagian besar permintaan berada di luar percakapan, pesannya berbunyi:

2422 2454 

2423```text theme={null}2455```text theme={null}

2424Prompt is too long · the request is ~<request tokens> tokens (limit <limit>) but this conversation is only ~<conversation tokens> tokens — the rest is system prompt, tool definitions, and attachment content. A single-exchange conversation cannot be compacted; reduce attached files/tools or start with less context.2456Prompt is too long · the request is ~<request tokens> tokens (limit <limit>) but this conversation is only ~<conversation tokens> tokens — the rest is system prompt, tool definitions, and attachment content. A single-exchange conversation cannot be compacted; reduce attached files/tools or start with less context.

2425```2457```

2426 2458 

2427Sebelum v2.1.162, Claude Code tetap mencoba compaction dan menampilkan `Prompt is too long` biasa ketika gagal.2459Sebelum v2.1.162, Claude Code tetap mencoba compaction dan menampilkan `Prompt is too long` saja ketika gagal.

2428 2460 

2429**Yang harus dilakukan:**2461**Yang harus dilakukan:**

2430 2462 

2431* Jalankan `/compact` untuk merangkum giliran sebelumnya dan membebaskan ruang, atau `/clear` untuk memulai segar. Jika `/compact` menjawab `Not enough messages to compact.`, percakapan adalah pertukaran tunggal tanpa apa pun sebelumnya untuk dirangkum, jadi ruang diambil oleh satu prompt itu dan apa yang Claude Code kirim dengan setiap permintaan: jalankan `/clear` dan kirim ulang dengan teks tempel lebih sedikit atau lampiran lebih kecil, atau kurangi definisi tool dan file memori menggunakan langkah-langkah di bawah2463* Jalankan `/compact` untuk merangkum giliran sebelumnya dan mengosongkan ruang, atau `/clear` untuk memulai dari awal. Jika `/compact` menjawab `Not enough messages to compact.`, percakapan tersebut adalah satu pertukaran tanpa apa pun sebelumnya untuk dirangkum, sehingga ruangnya terisi oleh satu prompt itu dan apa yang dikirim Claude Code bersama setiap permintaan: jalankan `/clear` dan kirim ulang dengan lebih sedikit teks yang ditempel atau lampiran yang lebih kecil, atau kurangi definisi tool dan file memori menggunakan langkah-langkah di bawah ini

2432* Jalankan `/context` untuk melihat rincian apa yang mengonsumsi window: system prompt, tool, file memori, dan pesan2464* Jalankan `/context` untuk melihat rincian apa yang menghabiskan window: system prompt, tool, file memori, dan pesan

2433* Nonaktifkan server MCP yang tidak Anda gunakan dengan `/mcp disable <name>` untuk menghapus definisi tool mereka dari konteks2465* Nonaktifkan server MCP yang tidak Anda gunakan dengan `/mcp disable <name>` untuk menghapus definisi tool-nya dari konteks

2434* Pangkas file memori `CLAUDE.md` besar, atau pindahkan instruksi ke [aturan bersifat jalur](https://code.claude.com/docs/id/memory.md#path-specific-rules) yang dimuat hanya ketika relevan2466* Pangkas file memori `CLAUDE.md` yang besar, atau pindahkan instruksi ke [aturan berbatas path](https://code.claude.com/docs/id/memory.md#path-specific-rules) yang hanya dimuat saat relevan

2435* Auto-compact aktif secara default dan biasanya mencegah kesalahan ini. Jika Anda mematikannya di `/config` atau dengan [`DISABLE_AUTO_COMPACT`](https://code.claude.com/docs/id/env-vars), aktifkan kembali. Jika Anda tetap mematikannya, jalankan `/compact` sendiri sebelum window penuh.2467* Auto-compact aktif secara default dan biasanya mencegah kesalahan ini. Jika Anda mematikannya di `/config` atau dengan [`DISABLE_AUTO_COMPACT`](https://code.claude.com/docs/id/env-vars), aktifkan kembali. Jika Anda tetap mematikannya, jalankan `/compact` sendiri sebelum window penuh.

2436* Jika error muncul di sekitar 200K token pada model yang menerima lebih dari itu, salah satu penyebabnya adalah ID model yang tidak dikenali Claude Code. Claude Code mengasumsikan window 200K untuk ID seperti itu, jadi agar tetap dapat bekerja melewati titik tersebut, [berikan context window model yang sebenarnya](https://code.claude.com/docs/id/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id).2468* Jika kesalahan muncul di sekitar 200K token pada model yang menerima lebih banyak, salah satu penyebabnya adalah ID model yang tidak dikenali Claude Code. Claude Code mengasumsikan window 200K untuk ID seperti itu, jadi untuk terus bekerja melewati titik tersebut, [berikan context window model yang sebenarnya](https://code.claude.com/docs/id/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id).

2437 * Jika Anda menggunakan [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/id/env-vars) kustom dan error dimulai dengan `Prompt is too long · automatic compaction failed`, [atur context window model](https://code.claude.com/docs/id/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id) atau [perbarui](https://code.claude.com/docs/id/setup.md#update-claude-code) ke v2.1.299 atau yang lebih baru. Sebelum v2.1.299, Claude Code mengakhiri giliran dengan pesan tersebut di sekitar window 200K yang diasumsikan alih-alih mengirim permintaan.2469 * Jika Anda menggunakan [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/id/env-vars) kustom dan kesalahan diawali dengan `Prompt is too long · automatic compaction failed`, [atur context window model](https://code.claude.com/docs/id/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id) atau [perbarui](https://code.claude.com/docs/id/setup.md#update-claude-code) ke v2.1.299 atau yang lebih baru. Sebelum v2.1.299, Claude Code mengakhiri giliran dengan pesan tersebut di sekitar window 200K yang diasumsikan alih-alih mengirim permintaan.

2438* Jika kesalahan muncul tepat setelah Anda menghentikan Claude saat sedang melakukan compaction percakapan, percakapan Anda tidak berubah dan masih cukup besar sehingga perlu di-compact. Jalankan `/compact` dan kirim pesan Anda lagi. Agar kesalahan tidak terulang, [perbarui Claude Code](https://code.claude.com/docs/id/setup.md#update-claude-code) ke v2.1.304 atau lebih baru. Sebelum v2.1.304, menghentikan pada saat itu dapat mengakhiri giliran dengan kesalahan ini.2470* Jika kesalahan muncul tepat setelah Anda menghentikan Claude saat sedang melakukan compaction pada percakapan, percakapan Anda tidak berubah dan masih cukup besar sehingga perlu compaction. Jalankan `/compact` dan kirim pesan Anda lagi. Agar kesalahan tidak terulang, [perbarui Claude Code](https://code.claude.com/docs/id/setup.md#update-claude-code) ke v2.1.304 atau yang lebih baru. Sebelum v2.1.304, menghentikan pada saat tersebut dapat mengakhiri giliran dengan kesalahan ini.

2439* Pada v2.1.305, dengan banyak tool MCP dan koneksi langsung ke Anthropic API, error ini dapat menyembunyikan error 400 atau 422 yang tidak terkait dari API. [Perbarui Claude Code](https://code.claude.com/docs/id/setup.md#update-claude-code) ke v2.1.306 atau yang lebih baru untuk melihat error aslinya.2471* Pada v2.1.305, dengan banyak tool MCP dan koneksi langsung ke Anthropic API, kesalahan ini dapat menyembunyikan kesalahan 400 atau 422 yang tidak terkait dari API. [Perbarui Claude Code](https://code.claude.com/docs/id/setup.md#update-claude-code) ke v2.1.306 atau yang lebih baru untuk melihat kesalahan aslinya.

2440 2472 

2441Lihat [Jelajahi context window](https://code.claude.com/docs/id/context-window.md) untuk tampilan interaktif tentang bagaimana konteks terisi.2473Lihat [Jelajahi context window](https://code.claude.com/docs/id/context-window.md) untuk tampilan interaktif tentang bagaimana konteks terisi.

2442 2474 

2443### Konteks melebihi batas token2475### Context exceeds the token limit

2444 2476 

2445`/context` menampilkan peringatan ini di bagian atas outputnya ketika percakapan telah melampaui context window model. Permintaan gagal dengan [`Prompt is too long`](#prompt-is-too-long) sampai Anda membebaskan ruang. Sesi interaktif menampilkan kesalahan itu sebagai baris `Context limit reached`.2477`/context` menampilkan peringatan ini di bagian atas output-nya ketika percakapan telah tumbuh melewati context window model:

2446 2478 

2447```text theme={null}2479```text theme={null}

2448Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.2480Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.

2449```2481```

2450 2482 

2451Ketika batas yang Anda lampaui adalah window compaction, seperti batas 200K pada model konteks 1M, peringatan berbunyi berbeda. Window compaction dapat berada di bawah context window model, jadi permintaan yang melewatinya masih dapat berhasil.2483Setelah peringatan `Context exceeds`, Anda tidak perlu menjalankan kedua perintah tersebut selama [auto-compact](https://code.claude.com/docs/id/settings-reference.md#autocompactenabled) aktif, yang merupakan default:

2484 

2485* **Auto-compact aktif**: kirim pesan Anda berikutnya. Jika masih gagal dengan [`Prompt is too long`](#prompt-is-too-long), lihat entri tersebut.

2486* **Auto-compact mati**: di dalam sesi, jalankan `/compact` jika peringatan menyebutkannya, atau `/clear` untuk memulai ulang. Sampai Anda menjalankan salah satunya, pesan gagal dengan `Context limit reached`, atau `Prompt is too long` dalam output `-p`.

2487 

2488Ketika batas yang Anda lampaui adalah window compaction, seperti batas 200K pada model konteks 1M, peringatannya berbunyi berbeda. Window compaction dapat berada di bawah context window model, sehingga permintaan yang melewatinya masih dapat berhasil.

2452 2489 

2453```text theme={null}2490```text theme={null}

2454Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.2491Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.

2455```2492```

2456 2493 

2457Kedua bentuk menyebutkan `/clear` bukan `/compact` ketika Anda telah menetapkan [`DISABLE_COMPACT`](https://code.claude.com/docs/id/env-vars).2494Kedua bentuk menyebut `/clear` alih-alih `/compact` ketika Anda telah mengatur [`DISABLE_COMPACT`](https://code.claude.com/docs/id/env-vars).

2458 2495 

2459**Yang harus dilakukan:**2496**Yang harus dilakukan:**

2460 2497 

2461* Dalam percakapan multi-giliran, jalankan `/compact` untuk merangkum giliran sebelumnya dan membebaskan ruang. Untuk memulai segar sebagai gantinya, jalankan `/clear`2498* **Setelah peringatan window compaction**: dalam percakapan multi-giliran, jalankan `/compact` untuk merangkum giliran sebelumnya dan mengosongkan ruang. Untuk memulai dari awal, jalankan `/clear`.

2462* Untuk cara lebih banyak mengurangi penggunaan, lihat [Prompt terlalu panjang](#prompt-is-too-long)2499* Untuk cara lain mengurangi penggunaan, lihat [Prompt is too long](#prompt-is-too-long)

2463 2500 

2464Sebelum v2.1.216, `/context` menampilkan penggunaan di atas 100% tanpa baris peringatan yang menjelaskan apa artinya atau cara pulih.2501Sebelum v2.1.216, `/context` menampilkan penggunaan di atas 100% tanpa baris peringatan yang menjelaskan artinya atau cara memulihkannya.

2465 2502 

2466### Permintaan terlalu besar2503### Request too large

2467 2504 

2468Badan permintaan mentah melebihi batas 32MB API sebelum tokenisasi, biasanya karena konten tempel besar, hasil tool, atau lampiran. Batas ini terpisah dari [context window](#prompt-is-too-long).2505Body permintaan mentah melampaui batas 32MB API sebelum tokenisasi, biasanya karena konten tempelan, hasil tool, atau lampiran yang besar. Batas ini terpisah dari [context window](#prompt-is-too-long).

2469 2506 

2470```text theme={null}2507```text theme={null}

2471Request too large (max 32MB). Accumulated images and attachments in the conversation pushed the request over the limit. Run /compact, or double press esc to go back and remove attachments.2508Request too large (max 32MB). Accumulated images and attachments in the conversation pushed the request over the limit. Run /compact, or double press esc to go back and remove attachments.

2472```2509```

2473 2510 

2474Ketika permintaan langsung ke Claude API dan API sendiri menolaknya, Claude Code mengukur percakapan dan merumuskan pesan berdasarkan apakah pemulihan dapat bekerja. Melalui proxy, gateway, atau penyedia cloud Anda mendapatkan pesan umum. Bentuk yang diukur:2511Ketika permintaan langsung dikirim ke Claude API dan API itu sendiri menolaknya, Claude Code mengukur percakapan dan menyusun pesan berdasarkan apakah pemulihan dapat berhasil. Melalui proxy, gateway, atau penyedia cloud, Anda mendapatkan pesan umum. Bentuk-bentuk yang terukur:

2475 2512 

2476* `Request too large (max 32MB; 20.1MB of about 33.4MB is images or documents).`: gambar atau dokumen mendorong permintaan melampaui batas. Claude Code mencoba ulang dengan mereka dihapus.2513* `Request too large (max 32MB; 20.1MB of about 33.4MB is images or documents).`: gambar atau dokumen mendorong permintaan melewati batas. Claude Code mencoba ulang dengan menghapusnya.

2477* `Request too large for the API's 32MB request limit`: pesan saja sudah melampaui batas, jadi pesan mengatakan `compacting cannot make it fit` dan Claude Code tidak mencoba ulang. Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), pesan memberi tahu Anda untuk mengurangi input atau memulai sesi baru sebagai gantinya.2514* `Request too large for the API's 32MB request limit`: pesan-pesannya saja sudah melampaui batas, sehingga pesan tersebut menyatakan `compacting cannot make it fit` dan Claude Code tidak mencoba ulang. Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), pesan tersebut meminta Anda mengurangi input atau memulai sesi baru.

2478 2515 

2479Sebelum v2.1.212, percakapan dengan cukup banyak gambar terakumulasi gagal pada setiap giliran dengan `Request too large (max 32MB). Double press esc to go back and try with a smaller file.` Sebelum v2.1.229, Claude Code menampilkan saran lampiran untuk setiap penolakan, bahkan ketika compaction tidak dapat membantu.2516Sebelum v2.1.212, percakapan dengan cukup banyak gambar yang terakumulasi gagal di setiap giliran dengan `Request too large (max 32MB). Double press esc to go back and try with a smaller file.` Sebelum v2.1.229, Claude Code menampilkan saran lampiran untuk setiap penolakan, bahkan ketika compaction tidak dapat membantu.

2480 2517 

2481**Yang harus dilakukan:**2518**Yang harus dilakukan:**

2482 2519 

2483* Jika pesan mengatakan `compacting cannot make it fit`, tekan Esc dua kali untuk mundur melampaui giliran yang menambahkan konten besar, atau jalankan `/clear` untuk memulai segar2520* Jika pesan menyatakan `compacting cannot make it fit`, tekan Esc dua kali untuk mundur melewati giliran yang menambahkan konten besar tersebut, atau jalankan `/clear` untuk memulai dari awal

2484* Jika tidak, jalankan `/compact`, yang menghapus gambar dan lampiran terakumulasi2521* Jika tidak, jalankan `/compact`, yang membuang gambar dan lampiran yang terakumulasi

2485* Referensikan file besar berdasarkan jalur bukan menempel konten mereka, jadi Claude dapat membacanya dalam potongan2522* Rujuk file besar berdasarkan path alih-alih menempelkan isinya, sehingga Claude dapat membacanya per bagian

2486* Untuk gambar, lihat [Gambar terlalu besar](#image-was-too-large) di bawah2523* Untuk gambar, lihat [Image was too large](#image-was-too-large) di bawah

2487 2524 

2488### Gambar terlalu besar2525### Image was too large

2489 2526 

2490Gambar yang ditempel atau dilampirkan melebihi batas ukuran atau dimensi API.2527Gambar yang ditempel atau dilampirkan melampaui batas ukuran atau dimensi API.

2491 2528 

2492```text theme={null}2529```text theme={null}

2493Image was too large. Double press esc to go back and try again with a smaller image.2530Image was too large. Double press esc to go back and try again with a smaller image.


2496An image in the conversation exceeds the dimension limit for many-image requests (3000px). Run /compact to remove old images from context, or start a new session.2533An image in the conversation exceeds the dimension limit for many-image requests (3000px). Run /compact to remove old images from context, or start a new session.

2497```2534```

2498 2535 

2499Baris `could not be processed and was removed` berarti API menolak sebuah gambar dalam percakapan, seperti gambar yang melewati batas ukuran atau dimensi.2536Baris `could not be processed and was removed` berarti API menolak sebuah gambar dalam percakapan, seperti gambar yang melampaui batas ukuran atau dimensi.

2500 2537 

2501Jika salah satu kesalahan ini terus muncul kembali, perbarui Claude Code. Pada versi lama, kesalahan gambar dapat berulang karena alasan seperti berikut:2538Jika salah satu kesalahan ini terus muncul kembali, perbarui Claude Code. Pada versi lama, kesalahan gambar dapat berulang karena alasan seperti berikut:

2502 2539 

2503* Sebelum v2.1.299, dalam percakapan panjang dengan banyak gambar, Claude Code dapat menghapus gambar yang terakhir Anda lampirkan alih-alih gambar yang melewati batas. Baris `was removed` kemudian berulang di setiap giliran, dan Claude tidak melihat gambar baru Anda.2540* Sebelum v2.1.299, dalam percakapan panjang dengan banyak gambar, Claude Code dapat menghapus gambar yang terakhir Anda lampirkan alih-alih gambar yang melampaui batas. Baris `was removed` kemudian berulang di setiap giliran, dan Claude tidak melihat gambar baru Anda.

2504* Sebelum v2.1.299, di VS Code, aplikasi Desktop, dan Agent SDK, gambar yang Anda lampirkan saat Claude sedang bekerja tidak mendapatkan pengubahan ukuran yang didapatkan gambar lampiran lainnya. Gambar tersebut mencapai API dalam ukuran aslinya, yang menyebabkan kesalahan gambar berulang dalam percakapan panjang.2541* Sebelum v2.1.299, di VS Code, aplikasi Desktop, dan Agent SDK, gambar yang Anda lampirkan saat Claude sedang bekerja tidak mendapatkan pengubahan ukuran yang didapatkan gambar terlampir lainnya. Gambar tersebut mencapai API dalam ukuran aslinya, yang menyebabkan kesalahan gambar berulang dalam percakapan panjang.

2505* Sebelum v2.1.166, gambar yang ditempel dapat tetap berada dalam percakapan, dan kesalahan yang sama kemudian berulang di setiap pesan berikutnya2542* Sebelum v2.1.166, gambar yang ditempel dapat tetap berada dalam percakapan, dan kesalahan yang sama kemudian berulang di setiap pesan berikutnya

2506 2543 

2507**Yang harus dilakukan:**2544**Yang harus dilakukan:**

2508 2545 

2509* Ubah ukuran gambar sebelum menempel. API menerima gambar hingga 8000 piksel di tepi terpanjang untuk satu gambar, atau 3000 piksel ketika lebih dari 20 gambar berada dalam konteks.2546* Ubah ukuran gambar sebelum menempelkannya. API menerima gambar hingga 8000 piksel pada sisi terpanjang untuk satu gambar, atau 3000 piksel ketika lebih dari 20 gambar berada dalam konteks.

2510* Ambil tangkapan layar lebih ketat dari wilayah yang relevan bukan layar penuh2547* Ambil tangkapan layar yang lebih sempit dari area yang relevan alih-alih layar penuh

2511* Untuk pesan `dimension limit for many-image requests`, jalankan `/compact` di prompt Claude Code jika pesan menyebutkannya, atau mulai sesi baru dengan lebih sedikit gambar2548* Untuk pesan `dimension limit for many-image requests`, jalankan `/compact` di prompt Claude Code jika pesan menyebutkannya, atau mulai sesi baru dengan lebih sedikit gambar

2512 2549 

2513Pesan `dimension limit for many-image requests` menampilkan batas piksel yang disebutkan dalam kesalahan API.2550Pesan `dimension limit for many-image requests` menampilkan batas piksel yang disebutkan dalam kesalahan API.

2514 2551 

2515### Tidak dapat mengubah ukuran gambar2552### Unable to resize image

2516 2553 

2517Claude Code tidak dapat memperkecil gambar yang dilampirkan sebelum mengirimnya ke API.2554Claude Code tidak dapat memperkecil gambar terlampir sebelum mengirimkannya ke API.

2518 2555 

2519```text theme={null}2556```text theme={null}

2520Unable to resize image — image processing is unavailable and dimensions could not be read from the file header. Please convert the image to PNG, JPEG, GIF, or WebP.2557Unable to resize image — image processing is unavailable and dimensions could not be read from the file header. Please convert the image to PNG, JPEG, GIF, or WebP.


2526Unable to resize image — its pixels could not be decoded (the file may be damaged, or use an encoding Claude Code cannot read), and it is over the … API limit (… raw, … base64), so it cannot be sent. Re-save it as a PNG or JPEG and try again.2563Unable to resize image — its pixels could not be decoded (the file may be damaged, or use an encoding Claude Code cannot read), and it is over the … API limit (… raw, … base64), so it cannot be sent. Re-save it as a PNG or JPEG and try again.

2527```2564```

2528 2565 

2529Claude Code biasanya mengubah ukuran gambar besar secara otomatis. Kesalahan ini berarti gambar tidak dapat didekode atau diubah ukurannya agar sesuai dengan batas API.2566Claude Code biasanya mengubah ukuran gambar besar secara otomatis. Kesalahan-kesalahan ini berarti gambar tidak dapat didekode atau diubah ukurannya agar sesuai dengan batas API.

2530 2567 

2531**Yang harus dilakukan:**2568**Yang harus dilakukan:**

2532 2569 

2533* Jika pesan meminta Anda mengonversi gambar, konversikan ke PNG, JPEG, GIF, atau WebP dan lampirkan lagi. Claude Code dapat memverifikasi dimensi untuk format ini dari header file, tanpa mendekode gambar.2570* Jika pesan meminta Anda mengonversi gambar, konversikan ke PNG, JPEG, GIF, atau WebP lalu lampirkan lagi. Claude Code dapat memverifikasi dimensi untuk format-format ini dari header file, tanpa mendekode gambar.

2534* Jika pesan melaporkan batas dimensi atau ukuran, ubah ukuran atau kompres ulang gambar di bawah batas itu sebelum melampirkan.2571* Jika pesan melaporkan batas dimensi atau ukuran, ubah ukuran atau kompres ulang gambar di bawah batas tersebut sebelum melampirkannya.

2535* Jika pesan menyebutkan penyebab, seperti JPEG CMYK, WebP animasi, atau file yang mungkin rusak, simpan ulang gambar dalam format yang pesan sarankan dan lampirkan lagi.2572* Jika pesan menyebutkan penyebab, seperti CMYK JPEG, WebP animasi, atau file yang mungkin rusak, simpan ulang gambar dalam format yang disarankan pesan lalu lampirkan lagi.

2536 2573 

2537### Request rejected as unprocessable by the model2574### Request rejected as unprocessable by the model

2538 2575 

2539API menolak permintaan sebagai permintaan yang tidak dapat diproses oleh model. Pesan tersebut berasal dari API itu sendiri.2576API menolak permintaan karena model tidak dapat memprosesnya. Pesan tersebut berasal dari API sendiri.

2540 2577 

2541```text theme={null}2578```text theme={null}

2542API Error: 400 Request rejected as unprocessable by the model (too many or oversized images, or unsupported parameters)2579API Error: 400 Request rejected as unprocessable by the model (too many or oversized images, or unsupported parameters)

2543```2580```

2544 2581 

2545Claude Code dapat menghapus gambar dan dokumen tertua dari permintaan yang ditolak lalu mengirimkannya lagi. Sebelum v2.1.290, Claude Code tidak menghapus gambar pada penolakan ini, sehingga sesi panjang yang mengakumulasi ratusan gambar dapat gagal dengan kesalahan ini di setiap giliran.2582Claude Code dapat menghapus gambar dan dokumen terlama dari permintaan yang ditolak lalu mengirimkannya lagi. Sebelum v2.1.290, Claude Code tidak menghapus gambar pada penolakan ini, sehingga sesi panjang yang mengakumulasi ratusan gambar dapat gagal dengan kesalahan ini di setiap giliran.

2546 2583 

2547**Yang harus dilakukan:**2584**Yang harus dilakukan:**

2548 2585 

2549* Jika pesan terus muncul dalam percakapan yang berisi gambar atau dokumen, hapus sendiri gambar atau dokumen tersebut. Tekan Esc dua kali untuk mundur melewati giliran yang menambahkannya, atau jalankan `/clear` untuk memulai dari awal.2586* Jika pesan terus muncul dalam percakapan dengan gambar atau dokumen, hapus sendiri gambar atau dokumen tersebut. Tekan Esc dua kali untuk mundur melewati giliran yang menambahkannya, atau jalankan `/clear` untuk memulai dari awal.

2550 2587 

2551### Kesalahan PDF2588### Kesalahan PDF

2552 2589 

2553PDF yang Anda lampirkan tidak dapat diproses. Pesan ditampilkan di sini dalam bentuk non-interaktif mereka; dalam sesi interaktif mereka malah meminta Anda untuk menekan esc dua kali dan coba lagi.2590PDF yang Anda lampirkan tidak dapat diproses. Pesan-pesan di sini ditampilkan dalam bentuk non-interaktifnya; dalam sesi interaktif, pesan-pesan tersebut meminta Anda menekan esc dua kali dan mencoba lagi.

2554 2591 

2555```text theme={null}2592```text theme={null}

2556PDF too large (max 100 pages, 20MB). Try reading the file a different way (e.g., extract text with pdftotext).2593PDF too large (max 100 pages, 20MB). Try reading the file a different way (e.g., extract text with pdftotext).


2560 2597 

2561**Yang harus dilakukan:**2598**Yang harus dilakukan:**

2562 2599 

2563* Untuk PDF berukuran besar, minta Claude membaca rentang halaman dengan tool Read bukan melampirkan seluruh file, atau ekstrak teks dengan alat seperti `pdftotext` dan referensikan file output berdasarkan jalur2600* Untuk PDF yang terlalu besar, minta Claude membaca rentang halaman dengan tool Read alih-alih melampirkan seluruh file, atau ekstrak teks dengan alat seperti `pdftotext` dan rujuk file output berdasarkan path

2564* Untuk PDF yang dilindungi atau tidak valid, hapus kata sandi atau ekspor ulang file dari aplikasi sumbernya, lalu coba lagi2601* Untuk PDF yang dilindungi atau tidak valid, hapus kata sandinya atau ekspor ulang file dari aplikasi sumbernya, lalu coba lagi

2565 2602 

2566Ketika Claude membaca rentang halaman dari PDF dengan tool Read, pembacaan dapat gagal dengan pesan berbeda:2603Ketika Claude membaca rentang halaman dari PDF dengan tool Read, pembacaan dapat gagal dengan pesan yang berbeda:

2567 2604 

2568```text theme={null}2605```text theme={null}

2569pdftoppm is not installed. Install poppler-utils (e.g. `brew install poppler` or `apt-get install poppler-utils`) to enable PDF page rendering.2606pdftoppm is not installed. Install poppler-utils (e.g. `brew install poppler` or `apt-get install poppler-utils`) to enable PDF page rendering.

2570```2607```

2571 2608 

2572Pembacaan rentang halaman merender halaman dengan `pdftoppm`. Instal poppler-utils dengan perintah yang pesan berikan, atau pada platform lain build poppler yang menempatkan `pdftoppm` di `PATH` Anda. Lihat [Perilaku tool Read](https://code.claude.com/docs/id/tools-reference.md#read-tool-behavior) untuk PDF mana yang dibaca berdasarkan rentang halaman.2609Pembacaan rentang halaman merender halaman dengan `pdftoppm`. Instal poppler-utils dengan perintah yang diberikan pesan, atau pada platform lain, build poppler yang menempatkan `pdftoppm` di `PATH` Anda. Lihat [Perilaku tool Read](https://code.claude.com/docs/id/tools-reference.md#read-tool-behavior) untuk mengetahui PDF mana yang dibaca berdasarkan rentang halaman.

2573 2610 

2574### Input tambahan tidak diizinkan2611### Extra inputs are not permitted

2575 2612 

2576Endpoint yang menerima permintaan menolak salah satu field permintaan sebagai input yang tidak diterimanya, dan pesan endpoint tersebut menyebutkan field itu.2613Endpoint yang menerima permintaan menolak salah satu field permintaan sebagai input yang tidak diterimanya, dan pesan endpoint tersebut menyebutkan field itu.

2577 2614 


2579API Error: 400 ... context_management: Extra inputs are not permitted2616API Error: 400 ... context_management: Extra inputs are not permitted

2580```2617```

2581 2618 

2582Claude Code mengirim field khusus beta seperti `context_management` dan `defer_loading` milik tool search bersama header `anthropic-beta` yang mengaktifkannya. Ketika gateway meneruskan body tetapi membuang header tersebut, API melihat field yang tidak dikenalinya. Ketika gateway meneruskan body berformat Anthropic ke upstream dengan skema berbeda, upstream tersebut menolak field seperti itu. [Pasangan header beta dan field body](https://code.claude.com/docs/id/llm-gateway-protocol.md#beta-header-and-body-field-pairs) membahas kedua kasus tersebut.2619Claude Code mengirim field khusus beta seperti `context_management` dan `defer_loading` milik tool search bersama header `anthropic-beta` yang mengaktifkannya. Ketika gateway meneruskan body tetapi membuang header-nya, API melihat field yang tidak dikenalinya. Ketika gateway meneruskan body berformat Anthropic ke upstream dengan skema berbeda, upstream tersebut menolak field seperti itu. [Pasangan header beta dan field body](https://code.claude.com/docs/id/llm-gateway-protocol.md#beta-header-and-body-field-pairs) membahas kedua kasus tersebut.

2583 2620 

2584**Yang harus dilakukan:**2621**Yang harus dilakukan:**

2585 2622 

2586* Jika pesan berisi `context_management: Extra inputs are not permitted`, [perbarui Claude Code](https://code.claude.com/docs/id/setup.md#update-claude-code) ke v2.1.304 atau yang lebih baru. Setelah Anda memperbarui, Claude Code menanggapi penolakan ini dengan mengirim permintaan sekali lagi tanpa field tersebut. Sebelum v2.1.304, Claude Code tidak mencoba ulang penolakan ini.2623* Jika pesan berisi `context_management: Extra inputs are not permitted`, [perbarui Claude Code](https://code.claude.com/docs/id/setup.md#update-claude-code) ke v2.1.304 atau yang lebih baru. Setelah Anda memperbarui, Claude Code menanggapi penolakan ini dengan mengirim permintaan sekali lagi tanpa field tersebut. Sebelum v2.1.304, Claude Code tidak mencoba ulang penolakan ini.

2587* Jika pesan menyebut `defer_loading` atau `tool_reference`, [perbarui Claude Code](https://code.claude.com/docs/id/setup.md#update-claude-code) ke v2.1.305 atau yang lebih baru. Claude Code kemudian menanggapi penolakan ini dengan [mengirim permintaan sekali lagi](https://code.claude.com/docs/id/llm-gateway-protocol.md#retry-without-tool-search) tanpa field tool search.2624* Jika pesan menyebutkan `defer_loading` atau `tool_reference`, [perbarui Claude Code](https://code.claude.com/docs/id/setup.md#update-claude-code) ke v2.1.305 atau yang lebih baru. Claude Code kemudian menanggapi penolakan ini dengan [mengirim permintaan sekali lagi](https://code.claude.com/docs/id/llm-gateway-protocol.md#retry-without-tool-search) tanpa field tool search.

2588* Jika gateway Anda membuang header, konfigurasikan gateway untuk meneruskan header `anthropic-beta`. Lihat [feature pass-through](https://code.claude.com/docs/id/llm-gateway-protocol.md#feature-pass-through) untuk apa yang harus diteruskan gateway.2625* Jika gateway Anda membuang header, konfigurasikan agar meneruskan header `anthropic-beta`. Lihat [feature pass-through](https://code.claude.com/docs/id/llm-gateway-protocol.md#feature-pass-through) untuk mengetahui apa yang harus diteruskan gateway.

2589* Sebagai fallback, atur [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](https://code.claude.com/docs/id/env-vars) sebelum meluncurkan. [Nonaktifkan kemampuan pra-rilis](https://code.claude.com/docs/id/llm-gateway-protocol.md#disable-pre-release-capabilities) mencakup cakupan yang tepat.2626* Sebagai fallback, atur [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](https://code.claude.com/docs/id/env-vars) sebelum meluncurkan. [Nonaktifkan kapabilitas pra-rilis](https://code.claude.com/docs/id/llm-gateway-protocol.md#disable-pre-release-capabilities) membahas cakupan persisnya.

2590 2627 

2591Sebelum v2.1.302, kesalahan ini juga dapat menyebut field `diagnostics` tanpa melibatkan gateway. Kesalahan ini muncul ketika sesi yang sudah menggunakan Anthropic API berpindah ke Amazon Bedrock atau Google Cloud's Agent Platform tanpa restart. Misalnya, sesi yang Anda biarkan terbuka berpindah ke Bedrock ketika Anda menjalankan [`/setup-bedrock`](https://code.claude.com/docs/id/commands) di jendela Claude Code lain. Pada versi tersebut, jalankan `/clear` di sesi itu atau restart sesi tersebut.2628Sebelum v2.1.302, kesalahan ini juga dapat menyebutkan field `diagnostics` tanpa melibatkan gateway. Kesalahan ini muncul ketika sesi yang sudah menggunakan Anthropic API berpindah ke Amazon Bedrock atau Agent Platform dari Google Cloud tanpa restart. Misalnya, sesi yang Anda biarkan terbuka berpindah ke Bedrock ketika Anda menjalankan [`/setup-bedrock`](https://code.claude.com/docs/id/commands) di jendela Claude Code lain. Pada versi-versi tersebut, jalankan `/clear` di sesi itu atau restart sesinya.

2592 2629 

2593### Skema input tool tidak valid2630### Tool input schema is invalid

2594 2631 

2595Tool dalam permintaan mendeklarasikan `input_schema` yang gagal validasi JSON Schema API, jadi API menolak seluruh permintaan. Angka setelah `tools.` adalah posisi tool yang gagal dalam daftar tool permintaan, bukan nama yang dapat Anda cari.2632Sebuah tool dalam permintaan mendeklarasikan `input_schema` yang gagal dalam validasi JSON Schema API, sehingga API menolak seluruh permintaan. Angka setelah `tools.` adalah posisi tool yang gagal dalam daftar tool permintaan, bukan nama yang dapat Anda cari.

2596 2633 

2597```text theme={null}2634```text theme={null}

2598API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid2635API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid

2599API Error: 400 ... tools.N.custom.input_schema.properties: Property keys should match pattern '^[a-zA-Z0-9_.-]{1,64}$'2636API Error: 400 ... tools.N.custom.input_schema.properties: Property keys should match pattern '^[a-zA-Z0-9_.-]{1,64}$'

2600```2637```

2601 2638 

2602Bentuk pertama berarti skema bukan JSON Schema draft 2020-12 yang valid. Bentuk kedua berarti nama properti tingkat atas tidak cocok dengan pola yang pesan kutip.2639Bentuk pertama berarti skema tersebut bukan JSON Schema draft 2020-12 yang valid. Bentuk kedua berarti nama properti tingkat atas tidak cocok dengan pola yang dikutip pesan.

2603 2640 

2604Claude Code [mengecualikan tool MCP yang skema input-nya akan gagal validasi ini](https://code.claude.com/docs/id/mcp.md#tools-with-invalid-input-schemas) ketika memuat tool server, jadi permintaan biasanya tidak pernah menyertakan satu.2641Claude Code [mengecualikan tool MCP yang skema input-nya akan gagal dalam validasi ini](https://code.claude.com/docs/id/mcp.md#tools-with-invalid-input-schemas) saat memuat tool server, sehingga permintaan biasanya tidak pernah menyertakannya.

2605 2642 

2606Pada [deployment di mana pengambilan flag dimatikan](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), atau pada mesin yang flag-nya tidak pernah tiba, Claude Code mencatat dalam log server tool mana yang akan ditolak tetapi tetap mengirimnya, jadi kesalahan ini masih dapat terjadi.2643Pada [deployment di mana pengambilan flag dimatikan](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), atau pada mesin yang flag-nya belum pernah diterima, Claude Code mencatat di log server tool mana yang akan ditolak tetapi tetap mengirimkannya, sehingga kesalahan ini masih dapat terjadi.

2607 2644 

2608Kesalahan juga dapat terjadi untuk tool yang skemanya mendeklarasikan dialek JSON Schema selain draft 2020-12 di `$schema`. Claude Code tidak memeriksa skema tersebut terhadap meta-skema JSON Schema, meskipun pemeriksaan nama properti tingkat atas masih berlaku.2645Kesalahan ini juga dapat terjadi untuk tool yang skemanya mendeklarasikan dialek JSON Schema selain draft 2020-12 di `$schema`. Claude Code tidak memeriksa skema tersebut terhadap meta-skema JSON Schema, meskipun pemeriksaan nama properti tingkat atas tetap berlaku.

2609 2646 

2610Sebelum v2.1.216, tidak ada deployment yang menjalankan pemeriksaan pengecualian.2647Sebelum v2.1.216, tidak ada deployment yang menjalankan pemeriksaan pengecualian.

2611 2648 

2612**Yang harus dilakukan:**2649**Yang harus dilakukan:**

2613 2650 

2614* Jika versi Claude Code Anda lebih lama dari v2.1.300, jalankan [`claude update`](https://code.claude.com/docs/id/setup#update-claude-code) di shell Anda. Sebelum v2.1.300, Claude Code tidak [mencoba ulang permintaan tanpa parameter tool yang ditolak](https://code.claude.com/docs/id/mcp.md#tools-whose-input-schema-the-api-refuses), sehingga kesalahan ini berulang di setiap permintaan yang menyertakan tool tersebut.2651* Jika versi Claude Code Anda lebih awal dari v2.1.300, jalankan [`claude update`](https://code.claude.com/docs/id/setup#update-claude-code) di shell Anda. Sebelum v2.1.300, Claude Code tidak [mencoba ulang permintaan tanpa parameter tool yang ditolak](https://code.claude.com/docs/id/mcp.md#tools-whose-input-schema-the-api-refuses), sehingga kesalahan ini berulang pada setiap permintaan yang menyertakan tool tersebut.

2615* Hapus atau [nonaktifkan](https://code.claude.com/docs/id/mcp.md#disable-a-server-without-removing-it) server MCP yang mendeklarasikan skema tidak valid. Kesalahan hanya menyebutkan tool berdasarkan posisi. Pada v2.1.216 atau lebih baru, periksa log setiap server untuk baris yang menyebutkan tool yang skema input-nya akan ditolak. Jika tidak ada log yang menyebutkan satu, nonaktifkan server satu per satu.2652* Hapus atau [nonaktifkan](https://code.claude.com/docs/id/mcp.md#disable-a-server-without-removing-it) server MCP yang mendeklarasikan skema tidak valid tersebut. Kesalahan hanya menyebutkan tool berdasarkan posisi. Pada v2.1.216 atau yang lebih baru, periksa log setiap server untuk menemukan baris yang menyebutkan tool yang skema input-nya akan ditolak. Jika tidak ada log yang menyebutkannya, nonaktifkan server satu per satu.

2616* Jika Anda memelihara server, perbaiki `input_schema` tool. Skema harus berupa JSON Schema yang valid, dan nama properti tingkat atas harus panjang 1 hingga 64 karakter dan hanya menggunakan huruf ASCII dan angka, `_`, `.`, dan `-`. Lihat [Tool dengan skema input tidak valid](https://code.claude.com/docs/id/mcp.md#tools-with-invalid-input-schemas).2653* Jika Anda memelihara server tersebut, perbaiki `input_schema` tool-nya. Skema harus berupa JSON Schema yang valid, dan nama properti tingkat atas harus sepanjang 1 hingga 64 karakter serta hanya menggunakan huruf dan angka ASCII, `_`, `.`, dan `-`. Lihat [Tool dengan skema input tidak valid](https://code.claude.com/docs/id/mcp.md#tools-with-invalid-input-schemas).

2617 2654 

2618### Nama tool MCP lebih dari 128 karakter2655### Nama tool MCP lebih dari 128 karakter

2619 2656 

2620Server MCP mencantumkan tool yang nama lengkapnya, seperti `mcp__<server>__<tool>`, lebih panjang dari 128 karakter yang diterima API. Claude Code [tidak menyertakan tool tersebut dalam tool yang dikirimnya ke Claude](https://code.claude.com/docs/id/mcp.md#tools-with-names-longer-than-128-characters), dan tool lain dari server tersebut tetap berfungsi. Dalam sesi yang Anda mulai dengan `claude --debug` dari shell Anda, Claude Code menulis pesan ini ke log debug di `~/.claude/debug/<session-id>.txt`:2657Sebuah server MCP mencantumkan tool yang nama lengkapnya, seperti `mcp__<server>__<tool>`, lebih panjang dari 128 karakter yang diterima API. Claude Code [tidak menyertakan tool tersebut dalam tool yang dikirimnya ke Claude](https://code.claude.com/docs/id/mcp.md#tools-with-names-longer-than-128-characters), dan tool lain dari server tersebut tetap berfungsi. Dalam sesi yang Anda mulai dengan `claude --debug` dari shell Anda, Claude Code menulis pesan ini ke log debug di `~/.claude/debug/<session-id>.txt`:

2621 2658 

2622```text theme={null}2659```text theme={null}

2623Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 1282660Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 128


2625 2662 

2626**Yang harus dilakukan:**2663**Yang harus dilakukan:**

2627 2664 

2628* Jika Anda memelihara server, perpendek nama tool tersebut.2665* Jika Anda memelihara server tersebut, perpendek nama tool-nya.

2629* Jika server ada di [konfigurasi MCP](https://code.claude.com/docs/id/mcp.md#mcp-installation-scopes) Anda, beri server tersebut nama yang lebih pendek di sana, seperti `db` sebagai pengganti `analytics-database`. Lalu perbarui apa pun yang merujuk ke server atau tool-nya dengan nama lama, seperti [aturan izin](https://code.claude.com/docs/id/permissions.md#mcp) dan [matcher hook](https://code.claude.com/docs/id/hooks.md#match-mcp-tools).2666* Jika server ada di [konfigurasi MCP](https://code.claude.com/docs/id/mcp.md#mcp-installation-scopes) Anda, beri nama yang lebih pendek di sana, seperti `db` sebagai pengganti `analytics-database`. Kemudian perbarui hal-hal yang merujuk ke server atau tool-nya dengan nama lama, seperti [aturan izin](https://code.claude.com/docs/id/permissions.md#mcp) dan [matcher hook](https://code.claude.com/docs/id/hooks.md#match-mcp-tools).

2630* Jika [plugin membundel server tersebut](https://code.claude.com/docs/id/mcp.md#plugin-provided-mcp-servers), nama lengkap tool juga menyertakan nama plugin. Minta pemelihara plugin untuk memperpendek nama server atau tool.2667* Jika sebuah [plugin menyertakan server tersebut](https://code.claude.com/docs/id/mcp.md#plugin-provided-mcp-servers), nama lengkap tool juga mencakup nama plugin. Minta pemelihara plugin untuk memperpendek nama server atau tool.

2631 2668 

2632Sebelum v2.1.292, Claude Code tetap mengirim tool tersebut, dan API menolak setiap permintaan yang menyertakannya dengan `API Error: 400 ... tools.N.custom.name: String should have at most 128 characters`.2669Sebelum v2.1.292, Claude Code tetap mengirim tool tersebut, dan API menolak setiap permintaan yang menyertakannya dengan `API Error: 400 ... tools.N.custom.name: String should have at most 128 characters`.

2633 2670 

2634### tool\_use.name lebih dari 200 karakter2671### tool\_use.name lebih dari 200 karakter

2635 2672 

2636Panggilan tool dalam riwayat percakapan membawa nama yang lebih panjang dari 200 karakter yang API terima dalam permintaan:2673Sebuah panggilan tool dalam riwayat percakapan membawa nama yang lebih panjang dari 200 karakter yang diterima API dalam sebuah permintaan:

2637 2674 

2638```text theme={null}2675```text theme={null}

2639API Error: 400 ... tool_use.name: String should have at most 200 characters2676API Error: 400 ... tool_use.name: String should have at most 200 characters

2640```2677```

2641 2678 

2642Claude Code memotong nama tersebut menjadi 200 karakter ketika respons tiba dan ketika memuat percakapan yang disimpan, jadi panggilan gagal dengan kesalahan tool [`No such tool available`](#no-such-tool-available) dan percakapan berlanjut tanpa kesalahan API ini.2679Claude Code memotong nama seperti itu menjadi 200 karakter ketika respons tiba dan ketika memuat percakapan tersimpan, sehingga panggilan tersebut gagal dengan kesalahan tool [`No such tool available`](#no-such-tool-available) dan percakapan berlanjut tanpa kesalahan API ini.

2643 2680 

2644**Yang harus dilakukan:**2681**Yang harus dilakukan:**

2645 2682 

2646* Jalankan `claude update`, lalu lanjutkan percakapan. Versi yang diperbarui memperbaiki nama yang terlalu panjang ketika memuat transkrip, jadi percakapan yang terjebak bekerja lagi.2683* Jalankan `claude update`, lalu lanjutkan percakapan. Versi yang diperbarui memperbaiki nama yang terlalu panjang saat memuat transkrip, sehingga percakapan yang macet dapat berfungsi kembali.

2647 2684 

2648Sebelum v2.1.281, nama yang terlalu panjang tetap berada dalam riwayat dan API menolak setiap permintaan yang mengirim ulang percakapan, termasuk `/compact` dan `--resume`, jadi kesalahan ini berulang dan percakapan terjebak.2685Sebelum v2.1.281, nama yang terlalu panjang tetap berada di riwayat dan API menolak setiap permintaan yang mengirim ulang percakapan, termasuk `/compact` dan `--resume`, sehingga kesalahan ini berulang dan percakapan macet.

2649 2686 

2650### Ada masalah dengan model yang dipilih2687### There's an issue with the selected model

2651 2688 

2652Nama model yang dikonfigurasi tidak dikenali atau akun Anda tidak memiliki akses ke model tersebut. Mulai dari v2.1.160 petunjuk trailing, ditampilkan di sini dalam bentuk interaktifnya, bervariasi menurut surface.2689Nama model yang dikonfigurasi tidak dikenali atau akun Anda tidak memiliki akses ke model tersebut. Sejak v2.1.160, petunjuk di akhir, yang ditampilkan di sini dalam bentuk interaktifnya, bervariasi menurut surface.

2653 2690 

2654```text theme={null}2691```text theme={null}

2655There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to pick a different model.2692There's an issue with the selected model (claude-...). It may not exist or you may not have access to it. Run /model to pick a different model.


2657 2694 

2658**Yang harus dilakukan:**2695**Yang harus dilakukan:**

2659 2696 

2660* **CLI Interaktif**: jalankan `/model` untuk memilih dari model yang tersedia untuk akun Anda.2697* **CLI interaktif**: jalankan `/model` untuk memilih dari model yang tersedia untuk akun Anda.

2661* **Mode non-interaktif (`-p`)**: teruskan `--model` dengan alias atau ID yang valid, atau atur [`ANTHROPIC_MODEL`](https://code.claude.com/docs/id/env-vars). Teks kesalahan menampilkan `Run --model` di surface ini.2698* **Mode non-interaktif (`-p`)**: berikan `--model` dengan alias atau ID yang valid, atau atur [`ANTHROPIC_MODEL`](https://code.claude.com/docs/id/env-vars). Teks kesalahan menampilkan `Run --model` pada surface ini.

2662* **Agent SDK**: teks kesalahan menghilangkan petunjuk karena model diatur secara terprogram. Atur [`model` pada `Options`](https://code.claude.com/docs/id/agent-sdk/typescript#options) di TypeScript atau [`ClaudeAgentOptions(model=...)`](https://code.claude.com/docs/id/agent-sdk/python#claudeagentoptions) di Python, dan tangani kesalahan terstruktur `model_not_found` untuk menampilkan retry atau pemilih model Anda sendiri.2699* **Agent SDK**: teks kesalahan menghilangkan petunjuk karena model diatur secara terprogram. Atur [`model` pada `Options`](https://code.claude.com/docs/id/agent-sdk/typescript#options) di TypeScript atau [`ClaudeAgentOptions(model=...)`](https://code.claude.com/docs/id/agent-sdk/python#claudeagentoptions) di Python, dan tangani kesalahan terstruktur `model_not_found` untuk menampilkan retry atau pemilih model Anda sendiri.

2663* Gunakan alias seperti `sonnet` atau `opus` bukan ID versi lengkap. Alias menyelesaikan ke default yang dipertahankan sehingga tidak menjadi usang. Lihat [Konfigurasi model](https://code.claude.com/docs/id/model-config.md).2700* Gunakan alias seperti `sonnet` atau `opus` alih-alih ID berversi lengkap. Alias di-resolve ke default yang dipelihara sehingga tidak menjadi usang. Lihat [Konfigurasi model](https://code.claude.com/docs/id/model-config.md).

2664* Jika model yang salah terus kembali di CLI, ID usang diatur di suatu tempat. Periksa tempat Anda dapat mengatur model dalam [urutan prioritas](https://code.claude.com/docs/id/model-config.md#setting-your-model) dan hapus nilai usang.2701* Jika model yang salah terus muncul kembali di CLI, ada ID usang yang diatur di suatu tempat. Periksa tempat-tempat Anda dapat mengatur model dalam [urutan prioritas](https://code.claude.com/docs/id/model-config.md#setting-your-model) dan hapus nilai yang usang.

2665* Claude Code melaporkan login claude.ai yang kedaluwarsa sebagai [Login kedaluwarsa](#login-expired), bukan sebagai kesalahan ini. Sebelum v2.1.206, login yang kedaluwarsa yang tidak lagi dapat disegarkan gagal di setiap model dengan kesalahan ini; jalankan `/login` jika Anda melihat itu pada versi yang lebih lama.2702* Claude Code melaporkan login claude.ai yang kedaluwarsa sebagai [Login expired](#login-expired), bukan sebagai kesalahan ini. Sebelum v2.1.206, login kedaluwarsa yang tidak dapat diperbarui lagi menyebabkan setiap model gagal dengan kesalahan ini; jalankan `/login` jika Anda melihatnya pada versi lama.

2666* Jika [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/id/env-vars) mengarah ke [LLM gateway](https://code.claude.com/docs/id/llm-gateway) dan setiap model gagal dengan cara ini, periksa apakah gateway Anda dan upstream-nya menerima field [tool search](https://code.claude.com/docs/id/mcp.md#tool-search-through-a-gateway). Secara default, Claude Code mengirim field tool `defer_loading` dan blok `tool_reference`, dengan header `anthropic-beta` yang mengaktifkannya. Sebelum v2.1.304, tool search dimatikan di balik gateway kecuali Anda mengaktifkannya dengan `ENABLE_TOOL_SEARCH`.2703* Jika [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/id/env-vars) mengarah ke [LLM gateway](https://code.claude.com/docs/id/llm-gateway) dan setiap model gagal dengan cara ini, periksa apakah gateway Anda dan upstream-nya menerima field [tool search](https://code.claude.com/docs/id/mcp.md#tool-search-through-a-gateway). Secara default, Claude Code mengirim field tool `defer_loading` dan blok `tool_reference`, dengan header `anthropic-beta` yang mengaktifkannya. Sebelum v2.1.304, tool search dimatikan di balik gateway kecuali Anda mengaktifkannya dengan `ENABLE_TOOL_SEARCH`.

2667* Untuk deployment Google Cloud's Agent Platform, lihat [Pemecahan masalah Google Cloud's Agent Platform](https://code.claude.com/docs/id/google-vertex-ai.md#troubleshooting).2704* Untuk deployment Agent Platform dari Google Cloud, lihat [Pemecahan masalah Agent Platform dari Google Cloud](https://code.claude.com/docs/id/google-vertex-ai.md#troubleshooting).

2668 2705 

2669### Model bukan ID model yang dikenali2706### Model is not a recognized model id

2670 2707 

2671String yang Anda teruskan ke sakelar model bukan yang dapat Claude Code gunakan sebagai model, jadi menolak sakelar tanpa mengirim permintaan dan sesi menyimpan model saat ini. Anda dapat mendapatkan kesalahan ini ketika model diatur melalui metode `setModel()` [Agent SDK](https://code.claude.com/docs/id/agent-sdk/typescript.md), oleh aplikasi yang menjalankan Claude Code CLI untuk Anda, seperti [Aplikasi Desktop](https://code.claude.com/docs/id/desktop.md), atau ketika Anda memilih model dari perangkat yang terhubung melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md). Sebelum v2.1.200, Claude Code menyimpan string dan gagal pada permintaan berikutnya dengan [Ada masalah dengan model yang dipilih](#theres-an-issue-with-the-selected-model).2708String yang Anda berikan ke pergantian model bukanlah string yang dapat digunakan Claude Code sebagai model, sehingga Claude Code menolak pergantian tanpa mengirim permintaan dan sesi mempertahankan model saat ini. Anda dapat mengalami kesalahan ini ketika model diatur melalui metode `setModel()` [Agent SDK](https://code.claude.com/docs/id/agent-sdk/typescript.md), oleh aplikasi yang menjalankan Claude Code CLI untuk Anda, seperti [aplikasi Desktop](https://code.claude.com/docs/id/desktop.md), atau ketika Anda memilih model dari perangkat yang terhubung melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md). Sebelum v2.1.200, Claude Code menyimpan string tersebut dan gagal pada permintaan berikutnya dengan [There's an issue with the selected model](#theres-an-issue-with-the-selected-model).

2672 2709 

2673```text theme={null}2710```text theme={null}

2674Model "Sonnet5" is not a recognized model id. Did you mean 'claude-sonnet-5'?2711Model "Sonnet5" is not a recognized model id. Did you mean 'claude-sonnet-5'?

2675```2712```

2676 2713 

2677Dalam contoh ini aplikasi mengirim nama tampilan `Sonnet 5`, yang pesan ulangi tanpa spasi-nya. Petunjuk trailing menyebutkan alias atau ID model yang paling cocok. Ketika tidak ada yang cukup dekat, itu berbunyi `Run /model to see available models.` sebagai gantinya. Dalam sesi yang [Aplikasi Desktop](https://code.claude.com/docs/id/desktop.md) mulai untuk Anda, petunjuk no-match berbunyi `Switch to a different model.`2714Dalam contoh ini, sebuah aplikasi mengirim nama tampilan `Sonnet 5`, yang diulang pesan tanpa spasinya. Petunjuk di akhir menyebutkan alias atau ID model yang paling cocok. Ketika tidak ada yang cukup mirip, petunjuknya berbunyi `Run /model to see available models.` sebagai gantinya. Dalam sesi yang dimulai [aplikasi Desktop](https://code.claude.com/docs/id/desktop.md) untuk Anda, petunjuk tanpa kecocokan berbunyi `Switch to a different model.`

2678 2715 

2679Ketika Anda beralih melalui Agent SDK atau aplikasi di Anthropic API, hanya string yang tidak dapat menjadi ID model mendapatkan kesalahan ini, seperti nama tampilan atau string kosong.2716Ketika Anda berganti melalui Agent SDK atau aplikasi di Anthropic API, hanya string yang tidak mungkin menjadi ID model yang mendapatkan kesalahan ini, seperti nama tampilan atau string kosong.

2680 2717 

2681Ketika Anda memilih model dari perangkat Remote Control, Claude Code memeriksa string secara lokal. String apa pun yang bukan alias model, model yang Claude Code daftar atau Anda konfigurasikan, atau ID yang dimulai dengan `claude-` mendapatkan kesalahan ini, ID yang salah ketik seperti `claud-sonnet-5` disertakan. Sebelum v2.1.260, pemeriksaan ini tidak mencakup pilihan Remote Control, jadi string yang tidak dikenali diterapkan dan gagal pada permintaan berikutnya.2718Ketika Anda memilih model dari perangkat Remote Control, Claude Code memeriksa string secara lokal. String apa pun yang bukan alias model, bukan model yang dicantumkan Claude Code atau yang Anda konfigurasi, dan bukan ID yang diawali dengan `claude-` mendapatkan kesalahan ini, termasuk ID yang salah ketik seperti `claud-sonnet-5`. Sebelum v2.1.260, pemeriksaan ini tidak mencakup pilihan dari Remote Control, sehingga string yang tidak dikenali diterapkan dan gagal pada permintaan berikutnya.

2682 2719 

2683**Yang harus dilakukan:**2720**Yang harus dilakukan:**

2684 2721 

2685* Jalankan `/model` tanpa argumen untuk membuka pemilih dan pilih dari model yang tersedia untuk akun Anda, lalu teruskan alias atau ID yang ditampilkan di sana2722* Jalankan `/model` tanpa argumen untuk membuka pemilih dan memilih dari model yang tersedia untuk akun Anda, lalu berikan alias atau ID yang ditampilkan di sana

2686* Jika Anda menggunakan alias yang hanya versi Claude Code yang lebih baru dukung, jalankan `claude update`, atau teruskan ID model lengkap sebagai gantinya. Server masih dapat memerlukan versi Claude Code minimum untuk model itu; lihat [Claude Code tidak mendukung model ini](#claude-code-does-not-support-this-model).2723* Jika Anda menggunakan alias yang hanya didukung versi Claude Code yang lebih baru, jalankan `claude update`, atau berikan ID lengkap model sebagai gantinya. Server masih dapat mensyaratkan versi Claude Code minimum untuk model tersebut; lihat [Claude Code does not support this model](#claude-code-does-not-support-this-model).

2687* Model yang disimpan sebelum v2.1.200 tidak diperbaiki oleh pemeriksaan ini. Jika nilai usang terus kembali, hapus dari lokasi yang tercantum di bawah [Mengatur model Anda](https://code.claude.com/docs/id/model-config.md#setting-your-model).2724* Model yang disimpan sebelum v2.1.200 tidak diperbaiki oleh pemeriksaan ini. Jika nilai usang terus muncul kembali, hapus dari lokasi-lokasi yang tercantum di [Mengatur model Anda](https://code.claude.com/docs/id/model-config.md#setting-your-model).

2688* Pada penyedia apa pun selain Anthropic API, atau di belakang gateway atau `ANTHROPIC_BASE_URL` kustom, hanya string kosong yang mendapatkan kesalahan ini. Claude Code masih dapat menulis [baris diagnostik model yang tidak dikenali](#unrecognized-model-id-on-a-request) pada waktu permintaan, di setiap penyedia.2725* Pada penyedia apa pun selain Anthropic API, atau di balik gateway atau `ANTHROPIC_BASE_URL` kustom, hanya string kosong yang mendapatkan kesalahan ini. Claude Code masih dapat menulis [baris diagnostik model tidak dikenali](#unrecognized-model-id-on-a-request) saat permintaan dikirim, pada setiap penyedia.

2689 2726 

2690### Model tidak ditemukan2727### Model not found

2691 2728 

2692Anda beralih ke model berdasarkan nama dan Claude Code tidak dapat mengkonfirmasi bahwa model dengan nama itu ada. Ketika nama bukan [alias model](https://code.claude.com/docs/id/model-config.md#model-aliases) atau ejaan lain yang Claude Code terima secara lokal, Claude Code memverifikasinya dengan permintaan API minimal, dan kesalahan ini biasanya jawaban endpoint API Anda. Dengan `/model <name>`, nama yang tidak dapat menjadi ID model sama sekali, seperti yang berisi spasi, mendapatkan pesan yang sama.2729Anda berganti ke model berdasarkan nama dan Claude Code tidak dapat memastikan bahwa model dengan nama tersebut ada. Ketika nama tersebut bukan [alias model](https://code.claude.com/docs/id/model-config.md#model-aliases) atau ejaan lain yang diterima Claude Code secara lokal, Claude Code memverifikasinya dengan permintaan API minimal, dan kesalahan ini biasanya merupakan jawaban endpoint API Anda. Dengan `/model <name>`, nama yang sama sekali tidak mungkin menjadi ID model, seperti nama yang mengandung spasi, mendapatkan pesan yang sama.

2693 2730 

2694```text theme={null}2731```text theme={null}

2695Model 'claude-opus-9' not found2732Model 'claude-opus-9' not found


2699 2736 

2700**Yang harus dilakukan:**2737**Yang harus dilakukan:**

2701 2738 

2702* Jalankan `/model` tanpa argumen dan pilih dari model yang tersedia untuk akun Anda, atau gunakan [alias model](https://code.claude.com/docs/id/model-config.md#model-aliases) seperti `sonnet`, yang menyelesaikan ke default yang dipertahankan2739* Jalankan `/model` tanpa argumen dan pilih dari model yang tersedia untuk akun Anda, atau gunakan [alias model](https://code.claude.com/docs/id/model-config.md#model-aliases) seperti `sonnet`, yang di-resolve ke default yang dipelihara

2703* Jika Anda mengetik ID lengkap, periksakan terhadap katalog model penyedia Anda. Model yang baru diluncurkan dapat tersedia di Anthropic API sebelum penyedia atau wilayah Anda menawarkannya.2740* Jika Anda mengetik ID lengkap, periksa terhadap katalog model penyedia Anda. Model yang baru diluncurkan dapat tersedia di Anthropic API sebelum penyedia atau region Anda menawarkannya.

2704* Dalam Agent SDK, `setModel()` gagal dengan pesan ini dan sesi terus berjalan pada model sebelumnya. Dalam SDK TypeScript, panggil [`supportedModels()`](https://code.claude.com/docs/id/agent-sdk/typescript#query-object) untuk membuat daftar model yang dapat Anda alihkan.2741* Di Agent SDK, `setModel()` gagal dengan pesan ini dan sesi tetap berjalan pada model sebelumnya. Di TypeScript SDK, panggil [`supportedModels()`](https://code.claude.com/docs/id/agent-sdk/typescript#query-object) untuk mencantumkan model yang dapat Anda gunakan.

2705* Sebelum v2.1.265, `/model` juga menolak ejaan alias `opusplan[1m]` dengan kesalahan ini. Pada versi tersebut, perbarui Claude Code, atau atur model di [pengaturan](https://code.claude.com/docs/id/model-config.md#setting-your-model) atau dengan `--model` sebagai gantinya.2742* Sebelum v2.1.265, `/model` juga menolak ejaan alias `opusplan[1m]` dengan kesalahan ini. Pada versi-versi tersebut, perbarui Claude Code, atau atur model di [pengaturan](https://code.claude.com/docs/id/model-config.md#setting-your-model) atau dengan `--model` sebagai gantinya.

2706 2743 

2707### Tidak dapat mengkonfirmasi model dengan API2744### Couldn't confirm model with the API

2708 2745 

2709Anda berganti model melalui metode `setModel()` [Agent SDK](https://code.claude.com/docs/id/agent-sdk/typescript.md) atau aplikasi yang menjalankan CLI Claude Code untuk Anda, seperti [aplikasi Desktop](https://code.claude.com/docs/id/desktop.md), dan permintaan yang mengonfirmasi ID model dengan endpoint API Anda tidak mendapat jawaban dalam 15 detik. Sesi tetap menggunakan model saat ini.2746Anda berganti model melalui metode `setModel()` [Agent SDK](https://code.claude.com/docs/id/agent-sdk/typescript.md) atau aplikasi yang menjalankan Claude Code CLI untuk Anda, seperti [aplikasi Desktop](https://code.claude.com/docs/id/desktop.md), dan permintaan yang mengonfirmasi ID model dengan endpoint API Anda tidak mendapat jawaban dalam 15 detik. Sesi mempertahankan model saat ini.

2710 2747 

2711```text theme={null}2748```text theme={null}

2712Couldn't confirm model "claude-sonnet-5" with the API. Try again, or run /model to see available models.2749Couldn't confirm model "claude-sonnet-5" with the API. Try again, or run /model to see available models.

2713```2750```

2714 2751 

2715Dalam sesi yang [Aplikasi Desktop](https://code.claude.com/docs/id/desktop.md) mulai untuk Anda, pesan berakhir di `Try again.`2752Dalam sesi yang dimulai [aplikasi Desktop](https://code.claude.com/docs/id/desktop.md) untuk Anda, pesan berakhir pada `Try again.`

2716 2753 

2717**Yang harus dilakukan:**2754**Yang harus dilakukan:**

2718 2755 

2719* Alihkan ke model lagi2756* Ganti ke model tersebut lagi

2720* Jika sakelar terus gagal, periksa bahwa Claude Code dapat menjangkau endpoint API Anda; lihat [Kesalahan jaringan dan koneksi](#network-and-connection-errors)2757* Jika pergantian terus gagal, periksa apakah Claude Code dapat menjangkau endpoint API Anda; lihat [Kesalahan jaringan dan koneksi](#network-and-connection-errors)

2721 2758 

2722### Kesalahan API saat memeriksa model yang dipilih2759### Kesalahan API saat memeriksa model yang dipilih

2723 2760 

2724Anda memilih model dengan `/model <name>`, atau aplikasi yang terhubung ke sesi meminta sakelar. API menolak permintaan minimal yang Claude Code kirim untuk memverifikasi model, untuk alasan yang tidak memiliki entri sendiri, seperti rate limit atau kesalahan server. Sesi menyimpan model saat ini, dan pesan berakhir dengan mengatakan demikian:2761Anda memilih model dengan `/model <name>`, atau aplikasi yang terhubung ke sesi meminta pergantian. API menolak permintaan minimal yang dikirim Claude Code untuk memverifikasi model, karena alasan yang tidak memiliki entri tersendiri, seperti rate limit atau kesalahan server. Sesi mempertahankan model saat ini, dan pesan diakhiri dengan menyatakan hal tersebut:

2725 2762 

2726```text theme={null}2763```text theme={null}

2727API error: 429 <the server's explanation> · model not changed2764API error: 429 <the server's explanation> · model not changed

2728```2765```

2729 2766 

2730Bagian tengah pesan adalah status HTTP dan penjelasan server sendiri.2767Bagian tengah pesan adalah status HTTP dan penjelasan dari server itu sendiri.

2731 2768 

2732**Yang harus dilakukan:**2769**Yang harus dilakukan:**

2733 2770 

2734* Bertindak atas penjelasan server; untuk rate limit atau status 5xx, tunggu dan pilih model lagi2771* Tindak lanjuti penjelasan server; untuk rate limit atau status 5xx, tunggu lalu pilih model lagi

2735* Penolakan dengan pesan mereka sendiri dicakup oleh entri sekitarnya, seperti [Model tidak ditemukan](#model-not-found) dan [Model dibatasi oleh pengaturan organisasi Anda](#model-is-restricted-by-your-organizations-settings)2772* Penolakan dengan kata-kata tersendiri dibahas di entri-entri sekitarnya, seperti [Model not found](#model-not-found) dan [Model is restricted by your organization's settings](#model-is-restricted-by-your-organizations-settings)

2736 2773 

2737### Claude Opus tidak tersedia dengan paket Claude Pro2774### Claude Opus is not available with the Claude Pro plan

2738 2775 

2739Paket langganan aktif Anda tidak menyertakan model yang Anda pilih.2776Paket langganan aktif Anda tidak mencakup model yang Anda pilih.

2740 2777 

2741```text theme={null}2778```text theme={null}

2742Claude Opus is not available with the Claude Pro plan. If you have updated your subscription plan recently, run /logout and /login for the plan to take effect.2779Claude Opus is not available with the Claude Pro plan. If you have updated your subscription plan recently, run /logout and /login for the plan to take effect.

2743```2780```

2744 2781 

2745Dalam sesi yang aplikasi Claude Desktop jalankan, pesan mengatakan untuk `sign out and sign in again` bukan menyebutkan perintah.2782Dalam sesi yang dijalankan aplikasi Claude Desktop, pesan tersebut meminta Anda untuk `sign out and sign in again` alih-alih menyebutkan perintahnya.

2746 2783 

2747**Yang harus dilakukan:**2784**Yang harus dilakukan:**

2748 2785 

2749* Jalankan `/model` dan pilih model yang paket Anda sertakan2786* Jalankan `/model` dan pilih model yang termasuk dalam paket Anda

2750* Jika Anda baru-baru ini meningkatkan paket dan masih melihat ini, jalankan `/logout` lalu `/login`. Token yang disimpan mencerminkan paket Anda pada saat Anda masuk, jadi meningkatkan di claude.ai tidak berlaku dalam sesi yang ada sampai Anda autentikasi ulang.2787* Jika Anda baru saja meningkatkan paket dan masih melihat pesan ini, jalankan `/logout` lalu `/login`. Token yang tersimpan mencerminkan paket Anda saat Anda masuk, sehingga peningkatan di claude.ai tidak berlaku di sesi yang sudah ada sampai Anda melakukan autentikasi ulang.

2751* Lihat [claude.com/pricing](https://claude.com/pricing) untuk model mana yang setiap paket sertakan2788* Lihat [claude.com/pricing](https://claude.com/pricing) untuk mengetahui model mana yang termasuk dalam setiap paket

2752 2789 

2753### Claude Code tidak mendukung model ini2790### Claude Code does not support this model

2754 2791 

2755API menolak permintaan dengan 400 karena versi Claude Code Anda di bawah minimum yang diperlukan. Baik model yang Anda pilih memerlukan versi yang lebih baru, yang server periksa per model, atau kebijakan organisasi Anda memerlukan satu. 400 membawa kode kesalahan `claude_code_version_too_old`, dan pesan mengatakan minimum mana yang berlaku.2792API menolak permintaan dengan 400 karena versi Claude Code Anda di bawah minimum yang disyaratkan. Entah model yang Anda pilih memerlukan versi yang lebih baru, yang diperiksa server per model, atau kebijakan organisasi Anda mensyaratkannya. Respons 400 tersebut membawa kode kesalahan `claude_code_version_too_old`, dan pesan menyebutkan minimum mana yang berlaku.

2756 2793 

2757```text theme={null}2794```text theme={null}

2758API Error: 400 Claude Code 2.1.219 does not support this model; version 2.1.255 or newer is required. Run 'claude update', or update the Claude desktop app, then try again.2795API Error: 400 Claude Code 2.1.219 does not support this model; version 2.1.255 or newer is required. Run 'claude update', or update the Claude desktop app, then try again.

2759```2796```

2760 2797 

2761Pesan kebijakan organisasi berbunyi:2798Kata-kata untuk kebijakan organisasi berbunyi:

2762 2799 

2763```text theme={null}2800```text theme={null}

2764API Error: 400 Claude Code 2.1.240 is older than the minimum version required by your organization's policy. Run 'claude update', or update the Claude desktop app, to continue.2801API Error: 400 Claude Code 2.1.240 is older than the minimum version required by your organization's policy. Run 'claude update', or update the Claude desktop app, to continue.

2765```2802```

2766 2803 

2767Versi yang API periksa adalah yang dilaporkan oleh biner Claude Code yang membuat permintaan.2804Versi yang diperiksa API adalah versi yang dilaporkan oleh biner Claude Code yang membuat permintaan.

2768 2805 

2769**Yang harus dilakukan:**2806**Yang harus dilakukan:**

2770 2807 

2771Perbarui biner itu, lalu mulai sesi baru. Tempat biner berasal menentukan bagaimana, kecuali dalam [lingkungan yang di-host sendiri](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#pin-the-version):2808Perbarui biner tersebut, lalu mulai sesi baru. Asal biner menentukan caranya, kecuali di [lingkungan self-hosted](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#pin-the-version):

2772 2809 

2773| Biner yang membuat permintaan | Cara memperbarui |2810| Biner yang membuat permintaan | Cara memperbaruinya |

2774| :- | :- |2811| :- | :- |

2775| Claude Code yang Anda instal | Jalankan `claude update` |2812| Claude Code yang Anda instal | Jalankan `claude update` |

2776| Aplikasi desktop Claude | Perbarui aplikasi |2813| Aplikasi desktop Claude | Perbarui aplikasi |

2777| Biner yang [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) bundel | Perbarui ekstensi |2814| Biner yang disertakan [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) | Perbarui ekstensi |

2778| Biner yang paket Agent SDK bundel | [Tingkatkan paket SDK](https://code.claude.com/docs/id/agent-sdk/hosting.md#runtime-dependencies), lalu mulai ulang aplikasi Anda. Dalam [executable file tunggal yang dikompilasi](https://code.claude.com/docs/id/agent-sdk/typescript.md#compile-to-a-single-executable), build ulang |2815| Biner yang disertakan paket Agent SDK | [Tingkatkan paket SDK](https://code.claude.com/docs/id/agent-sdk/hosting.md#runtime-dependencies), lalu restart aplikasi Anda. Dalam [executable file tunggal yang dikompilasi](https://code.claude.com/docs/id/agent-sdk/typescript.md#compile-to-a-single-executable), build ulang executable tersebut |

2779 2816 

2780* Jika Anda menjalankan `claude update` di [saluran rilis stable](https://code.claude.com/docs/id/setup.md#configure-release-channel), perintah itu tidak memindahkan Anda melewati rilis stable terbaru, yang masih dapat berada di bawah minimum yang diperlukan. Pindah ke saluran latest, lalu perbarui lagi. Jika organisasi Anda mengunci saluran atau versi Anda melalui [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md), minta admin Anda untuk mengubahnya2817* Jika Anda menjalankan `claude update` di [saluran rilis stable](https://code.claude.com/docs/id/setup.md#configure-release-channel), perintah tersebut tidak membawa Anda melewati rilis stable terbaru, yang masih bisa berada di bawah minimum yang disyaratkan. Pindah ke saluran latest, lalu perbarui lagi. Jika organisasi Anda mengunci saluran atau versi Anda melalui [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md), minta admin Anda untuk mengubahnya

2781* Untuk pesan per-model, Anda dapat terus bekerja dalam sesi saat ini dengan beralih ke model lain: jalankan `/model` di CLI, panggil [`setModel()`](https://code.claude.com/docs/id/agent-sdk/typescript#query-object) pada objek `Query` SDK TypeScript dalam mode input streaming, atau panggil [`set_model()`](https://code.claude.com/docs/id/agent-sdk/python#claudesdkclient) pada `ClaudeSDKClient` SDK Python2818* Untuk kata-kata per model, Anda dapat terus bekerja di sesi saat ini dengan beralih ke model lain: jalankan `/model` di CLI, panggil [`setModel()`](https://code.claude.com/docs/id/agent-sdk/typescript#query-object) pada objek `Query` TypeScript SDK dalam mode input streaming, atau panggil [`set_model()`](https://code.claude.com/docs/id/agent-sdk/python#claudesdkclient) pada `ClaudeSDKClient` Python SDK

2782* Untuk pesan kebijakan organisasi, perbarui sebelum Anda melanjutkan2819* Untuk kata-kata kebijakan organisasi, perbarui sebelum Anda melanjutkan

2783 2820 

2784### Model dibatasi oleh pengaturan organisasi Anda2821### Model is restricted by your organization's settings

2785 2822 

2786Admin organisasi Anda telah menonaktifkan model ini di konsol admin claude.ai, atau pengaturan terkelola mengecualikannya melalui allowlist [`availableModels`](https://code.claude.com/docs/id/model-config#restrict-model-selection) atau daftar [`deniedModels`](https://code.claude.com/docs/id/model-config#block-specific-models-or-versions). Pemberitahuan muncul saat startup ketika `--model`, `ANTHROPIC_MODEL`, atau pengaturan `model` menyebutkan model yang dibatasi, dan menyebutkan model yang digunakan sesi sebagai gantinya. Jika pengaturan terkelola tidak meninggalkan model yang diizinkan untuk digunakan sesi, lihat [Pengaturan terkelola memblokir model default](#managed-settings-block-the-default-model). Pemberitahuan substitusi juga dapat muncul di tengah sesi setelah admin menonaktifkan model yang sesi jalankan di konsol admin claude.ai.2823Admin organisasi Anda telah menonaktifkan model ini di konsol admin claude.ai, atau pengaturan terkelola mengecualikannya melalui allowlist [`availableModels`](https://code.claude.com/docs/id/model-config#restrict-model-selection) atau daftar [`deniedModels`](https://code.claude.com/docs/id/model-config#block-specific-models-or-versions). Pemberitahuan muncul saat startup ketika `--model`, `ANTHROPIC_MODEL`, atau pengaturan `model` menyebutkan model yang dibatasi, dan menyebutkan model yang digunakan sesi sebagai gantinya. Jika pengaturan terkelola tidak menyisakan model yang diizinkan untuk digunakan sesi, lihat [Managed settings block the default model](#managed-settings-block-the-default-model). Pemberitahuan penggantian juga dapat muncul di tengah sesi setelah admin menonaktifkan model yang sedang digunakan sesi di konsol admin claude.ai.

2787 2824 

2788```text theme={null}2825```text theme={null}

2789Model "claude-opus-4-8" is restricted by your organization's settings. Using claude-sonnet-4-6 instead.2826Model "claude-opus-4-8" is restricted by your organization's settings. Using claude-sonnet-4-6 instead.

2790```2827```

2791 2828 

2792Mengetik `/model <name>` untuk model yang dibatasi ditolak dan sesi menyimpan model saat ini. Untuk model yang dinonaktifkan di konsol admin, penolakan berbunyi `Model '<name>' is restricted by your organization's settings. Run /model to choose a different model.` Untuk model yang pengaturan terkelola kecualikan, itu berbunyi `Model '<name>' is not available. Your organization restricts model selection.`2829Mengetik `/model <name>` untuk model yang dibatasi akan ditolak dan sesi mempertahankan model saat ini. Untuk model yang dinonaktifkan di konsol admin, penolakannya berbunyi `Model '<name>' is restricted by your organization's settings. Run /model to choose a different model.` Untuk model yang dikecualikan pengaturan terkelola, bunyinya `Model '<name>' is not available. Your organization restricts model selection.`

2793 2830 

2794Pemberitahuan dengan awalan nama agent, skill, atau perintah berarti pembatasan diterapkan pada [model yang diminta subagent](https://code.claude.com/docs/id/sub-agents.md#choose-a-model): subagent berjalan pada model yang disubstitusi dan model sesi Anda tidak berubah. Sebelum v2.1.223, Claude Code menampilkan pemberitahuan hanya untuk subagent yang diluncurkan dengan tool Agent.2831Pemberitahuan yang diawali dengan nama agent, skill, atau perintah berarti pembatasan diterapkan pada [model yang diminta subagent tersebut](https://code.claude.com/docs/id/sub-agents.md#choose-a-model): subagent berjalan pada model pengganti dan model sesi Anda tidak berubah. Sebelum v2.1.223, Claude Code menampilkan pemberitahuan hanya untuk subagent yang diluncurkan dengan tool Agent.

2795 2832 

2796Claude Code memperlakukan alias keluarga model, salah satu dari `opus`, `sonnet`, `haiku`, atau `fable`, sebagai permintaan untuk keluarga itu bukan untuk versi terbarunya. Di Anthropic API dan di [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), alias keluarga yang dibatasi menyelesaikan ke versi terbaru keluarga yang pengaturan organisasi Anda izinkan, dan pemberitahuan substitusi menyebutkan versi itu. Claude Code menolak `/model <alias>` hanya ketika setiap versi keluarga dibatasi. Sebelum v2.1.205, alias keluarga disubstitusi atau ditolak berdasarkan versi terbarunya saja, bahkan ketika versi yang lebih lama dari keluarga yang sama diizinkan.2833Claude Code memperlakukan alias keluarga model, salah satu dari `opus`, `sonnet`, `haiku`, atau `fable`, sebagai permintaan untuk keluarga tersebut, bukan untuk versi terbarunya. Di Anthropic API dan di [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), alias keluarga yang dibatasi di-resolve ke versi terbaru dari keluarga tersebut yang diizinkan pengaturan organisasi Anda, dan pemberitahuan penggantian menyebutkan versi tersebut. Claude Code menolak `/model <alias>` hanya ketika setiap versi dari keluarga tersebut dibatasi. Sebelum v2.1.205, alias keluarga diganti atau ditolak hanya berdasarkan versi terbarunya, bahkan ketika versi lama dari keluarga yang sama diizinkan.

2797 2834 

2798**Yang harus dilakukan:**2835**Yang harus dilakukan:**

2799 2836 

2800* Jalankan `/model` untuk memilih dari model yang organisasi Anda izinkan. Model yang dibatasi disembunyikan dari pemilih.2837* Jalankan `/model` untuk memilih dari model yang diizinkan organisasi Anda. Model yang dibatasi disembunyikan dari pemilih.

2801* Jika model yang dibatasi diatur di `--model`, `ANTHROPIC_MODEL`, bidang `model` file pengaturan, atau frontmatter `model` dari [subagent](https://code.claude.com/docs/id/sub-agents.md#choose-a-model), skill, atau perintah, hapus atau perbarui nilai itu sehingga pemberitahuan tidak berulang2838* Jika model yang dibatasi diatur di `--model`, `ANTHROPIC_MODEL`, field `model` dari file pengaturan, atau frontmatter `model` dari [subagent](https://code.claude.com/docs/id/sub-agents.md#choose-a-model), skill, atau perintah, hapus atau perbarui nilai tersebut agar pemberitahuan tidak terulang

2802* Jika Anda memerlukan akses ke model yang dibatasi, minta admin organisasi Anda untuk mengaktifkannya. Lihat [Pembatasan model organisasi](https://code.claude.com/docs/id/model-config.md#organization-model-restrictions).2839* Jika Anda memerlukan akses ke model yang dibatasi, minta admin organisasi Anda untuk mengaktifkannya. Lihat [Pembatasan model organisasi](https://code.claude.com/docs/id/model-config.md#organization-model-restrictions).

2803 2840 

2804### Tidak dapat beralih ke model default2841### Can't switch to the default model

2805 2842 

2806Anda memilih model Default, misalnya dengan memilih baris Default di pemilih `/model` atau mengetik `/model default`. Claude Code menolak sakelar, jadi sesi menyimpan model saat ini.2843Anda memilih model Default, misalnya dengan memilih baris Default di pemilih `/model` atau mengetik `/model default`. Claude Code menolak pergantian, sehingga sesi mempertahankan model saat ini.

2807 2844 

2808```text theme={null}2845```text theme={null}

2809Can't switch to the default model: your organization's managed settings block it (claude-opus-4-6) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".2846Can't switch to the default model: your organization's managed settings block it (claude-opus-4-6) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".

2810```2847```

2811 2848 

2812Pesan setelah titik dua menyebutkan apa yang memblokir sakelar:2849Kata-kata setelah titik dua menyebutkan apa yang memblokir pergantian:

2813 2850 

2814* **`your organization's managed settings block it ... in "deniedModels"`**: daftar deny terkelola memblokir model yang opsi Default selesaikan2851* **`your organization's managed settings block it ... in "deniedModels"`**: daftar deny terkelola memblokir model yang menjadi hasil resolve opsi Default

2815* **`your organization allows only the models listed in "availableModels"`**: allowlist [`availableModels`](https://code.claude.com/docs/id/model-config#restrict-model-selection) terkelola dengan [`availableModelsMatch`](https://code.claude.com/docs/id/settings-reference#availablemodelsmatch) diatur ke `"exact"` meninggalkan model yang opsi Default selesaikan2852* **`your organization allows only the models listed in "availableModels"`**: allowlist [`availableModels`](https://code.claude.com/docs/id/model-config#restrict-model-selection) terkelola dengan [`availableModelsMatch`](https://code.claude.com/docs/id/settings-reference#availablemodelsmatch) diatur ke `"exact"` tidak menyertakan model yang menjadi hasil resolve opsi Default

2816* **`Claude Code couldn't read your organization's managed settings to check which models they allow`**: [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) tidak dapat dibaca, dan Claude Code menolak sakelar bukan menerapkannya tanpa diperiksa2853* **`Claude Code couldn't read your organization's managed settings to check which models they allow`**: [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) tidak dapat dibaca, dan Claude Code menolak pergantian alih-alih menerapkannya tanpa pemeriksaan

2817 2854 

2818**Yang harus dilakukan:**2855**Yang harus dilakukan:**

2819 2856 

2820* Untuk pesan [`deniedModels`](https://code.claude.com/docs/id/settings-reference#deniedmodels) dan `availableModels`, jalankan `/model` dan pilih model yang organisasi Anda izinkan berdasarkan nama2857* Untuk kata-kata [`deniedModels`](https://code.claude.com/docs/id/settings-reference#deniedmodels) dan `availableModels`, jalankan `/model` dan pilih model yang diizinkan organisasi Anda berdasarkan nama

2821* Minta administrator Anda untuk memperbarui pengaturan terkelola yang pesan sebutkan2858* Minta administrator Anda memperbarui pengaturan terkelola yang disebutkan pesan

2822* Untuk pesan `couldn't read`, mulai ulang Claude Code; jika terus terjadi, minta administrator Anda untuk memeriksa pengaturan terkelola2859* Untuk kata-kata `couldn't read`, restart Claude Code; jika terus terjadi, minta administrator Anda memeriksa pengaturan terkelola

2823 2860 

2824Jika sesi malah gagal dimulai dengan pesan `Claude Code can't start` di bawah pengaturan terkelola ini, lihat [Pengaturan terkelola memblokir model default](#managed-settings-block-the-default-model).2861Jika sesi justru gagal dimulai dengan pesan `Claude Code can't start` di bawah pengaturan terkelola ini, lihat [Managed settings block the default model](#managed-settings-block-the-default-model).

2825 2862 

2826### Sakelar model diblokir oleh hook PreModelSwitch2863### Model switch was blocked by a PreModelSwitch hook

2827 2864 

2828Hook [PreModelSwitch](https://code.claude.com/docs/id/hooks.md#premodelswitch) tidak menyetujui sakelar model yang Anda atau klien minta, jadi sesi menyimpan model saat ini. Ketika sakelar berasal dari host [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md) atau [Remote Control](https://code.claude.com/docs/id/remote-control.md) bukan perintah yang Anda ketik, pesan berbunyi `Model switch blocked by a PreModelSwitch hook` tanpa menyebutkan model target.2865Sebuah [hook PreModelSwitch](https://code.claude.com/docs/id/hooks.md#premodelswitch) tidak menyetujui pergantian model yang Anda atau klien minta, sehingga sesi mempertahankan model saat ini. Ketika pergantian berasal dari host [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md) atau [Remote Control](https://code.claude.com/docs/id/remote-control.md) dan bukan dari perintah yang Anda ketik, pesannya berbunyi `Model switch blocked by a PreModelSwitch hook` tanpa menyebutkan model tujuan.

2829 2866 

2830```text theme={null}2867```text theme={null}

2831Model switch to Opus 4.6 was blocked by a PreModelSwitch hook: Opus 4.6 is retired for this project. Use a newer model.2868Model switch to Opus 4.6 was blocked by a PreModelSwitch hook: Opus 4.6 is retired for this project. Use a newer model.

2832```2869```

2833 2870 

2834Alasan setelah titik dua mengatakan apa yang menolak sakelar:2871Alasan setelah titik dua menyebutkan apa yang menolak pergantian:

2835 2872 

2836* **Alasan yang hook tulis**: hook PreModelSwitch memasok alasan itu ketika [menolak sakelar atau meminta konfirmasi](https://code.claude.com/docs/id/hooks.md#premodelswitch-decision-control). Tangani apa yang dimintanya, atau pilih model yang hook Anda izinkan.2873* **Alasan yang ditulis hook**: hook PreModelSwitch memberikan alasan tersebut ketika [menolak pergantian atau meminta konfirmasi](https://code.claude.com/docs/id/hooks.md#premodelswitch-decision-control). Tangani apa yang dimintanya, atau pilih model yang diizinkan hook Anda.

2837* **`PreModelSwitch hook <name> did not respond before its timeout`**: hook yang tidak menjawab sebelum [timeout](https://code.claude.com/docs/id/hooks.md#timeouts)-nya memblokir sakelar. Perbaiki perintah yang menggantung atau naikkan `timeout` hook itu, lalu alihkan lagi.2874* **`PreModelSwitch hook <name> did not respond before its timeout`**: hook yang tidak menjawab sebelum [timeout](https://code.claude.com/docs/id/hooks.md#timeouts)-nya memblokir pergantian. Perbaiki perintah yang menggantung atau naikkan `timeout` hook tersebut, lalu ganti lagi.

2838* **`confirmation required, and this session cannot ask`**: hook menjawab `ask` tanpa alasan, dan permintaan kontrol tidak memiliki cara untuk menampilkan dialog konfirmasi. Perintah `/model` dalam [run `-p`](https://code.claude.com/docs/id/headless) melaporkan kondisi yang sama dengan `(run /model interactively to confirm)` setelah alasan. Buat sakelar dari sesi interaktif, atau ubah keputusan hook untuk model ini.2875* **`confirmation required, and this session cannot ask`**: hook menjawab `ask` tanpa alasan, dan permintaan kontrol tidak memiliki cara untuk menampilkan prompt konfirmasi. Perintah `/model` dalam [proses `-p`](https://code.claude.com/docs/id/headless) melaporkan kondisi yang sama dengan `(run /model interactively to confirm)` setelah alasannya. Lakukan pergantian dari sesi interaktif, atau ubah keputusan hook untuk model ini.

2839* **`so organization-managed PreModelSwitch hooks could not be checked`**: Claude Code tidak dapat mengetahui hook PreModelSwitch mana yang [plugin terkelola](https://code.claude.com/docs/id/settings-reference.md#enabledplugins) organisasi Anda berikan, misalnya karena plugin terkelola gagal dimuat. Salah satu hook itu mungkin memblokir sakelar, jadi Claude Code menolak bukan menerapkan sakelar tanpa diperiksa. Awal alasan menyebutkan apa yang gagal. Claude Code memeriksa ulang pada setiap upaya sakelar, jadi kegagalan yang sejak itu telah hilang berhenti memblokir; jika terus gagal, jalankan `claude --debug` dan alihkan lagi untuk menangkap detail, lalu perbaiki plugin atau minta admin Anda memperbaikinya.2876* **`so organization-managed PreModelSwitch hooks could not be checked`**: Claude Code tidak dapat mengetahui hook PreModelSwitch mana yang dikirimkan [plugin terkelola](https://code.claude.com/docs/id/settings-reference.md#enabledplugins) organisasi Anda, misalnya karena plugin terkelola gagal dimuat. Salah satu hook tersebut mungkin memblokir pergantian, sehingga Claude Code menolak alih-alih menerapkan pergantian tanpa pemeriksaan. Awal alasan menyebutkan apa yang gagal. Claude Code memeriksa ulang pada setiap upaya pergantian, sehingga kegagalan yang sudah teratasi berhenti memblokir; jika terus gagal, jalankan `claude --debug` dan ganti lagi untuk menangkap detailnya, lalu perbaiki plugin tersebut atau minta admin Anda memperbaikinya.

2840* **`a PreModelSwitch hook failed before answering`** atau **`PreModelSwitch hooks were cancelled (the control stream closed) before answering`**: eksekusi hook berakhir tanpa putusan, dan Claude Code tidak memperlakukan itu sebagai persetujuan. Jalankan `claude --debug` untuk melihat apa yang gagal, lalu alihkan lagi.2877* **`a PreModelSwitch hook failed before answering`** atau **`PreModelSwitch hooks were cancelled (the control stream closed) before answering`**: proses hook berakhir tanpa keputusan, dan Claude Code tidak memperlakukannya sebagai persetujuan. Jalankan `claude --debug` untuk melihat apa yang gagal, lalu ganti lagi.

2841 2878 

2842Sebelum v2.1.260, penolakan plugin terkelola berbunyi `plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log`. Claude Code mencoba ulang pemuatan plugin sekali lalu menolak sakelar berikutnya dalam sesi, bahkan ketika organisasi Anda tidak mengelola plugin. Mulai ulang sesi untuk menjalankan pemuatan plugin lagi pada versi tersebut.2879Sebelum v2.1.260, penolakan plugin terkelola berbunyi `plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log`. Claude Code mencoba ulang pemuatan plugin sekali lalu menolak pergantian berikutnya dalam sesi, bahkan ketika organisasi Anda tidak mengelola plugin apa pun. Restart sesi untuk menjalankan pemuatan plugin lagi pada versi-versi tersebut.

2843 2880 

2844### Tidak dapat menyimpannya sebagai default Anda2881### Couldn't save it as your default

2845 2882 

2846Anda memilih model untuk disimpan sebagai default Anda, misalnya dengan `/model <name>` atau `Enter` di pemilih `/model`, dan Claude Code tidak dapat menulis pilihan ke file pengaturan pengguna Anda, `~/.claude/settings.json`. Sakelar itu sendiri diterapkan, jadi sesi saat ini berjalan pada model yang Anda pilih, tetapi default Anda tidak berubah dan sesi berikutnya dimulai pada nilai lama.2883Anda memilih model untuk disimpan sebagai default, misalnya dengan `/model <name>` atau `Enter` di pemilih `/model`, dan Claude Code tidak dapat menulis pilihan tersebut ke file pengaturan pengguna Anda, `~/.claude/settings.json`. Pergantiannya sendiri diterapkan, sehingga sesi saat ini berjalan pada model yang Anda pilih, tetapi default Anda tidak berubah dan sesi berikutnya dimulai dengan nilai lama.

2847 2884 

2848```text theme={null}2885```text theme={null}

2849Set model to Fable 5.1 for this session only · couldn't save it as your default: ~/.claude/settings.json can't be written (EROFS)2886Set model to Fable 5.1 for this session only · couldn't save it as your default: ~/.claude/settings.json can't be written (EROFS)

2850```2887```

2851 2888 

2852Alasan setelah jalur file mengatakan apa yang gagal:2889Alasan setelah path file menyebutkan apa yang gagal:

2853 2890 

2854* **`can't be written (<code>)`**: penulisan gagal dengan kode kesalahan sistem operasi dalam tanda kurung, seperti `EROFS` ketika file, atau file yang ditautkannya, berada di sistem file yang menolak penulisan. Buat file dapat ditulis dan alihkan lagi. Jika alat lain menghasilkan file, atur kunci `model` di alat itu sebagai gantinya; lihat [Perubahan yang Anda buat di Claude Code hilang di sesi baru](https://code.claude.com/docs/id/settings.md#a-change-you-made-in-claude-code-is-lost-in-new-sessions).2891* **`can't be written (<code>)`**: penulisan gagal dengan kode kesalahan sistem operasi dalam tanda kurung, seperti `EROFS` ketika file tersebut, atau file yang ditautkannya, berada di filesystem yang menolak penulisan. Buat file dapat ditulis dan ganti lagi. Jika alat lain menghasilkan file tersebut, atur kunci `model` di alat itu sebagai gantinya; lihat [Perubahan yang Anda buat di Claude Code hilang di sesi baru](https://code.claude.com/docs/id/settings.md#a-change-you-made-in-claude-code-is-lost-in-new-sessions).

2855* **`isn't valid JSON`**: file di disk tidak dapat diurai, dan Claude Code meninggalkannya tanpa sentuhan bukan menimpa konten yang tidak dapat dibaca kembali. Perbaiki kesalahan sintaks, lalu alihkan lagi; lihat [Perbaiki file pengaturan yang rusak](https://code.claude.com/docs/id/settings.md#fix-a-broken-settings-file).2892* **`isn't valid JSON`**: file di disk tidak dapat di-parse, dan Claude Code membiarkannya tidak tersentuh alih-alih menimpa konten yang tidak dapat dibacanya kembali. Perbaiki kesalahan sintaksis, lalu ganti lagi; lihat [Memperbaiki file pengaturan yang rusak](https://code.claude.com/docs/id/settings.md#fix-a-broken-settings-file).

2856 2893 

2857Pemberitahuan yang berakhir `couldn't confirm it was saved as your default (~/.claude/settings.json is still being written)` berarti penulisan belum selesai setelah tiga detik. Itu berlanjut di latar belakang, jadi default mungkin masih disimpan; periksa model mana yang sesi berikutnya mulai, atau jalankan `/model <name>` lagi.2894Pemberitahuan yang diakhiri dengan `couldn't confirm it was saved as your default (~/.claude/settings.json is still being written)` berarti penulisan belum selesai setelah tiga detik. Penulisan berlanjut di latar belakang, sehingga default mungkin tetap tersimpan; periksa model mana yang digunakan sesi berikutnya saat dimulai, atau jalankan `/model <name>` lagi.

2858 2895 

2859Sebelum v2.1.265, pemberitahuan mengatakan model itu `saved as your default for new sessions` bahkan ketika penulisan gagal.2896Sebelum v2.1.265, pemberitahuan menyatakan model telah `saved as your default for new sessions` bahkan ketika penulisan gagal.

2860 2897 

2861### Advisor kurang mampu dibandingkan model utama saat ini2898### Advisor is less capable than the current main model

2862 2899 

2863[Model advisor](https://code.claude.com/docs/id/advisor.md) Anda berperingkat di bawah model utama sesi Anda, jadi Claude Code mempertahankan pilihan tetapi tidak melampirkan advisor ke permintaan model utama.2900[Model advisor](https://code.claude.com/docs/id/advisor.md) Anda berperingkat di bawah model utama sesi Anda, sehingga Claude Code mempertahankan pilihan tersebut tetapi tidak melampirkan advisor ke permintaan model utama.

2864 2901 

2865```text theme={null}2902```text theme={null}

2866Advisor set to Opus 4.82903Advisor set to Opus 4.8


2870Pesan lain melaporkan kondisi yang sama:2907Pesan lain melaporkan kondisi yang sama:

2871 2908 

2872* Dalam sesi interaktif, notifikasi berbunyi `Advisor will not activate on the main model (advisor is less capable); subagents may still use it and may use more tokens · /advisor`.2909* Dalam sesi interaktif, notifikasi berbunyi `Advisor will not activate on the main model (advisor is less capable); subagents may still use it and may use more tokens · /advisor`.

2873* Ketika Anda menjalankan dengan flag `--advisor` dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), dan proses tersebut bukan [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), peringatan dikirim ke stderr dan proses tetap dimulai. Peringatan berbunyi `"<advisor>" cannot advise "<main model>" (the advisor must be at least as capable as the main model). The advisor will not be used for the main model.` Sesi interaktif menulis peringatan tersebut hanya ke [log debug](#configuration-warnings).2910* Ketika Anda meluncurkan dengan flag `--advisor` dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), dan proses tersebut bukan [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), peringatan dikirim ke stderr dan proses tetap dimulai. Bunyinya `"<advisor>" cannot advise "<main model>" (the advisor must be at least as capable as the main model). The advisor will not be used for the main model.` Sesi interaktif menulis peringatan tersebut hanya ke [log debug](#configuration-warnings).

2874 2911 

2875**Yang harus dilakukan:**2912**Yang harus dilakukan:**

2876 2913 

2877* Pilih advisor berperingkat lebih tinggi atau model utama berperingkat lebih rendah. [Pilih model advisor](https://code.claude.com/docs/id/advisor.md#choose-an-advisor-model) menampilkan peringkat dan mencantumkan advisor yang diterima untuk setiap model utama.2914* Pilih advisor dengan peringkat lebih tinggi atau model utama dengan peringkat lebih rendah. [Memilih model advisor](https://code.claude.com/docs/id/advisor.md#choose-an-advisor-model) menampilkan peringkat dan mencantumkan advisor yang diterima untuk setiap model utama.

2878* Biarkan advisor tetap diatur jika Anda ingin [subagent](https://code.claude.com/docs/id/sub-agents.md) yang modelnya dapat diberi saran olehnya tetap menggunakannya2915* Biarkan advisor tetap diatur jika Anda ingin [subagent](https://code.claude.com/docs/id/sub-agents.md) yang modelnya dapat dinasihati advisor tersebut tetap menggunakannya

2879 2916 

2880Sebelum v2.1.287, Claude Code memberi peringkat beberapa pasangan secara berbeda. Claude Code menampilkan catatan ini untuk advisor Sonnet 5.5 dengan model utama Opus 4.7 atau Opus 4.8, pasangan yang kini diterimanya. Claude Code juga melampirkan beberapa advisor yang kini menghasilkan catatan ini, seperti advisor Opus 4.8 dengan model utama Sonnet 5.5.2917Sebelum v2.1.287, Claude Code memberi peringkat beberapa pasangan secara berbeda. Claude Code menampilkan catatan ini untuk advisor Sonnet 5.5 dengan model utama Opus 4.7 atau Opus 4.8, pasangan yang sekarang diterimanya. Claude Code juga melampirkan beberapa advisor yang sekarang menghasilkan catatan ini, seperti advisor Opus 4.8 dengan model utama Sonnet 5.5.

2881 2918 

2882### thinking.type.enabled tidak didukung untuk model ini2919### thinking.type.enabled is not supported for this model

2883 2920 

2884Versi Claude Code Anda lebih lama dari minimum untuk model yang dipilih. CLI mengirim konfigurasi thinking yang model tidak lagi terima.2921Versi Claude Code Anda lebih lama dari versi minimum untuk model yang dipilih. CLI mengirim konfigurasi thinking yang tidak lagi diterima model.

2885 2922 

2886```text theme={null}2923```text theme={null}

2887API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.2924API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.


2889 2926 

2890**Yang harus dilakukan:**2927**Yang harus dilakukan:**

2891 2928 

2892* Jalankan `claude update` dan mulai ulang Claude Code. Opus 4.7 memerlukan v2.1.111 atau lebih baru. Opus 4.8 memerlukan v2.1.154 atau lebih baru. Sonnet 5 memerlukan v2.1.197 atau lebih baru. Opus 5 memerlukan v2.1.219 atau lebih baru. Opus 5.5 memerlukan v2.1.280 atau lebih baru. Sonnet 5.5 memerlukan v2.1.284 atau lebih baru2929* Jalankan `claude update` dan restart Claude Code. Opus 4.7 memerlukan v2.1.111 atau yang lebih baru. Opus 4.8 memerlukan v2.1.154 atau yang lebih baru. Sonnet 5 memerlukan v2.1.197 atau yang lebih baru. Opus 5 memerlukan v2.1.219 atau yang lebih baru. Opus 5.5 memerlukan v2.1.280 atau yang lebih baru. Sonnet 5.5 memerlukan v2.1.284 atau yang lebih baru

2893* Di [saluran rilis stable](https://code.claude.com/docs/id/setup.md#configure-release-channel), pembaruan tidak memindahkan Anda melewati rilis stable terbaru, yang masih dapat lebih lama dari versi-versi ini. Pindah ke saluran latest, lalu perbarui2930* Di [saluran rilis stable](https://code.claude.com/docs/id/setup.md#configure-release-channel), pembaruan tidak membawa Anda melewati rilis stable terbaru, yang masih bisa lebih lama dari versi-versi ini. Pindah ke saluran latest, lalu perbarui

2894* Jika Anda tidak dapat meningkatkan, jalankan `/model` dan pilih Opus 4.6 atau Sonnet 4.6 sebagai gantinya2931* Jika Anda tidak dapat meningkatkan versi, jalankan `/model` dan pilih Opus 4.6 atau Sonnet 4.6 sebagai gantinya

2895* Jika Anda mengalami ini di [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), tingkatkan paket SDK sebagai gantinya. Opus 4.8 memerlukan TypeScript SDK v0.3.154 atau lebih baru dan Python SDK v0.2.88 atau lebih baru. Sonnet 5 memerlukan TypeScript SDK v0.3.197 atau lebih baru. Opus 5 memerlukan TypeScript SDK v0.3.219 atau lebih baru. Opus 5.5 memerlukan TypeScript SDK v0.3.280 atau lebih baru. Sonnet 5.5 memerlukan TypeScript SDK v0.3.284 atau lebih baru2932* Jika Anda mengalami ini di [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), tingkatkan paket SDK sebagai gantinya. Opus 4.8 memerlukan TypeScript SDK v0.3.154 atau yang lebih baru dan Python SDK v0.2.88 atau yang lebih baru. Sonnet 5 memerlukan TypeScript SDK v0.3.197 atau yang lebih baru. Opus 5 memerlukan TypeScript SDK v0.3.219 atau yang lebih baru. Opus 5.5 memerlukan TypeScript SDK v0.3.280 atau yang lebih baru. Sonnet 5.5 memerlukan TypeScript SDK v0.3.284 atau yang lebih baru

2896 2933 

2897### Effort tidak tersedia dengan thinking dimatikan2934### Effort isn't available with thinking turned off

2898 2935 

2899Anda mematikan [extended thinking](https://code.claude.com/docs/id/model-config.md#extended-thinking) dan berjalan pada [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) di atas `high`. Model tidak menerima kombinasi itu, jadi API menolak permintaan.2936Anda mematikan [extended thinking](https://code.claude.com/docs/id/model-config.md#extended-thinking) dan menjalankan pada [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) di atas `high`. Model tidak menerima kombinasi tersebut, sehingga API menolak permintaan.

2900 2937 

2901```text theme={null}2938```text theme={null}

2902API Error: Effort 'xhigh' isn't available with thinking turned off on this model · run /effort high to continue, or turn thinking back on (unset MAX_THINKING_TOKENS=0)2939API Error: Effort 'xhigh' isn't available with thinking turned off on this model · run /effort high to continue, or turn thinking back on (unset MAX_THINKING_TOKENS=0)

2903```2940```

2904 2941 

2905Petunjuk setelah `·` bervariasi menurut sesi: dalam sesi non-interaktif itu berbunyi `use --effort high (or the effortLevel setting)`, dan dalam sesi yang aplikasi Claude Desktop jalankan itu berbunyi `you can lower effort to High`.2942Petunjuk setelah `·` bervariasi menurut sesi: dalam sesi non-interaktif bunyinya `use --effort high (or the effortLevel setting)`, dan dalam sesi yang dijalankan aplikasi Claude Desktop bunyinya `you can lower effort to High`.

2906 2943 

2907**Yang harus dilakukan:**2944**Yang harus dilakukan:**

2908 2945 

2909* [Turunkan tingkat effort](https://code.claude.com/docs/id/model-config.md#set-the-effort-level) ke `high` atau di bawah.2946* [Turunkan tingkat effort](https://code.claude.com/docs/id/model-config.md#set-the-effort-level) ke `high` atau lebih rendah.

2910* Aktifkan thinking kembali, misalnya dengan membatalkan [`MAX_THINKING_TOKENS`](https://code.claude.com/docs/id/env-vars) atau menghapus [`"alwaysThinkingEnabled": false`](https://code.claude.com/docs/id/settings-reference#alwaysthinkingenabled) dari pengaturan Anda.2947* Aktifkan kembali thinking, misalnya dengan menghapus pengaturan [`MAX_THINKING_TOKENS`](https://code.claude.com/docs/id/env-vars) atau menghapus [`"alwaysThinkingEnabled": false`](https://code.claude.com/docs/id/settings-reference#alwaysthinkingenabled) dari pengaturan Anda.

2911 2948 

2912Sebelum v2.1.242, Claude Code menampilkan pesan API sendiri: `API Error: 400 output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking.` Sebelum v2.1.251, Claude Code mengirim permintaan pada tingkat effort yang Anda atur, jadi Opus 5 menolak setiap permintaan di atas `high` dengan thinking dimatikan. Claude Code sekarang mengirim effort `high` sebagai gantinya ke model yang diketahui menolak kombinasi, seperti Opus 5.2949Sebelum v2.1.242, Claude Code menampilkan pesan API itu sendiri: `API Error: 400 output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking.` Sebelum v2.1.251, Claude Code mengirim permintaan pada tingkat effort yang Anda atur, sehingga Opus 5 menolak setiap permintaan di atas `high` dengan thinking dimatikan. Claude Code sekarang mengirim effort `high` sebagai gantinya ke model yang diketahuinya menolak kombinasi tersebut, seperti Opus 5.

2913 2950 

2914### Thinking budget melebihi batas output2951### Thinking budget melebihi batas output

2915 2952 

2916Thinking budget extended thinking yang dikonfigurasi melebihi panjang respons maksimum, jadi tidak ada ruang yang tersisa untuk jawaban sebenarnya.2953Thinking budget extended thinking yang dikonfigurasi melebihi panjang respons maksimum, sehingga tidak tersisa ruang untuk jawaban yang sebenarnya.

2917 2954 

2918```text theme={null}2955```text theme={null}

2919API Error: 400 ... max_tokens must be greater than thinking.budget_tokens2956API Error: 400 ... max_tokens must be greater than thinking.budget_tokens


2922**Yang harus dilakukan:**2959**Yang harus dilakukan:**

2923 2960 

2924* Naikkan [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](https://code.claude.com/docs/id/env-vars) di atas thinking budget2961* Naikkan [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](https://code.claude.com/docs/id/env-vars) di atas thinking budget

2925* Lihat [Extended thinking](https://code.claude.com/docs/id/model-config.md#extended-thinking) untuk bagaimana budget berinteraksi dengan panjang output2962* Lihat [Extended thinking](https://code.claude.com/docs/id/model-config.md#extended-thinking) untuk mengetahui bagaimana budget berinteraksi dengan panjang output

2926 2963 

2927### Response exceeded the output token maximum2964### Response exceeded the output token maximum

2928 2965 


2933API Error: Claude's response exceeded the 64000 output token maximum for a request sent without streaming. The CLAUDE_CODE_MAX_OUTPUT_TOKENS environment variable cannot raise this limit.2970API Error: Claude's response exceeded the 64000 output token maximum for a request sent without streaming. The CLAUDE_CODE_MAX_OUTPUT_TOKENS environment variable cannot raise this limit.

2934```2971```

2935 2972 

2936Bentuk yang menyebut `a request sent without streaming` berarti permintaan streaming gagal dan Claude Code mengirim ulang tanpa streaming, yang membatasi balasan hingga 64.000 token output. Sebelum v2.1.299, balasan yang terpotong pada permintaan yang dikirim ulang seperti itu mengakhiri giliran tanpa pesan ini, seolah-olah balasannya lengkap.2973Bentuk yang menyebutkan `a request sent without streaming` berarti permintaan streaming gagal dan Claude Code mengirim ulang tanpa streaming, yang membatasi balasan hingga 64.000 token output. Sebelum v2.1.299, balasan yang terpotong pada permintaan yang dikirim ulang seperti itu mengakhiri giliran tanpa pesan ini, seolah-olah balasan tersebut lengkap.

2937 2974 

2938**Yang harus dilakukan:**2975**Yang harus dilakukan:**

2939 2976 

2940* Jika Claude menulis sebagian teks sebelum balasan terpotong, balas `continue` dalam sesi interaktif untuk meminta sisanya. Teks tersebut tetap ada dalam percakapan.2977* Jika Claude menulis sebagian teks sebelum balasan terpotong, balas `continue` dalam sesi interaktif untuk meminta sisanya. Teks tersebut tetap berada dalam percakapan.

2941* Jika pesannya meminta Anda mengatur `CLAUDE_CODE_MAX_OUTPUT_TOKENS`, lihat [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](https://code.claude.com/docs/id/env-vars) untuk bagaimana nilainya dibatasi dan [Mengatur environment variable](https://code.claude.com/docs/id/env-vars.md#set-environment-variables) untuk tempat mengaturnya2978* Jika pesan meminta Anda mengatur `CLAUDE_CODE_MAX_OUTPUT_TOKENS`, lihat [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](https://code.claude.com/docs/id/env-vars) untuk mengetahui bagaimana nilainya dibatasi dan [Mengatur environment variable](https://code.claude.com/docs/id/env-vars.md#set-environment-variables) untuk mengetahui di mana mengaturnya

2942* Agar setiap balasan tetap di bawah batas, minta Claude memberikan output dalam bagian-bagian yang lebih kecil, seperti satu file atau satu bagian per balasan2979* Agar setiap balasan tetap di bawah batas, minta Claude menghasilkan output dalam bagian-bagian yang lebih kecil, seperti satu file atau satu bagian per balasan

2943 2980 

2944### Ketidakcocokan blok penggunaan tool atau thinking2981### Ketidakcocokan tool use atau thinking block

2945 2982 

2946Riwayat percakapan mencapai API dalam keadaan tidak konsisten.2983Riwayat percakapan mencapai API dalam keadaan tidak konsisten.

2947 2984 


2953API Error: 400 ... thinking blocks ... cannot be modified2990API Error: 400 ... thinking blocks ... cannot be modified

2954```2991```

2955 2992 

2956Semua varian berarti hal yang sama: urutan blok `tool_use`, `tool_result`, dan `thinking` dalam riwayat tidak lagi cocok dengan apa yang API harapkan.2993Semua varian memiliki arti yang sama: urutan blok `tool_use`, `tool_result`, dan `thinking` dalam riwayat tidak lagi sesuai dengan yang diharapkan API.

2957 2994 

2958**Yang harus dilakukan:**2995**Yang harus dilakukan:**

2959 2996 

2960* Jika Anda menggunakan Opus 4.7 atau Opus 4.8, jalankan `claude update` terlebih dahulu. Versi sebelum v2.1.156 dapat memicu kesalahan ini selama penggunaan tool normal, dan `/rewind` tidak menghapusnya.2997* Jika Anda menggunakan Opus 4.7 atau Opus 4.8, jalankan `claude update` terlebih dahulu. Versi sebelum v2.1.156 dapat memicu kesalahan ini selama penggunaan tool normal, dan `/rewind` tidak menghilangkannya.

2961* Jalankan `/rewind`, atau tekan Esc dua kali, untuk mundur ke checkpoint sebelum giliran yang rusak dan lanjutkan dari sana. Lihat [Checkpointing](https://code.claude.com/docs/id/checkpointing.md) untuk bagaimana checkpoint dibuat dan dipulihkan.2998* Jalankan `/rewind`, atau tekan Esc dua kali, untuk mundur ke checkpoint sebelum giliran yang rusak dan lanjutkan dari sana. Lihat [Checkpointing](https://code.claude.com/docs/id/checkpointing.md) untuk mengetahui bagaimana checkpoint dibuat dan dipulihkan.

2962 2999 

2963### Data tidak valid dalam blok redacted\_thinking3000### Invalid data in redacted\_thinking block

2964 3001 

2965API menolak permintaan dengan 400 karena tidak dapat menerima blok `redacted_thinking` yang dibawa giliran sebelumnya dalam riwayat percakapan.3002API menolak permintaan dengan 400 karena tidak dapat menerima blok `redacted_thinking` yang dibawa oleh giliran sebelumnya dalam riwayat percakapan.

2966 3003 

2967```text theme={null}3004```text theme={null}

2968API Error: 400 ... Invalid `data` in `redacted_thinking` block3005API Error: 400 ... Invalid `data` in `redacted_thinking` block

2969```3006```

2970 3007 

2971Claude Code meninggalkan thinking percakapan sebelumnya dari permintaan dan mencoba ulang sekali, jadi sesi berlanjut tanpa menampilkan kesalahan. Sebelum v2.1.282, Claude Code menyimpan blok yang ditolak, dan setiap giliran berikutnya gagal dengan kesalahan yang sama.3008Claude Code tidak menyertakan thinking sebelumnya dari percakapan dalam permintaan dan mencoba ulang sekali, sehingga sesi berlanjut tanpa menampilkan kesalahan. Sebelum v2.1.282, Claude Code mempertahankan blok yang ditolak, dan setiap giliran berikutnya gagal dengan kesalahan yang sama.

2972 3009 

2973**Yang harus dilakukan:**3010**Yang harus dilakukan:**

2974 3011 

2975* Jika Anda di v2.1.281 atau lebih awal dan setiap giliran gagal dengan kesalahan ini, jalankan `claude update` dan lanjutkan sesi3012* Jika Anda menggunakan v2.1.281 atau yang lebih lama dan setiap giliran gagal dengan kesalahan ini, jalankan `claude update` dan lanjutkan sesi

2976* Jika kesalahan berlanjut, jalankan `/clear` untuk memulai percakapan yang tidak membawa blok3013* Jika kesalahan tetap ada, jalankan `/clear` untuk memulai percakapan yang tidak membawa blok tersebut

2977 3014 

2978### Konten tool yang tidak didukung dihapus3015### Unsupported tool content removed

2979 3016 

2980Ketika Claude Code terhubung langsung ke Anthropic API dan memuat atau melihat pratinjau sesi yang disimpan, Claude Code menghapus konten tool yang Anthropic API tidak terima dan meninggalkan baris ini di tempat konten yang dihapus berada di antara dua thinking block:3017Ketika Claude Code terhubung langsung ke Anthropic API dan memuat atau menampilkan pratinjau sesi tersimpan, Claude Code menghapus konten tool yang tidak diterima Anthropic API dan meninggalkan baris ini di tempat konten yang dihapus berada di antara dua thinking block:

2981 3018 

2982```text theme={null}3019```text theme={null}

2983[Unsupported tool content removed]3020[Unsupported tool content removed]

2984```3021```

2985 3022 

2986Konten seperti itu mencapai file sesi ketika sesuatu selain Anthropic API menjawab dalam format API, biasanya proxy pihak ketiga yang diatur melalui [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/id/env-vars) yang menerjemahkan panggilan tool penyedia lain. Claude Code menghapusnya hanya ketika sesi terhubung langsung ke Anthropic API, dan memuat riwayat yang disimpan apa adanya ketika sesi berjalan melalui proxy atau di penyedia lain. Sebelum v2.1.246, Claude Code mengirim penggunaan tool dan hasilnya kembali ke API, dan setiap giliran sesi yang dilanjutkan gagal dengan kesalahan 400 seperti `messages.1.content.0.server_tool_use.name: Input should be 'web_search', 'web_fetch', ...`.3023Konten seperti itu masuk ke file sesi ketika sesuatu selain Anthropic API menjawab dalam format API, biasanya proxy pihak ketiga yang diatur melalui [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/id/env-vars) yang menerjemahkan panggilan tool dari penyedia lain. Claude Code menghapusnya hanya ketika sesi terhubung langsung ke Anthropic API, dan memuat riwayat tersimpan apa adanya ketika sesi berjalan melalui proxy atau pada penyedia lain. Sebelum v2.1.246, Claude Code mengirim tool use dan hasilnya kembali ke API, dan setiap giliran sesi yang dilanjutkan gagal dengan kesalahan 400 seperti `messages.1.content.0.server_tool_use.name: Input should be 'web_search', 'web_fetch', ...`.

2987 3024 

2988**Yang harus dilakukan:**3025**Yang harus dilakukan:**

2989 3026 

2990* Tidak ada yang diperlukan ketika Anda melihat baris placeholder. Sesi berlanjut tanpa konten yang dihapus.3027* Tidak ada yang perlu dilakukan ketika Anda melihat baris placeholder tersebut. Sesi berlanjut tanpa konten yang dihapus.

2991* Jika setiap giliran sesi yang dilanjutkan gagal dengan kesalahan 400 sebagai gantinya, jalankan `claude update` dan lanjutkan sesi lagi. Versi sebelum v2.1.246 tidak menghapus konten.3028* Jika setiap giliran sesi yang dilanjutkan justru gagal dengan kesalahan 400, jalankan `claude update` dan lanjutkan sesi lagi. Versi sebelum v2.1.246 tidak menghapus konten tersebut.

2992 3029 

2993### role 'system' harus mendahului pesan 'assistant'3030### role 'system' must precede an 'assistant' message

2994 3031 

2995API menolak permintaan dengan 400 karena pesan sistem berada pada posisi dalam percakapan yang tidak diterimanya:3032API menolak permintaan dengan 400 karena sebuah pesan sistem berada di posisi dalam percakapan yang tidak diterimanya:

2996 3033 

2997```text theme={null}3034```text theme={null}

2998API Error: 400 messages.6: role 'system' must precede an 'assistant' message or end the array; ...3035API Error: 400 messages.6: role 'system' must precede an 'assistant' message or end the array; ...

2999```3036```

3000 3037 

3001Claude Code mengirim beberapa teks pengingat dan lampiran-nya sebagai pesan sistem di dalam percakapan. Ketika API menolak posisi salah satunya, Claude Code mencoba ulang permintaan sekali dengan teks itu dikirim sebagai pesan pengguna biasa sebagai gantinya. Pesan penempatan serupa dari API, seperti `use the top-level 'system' parameter for the initial system prompt`, mendapatkan pemulihan yang sama.3038Claude Code mengirim sebagian teks pengingat dan lampirannya sebagai pesan sistem di dalam percakapan. Ketika API menolak posisi salah satunya, Claude Code mencoba ulang permintaan sekali dengan teks tersebut dikirim sebagai pesan pengguna biasa. Kata-kata penempatan sejenis dari API, seperti `use the top-level 'system' parameter for the initial system prompt`, mendapatkan pemulihan yang sama.

3002 3039 

3003Ketika kesalahan muncul, pesan sistem yang ditolak bukan yang Claude Code dapat hapus. Itu biasanya berarti proxy atau [gateway LLM](https://code.claude.com/docs/id/llm-gateway) antara Claude Code dan API menambahkan pesan sistemnya sendiri.3040Ketika kesalahan tetap muncul, pesan sistem yang ditolak bukanlah pesan yang dapat dihapus Claude Code. Hal itu biasanya berarti proxy atau [LLM gateway](https://code.claude.com/docs/id/llm-gateway) di antara Claude Code dan API menambahkan pesan sistemnya sendiri.

3004 3041 

3005**Yang harus dilakukan:**3042**Yang harus dilakukan:**

3006 3043 

3007* Jika kesalahan berulang pada setiap giliran di belakang proxy atau gateway yang dikonfigurasi melalui [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/id/env-vars), terhubung tanpa proxy untuk mengkonfirmasi sumber, dan laporkan kesalahan ke siapa pun yang mengoperasikannya3044* Jika kesalahan berulang di setiap giliran di balik proxy atau gateway yang dikonfigurasi melalui [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/id/env-vars), hubungkan tanpa proxy untuk memastikan sumbernya, dan laporkan kesalahan kepada pihak yang mengoperasikannya

3008* Jalankan `/clear` untuk memulai percakapan segar. Jika kesalahan kembali di sana juga, penyebabnya ada di jalur permintaan, bukan di percakapan yang disimpan.3045* Jalankan `/clear` untuk memulai percakapan baru. Jika kesalahan juga muncul kembali di sana, penyebabnya ada di jalur permintaan, bukan di percakapan tersimpan.

3009 3046 

3010Sebelum v2.1.280, Claude Code tidak mengenali pesan ini, jadi kesalahan juga muncul ketika pesan sistem yang ditolak adalah yang Claude Code sendiri kirim, dan setiap giliran berikutnya dalam percakapan gagal dengan cara yang sama.3047Sebelum v2.1.280, Claude Code tidak mengenali kata-kata ini, sehingga kesalahan juga muncul ketika pesan sistem yang ditolak adalah pesan yang dikirim Claude Code sendiri, dan setiap giliran berikutnya dalam percakapan gagal dengan cara yang sama.

3011 3048 

3012### Encrypted\_content tidak valid dalam blok search\_result3049### Invalid encrypted\_content in search\_result block

3013 3050 

3014API menolak permintaan dengan 400 karena riwayat percakapan menyimpan konten pencarian web yang dihosting yang tidak dapat didekripsi. Pesan menyebutkan bidang yang tidak dapat dibacanya:3051API menolak permintaan dengan 400 karena riwayat percakapan memuat konten web search yang di-hosting yang tidak dapat didekripsinya. Kata-katanya menyebutkan field yang tidak dapat dibacanya:

3015 3052 

3016```text theme={null}3053```text theme={null}

3017API Error: 400 ... Invalid `encrypted_content` in `search_result` block3054API Error: 400 ... Invalid `encrypted_content` in `search_result` block


3020API Error: 400 ... Invalid `encrypted_stdout` in `encrypted_code_execution_result` block3057API Error: 400 ... Invalid `encrypted_stdout` in `encrypted_code_execution_result` block

3021```3058```

3022 3059 

3023Hasil dari [tool pencarian web yang dihosting](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool) API membawa bidang terenkripsi yang hanya dapat dibaca oleh API. Pesan `encrypted_stdout` menyebutkan output program eksekusi kode yang dihosting yang membaca hasil seperti itu; output tersebut juga dienkripsi oleh API. API menolak permintaan yang memutar ulang konten yang tidak dapat didekripsi, seperti konten yang diproduksi untuk organisasi berbeda.3060Hasil dari [web search tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool) yang di-hosting API membawa field terenkripsi yang hanya dapat dibaca API. Kata-kata `encrypted_stdout` menyebutkan output dari program code execution yang di-hosting yang membaca hasil tersebut, yang juga dienkripsi API. API menolak permintaan yang memutar ulang konten yang tidak dapat didekripsinya, seperti konten yang dihasilkan untuk organisasi lain.

3024 3061 

3025[Tool WebSearch](https://code.claude.com/docs/id/tools-reference.md#websearch-tool-behavior) Claude Code sendiri mencatat hasil pencarian sebagai teks biasa, jadi blok ini biasanya mencapai percakapan melalui proxy atau [gateway LLM](https://code.claude.com/docs/id/llm-gateway) yang menjalankan pencarian web yang dihosting itu sendiri.3062[Tool WebSearch](https://code.claude.com/docs/id/tools-reference.md#websearch-tool-behavior) milik Claude Code sendiri mencatat hasil pencarian sebagai teks biasa, sehingga blok-blok ini biasanya masuk ke percakapan melalui proxy atau [LLM gateway](https://code.claude.com/docs/id/llm-gateway) yang menjalankan web search yang di-hosting itu sendiri.

3026 3063 

3027Untuk tiga pesan pencarian web, Claude Code meninggalkan panggilan pencarian, hasil, dan kutipan dari apa yang dikirimnya dan mencoba ulang permintaan sekali, jadi sesi berlanjut tanpa menampilkan kesalahan. Pesan `encrypted_stdout` tidak memiliki pemulihan seperti itu, jadi pesan itu masih mencapai Anda. Sebelum v2.1.282, Claude Code menyimpan blok pencarian web yang ditolak juga, dan setiap giliran berikutnya dan `/compact` gagal dengan cara yang sama.3064Untuk ketiga kata-kata web search, Claude Code tidak menyertakan panggilan pencarian, hasil, dan kutipan dalam apa yang dikirimnya dan mencoba ulang permintaan sekali, sehingga sesi berlanjut tanpa menampilkan kesalahan. Kata-kata `encrypted_stdout` tidak memiliki pemulihan seperti itu, sehingga pesan tersebut tetap sampai kepada Anda. Sebelum v2.1.282, Claude Code juga mempertahankan blok web search yang ditolak, dan setiap giliran berikutnya serta `/compact` gagal dengan cara yang sama.

3028 3065 

3029**Yang harus dilakukan:**3066**Yang harus dilakukan:**

3030 3067 

3031* Jika Anda di v2.1.281 atau lebih awal dan setiap giliran gagal dengan salah satu pesan pencarian web, jalankan `claude update` dan lanjutkan sesi3068* Jika Anda menggunakan v2.1.281 atau yang lebih lama dan setiap giliran gagal dengan salah satu kata-kata web search, jalankan `claude update` dan lanjutkan sesi

3032* Jika kesalahan berlanjut, atau pesan menyebutkan `encrypted_stdout`, jalankan `/rewind` untuk mundur ke checkpoint sebelum giliran yang menambahkan konten, atau jalankan `/clear` untuk memulai percakapan yang tidak membawanya3069* Jika kesalahan tetap ada, atau pesan menyebutkan `encrypted_stdout`, jalankan `/rewind` untuk mundur ke checkpoint sebelum giliran yang menambahkan konten tersebut, atau jalankan `/clear` untuk memulai percakapan yang tidak membawanya

3033* Jika Anda menjalankan Claude Code di belakang proxy atau gateway, laporkan kesalahan ke siapa pun yang mengoperasikannya3070* Jika Anda menjalankan Claude Code di balik proxy atau gateway, laporkan kesalahan kepada pihak yang mengoperasikannya

3034 3071 

3035### Penolakan Kebijakan Penggunaan3072### Penolakan Usage Policy

3036 3073 

3037API menolak untuk merespons karena konten dalam percakapan memicu pemeriksaan [Kebijakan Penggunaan](https://www.anthropic.com/legal/aup).3074API menolak untuk merespons karena konten dalam percakapan memicu pemeriksaan [Usage Policy](https://www.anthropic.com/legal/aup).

3038 3075 

3039Jika pesan menyertakan baris `` Details: `[reasoning_extraction]` ``, lihat [Pengaman menandai permintaan untuk penalaran Claude](#safeguards-flagged-a-request-for-claudes-reasoning).3076Jika pesan menyertakan baris `` Details: `[reasoning_extraction]` ``, lihat [Safeguard menandai permintaan untuk penalaran Claude](#safeguards-flagged-a-request-for-claudes-reasoning).

3040 3077 

3041Pesan menyertakan ID Permintaan dan ID Pesan yang dapat Anda kutip kepada dukungan jika Anda yakin penolakan tidak benar.3078Pesan tersebut menyertakan Request ID dan Message ID yang dapat Anda sebutkan kepada tim dukungan jika Anda yakin penolakan tersebut keliru.

3042 3079 

3043```text theme={null}3080```text theme={null}

3044API Error: Opus 4.6 can't help with this. Start a new session to continue.3081API Error: Opus 4.6 can't help with this. Start a new session to continue.


3046Send feedback with /feedback or learn more: https://www.anthropic.com/legal/aup3083Send feedback with /feedback or learn more: https://www.anthropic.com/legal/aup

3047```3084```

3048 3085 

3049Pesan menyebutkan model yang menolak, atau `Claude` ketika tidak ada model yang dicatat.3086Pesan tersebut menyebutkan nama model yang menolak, atau `Claude` jika tidak ada model yang tercatat.

3050 3087 

3051Pemeriksaan mengevaluasi seluruh percakapan, bukan hanya prompt terbaru Anda, jadi mengirim pesan baru dalam sesi yang sama biasanya memicu ulang penolakan yang sama. Hal yang sama berlaku setelah keluar dan membuka kembali sesi dengan `--continue` atau `--resume`, karena transkrip di disk masih berisi konten yang memicu. Di [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/id/google-vertex-ai.md), dan [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md), pesan ini juga mencakup permintaan yang ditandai oleh langkah-langkah keselamatan model sebagai topik keamanan siber. Lihat [Langkah-langkah keselamatan menandai topik keamanan siber](#safety-measures-flagged-a-cybersecurity-topic).3088Pemeriksaan ini mengevaluasi seluruh percakapan, bukan hanya prompt terakhir Anda, sehingga mengirim pesan baru dalam sesi yang sama biasanya akan memicu kembali penolakan yang sama. Hal yang sama berlaku setelah keluar dan membuka kembali sesi dengan `--continue` atau `--resume`, karena transkrip di disk masih berisi konten pemicunya. Di [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/id/google-vertex-ai.md), dan [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md), pesan ini juga mencakup permintaan yang ditandai oleh langkah-langkah keamanan model sebagai topik keamanan siber. Lihat [Langkah-langkah keamanan menandai topik keamanan siber](#safety-measures-flagged-a-cybersecurity-topic).

3052 3089 

3053Sebelum v2.1.219, pesan berbunyi `Claude Code is unable to respond to this request, which appears to violate our Usage Policy (https://www.anthropic.com/legal/aup). Please double press esc to edit your last message or start a new session for Claude Code to assist with a different task.`3090Sebelum v2.1.219, pesan tersebut berbunyi `Claude Code is unable to respond to this request, which appears to violate our Usage Policy (https://www.anthropic.com/legal/aup). Please double press esc to edit your last message or start a new session for Claude Code to assist with a different task.`

3054 3091 

3055**Yang harus dilakukan:**3092**Yang harus dilakukan:**

3056 3093 

3057* Tekan Esc dua kali atau jalankan `/rewind` untuk mundur ke checkpoint sebelum giliran yang memicu penolakan, lalu ubah susunan kata atau ambil pendekatan berbeda. Lihat [Checkpointing](https://code.claude.com/docs/id/checkpointing.md).3094* Tekan Esc dua kali atau jalankan `/rewind` untuk kembali ke checkpoint sebelum giliran yang memicu penolakan, lalu ubah susunan kata atau gunakan pendekatan yang berbeda. Lihat [Checkpointing](https://code.claude.com/docs/id/checkpointing.md).

3058* Jika Anda tidak dapat mengidentifikasi giliran mana yang menyebabkannya, jalankan `/clear` untuk memulai percakapan segar dalam proyek yang sama. Percakapan sebelumnya Anda disimpan di disk dan tetap tersedia di `/resume`.3095* Jika Anda tidak dapat mengidentifikasi giliran mana yang menyebabkannya, jalankan `/clear` untuk memulai percakapan baru dalam proyek yang sama. Percakapan Anda sebelumnya tetap tersimpan di disk dan tetap tersedia di `/resume`.

3059* Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) (`-p`), di mana rewind tidak tersedia, coba lagi dengan prompt yang diubah dalam sesi baru tanpa `--continue`. Pemeriksaan kebijakan bervariasi menurut model, jadi beralih ke model berbeda dengan `--model` juga dapat menyelesaikan penolakan dalam beberapa kasus.3096* Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) (`-p`), di mana rewind tidak tersedia, coba ulang dengan prompt yang disusun ulang dalam sesi baru tanpa `--continue`. Pemeriksaan kebijakan berbeda-beda untuk setiap model, sehingga beralih ke model lain dengan `--model` juga dapat mengatasi penolakan dalam beberapa kasus.

3060 3097 

3061### Langkah-langkah keselamatan menandai topik keamanan siber3098### Langkah-langkah keamanan menandai topik keamanan siber

3062 3099 

3063Langkah-langkah keselamatan model menandai konten dalam percakapan sebagai topik keamanan siber. Pesan menyebutkan model yang menandai permintaan:3100Langkah-langkah keamanan model menandai konten dalam percakapan sebagai topik keamanan siber. Pesan tersebut menyebutkan nama model yang menandai permintaan:

3064 3101 

3065```text theme={null}3102```text theme={null}

3066API Error: Opus 4.8's safeguards flagged this message. Our intentionally broad safeguards allow us to deliver more capabilities faster, but can sometimes flag legitimate cybersecurity work. Send feedback with /feedback or learn more: https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude3103API Error: Opus 4.8's safeguards flagged this message. Our intentionally broad safeguards allow us to deliver more capabilities faster, but can sometimes flag legitimate cybersecurity work. Send feedback with /feedback or learn more: https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude

3067```3104```

3068 3105 

3069Jika pesan menyertakan baris `` Details: `[reasoning_extraction]` ``, lihat [Pengaman menandai permintaan untuk penalaran Claude](#safeguards-flagged-a-request-for-claudes-reasoning).3106Jika pesan menyertakan baris `` Details: `[reasoning_extraction]` ``, lihat [Safeguard menandai permintaan untuk penalaran Claude](#safeguards-flagged-a-request-for-claudes-reasoning).

3070 3107 

3071Pesan ini menautkan ke [Program Verifikasi Siber](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude), yang memberikan akses untuk pekerjaan keamanan siber yang sah. Model dengan [fallback model otomatis](https://code.claude.com/docs/id/model-config.md#automatic-model-fallback) menampilkan pesan berbeda, tanpa tautan ini; di Opus 5.5 dan Sonnet 5.5 pesan itu dibuka dengan `<model>'s safeguards flagged this session`. Bagian tersebut juga membahas kapan Claude Code beralih model sebagai gantinya.3108Pesan ini menautkan ke [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude), yang memberikan akses untuk pekerjaan keamanan siber yang sah. Model dengan [fallback model otomatis](https://code.claude.com/docs/id/model-config.md#automatic-model-fallback) menampilkan pesan yang berbeda, tanpa tautan ini; pada Opus 5.5 dan Sonnet 5.5 pesan tersebut diawali dengan `<model>'s safeguards flagged this session`. Bagian tersebut juga menjelaskan kapan Claude Code beralih model sebagai gantinya.

3072 3109 

3073Di [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/id/google-vertex-ai.md), dan [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md), penandaan keamanan siber menghasilkan pesan [Penolakan Kebijakan Penggunaan](#usage-policy-refusal) sebagai gantinya.3110Di [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/id/google-vertex-ai.md), dan [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md), penandaan keamanan siber menghasilkan pesan [penolakan Usage Policy](#usage-policy-refusal) sebagai gantinya.

3074 3111 

3075**Yang harus dilakukan:**3112**Yang harus dilakukan:**

3076 3113 

3077* Jika pekerjaan Anda memerlukan konten ini, ajukan permohonan akses melalui [Program Verifikasi Siber](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude)3114* Jika pekerjaan Anda memerlukan konten ini, ajukan akses melalui [Cyber Verification Program](https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude)

3078* Jika permintaan Anda bukan tentang topik keamanan siber, jalankan `/feedback` untuk melaporkan positif palsu3115* Jika permintaan Anda bukan tentang topik keamanan siber, jalankan `/feedback` untuk melaporkan positif palsu tersebut

3079* Untuk terus bekerja dalam sesi yang sama, tekan Esc dua kali atau jalankan `/rewind` untuk mundur ke checkpoint sebelum giliran yang memicu penandaan, lalu ambil pendekatan berbeda. Lihat [Checkpointing](https://code.claude.com/docs/id/checkpointing.md).3116* Untuk tetap bekerja dalam sesi yang sama, tekan Esc dua kali atau jalankan `/rewind` untuk kembali ke checkpoint sebelum giliran yang memicu penandaan, lalu gunakan pendekatan yang berbeda. Lihat [Checkpointing](https://code.claude.com/docs/id/checkpointing.md).

3080 3117 

3081Jika pesan yang Anda lihat memiliki susunan kata seperti salah satu dari berikut ini, itu adalah penandaan yang sama pada versi Claude Code yang lebih lama:3118Jika pesan yang Anda lihat justru disusun seperti salah satu dari berikut ini, itu adalah penandaan yang sama pada versi Claude Code yang lebih lama:

3082 3119 

3083* Dari v2.1.219 hingga v2.1.296, pesan tersebut juga dapat menyertakan `Apply to the Cyber Verification Program to reduce these interruptions.` sebelum kalimat penutupnya3120* Dari v2.1.219 hingga v2.1.296, pesan tersebut juga dapat menyertakan `Apply to the Cyber Verification Program to reduce these interruptions.` sebelum kalimat penutupnya

3084* Dari v2.1.203 hingga v2.1.218, pesan tersebut berbunyi `<model> has safety measures that flagged this message for a cybersecurity topic. To learn about the Cyber Verification Program and apply for access, visit our help center:` diikuti oleh tautan pusat bantuan yang sama. Dalam sesi interaktif, pesan tersebut dilanjutkan dengan `If you were not engaging in a cybersecurity topic, please send feedback via /feedback.`3121* Dari v2.1.203 hingga v2.1.218, pesan tersebut berbunyi `<model> has safety measures that flagged this message for a cybersecurity topic. To learn about the Cyber Verification Program and apply for access, visit our help center:` diikuti oleh tautan pusat bantuan yang sama. Dalam sesi interaktif, pesan tersebut dilanjutkan dengan `If you were not engaging in a cybersecurity topic, please send feedback via /feedback.`

3085* Sebelum v2.1.203, pesan tersebut berbunyi `<model>'s safeguards flagged this message for a cybersecurity topic. If your work requires this access, you can apply for an exemption:` diikuti oleh tautan formulir pengecualian3122* Sebelum v2.1.203, pesan tersebut berbunyi `<model>'s safeguards flagged this message for a cybersecurity topic. If your work requires this access, you can apply for an exemption:` diikuti oleh tautan formulir pengecualian

3086 3123 

3087### Pengaman menandai permintaan untuk penalaran Claude3124### Safeguard menandai permintaan untuk penalaran Claude

3088 3125 

3089API menolak permintaan karena pengaman menandainya sebagai meminta model untuk mereproduksi penalaran internalnya dalam respons. API menamai [kategori penolakan](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response) ini `reasoning_extraction`, dan pesan penolakan menyertakan baris ini:3126API menolak permintaan tersebut karena safeguard menandainya sebagai permintaan agar model mereproduksi penalaran internalnya dalam respons. API menamai [kategori penolakan](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#refusal-response) ini `reasoning_extraction`, dan pesan penolakan menyertakan baris ini:

3090 3127 

3091```text theme={null}3128```text theme={null}

3092Details: `[reasoning_extraction]`3129Details: `[reasoning_extraction]`


3096 3133 

3097**Yang harus dilakukan:**3134**Yang harus dilakukan:**

3098 3135 

3099* Hapus atau ubah susunan kata instruksi apa pun yang meminta Claude menuliskan thinking atau penalarannya kata demi kata atau dalam format tetap, seperti bagian `<thinking>`, bagian scratchpad, atau bidang `reasoning` dalam output JSON. Instruksi tersebut dapat berada dalam prompt Anda atau dalam kustomisasi yang dimuat Claude Code bersamanya, seperti CLAUDE.md, skill, prompt subagent, gaya output, atau deskripsi tool MCP.3136* Hapus atau ubah susunan kata dari instruksi apa pun yang meminta Claude menuliskan thinking atau penalarannya secara verbatim atau dalam format tetap, seperti bagian `<thinking>`, bagian scratchpad, atau field `reasoning` dalam output JSON. Instruksi tersebut dapat berada di prompt Anda atau dalam kustomisasi yang dimuat Claude Code bersamanya, seperti CLAUDE.md, skill, prompt subagent, gaya output, atau deskripsi tool MCP.

3100* Untuk memeriksa apakah kustomisasi adalah pemicunya, jalankan [`claude --safe-mode`](https://code.claude.com/docs/id/cli-reference#cli-flags) di terminal Anda untuk memulai sesi dengan kustomisasi dinonaktifkan, lalu kirim prompt yang sama3137* Untuk memeriksa apakah suatu kustomisasi menjadi pemicunya, jalankan [`claude --safe-mode`](https://code.claude.com/docs/id/cli-reference#cli-flags) di terminal Anda untuk memulai sesi dengan kustomisasi dinonaktifkan, lalu kirim prompt yang sama

3101* Setelah Anda mengubah kustomisasi, mulai sesi baru3138* Setelah Anda mengubah kustomisasi, mulai sesi baru

3102* Untuk mengubah susunan kata prompt yang sudah Anda kirim, lihat [Rewind dan rangkum](https://code.claude.com/docs/id/checkpointing.md#rewind-and-summarize)3139* Untuk mengubah susunan kata dari prompt yang sudah Anda kirim, lihat [Rewind dan ringkas](https://code.claude.com/docs/id/checkpointing.md#rewind-and-summarize)

3103* Anda masih dapat meminta Claude menjelaskan jawabannya. Minta penjelasan singkat, bukti di balik suatu hasil, atau ringkasan tindakan yang diambilnya. Untuk membaca ringkasan pemikiran Claude, lihat [`showThinkingSummaries`](https://code.claude.com/docs/id/settings-reference#showthinkingsummaries).3140* Anda tetap dapat meminta Claude untuk menjelaskan jawabannya. Mintalah penjelasan singkat, bukti di balik suatu hasil, atau ringkasan tindakan yang telah diambilnya. Untuk membaca ringkasan pemikiran Claude, lihat [`showThinkingSummaries`](https://code.claude.com/docs/id/settings-reference#showthinkingsummaries).

3104* Untuk contoh lainnya, dan apa yang harus dilakukan jika permintaan yang sudah diubah susunan katanya masih ditolak, lihat [Simpan penalaran dalam thinking block](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#keep-reasoning-in-thinking-blocks)3141* Untuk contoh lainnya, dan apa yang harus dilakukan jika permintaan yang telah diubah susunan katanya tetap ditolak, lihat [Keep reasoning in thinking blocks](https://platform.claude.com/docs/en/build-with-claude/refusals-and-fallback#keep-reasoning-in-thinking-blocks)

3105 3142 

3106### Output blocked by content filtering policy3143### Output blocked by content filtering policy

3107 3144 


3113 3150 

3114**Yang harus dilakukan:**3151**Yang harus dilakukan:**

3115 3152 

3116* Ubah susunan kata pesan terakhir Anda atau ambil pendekatan berbeda3153* Ubah susunan kata pesan terakhir Anda atau gunakan pendekatan yang berbeda

3117* Untuk mundur ke checkpoint sebelum giliran yang memicu pemblokiran, tekan Esc dua kali atau jalankan `/rewind`. Lihat [Checkpointing](https://code.claude.com/docs/id/checkpointing.md)3154* Untuk kembali ke checkpoint sebelum giliran yang memicu pemblokiran, tekan Esc dua kali atau jalankan `/rewind`. Lihat [Checkpointing](https://code.claude.com/docs/id/checkpointing.md)

3118 3155 

3119## Kesalahan baris perintah3156## Kesalahan baris perintah

3120 3157 


3302 3339 

3303### Configuration error in \~/.claude.json3340### Configuration error in \~/.claude.json

3304 3341 

3305Claude Code tidak dapat mem-parse `~/.claude.json`, file yang menyimpan detail akun, server MCP, dan status per proyek Anda. File Anda tidak berubah. Startup [non-interaktif](https://code.claude.com/docs/id/headless.md) seperti `claude -p` keluar dengan exit code 1 setiap kali hingga Anda memperbaiki file tersebut.3342Claude Code tidak dapat mem-parse `~/.claude.json`, file yang menyimpan detail akun Anda, server MCP, dan status per proyek. Startup [non-interaktif](https://code.claude.com/docs/id/headless.md) seperti `claude -p` keluar dengan exit code 1.

3306 3343 

3307Ketika Claude Code menemukan [cadangan](https://code.claude.com/docs/id/claude-directory.md#cleaned-up-automatically), output menyebutkannya dan mencetak baris `cp` yang menyalinnya kembali:3344Ketika Claude Code menemukan [cadangan](https://code.claude.com/docs/id/claude-directory.md#cleaned-up-automatically), output menyebutkannya dan mencetak baris `cp` yang menyalinnya kembali:

3308 3345 


3317 3354 

3318**Yang perlu dilakukan:**3355**Yang perlu dilakukan:**

3319 3356 

3320* **Output memiliki baris `cp`**: jalankan baris tersebut di terminal Anda. Di Windows, jalankan di PowerShell. Baris itu mengganti file yang rusak dengan cadangan, yaitu versi sebelumnya dari `~/.claude.json`.3357* **Output memiliki baris `cp`**: jalankan baris tersebut di terminal Anda. Di Windows, jalankan di PowerShell.

3321* **Output tidak memiliki baris `cp`, atau error muncul kembali setelah Anda menjalankannya**: perbaiki JSON di `~/.claude.json`, salin file `.claude.json.backup.<timestamp>` lain dari [`~/.claude/backups/`](https://code.claude.com/docs/id/claude-directory#cleaned-up-automatically) untuk menimpanya jika ada, atau ganti namanya. Tanpa file di `~/.claude.json`, Claude Code dimulai dengan pengaturan default dan tanpa apa pun yang sebelumnya disimpan file tersebut.3358* **Output tidak memiliki baris `cp`, atau kesalahan muncul kembali setelah Anda menjalankannya**: jika `~/.claude.json` masih berisi konfigurasi Anda, perbaiki JSON-nya. Jika tidak bisa, salin file `.claude.json.backup.<timestamp>` lain dari [`~/.claude/backups/`](https://code.claude.com/docs/id/claude-directory#cleaned-up-automatically) untuk menimpanya jika ada, atau ganti namanya. Tanpa file di `~/.claude.json`, Claude Code dimulai dengan pengaturan default dan tanpa isi yang dimuat file tersebut.

3322 3359* **`~/.claude.json` tidak lagi berisi konfigurasi Anda**: temukan file `.claude.json.corrupted.<timestamp>` yang masih berisi konfigurasi tersebut, di [`~/.claude/backups/`](https://code.claude.com/docs/id/claude-directory#cleaned-up-automatically) atau di direktori home Anda. Perbaiki JSON-nya, lalu salin untuk menimpa `~/.claude.json`. Jika Anda tidak dapat menemukan atau memperbaikinya, coba langkah yang sama dengan file `.claude.json.backup.<timestamp>` yang berisi konfigurasi Anda. Jika tidak ada yang berisi, ganti nama `~/.claude.json` dan tambahkan kembali server MCP Anda dengan [`claude mcp add`](https://code.claude.com/docs/id/mcp#installing-mcp-servers).

3323Sebelum v2.1.318, Anda mendapati nilai default di `~/.claude.json` setelah startup non-interaktif mencetak error ini, sehingga startup berikutnya berjalan tanpa konfigurasi Anda.

3324 3360 

3325### Claude configuration file was empty and no backup holds anything3361### Claude configuration file was empty and no backup holds anything

3326 3362 


3381 3417 

3382Sebelum v2.1.309, Claude Code hanya mencetak teks kesalahan dari sistem operasi ketika volume penuh atau kuota Anda habis. Contohnya adalah `ENOSPC: no space left on device, mkdir '/tmp/claude-501'`, dan langkah-langkah yang sama berlaku.3418Sebelum v2.1.309, Claude Code hanya mencetak teks kesalahan dari sistem operasi ketika volume penuh atau kuota Anda habis. Contohnya adalah `ENOSPC: no space left on device, mkdir '/tmp/claude-501'`, dan langkah-langkah yang sama berlaku.

3383 3419 

3420### Claude Code could not save because the disk is full

3421 

3422Baris ini di stderr setelah run [`claude -p`](https://code.claude.com/docs/id/headless) berarti disk penuh atau kuota disk Anda habis, sehingga Claude Code tidak dapat menyimpan semua hal dari run tersebut:

3423 

3424```text wrap theme={null}

3425Error: Claude Code could not save all of this session's transcript under /Users/you/.claude because the disk is full (ENOSPC). If you resume this session, part of the conversation may be missing. Free up space on that disk before the next run.

3426```

3427 

3428Dengan output teks atau `json`, run keluar dengan kode 1, dan jawaban sudah dicetak. Dengan output `stream-json`, run mempertahankan exit code biasanya, dan jawaban tetap diterima.

3429 

3430**Yang harus dilakukan:**

3431 

3432* **`the disk is full (ENOSPC)`**: sebelum run berikutnya, kosongkan ruang pada disk yang menyimpan path di pesan

3433* **`your disk quota is used up (EDQUOT)`**: sebelum run berikutnya, kosongkan ruang atau minta kuota yang lebih besar

3434 

3384### Direktori tidak dapat di-resolve ke lokasi sebenarnya3435### Direktori tidak dapat di-resolve ke lokasi sebenarnya

3385 3436 

3386Anda menjalankan `/add-dir` untuk subdirektori dari direktori kerja Anda, dan Claude Code tidak dapat me-resolve direktori tersebut ke lokasi sebenarnya.3437Anda menjalankan `/add-dir` untuk subdirektori dari direktori kerja Anda, dan Claude Code tidak dapat me-resolve direktori tersebut ke lokasi sebenarnya.


3448* **`Error: Workspace not trusted. <folder> is your home directory`**: karena kepercayaan untuk direktori home Anda tidak pernah disimpan, menjalankan `claude` di sana terlebih dahulu tidak dapat membantu. Jalankan `claude ultrareview` dari direktori proyek sebagai gantinya, setelah menjalankan `claude` di sana sekali untuk menerima dialog kepercayaan, atau tambahkan `--trust-workspace`.3499* **`Error: Workspace not trusted. <folder> is your home directory`**: karena kepercayaan untuk direktori home Anda tidak pernah disimpan, menjalankan `claude` di sana terlebih dahulu tidak dapat membantu. Jalankan `claude ultrareview` dari direktori proyek sebagai gantinya, setelah menjalankan `claude` di sana sekali untuk menerima dialog kepercayaan, atau tambahkan `--trust-workspace`.

3449* **`No answer in time.` diikuti `Error: Workspace not trusted`**: pertanyaan `Trust <folder>? [y/N]` tidak dijawab selama 5 menit. Jalankan `claude ultrareview` lagi dan jawab pertanyaan tersebut.3500* **`No answer in time.` diikuti `Error: Workspace not trusted`**: pertanyaan `Trust <folder>? [y/N]` tidak dijawab selama 5 menit. Jalankan `claude ultrareview` lagi dan jawab pertanyaan tersebut.

3450* **`Ultrareview did not start: <folder> is not trusted`**: Anda menolak pada pertanyaan `Trust <folder>? [y/N]`, misalnya dengan menjawab `n` atau menekan Enter. Untuk memulai review, jalankan `claude ultrareview` lagi dan jawab `y`.3501* **`Ultrareview did not start: <folder> is not trusted`**: Anda menolak pada pertanyaan `Trust <folder>? [y/N]`, misalnya dengan menjawab `n` atau menekan Enter. Untuk memulai review, jalankan `claude ultrareview` lagi dan jawab `y`.

3451* **``Ultrareview did not start: `--trust-workspace` takes no value``**: sesuatu selain flag mengikuti `--trust-workspace`, seperti nomor PR atau `false`. Jika Anda tidak mempercayai folder tersebut, jangan sertakan flag tersebut. Untuk mempercayainya untuk run ini, letakkan nomor PR atau branch dasar sebelum flag: `claude ultrareview 1234 --trust-workspace`.3502* **``Ultrareview did not start: `--trust-workspace` takes no value``**: sesuatu selain flag mengikuti `--trust-workspace`, seperti nomor PR atau `false`. Jika Anda tidak memercayai folder tersebut, jangan sertakan flag. Untuk memercayainya untuk eksekusi ini, letakkan nomor PR atau branch dasar sebelum flag: `claude ultrareview 1234 --trust-workspace`.

3452 3503 

3453Sebelum v2.1.309, `claude ultrareview` tidak menerima `--trust-workspace`.3504Sebelum v2.1.309, `claude ultrareview` tidak menerima `--trust-workspace`.

3454 3505 

3506### Remote Control tidak dimulai karena sebuah pertanyaan tidak mendapat jawaban

3507 

3508Pesan ini berarti [`claude remote-control`](https://code.claude.com/docs/id/remote-control) mengajukan pertanyaan first-run yang dikutip dalam pesan dan tidak mendapat jawaban:

3509 

3510```text theme={null}

3511Remote Control did not start: "Enable Remote Control?" got no answer. Run `claude remote-control` at a terminal and answer y once; it won't ask again.

3512Remote Control did not start: "Choose [1/2] (default: 1):" got no answer. You can run `claude remote-control` and choose, or pass --spawn=same-dir or --spawn=worktree.

3513```

3514 

3515**Yang harus dilakukan:**

3516 

3517* **`Enable Remote Control?`**: dalam skrip atau service, input standar berakhir sebelum ada yang dapat menjawab. Jalankan `claude remote-control` sekali di terminal, sebagai pengguna yang menjalankan skrip atau service Anda, dan jawab `y`.

3518* **`Choose [1/2] (default: 1):`**: jalankan `claude remote-control` lagi dan [pilih mode spawn](https://code.claude.com/docs/id/remote-control.md#set-the-default-spawn-mode-for-a-project), atau berikan [`--spawn=same-dir` atau `--spawn=worktree`](https://code.claude.com/docs/id/remote-control#start-a-remote-control-session) untuk melewati pertanyaan tersebut

3519 

3455### Tidak diteruskan ke sesi yang dimulai Remote Control3520### Tidak diteruskan ke sesi yang dimulai Remote Control

3456 3521 

3457Anda memulai [Remote Control](https://code.claude.com/docs/id/remote-control.md) dengan flag `claude` global sebelum kata kerja `remote-control`, yaitu flag yang akan membatasi atau mengonfigurasi sesi yang dimulai Remote Control, seperti `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools`, atau `--mcp-config`. Flag yang ditempatkan sebelum kata kerja tidak pernah mencapai sesi tersebut. Claude Code menolak untuk memulai, dengan menyebutkan flag tersebut:3522Anda memulai [Remote Control](https://code.claude.com/docs/id/remote-control.md) dengan flag `claude` global sebelum kata kerja `remote-control`, yaitu flag yang akan membatasi atau mengonfigurasi sesi yang dimulai Remote Control, seperti `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools`, atau `--mcp-config`. Flag yang ditempatkan sebelum kata kerja tidak pernah mencapai sesi tersebut. Claude Code menolak untuk memulai, dengan menyebutkan flag tersebut:


3499 3564 

3500* Anda belum memulai sesi sejak instalasi, sehingga Claude Code belum mengambil flag tersebut. `claude import` pertama dapat mencetak pesan ini bahkan ketika fitur tersebut tersedia untuk Anda.3565* Anda belum memulai sesi sejak instalasi, sehingga Claude Code belum mengambil flag tersebut. `claude import` pertama dapat mencetak pesan ini bahkan ketika fitur tersebut tersedia untuk Anda.

3501* Anda menggunakan Claude Code melalui Amazon Bedrock, Agent Platform dari Google Cloud, Microsoft Foundry, atau Claude Platform on AWS, atau melalui [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway#availability-and-limitations). Claude Code tidak mengambil feature flag dalam sesi ini, sehingga `claude import` tetap tidak tersedia.3566* Anda menggunakan Claude Code melalui Amazon Bedrock, Agent Platform dari Google Cloud, Microsoft Foundry, atau Claude Platform on AWS, atau melalui [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway#availability-and-limitations). Claude Code tidak mengambil feature flag dalam sesi ini, sehingga `claude import` tetap tidak tersedia.

3502* Anda mengatur `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_GROWTHBOOK`, atau [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/id/env-vars), yang mematikan pengambilan feature flag, sehingga `claude import` tetap tidak tersedia.3567* Anda mengatur `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, [`CLAUDE_CODE_DISABLE_FEATURE_FLAGS`](https://code.claude.com/docs/id/env-vars#variables), `DISABLE_GROWTHBOOK`, atau [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/id/env-vars), yang menonaktifkan pengambilan feature flag, sehingga `claude import` tetap tidak tersedia.

3503 3568 

3504**Yang perlu dilakukan:**3569**Yang perlu dilakukan:**

3505 3570 


3742String serupa muncul sebelum perintah dijalankan sama sekali:3807String serupa muncul sebelum perintah dijalankan sama sekali:

3743 3808 

3744* `Shell command permission check failed for pattern "..."`: pemeriksaan izin perintah tidak mengizinkannya. [Pemeriksaan izin pada perintah sisipan](https://code.claude.com/docs/id/skills.md#permission-checks-on-injected-commands) menjelaskan hasil mana yang membatalkan di setiap mode izin dan cara menyetujui perintah terlebih dahulu dengan `allowed-tools`3809* `Shell command permission check failed for pattern "..."`: pemeriksaan izin perintah tidak mengizinkannya. [Pemeriksaan izin pada perintah sisipan](https://code.claude.com/docs/id/skills.md#permission-checks-on-injected-commands) menjelaskan hasil mana yang membatalkan di setiap mode izin dan cara menyetujui perintah terlebih dahulu dengan `allowed-tools`

3745* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: frontmatter skill menuntut bash pada mesin yang tidak memilikinya. Instal Git for Windows atau ubah frontmatter menjadi `shell: powershell`. Lihat [Cara perintah sisipan berjalan](https://code.claude.com/docs/id/skills.md#how-injected-commands-run)3810* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: frontmatter skill menuntut bash pada mesin yang tidak memilikinya. Instal Git for Windows atau ubah frontmatter menjadi `shell: powershell`. Lihat [Cara perintah sisipan dijalankan](https://code.claude.com/docs/id/skills.md#how-injected-commands-run)

3746 3811 

3747**Yang perlu dilakukan:**3812**Yang perlu dilakukan:**

3748 3813 


3895 3960 

3896* **Anda tidak memberikan branch dasar**: Claude Code membandingkan dengan branch default repositori dan menyarankan untuk memberikan branch dasar Anda secara eksplisit, seperti pada contoh di atas3961* **Anda tidak memberikan branch dasar**: Claude Code membandingkan dengan branch default repositori dan menyarankan untuk memberikan branch dasar Anda secara eksplisit, seperti pada contoh di atas

3897* **Anda memberikan branch dasar yang sudah ada di clone Anda**: petunjuknya berbunyi ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3962* **Anda memberikan branch dasar yang sudah ada di clone Anda**: petunjuknya berbunyi ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3898* **Anda memberikan base branch yang tidak ada di clone Anda**: Claude Code mengambilnya dari origin sebelum membandingkan. Petunjuknya berbunyi ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; ketika Claude Code tidak dapat mengetahui apakah clone Anda dangkal, Claude Code menyarankan `git fetch --unshallow origin` sebagai gantinya. Sebelum v2.1.221, petunjuk menyarankan `git fetch --unshallow origin` untuk setiap base branch yang diambil, dan pada clone yang lengkap perintah tersebut gagal dengan `fatal: --unshallow on a complete repository does not make sense`.3963* **Anda memberikan branch dasar yang tidak ada di clone Anda**: Claude Code mengambilnya dari origin sebelum membandingkan. Petunjuknya berbunyi ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; ketika Claude Code tidak dapat mengetahui apakah clone Anda dangkal (shallow), Claude Code menyarankan `git fetch --unshallow origin` sebagai gantinya. Sebelum v2.1.221, petunjuk menyarankan `git fetch --unshallow origin` untuk setiap branch dasar yang diambil, dan pada clone yang lengkap perintah tersebut gagal dengan `fatal: --unshallow on a complete repository does not make sense`.

3899 3964 

3900**Yang perlu dilakukan:**3965**Yang perlu dilakukan:**

3901 3966 


4266 4331 

4267Sebelum v2.1.302, pesan lengkapnya berbunyi `/feedback is disabled by your organization's policy. Contact your organization admin to enable it.`4332Sebelum v2.1.302, pesan lengkapnya berbunyi `/feedback is disabled by your organization's policy. Contact your organization admin to enable it.`

4268 4333 

4269## Kesalahan plugin4334## Error plugin

4270 4335 

4271Kesalahan ini berasal dari konfigurasi [plugin](https://code.claude.com/docs/id/plugins/overview.md) dan [marketplace](https://code.claude.com/docs/id/plugins/overview.md). Untuk masalah plugin yang tidak menghasilkan salah satu pesan di halaman ini, seperti URL marketplace yang tidak memuat atau plugin yang terpasang tetapi tidak muncul, lihat [Pemecahan masalah plugin](https://code.claude.com/docs/id/plugins/troubleshooting.md).4336Error ini berasal dari konfigurasi [plugin](https://code.claude.com/docs/id/plugins/overview.md) dan [marketplace](https://code.claude.com/docs/id/plugins/overview.md). Untuk masalah plugin yang tidak menghasilkan salah satu pesan di halaman ini, seperti URL marketplace yang tidak termuat atau plugin yang terinstal tetapi tidak muncul, lihat [Pemecahan masalah plugin](https://code.claude.com/docs/id/plugins/troubleshooting.md).

4272 4337 

4273### plugin eval is currently in early access4338### plugin eval is currently in early access

4274 4339 

4275Anda menjalankan [`claude plugin eval`](https://code.claude.com/docs/id/plugin-evals) atau `claude plugin eval init` dan keluar dengan kode 1 dengan salah satu pesan ini sebelum melakukan apa pun:4340Anda menjalankan [`claude plugin eval`](https://code.claude.com/docs/id/plugin-evals) atau `claude plugin eval init` dan perintah tersebut keluar dengan kode 1 dengan salah satu pesan berikut sebelum melakukan apa pun:

4276 4341 

4277```text theme={null}4342```text theme={null}

4278`plugin eval` is currently in early access4343`plugin eval` is currently in early access


4282`plugin eval` is currently unavailable4347`plugin eval` is currently unavailable

4283```4348```

4284 4349 

4285Pesan pertama berarti build Anda lebih lama dari v2.1.269, versi pertama di mana perintah tersedia secara umum. Pesan kedua berarti Anthropic telah mematikan perintah di sisi server; tidak ada yang di mesin Anda yang menghidupkannya kembali.4350Pesan pertama berarti build Anda lebih lama dari v2.1.269, versi pertama tempat perintah ini tersedia secara umum. Pesan kedua berarti Anthropic telah menonaktifkan perintah ini di sisi server; tidak ada apa pun di mesin Anda yang dapat mengaktifkannya kembali.

4286 4351 

4287**Yang harus dilakukan:**4352**Yang harus dilakukan:**

4288 4353 

4289* Jalankan `claude --version`, kemudian `claude update`, dan jalankan perintah lagi dalam sesi baru. Lihat [persyaratan untuk plugin evals](https://code.claude.com/docs/id/plugin-evals.md#requirements)4354* Jalankan `claude --version`, lalu `claude update`, dan jalankan perintah tersebut lagi di sesi baru. Lihat [persyaratan untuk plugin eval](https://code.claude.com/docs/id/plugin-evals.md#requirements)

4290* Jika Anda melihat pesan kedua pada build saat ini, coba lagi nanti setelah `claude update` lain4355* Jika Anda melihat pesan kedua pada build terkini, coba lagi nanti setelah menjalankan `claude update` sekali lagi

4291 4356 

4292### Marketplace is registered from an untrusted source4357### Marketplace terdaftar dari sumber yang tidak tepercaya

4293 4358 

4294Marketplace terdaftar dengan nama yang [dicadangkan untuk marketplace Anthropic resmi](https://code.claude.com/docs/id/plugins/marketplace-reference.md#marketplace-file), tetapi sumber terdaftarnya bukan repositori GitHub `anthropics`. Claude Code memeriksa ulang nama yang dicadangkan setiap kali memuat atau menyegarkan marketplace, sehingga marketplace dan plugin yang dipasang darinya berhenti memuat. Sebelum v2.1.205, entri yang terdaftar sebelum namanya dicadangkan terus memuat.4359Marketplace terdaftar dengan nama yang [dicadangkan untuk marketplace resmi Anthropic](https://code.claude.com/docs/id/plugins/marketplace-reference.md#marketplace-file), tetapi sumber terdaftarnya bukan repositori GitHub `anthropics`. Claude Code memeriksa ulang nama yang dicadangkan setiap kali memuat atau menyegarkan marketplace, sehingga marketplace dan plugin yang diinstal darinya berhenti dimuat. Sebelum v2.1.205, entri yang didaftarkan sebelum namanya dicadangkan tetap dimuat.

4295 4360 

4296```text theme={null}4361```text theme={null}

4297Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.4362Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.

4298```4363```

4299 4364 

4300Untuk marketplace yang sumbernya bukan repositori GitHub atau URL Git, seperti direktori lokal, kalimat tengah berbunyi `can only be used with GitHub sources from the 'anthropics' organization` sebagai gantinya. `claude plugin marketplace add` menjalankan pemeriksaan yang sama, dan menolak nama yang dicadangkan dengan `Failed to add marketplace:` diikuti oleh kalimat nama yang dicadangkan yang sama.4365Untuk marketplace yang sumbernya bukan repositori GitHub maupun URL Git, seperti direktori lokal, kalimat tengahnya berbunyi `can only be used with GitHub sources from the 'anthropics' organization`. `claude plugin marketplace add` menjalankan pemeriksaan yang sama, dan menolak nama yang dicadangkan dengan `Failed to add marketplace:` diikuti kalimat nama-yang-dicadangkan yang sama.

4301 4366 

4302**Yang harus dilakukan:**4367**Yang harus dilakukan:**

4303 4368 

4304* Jika marketplace sudah terdaftar, jalankan `claude plugin marketplace remove <name>`, kemudian tambahkan lagi dari repositori `github.com/anthropics` resmi4369* Jika marketplace sudah terdaftar, jalankan `claude plugin marketplace remove <name>`, lalu tambahkan lagi dari repositori resmi `github.com/anthropics`

4305* Jika Anda menerbitkan marketplace pihak ketiga yang menggunakan nama sebelum dicadangkan, ubah namanya dan minta pengguna untuk menambahkannya kembali dari sumber Anda4370* Jika Anda menerbitkan marketplace pihak ketiga yang menggunakan nama tersebut sebelum nama itu dicadangkan, ganti namanya dan minta pengguna menambahkannya kembali dari sumber Anda

4306* Lihat daftar nama yang dicadangkan di bawah [Marketplace schema](https://code.claude.com/docs/id/plugins/marketplace-reference.md#marketplace-file)4371* Lihat daftar nama yang dicadangkan di bawah [Skema marketplace](https://code.claude.com/docs/id/plugins/marketplace-reference.md#marketplace-file)

4307 4372 

4308### Marketplace name is another spelling of a reserved name4373### Nama marketplace merupakan ejaan lain dari nama yang dicadangkan

4309 4374 

4310Nama marketplace bukan sendiri nama yang dicadangkan, tetapi Claude Code memperlakukannya sebagai ejaan lain dari salah satu nama yang dicadangkan. [Nama yang dicadangkan](https://code.claude.com/docs/id/plugins/marketplace-reference.md#reserved-name-spellings) mencantumkan ejaan mana yang dihitung sebagai nama yang dicadangkan. Claude Code menolak nama seperti itu ketika Anda menambahkan marketplace:4375Nama marketplace itu sendiri bukan nama yang dicadangkan, tetapi Claude Code memperlakukannya sebagai ejaan lain dari salah satunya. [Nama yang dicadangkan](https://code.claude.com/docs/id/plugins/marketplace-reference.md#reserved-name-spellings) mencantumkan ejaan mana saja yang dihitung sebagai nama yang dicadangkan. Claude Code menolak nama seperti itu saat Anda menambahkan marketplace:

4311 4376 

4312```text theme={null}4377```text theme={null}

4313Failed to add marketplace: "claude.code.plugins" is another spelling of "claude-code-plugins", a reserved marketplace name.4378Failed to add marketplace: "claude.code.plugins" is another spelling of "claude-code-plugins", a reserved marketplace name.

4314```4379```

4315 4380 

4316Ketika marketplace sudah terdaftar dengan nama seperti itu, entrinya berhenti memuat, dan `/plugin`, `claude plugin install`, dan `claude plugin update` memperingatkan:4381Ketika sebuah marketplace sudah terdaftar dengan nama seperti itu, entrinya berhenti dimuat, dan `/plugin`, `claude plugin install`, serta `claude plugin update` memberikan peringatan:

4317 4382 

4318```text wrap theme={null}4383```text wrap theme={null}

4319known_marketplaces.json has an entry named "claude.code.plugins", another spelling of the reserved marketplace name "claude-code-plugins", so it is ignored. Remove it with: claude plugin marketplace remove claude.code.plugins4384known_marketplaces.json has an entry named "claude.code.plugins", another spelling of the reserved marketplace name "claude-code-plugins", so it is ignored. Remove it with: claude plugin marketplace remove claude.code.plugins

4320```4385```

4321 4386 

4322Ketika nama memerlukan quoting shell, penolakan saat penambahan berbunyi `This marketplace's name is another spelling of "<reserved>", a reserved marketplace name. It is not exactly the reserved name it appears to be.`4387Ketika nama tersebut memerlukan quoting shell, penolakan saat penambahan berbunyi `This marketplace's name is another spelling of "<reserved>", a reserved marketplace name. It is not exactly the reserved name it appears to be.`

4323 4388 

4324**Yang harus dilakukan:**4389**Yang harus dilakukan:**

4325 4390 

4326* Ubah nama marketplace menjadi nama yang tidak mengeja nama yang dicadangkan dan tambahkan lagi4391* Ganti nama marketplace menjadi nama yang tidak mengeja nama yang dicadangkan dan tambahkan lagi

4327* Untuk peringatan entri yang diabaikan, jalankan perintah `claude plugin marketplace remove` yang diberikannya, atau hapus entri dari `~/.claude/plugins/known_marketplaces.json`4392* Untuk peringatan entri yang diabaikan, jalankan perintah `claude plugin marketplace remove` yang diberikannya, atau hapus entri tersebut dari `~/.claude/plugins/known_marketplaces.json`

4328 4393 

4329### Claude Code refuses the marketplace name4394### Claude Code menolak nama marketplace

4330 4395 

4331Nama marketplace yang terdaftar [menyamar sebagai marketplace Anthropic resmi](https://code.claude.com/docs/id/plugins/marketplace-reference.md#reserved-names) di bawah aturan yang bagian itu daftar.4396Nama marketplace yang terdaftar [meniru marketplace resmi Anthropic](https://code.claude.com/docs/id/plugins/marketplace-reference.md#reserved-names) berdasarkan aturan yang dicantumkan di bagian tersebut.

4332 4397 

4333Jika marketplace terdaftar dengan nama seperti itu sebelum pemeriksaan memblokir, marketplace dan plugin yang dipasang darinya berhenti memuat, karena Claude Code memeriksa nama setiap kali membaca katalog marketplace. Ketika nama meniru yang resmi, `claude plugin list` dan tab **Errors** `/plugin` melaporkan setiap plugin yang terpengaruh dengan pesan yang dimulai:4398Jika sebuah marketplace didaftarkan dengan nama seperti itu sebelum pemeriksaan memblokirnya, marketplace tersebut dan plugin yang diinstal darinya berhenti dimuat, karena Claude Code memeriksa nama tersebut setiap kali membaca katalog marketplace. Ketika nama tersebut meniru nama resmi, `claude plugin list` dan tab **Errors** di `/plugin` melaporkan setiap plugin yang terdampak dengan pesan yang diawali:

4334 4399 

4335```text theme={null}4400```text theme={null}

4336Claude Code refuses the marketplace name "anthropic-plugins-v2"4401Claude Code refuses the marketplace name "anthropic-plugins-v2"

4337```4402```

4338 4403 

4339Untuk nama yang meniru, kesalahan marketplace itu sendiri berbunyi `Claude Code refuses this marketplace's name: it looks like one of Anthropic's own` sebagai gantinya. `claude plugin marketplace add` menolak nama yang menyamar apa pun dengan `Marketplace name impersonates an official Anthropic/Claude marketplace`.4404Untuk nama yang meniru, error milik marketplace itu sendiri berbunyi `Claude Code refuses this marketplace's name: it looks like one of Anthropic's own`. `claude plugin marketplace add` menolak nama apa pun yang meniru dengan `Marketplace name impersonates an official Anthropic/Claude marketplace`.

4340 4405 

4341Sebelum v2.1.282, `claude plugin list` dan `/plugin` melaporkan plugin dari nama yang meniru sebagai gagal memuat juga, tanpa menamai nama marketplace sebagai penyebabnya.4406Sebelum v2.1.282, `claude plugin list` dan `/plugin` juga melaporkan plugin dari nama yang meniru sebagai gagal dimuat, tanpa menyebutkan nama marketplace sebagai penyebabnya.

4342 4407 

4343**Yang harus dilakukan:**4408**Yang harus dilakukan:**

4344 4409 

4345* Untuk mempertahankan marketplace yang dideklarasikan secara inline oleh file pengaturan dengan `"source": "settings"`, ubah namanya sebelum Anda menghapus nama lama, karena menghapus marketplace juga menghapus entrinya dari file pengaturan Anda. Claude Code v2.1.292 atau yang lebih baru mencantumkan langkah-langkah ini dalam pesan:4410* Untuk mempertahankan marketplace yang dideklarasikan secara inline oleh file pengaturan dengan `"source": "settings"`, ganti namanya sebelum Anda menghapus nama lama, karena menghapus marketplace juga menghapus entrinya dari file pengaturan Anda. Claude Code v2.1.292 atau yang lebih baru mencantumkan langkah-langkah ini di dalam pesan:

4346 1. Di setiap file pengaturan yang mencantumkan marketplace di bawah `extraKnownMarketplaces`, berikan kunci entri dan `source.name`-nya satu nama baru berupa ASCII biasa yang tidak terlihat seperti nama resmi. Jika administrator menambahkan marketplace melalui pengaturan terkelola organisasi Anda, administrator yang melakukan langkah ini4411 1. Di setiap file pengaturan yang mencantumkan marketplace di bawah `extraKnownMarketplaces`, berikan kunci entri dan `source.name`-nya satu nama baru berupa ASCII biasa yang tidak terlihat seperti nama resmi. Jika seorang administrator menambahkan marketplace melalui pengaturan terkelola organisasi Anda, administrator yang melakukan langkah ini

4347 2. Jalankan `claude plugin marketplace remove <old-name>`, atau hapus nama lama di tab **Marketplaces** di `/plugin`. Ini juga mencopot plugin-pluginnya dan menghapus data, opsi, dan rahasianya4412 2. Jalankan `claude plugin marketplace remove <old-name>`, atau hapus nama lama di tab **Marketplaces** di `/plugin`. Ini juga menghapus instalasi plugin-pluginnya dan menghapus data, opsi, serta rahasianya

4348 3. Mulai Claude Code lagi, di folder proyek jika file tersebut adalah file pengaturan proyek. Kemudian pasang plugin dari marketplace yang telah diubah namanya4413 3. Jalankan Claude Code lagi, di folder proyek jika file tersebut adalah file pengaturan proyek. Kemudian instal plugin dari marketplace yang telah diganti namanya

4349* Untuk mempertahankan marketplace lainnya, tunggu sampai pemeliharanya mengganti namanya, kemudian jalankan `claude plugin marketplace update <name>`4414* Untuk mempertahankan marketplace lainnya, tunggu hingga pengelolanya mengganti namanya, lalu jalankan `claude plugin marketplace update <name>`

4350* Untuk menghapus marketplace, jalankan `claude plugin marketplace remove <name>`. Ini juga mencopot plugin yang dipasang dari marketplace dan menghapus data, opsi, dan rahasianya4415* Untuk menghapus marketplace, jalankan `claude plugin marketplace remove <name>`. Ini juga menghapus instalasi plugin yang diinstal dari marketplace tersebut dan menghapus data, opsi, serta rahasianya

4351* Jika Anda menerbitkan marketplace, ubah namanya di `marketplace.json` Anda; pengguna kemudian memperbarui marketplace daripada menghapusnya4416* Jika Anda menerbitkan marketplace tersebut, ganti namanya di `marketplace.json` Anda; pengguna kemudian memperbarui marketplace alih-alih menghapusnya

4352 4417 

4353### Marketplace is already added from a different source4418### Marketplace sudah ditambahkan dari sumber yang berbeda

4354 4419 

4355Anda menyebutkan sumber marketplace baru dengan [`--marketplace <source>` pada perintah install](https://code.claude.com/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command), dalam sesi atau dari shell Anda. Katalog yang Claude Code ambil dari sumber itu memiliki nama yang sama dengan marketplace yang sudah Anda tambahkan dari sumber berbeda. Claude Code menyimpan marketplace yang ada daripada menggantinya, dan plugin tidak terpasang.4420Anda menyebutkan sumber marketplace baru dengan [`--marketplace <source>` pada perintah install](https://code.claude.com/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command), di dalam sesi atau dari shell Anda. Katalog yang diambil Claude Code dari sumber tersebut memiliki nama yang sama dengan marketplace yang sudah Anda tambahkan dari sumber yang berbeda. Claude Code mempertahankan marketplace yang ada alih-alih menggantinya, dan plugin tidak diinstal.

4356 4421 

4357```text theme={null}4422```text theme={null}

4358Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.4423Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.


4360 4425 

4361**Yang harus dilakukan:**4426**Yang harus dilakukan:**

4362 4427 

4363* Jika marketplace yang sudah Anda tambahkan adalah yang Anda inginkan, pasang dari sana berdasarkan nama: `/plugin install <plugin>@<name>`4428* Jika marketplace yang sudah Anda tambahkan adalah yang Anda inginkan, instal darinya berdasarkan nama: `/plugin install <plugin>@<name>`

4364* Untuk beralih ke sumber baru, jalankan `/plugin marketplace remove <name>`, kemudian coba instalasi lagi4429* Untuk beralih ke sumber baru, jalankan `/plugin marketplace remove <name>`, lalu coba instal lagi

4365 4430 

4366### Plugin command references user\_config in a shell command4431### Perintah plugin mereferensikan user\_config dalam perintah shell

4367 4432 

4368Hook plugin, [monitor](https://code.claude.com/docs/id/plugins/components.md#monitors), atau perintah MCP [`headersHelper`](https://code.claude.com/docs/id/mcp#use-dynamic-headers-for-custom-authentication) mereferensikan opsi `${user_config.KEY}` [plugin](https://code.claude.com/docs/id/plugins/manifest-reference.md#user-configuration), dan string yang disubstitusi akan diteruskan ke shell. Nilai yang dikonfigurasi berisi `$(...)`, backtick, atau `;` akan berjalan sebagai kode di sana, jadi Claude Code menolak untuk memulai komponen daripada mensubstitusi nilai. Pemeriksaan berjalan pada template perintah, jadi kesalahan muncul bahkan ketika tidak ada nilai yang dikonfigurasi. Sebelum v2.1.207, nilai disubstitusi ke dalam perintah shell.4433Perintah hook plugin, [monitor](https://code.claude.com/docs/id/plugins/components.md#monitors), atau [`headersHelper`](https://code.claude.com/docs/id/mcp#use-dynamic-headers-for-custom-authentication) MCP mereferensikan [opsi plugin](https://code.claude.com/docs/id/plugins/manifest-reference.md#user-configuration) `${user_config.KEY}`, dan string hasil substitusi akan diteruskan ke shell. Nilai yang dikonfigurasi yang berisi `$(...)`, backtick, atau `;` akan dijalankan sebagai kode di sana, sehingga Claude Code menolak memulai komponen tersebut alih-alih menyubstitusikan nilainya. Pemeriksaan dijalankan pada template perintah, sehingga error muncul bahkan ketika belum ada nilai yang dikonfigurasi. Sebelum v2.1.207, nilai tersebut disubstitusikan ke dalam perintah shell.

4369 4434 

4370Kata-katanya tergantung pada permukaan mana yang mereferensikan opsi. Hook bentuk shell melaporkan:4435Kata-katanya bergantung pada surface mana yang mereferensikan opsi tersebut. Hook berbentuk shell melaporkan:

4371 4436 

4372```text theme={null}4437```text theme={null}

4373Hook from plugin formatter@acme-tools references ${user_config.*} in a shell-form command. The substituted value would be re-parsed by the shell. Use exec form instead — {"command": "<executable>", "args": ["${user_config.KEY}", ...]} — or read $CLAUDE_PLUGIN_OPTION_<KEY> from the hook's environment. Command: ./scripts/notify.sh ${user_config.webhook_url}4438Hook from plugin formatter@acme-tools references ${user_config.*} in a shell-form command. The substituted value would be re-parsed by the shell. Use exec form instead — {"command": "<executable>", "args": ["${user_config.KEY}", ...]} — or read $CLAUDE_PLUGIN_OPTION_<KEY> from the hook's environment. Command: ./scripts/notify.sh ${user_config.webhook_url}


4379Monitor "deploy-status" from plugin deploy-tools references ${user_config.*} in its command. The substituted value would be passed to a shell. Monitor commands cannot safely reference ${user_config.*}; have the monitor script read the value from a config file or prompt instead.4444Monitor "deploy-status" from plugin deploy-tools references ${user_config.*} in its command. The substituted value would be passed to a shell. Monitor commands cannot safely reference ${user_config.*}; have the monitor script read the value from a config file or prompt instead.

4380```4445```

4381 4446 

4382MCP `headersHelper` melaporkan:4447`headersHelper` MCP melaporkan:

4383 4448 

4384```text theme={null}4449```text theme={null}

4385headersHelper for MCP server 'internal-api' references ${user_config.*}. The substituted value would be passed to a shell; read the value inside the helper script instead (e.g. from an env var set in the server's "env" block).4450headersHelper for MCP server 'internal-api' references ${user_config.*}. The substituted value would be passed to a shell; read the value inside the helper script instead (e.g. from an env var set in the server's "env" block).


4387 4452 

4388**Yang harus dilakukan:**4453**Yang harus dilakukan:**

4389 4454 

4390* Untuk hook, tambahkan array `args` sehingga berjalan dalam [exec form](https://code.claude.com/docs/id/hooks.md#exec-form-and-shell-form), di mana setiap `${user_config.KEY}` menjadi satu argumen tanpa shell di antaranya. Atau lepaskan referensi dan baca variabel lingkungan `$CLAUDE_PLUGIN_OPTION_<KEY>` di dalam skrip4455* Untuk hook, tambahkan array `args` agar hook berjalan dalam [bentuk exec](https://code.claude.com/docs/id/hooks.md#exec-form-and-shell-form), di mana setiap `${user_config.KEY}` menjadi satu argumen tanpa shell di antaranya. Atau hapus referensi tersebut dan baca environment variable `$CLAUDE_PLUGIN_OPTION_<KEY>` di dalam skrip

4391* Untuk monitor, lepaskan referensi dan buat skrip monitor membaca nilai dari file konfigurasi4456* Untuk monitor, hapus referensi tersebut dan buat skrip monitor membaca nilainya dari file konfigurasi

4392* Untuk `headersHelper`, pindahkan `${user_config.KEY}` ke bidang `headers` server, yang tidak diurai shell, atau baca nilai di dalam skrip helper4457* Untuk `headersHelper`, pindahkan `${user_config.KEY}` ke field `headers` milik server, yang tidak di-parse oleh shell, atau baca nilainya di dalam skrip helper

4393 4458 

4394### Plugin archive integrity check failed4459### Pemeriksaan integritas arsip plugin gagal

4395 4460 

4396Entri marketplace plugin menggunakan sumber [`archive`](https://code.claude.com/docs/id/plugins/marketplace-reference#archive-plugin-source) dengan pin `sha256`, dan digest file yang diunduh tidak cocok dengan pin. Claude Code menolak instalasi, jadi tidak ada yang berubah dalam cache plugin. Ketidakcocokan memiliki tiga kemungkinan penyebab:4461Entri marketplace plugin menggunakan [sumber `archive`](https://code.claude.com/docs/id/plugins/marketplace-reference#archive-plugin-source) dengan pin `sha256`, dan digest dari file yang diunduh tidak cocok dengan pin tersebut. Claude Code menolak instalasi, sehingga tidak ada yang berubah di cache plugin. Ketidakcocokan ini memiliki tiga kemungkinan penyebab:

4397 4462 

4398* File di URL berubah setelah penulis menghitung pin4463* File di URL berubah setelah pembuatnya menghitung pin

4399* Penulis memasukkan digest yang salah di entri marketplace4464* Pembuatnya memasukkan digest yang salah di entri marketplace

4400* URL melayani file yang berbeda dari yang penulis pin4465* URL menyajikan file yang berbeda dari yang di-pin oleh pembuatnya

4401 4466 

4402```text theme={null}4467```text theme={null}

4403Plugin archive integrity check failed for https://artifacts.example.com/claude-plugins/my-plugin.zip: expected sha256 6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1, got ac52220c0914ef8ca6a602e4a7362f88d30fb021110f72a6d15b68c3fe7df2b7. The archive was not installed. Verify the sha256 in the marketplace entry, or that the URL serves the intended file.4468Plugin archive integrity check failed for https://artifacts.example.com/claude-plugins/my-plugin.zip: expected sha256 6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1, got ac52220c0914ef8ca6a602e4a7362f88d30fb021110f72a6d15b68c3fe7df2b7. The archive was not installed. Verify the sha256 in the marketplace entry, or that the URL serves the intended file.


4405 4470 

4406**Yang harus dilakukan:**4471**Yang harus dilakukan:**

4407 4472 

4408* Jika Anda menerbitkan plugin, hitung ulang digest file yang tepat yang dilayani URL, misalnya dengan `shasum -a 256 my-plugin.zip`, atau `Get-FileHash -Algorithm SHA256 my-plugin.zip` di PowerShell, dan perbarui `sha256` di entri marketplace4473* Jika Anda menerbitkan plugin tersebut, hitung ulang digest dari file persis yang disajikan URL, misalnya dengan `shasum -a 256 my-plugin.zip`, atau `Get-FileHash -Algorithm SHA256 my-plugin.zip` di PowerShell, dan perbarui `sha256` di entri marketplace

4409* Jika Anda memasang plugin, jalankan `/plugin marketplace update <name>` untuk menyegarkan katalog jika entri telah diperbaiki, kemudian coba instalasi lagi4474* Jika Anda menginstal plugin tersebut, jalankan `/plugin marketplace update <name>` untuk menyegarkan katalog jika entrinya sudah diperbaiki, lalu coba instal lagi

4410* Jika digest masih tidak setuju setelah penyegaran, tanyakan kepada pemilik marketplace file mana yang mereka pin sebelum memasang4475* Jika digest masih tidak cocok setelah penyegaran, tanyakan kepada pemilik marketplace file mana yang mereka pin sebelum menginstal

4411 4476 

4412### Path escapes plugin directory4477### Path keluar dari direktori plugin

4413 4478 

4414Salah satu jalur komponen plugin mengarah ke luar direktori plugin atau tidak dapat dipastikan berada di dalamnya, sehingga Claude Code menghapus jalur itu dan memuat sisa plugin. Untuk jalur yang dideklarasikan plugin dalam `plugin.json` atau [entri marketplace](https://code.claude.com/docs/id/plugins/marketplace-reference.md#plugin-entries)-nya, nama komponen dalam pesan, seperti `commands` atau `hooks`, menamai bidang yang mendeklarasikan jalur tersebut.4479Salah satu path komponen plugin mengarah ke luar direktori plugin atau tidak dapat dipastikan berada di dalamnya, sehingga Claude Code mengabaikan path tersebut dan memuat sisa plugin. Untuk path yang dideklarasikan plugin di `plugin.json` atau [entri marketplace](https://code.claude.com/docs/id/plugins/marketplace-reference.md#plugin-entries)-nya, nama komponen dalam pesan, seperti `commands` atau `hooks`, menyebutkan field yang mendeklarasikan path tersebut.

4415 4480 

4416```text theme={null}4481```text theme={null}

4417commands path escapes plugin directory: ./../shared.md4482commands path escapes plugin directory: ./../shared.md

4418```4483```

4419 4484 

4420Dalam output perintah `claude plugin`, kesalahan yang sama berbunyi `Path escapes plugin directory: ./../shared.md (commands)`.4485Dalam output perintah `claude plugin`, error yang sama berbunyi `Path escapes plugin directory: ./../shared.md (commands)`.

4421 4486 

4422Claude Code menolak baik jalur yang menunjuk di luar plugin seperti yang ditulis, seperti `../shared-utils`, dan symlink yang mengarah di luar plugin dan bukan salah satu yang [aturan symlink marketplace](https://code.claude.com/docs/id/plugins/host-marketplace.md#share-files-within-a-marketplace-with-symlinks) izinkan. Untuk symlink, pesan juga mengatakan di mana jalur diselesaikan:4487Claude Code menolak baik path yang menunjuk ke luar plugin sebagaimana tertulis, seperti `../shared-utils`, maupun symlink yang mengarah ke luar plugin dan tidak diizinkan oleh [aturan symlink marketplace](https://code.claude.com/docs/id/plugins/host-marketplace.md#share-files-within-a-marketplace-with-symlinks). Untuk symlink, pesan tersebut juga menyebutkan ke mana path di-resolve:

4423 4488 

4424```text theme={null}4489```text theme={null}

4425commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory4490commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory

4426```4491```

4427 4492 

4428Pesan yang memberikan jalur lengkap dari salah satu file milik plugin marketplace itu sendiri, seperti `hooks/hooks.json`, berarti Claude Code melewati file tersebut. Hal itu terjadi ketika Claude Code tidak dapat memastikan bahwa file berada di dalam plugin atau, untuk plugin di [marketplace lokal](https://code.claude.com/docs/id/plugins/loading.md#in-place-and-copied-plugins), di dalam marketplace tersebut. Pesan melaporkan setiap file ini di bawah nama komponen yang ditampilkan:4493Pesan yang memberikan path lengkap dari salah satu file milik plugin marketplace itu sendiri, seperti `hooks/hooks.json`, berarti Claude Code melewati file tersebut. Hal itu terjadi ketika Claude Code tidak dapat memastikan file tersebut berada di dalam plugin atau, untuk plugin di [marketplace lokal](https://code.claude.com/docs/id/plugins/loading.md#in-place-and-copied-plugins), di dalam marketplace tersebut. Pesan melaporkan setiap file berikut di bawah nama komponen yang ditampilkan:

4429 4494 

4430* `hooks/hooks.json`: `hooks`4495* `hooks/hooks.json`: `hooks`

4431* `monitors/monitors.json`: `monitors`4496* `monitors/monitors.json`: `monitors`

4432* `settings.json`: `settings`4497* `settings.json`: `settings`

4433* `SKILL.md` di root plugin: `skills`4498* `SKILL.md` di root plugin: `skills`

4434 4499 

4435Misalnya, pesan ini untuk `hooks/hooks.json` yang diselesaikan di luar plugin maupun marketplace lokalnya:4500Misalnya, pesan ini ditujukan untuk `hooks/hooks.json` yang di-resolve ke luar plugin sekaligus ke luar marketplace lokalnya:

4436 4501 

4437```text theme={null}4502```text theme={null}

4438hooks path escapes plugin directory: /home/user/my-marketplace/my-plugin/hooks/hooks.json — it resolves to /home/user/dotfiles/hooks.json, outside the plugin directory and its marketplace directory4503hooks path escapes plugin directory: /home/user/my-marketplace/my-plugin/hooks/hooks.json — it resolves to /home/user/dotfiles/hooks.json, outside the plugin directory and its marketplace directory

4439```4504```

4440 4505 

4441Di macOS dan Linux, Claude Code juga menolak jalur komponen yang berisi backslash di mana pun di dalamnya, bahkan ketika jalur tetap berada di dalam plugin. Plugin yang jalur komponen menggunakan pemisah gaya Windows memuat di Windows dan memicu penolakan ini di platform lain:4506Di macOS dan Linux, Claude Code juga menolak path komponen yang berisi backslash di mana pun di dalamnya, bahkan ketika path tersebut tetap berada di dalam plugin. Plugin yang path komponennya menggunakan pemisah gaya Windows akan dimuat di Windows dan memicu penolakan ini di platform lain:

4442 4507 

4443```text theme={null}4508```text theme={null}

4444commands path escapes plugin directory: ./commands\deploy.md — its path contains a backslash, which is not resolved reliably on this platform4509commands path escapes plugin directory: ./commands\deploy.md — its path contains a backslash, which is not resolved reliably on this platform

4445```4510```

4446 4511 

4447Sebelum v2.1.251, Claude Code memuat jalur `commands` yang dideklarasikan dalam entri marketplace bahkan ketika menunjuk di luar direktori plugin.4512Sebelum v2.1.251, Claude Code memuat path `commands` yang dideklarasikan di entri marketplace bahkan ketika path tersebut menunjuk ke luar direktori plugin.

4513 

4514Sebelum v2.1.257, pemeriksaan pada path yang dideklarasikan plugin hanya melihat ejaan path, bukan ke mana symlink mengarah.

4515 

4516**Yang harus dilakukan:**

4517 

4518* Jika Anda menginstal plugin tersebut dan tidak memeliharanya, laporkan pesan tersebut kepada pembuatnya

4519* Untuk path yang dideklarasikan plugin, pindahkan file yang direferensikan ke dalam direktori plugin dan arahkan path ke file tersebut dengan path relatif `./`

4520* Jika path tersebut, atau folder di atasnya di dalam plugin, adalah symlink yang mengarah ke luar plugin, ganti symlink tersebut dengan salinan dari apa yang ditunjuknya

4521* Jika pesan menyebutkan bahwa path yang dideklarasikan plugin berisi backslash, tulis path tersebut dengan garis miring maju, misalnya `./commands/deploy.md`

4522* Jika pesan diakhiri dengan `EACCES`, pulihkan hak akses eksekusi Anda pada setiap direktori yang mengarah ke file atau folder yang disebutkan path tersebut. Periksa direktori di atas path, lalu ikuti setiap symlink yang Anda temui dan periksa direktori yang mengarah ke tempat yang ditunjuknya. Untuk kode error lainnya, cari di [penyebab dan langkah untuk path yang tidak dapat diperiksa](#path-could-not-be-checked).

4523* Untuk berbagi file dengan plugin lain di marketplace yang sama, tautkan file tersebut dengan symlink di dalam direktori plugin, dengan mengikuti [aturan symlink](https://code.claude.com/docs/id/plugins/host-marketplace.md#share-files-within-a-marketplace-with-symlinks)

4524 

4525### Path file server tidak dibaca

4526 

4527Pesan `path not read` berarti Claude Code tidak membaca file server MCP atau LSP yang disebutkan plugin, karena path file tersebut. Sisa plugin tetap dimuat, tanpa server yang didefinisikan file tersebut.

4528 

4529Bagian `..` tetap dihitung bahkan ketika path tetap berada di dalam plugin, seperti dalam contoh ini:

4448 4530 

4449Sebelum v2.1.257, pemeriksaan pada jalur yang dideklarasikan plugin hanya melihat ejaan jalur, bukan ke mana symlink mengarah.4531```text theme={null}

4532mcp-servers path not read: ./sub/../x.json is absolute or has a ".." part

4533```

4450 4534 

4451**Yang harus dilakukan:**4535**Yang harus dilakukan:**

4452 4536 

4453* Jika Anda memasang plugin dan tidak memeliharanya, laporkan pesan tersebut kepada penulisnya4537* Jika Anda menginstal plugin tersebut dan tidak memeliharanya, laporkan pesan tersebut kepada pembuatnya

4454* Untuk jalur yang dideklarasikan plugin, pindahkan file yang direferensikan ke dalam direktori plugin dan arahkan jalur ke sana dengan jalur relatif `./`4538* Jika Anda memelihara plugin tersebut, simpan file server di dalam direktori plugin. Sebutkan file tersebut di manifest atau entri marketplace dengan path yang diawali `./` dan tidak memiliki `..`, misalnya `./servers/x.json`

4455* Jika jalur, atau folder di atasnya di dalam plugin, adalah symlink yang mengarah ke luar plugin, ganti symlink dengan salinan dari apa yang ditunjuknya4539* Untuk berbagi satu file server antar plugin di marketplace yang sama, tautkan file tersebut ke setiap plugin dengan symlink, dengan mengikuti [aturan symlink](https://code.claude.com/docs/id/plugins/host-marketplace.md#share-files-within-a-marketplace-with-symlinks)

4456* Jika pesan mengatakan jalur yang dideklarasikan plugin berisi backslash, tulis jalur dengan garis miring maju, misalnya `./commands/deploy.md`

4457* Jika pesan diakhiri dengan `EACCES`, pulihkan permission eksekusi Anda pada setiap direktori yang mengarah ke file atau folder yang dinamai jalur. Periksa direktori di atas jalur, lalu ikuti setiap symlink yang Anda temui dan periksa direktori yang mengarah ke tempat yang ditunjuknya. Untuk kode kesalahan lainnya, cari di [penyebab dan langkah untuk jalur yang tidak dapat diperiksa](#path-could-not-be-checked).

4458* Untuk berbagi file dengan plugin lain di marketplace yang sama, tautkan dengan symlink di dalam direktori plugin, mengikuti [aturan symlink](https://code.claude.com/docs/id/plugins/host-marketplace.md#share-files-within-a-marketplace-with-symlinks)

4459 4540 

4460### Plugin not loaded: its manifest was not read4541### Plugin tidak dimuat: manifest-nya tidak dibaca

4461 4542 

4462Claude Code tidak dapat memastikan bahwa [manifest](https://code.claude.com/docs/id/plugins/manifest-reference.md) plugin marketplace di `.claude-plugin/plugin.json` berada di dalam plugin, sehingga tidak memuat apa pun dari plugin tersebut. Untuk plugin di [marketplace lokal](https://code.claude.com/docs/id/plugins/loading.md#in-place-and-copied-plugins), Claude Code juga tidak dapat memastikan bahwa manifest berada di dalam marketplace tersebut. Pesan muncul di tab **Errors** `/plugin`, dan alasan di akhir pesan menyebutkan apa yang ditemukan Claude Code.4543Claude Code tidak dapat memastikan bahwa [manifest](https://code.claude.com/docs/id/plugins/manifest-reference.md) plugin marketplace di `.claude-plugin/plugin.json` berada di dalam plugin, sehingga tidak memuat apa pun dari plugin tersebut. Untuk plugin di [marketplace lokal](https://code.claude.com/docs/id/plugins/loading.md#in-place-and-copied-plugins), Claude Code juga tidak dapat memastikan bahwa manifest berada di dalam marketplace tersebut. Pesan muncul di tab **Errors** di `/plugin`, dan alasan di bagian akhirnya menyebutkan apa yang ditemukan Claude Code.

4463 4544 

4464Misalnya, pesan ini untuk plugin di marketplace lokal yang folder `.claude-plugin`-nya adalah symlink yang mengarah ke luar marketplace:4545Misalnya, pesan ini ditujukan untuk plugin di marketplace lokal yang folder `.claude-plugin`-nya adalah symlink yang mengarah ke luar marketplace:

4465 4546 

4466```text theme={null}4547```text theme={null}

4467Plugin not loaded: its manifest /home/user/my-marketplace/my-plugin/.claude-plugin/plugin.json was not read, because it resolves to /home/user/dotfiles/my-plugin/.claude-plugin/plugin.json, outside the plugin directory and its marketplace directory4548Plugin not loaded: its manifest /home/user/my-marketplace/my-plugin/.claude-plugin/plugin.json was not read, because it resolves to /home/user/dotfiles/my-plugin/.claude-plugin/plugin.json, outside the plugin directory and its marketplace directory


4469 4550 

4470**Yang harus dilakukan:**4551**Yang harus dilakukan:**

4471 4552 

4472* Jika alasan diakhiri dengan `EACCES`, pulihkan permission eksekusi Anda pada setiap direktori yang mengarah ke manifest. Periksa direktori di atas manifest, lalu ikuti setiap symlink yang Anda temui dan periksa direktori yang mengarah ke tempat yang ditunjuknya. Untuk kode kesalahan lainnya, cari di [penyebab dan langkah untuk jalur yang tidak dapat diperiksa](#path-could-not-be-checked).4553* Jika alasannya diakhiri dengan `EACCES`, pulihkan hak akses eksekusi Anda pada setiap direktori yang mengarah ke manifest. Periksa direktori di atas manifest, lalu ikuti setiap symlink yang Anda temui dan periksa direktori yang mengarah ke tempat yang ditunjuknya. Untuk kode error lainnya, cari di [penyebab dan langkah untuk path yang tidak dapat diperiksa](#path-could-not-be-checked).

4473* Jika Anda memelihara plugin dan alasan menyebutkan ke mana manifest diselesaikan, folder `.claude-plugin` atau `plugin.json` itu sendiri adalah symlink yang mengarah ke sana. Ganti tautan itu dengan salinan dari apa yang ditunjuknya.4554* Jika Anda memelihara plugin tersebut dan alasannya menyebutkan ke mana manifest di-resolve, folder `.claude-plugin` atau `plugin.json` itu sendiri adalah symlink yang mengarah ke sana. Ganti tautan tersebut dengan salinan dari apa yang ditunjuknya.

4474* Jika Anda memasang plugin dan tidak memeliharanya, laporkan pesan tersebut kepada penulisnya4555* Jika Anda menginstal plugin tersebut dan tidak memeliharanya, laporkan pesan tersebut kepada pembuatnya

4475 4556 

4476### Path could not be checked4557### Path tidak dapat diperiksa

4477 4558 

4478Claude Code menanyakan sistem operasi apakah jalur plugin ada dan mendapat kesalahan selain "tidak ditemukan", jadi tidak memuat apa yang dinamai jalur. Berapa banyak plugin yang memuat tergantung pada jalur mana yang gagal:4559Claude Code menanyakan kepada sistem operasi apakah path plugin ada dan mendapatkan error selain "not found", sehingga tidak memuat apa yang disebutkan path tersebut. Seberapa banyak plugin yang dimuat bergantung pada path mana yang gagal:

4479 4560 

4480* Salah satu dari [lokasi komponen default](https://code.claude.com/docs/id/plugins/manifest-reference.md#standard-layout) plugin, seperti folder `skills/`, file `monitors/monitors.json`, atau [`SKILL.md` di root plugin](https://code.claude.com/docs/id/plugins/components#skills): komponen lain plugin masih memuat4561* Salah satu [lokasi komponen default](https://code.claude.com/docs/id/plugins/manifest-reference.md#standard-layout) plugin, seperti folder `skills/`, file `monitors/monitors.json`, atau [`SKILL.md` di root plugin](https://code.claude.com/docs/id/plugins/components#skills): komponen lain plugin tetap dimuat

4481* Direktori plugin itu sendiri: tidak ada yang memuat dari plugin itu4562* Direktori plugin itu sendiri: tidak ada apa pun dari plugin tersebut yang dimuat

4482 4563 

4483Anda tidak melihat kesalahan ini untuk jalur yang tidak ada sama sekali. Di `/plugin`, kesalahan muncul di bawah plugin dan menamai jalur dan kode yang dikembalikan sistem operasi:4564Anda tidak melihat error ini untuk path yang sama sekali tidak ada. Di `/plugin`, error muncul di bawah plugin dan menyebutkan path serta kode yang dikembalikan sistem operasi:

4484 4565 

4485```text theme={null}4566```text theme={null}

4486skills path could not be checked: /home/user/my-plugin/skills (ELOOP)4567skills path could not be checked: /home/user/my-plugin/skills (ELOOP)

4487```4568```

4488 4569 

4489Di `claude plugin list`, kesalahan yang sama berbunyi `Path not found: /home/user/my-plugin/skills (skills, ELOOP)`.4570Di `claude plugin list`, error yang sama berbunyi `Path not found: /home/user/my-plugin/skills (skills, ELOOP)`.

4490 4571 

4491Penyebab yang menghasilkan kesalahan ini termasuk:4572Penyebab yang menghasilkan error ini antara lain:

4492 4573 

4493* `ELOOP`: symlink dalam jalur menunjuk pada dirinya sendiri atau membentuk loop4574* `ELOOP`: symlink di path menunjuk ke dirinya sendiri atau membentuk loop

4494* `EIO` atau `ESTALE`: jalur berada di mount jaringan yang rusak atau basi4575* `EIO` atau `ESTALE`: path berada di mount jaringan yang rusak atau kedaluwarsa

4495* `EACCES`: salah satu direktori di atas jalur menolak Anda izin untuk melintasinya4576* `EACCES`: salah satu direktori di atas path menolak memberi Anda hak akses untuk menelusurinya

4496 4577 

4497**Yang harus dilakukan:**4578**Yang harus dilakukan:**

4498 4579 

4499* Ganti symlink yang menunjuk pada dirinya sendiri dengan folder nyata, atau hapus4580* Ganti symlink yang menunjuk ke dirinya sendiri dengan folder sungguhan, atau hapus symlink tersebut

4500* Jika jalur berada di mount jaringan, pasang kembali bagian4581* Jika path berada di mount jaringan, mount ulang share tersebut

4501* Jika kodenya adalah `EACCES`, pulihkan izin eksekusi Anda di direktori di atas jalur4582* Jika kodenya `EACCES`, pulihkan hak akses eksekusi Anda pada direktori di atas path

4502* Jalankan `/reload-plugins` setelah memperbaiki jalur, atau mulai ulang Claude Code, untuk memuat plugin atau komponen4583* Jalankan `/reload-plugins` setelah memperbaiki path, atau mulai ulang Claude Code, untuk memuat plugin atau komponen tersebut

4503 4584 

4504Sebelum v2.1.265, Claude Code memperlakukan folder komponen default yang tidak dapat diperiksa sebagai tidak ada dan memuat plugin tanpa komponen itu, tanpa kesalahan.4585Sebelum v2.1.265, Claude Code memperlakukan folder komponen default yang tidak dapat diperiksanya sebagai tidak ada dan memuat plugin tanpa komponen tersebut, tanpa error.

4505 4586 

4506### Marketplace entry path does not stay inside the marketplace directory4587### Path entri marketplace tidak tetap berada di dalam direktori marketplace

4507 4588 

4508[Entri marketplace](https://code.claude.com/docs/id/plugins/marketplace-reference.md#plugin-entries) plugin mendeklarasikan jalur sumber yang Claude Code tidak dapat diselesaikan ke lokasi di dalam direktori marketplace itu sendiri, jadi plugin tidak memasang atau memuat. Penolakan mencakup:4589[Entri marketplace](https://code.claude.com/docs/id/plugins/marketplace-reference.md#plugin-entries) plugin mendeklarasikan path sumber yang tidak dapat di-resolve oleh Claude Code ke lokasi di dalam direktori marketplace itu sendiri, sehingga plugin tidak terinstal atau dimuat. Penolakan ini mencakup:

4509 4590 

4510* Jalur entri yang absolut, memanjat keluar dari marketplace dengan `..`, atau dieja seperti jalur jaringan4591* Path entri yang absolut, keluar dari marketplace dengan `..`, atau dieja seperti path jaringan

4511* Di macOS dan Linux, jalur entri yang berisi backslash di mana pun setelah `./` terkemuka4592* Di macOS dan Linux, path entri yang berisi backslash di mana pun setelah `./` di awal

4512* Entri di marketplace yang diambil dari sumber jarak jauh, seperti git atau URL, yang mencapai targetnya melalui symlink yang diselesaikan di luar direktori marketplace4593* Entri di marketplace yang diambil dari sumber jarak jauh, seperti git atau URL, yang mencapai targetnya melalui symlink yang di-resolve ke luar direktori marketplace

4513* Entri relatif di marketplace yang ditambahkan dari URL langsung ke `marketplace.json`: Claude Code hanya mengunduh file itu, jadi tidak ada file plugin lokal untuk jalur yang dinamai. Lihat [Plugins with relative paths fail in URL-based marketplaces](https://code.claude.com/docs/id/plugins/troubleshooting.md#plugins-with-relative-paths-fail-in-url-based-marketplaces)4594* Entri relatif di marketplace yang ditambahkan dari URL langsung ke `marketplace.json`-nya: Claude Code hanya mengunduh file tersebut, sehingga tidak ada file plugin lokal yang dapat disebutkan oleh path tersebut. Lihat [Plugin dengan path relatif gagal di marketplace berbasis URL](https://code.claude.com/docs/id/plugins/troubleshooting.md#plugins-with-relative-paths-fail-in-url-based-marketplaces)

4514 4595 

4515`claude plugin install` melaporkan penolakan seperti ini:4596`claude plugin install` melaporkan penolakan seperti ini:

4516 4597 


4518Cannot install my-plugin@my-marketplace: its marketplace entry path does not stay inside the marketplace directory (an absolute, climbing, network-shaped, backslash-containing or link-traversing entry, an entry of a fetched marketplace that resolves or opens outside its tree — or a relative entry in a url-catalog marketplace, which has no local directory)4599Cannot install my-plugin@my-marketplace: its marketplace entry path does not stay inside the marketplace directory (an absolute, climbing, network-shaped, backslash-containing or link-traversing entry, an entry of a fetched marketplace that resolves or opens outside its tree — or a relative entry in a url-catalog marketplace, which has no local directory)

4519```4600```

4520 4601 

4521Ketika entri plugin yang sudah terpasang gagal pemeriksaan yang sama, `claude plugin list` menampilkan plugin sebagai `failed to load` dengan:4602Ketika entri plugin yang sudah terinstal gagal dalam pemeriksaan yang sama, `claude plugin list` menampilkan plugin tersebut sebagai `failed to load` dengan:

4522 4603 

4523```text theme={null}4604```text theme={null}

4524Plugin source path refused: ./my-plugin does not stay inside its marketplace directory. Check that the marketplace entry has a plain relative path.4605Plugin source path refused: ./my-plugin does not stay inside its marketplace directory. Check that the marketplace entry has a plain relative path.


4526 4607 

4527**Yang harus dilakukan:**4608**Yang harus dilakukan:**

4528 4609 

4529* Jika Anda memelihara marketplace, tulis `source` entri sebagai jalur relatif biasa dengan garis miring maju, seperti `./plugins/my-plugin`, dan jaga agar symlink apa pun yang dilintasinya menunjuk ke dalam direktori marketplace4610* Jika Anda memelihara marketplace tersebut, tulis `source` entri sebagai path relatif biasa dengan garis miring maju, seperti `./plugins/my-plugin`, dan pastikan setiap symlink yang dilewatinya menunjuk ke dalam direktori marketplace

4530* Jika Anda menambahkan marketplace dari URL langsung, entri relatif tidak dapat diselesaikan. Minta penulis marketplace untuk menggunakan [sumber plugin lain](https://code.claude.com/docs/id/plugins/marketplace-reference.md#plugin-sources), atau tambahkan marketplace dari repositori git-nya sebagai gantinya4611* Jika Anda menambahkan marketplace dari URL langsung, entri relatif tidak dapat di-resolve. Minta pembuat marketplace untuk menggunakan [sumber plugin lain](https://code.claude.com/docs/id/plugins/marketplace-reference.md#plugin-sources), atau tambahkan marketplace dari repositori git-nya

4531 4612 

4532### Failed to load marketplace configuration4613### Gagal memuat konfigurasi marketplace

4533 4614 

4534Claude Code menyimpan marketplace plugin yang telah Anda tambahkan dalam file registri di `~/.claude/plugins/known_marketplaces.json`. Perintah plugin yang memerlukan registri, seperti `claude plugin install`, gagal dengan salah satu dari dua pesan ketika Claude Code tidak dapat menggunakan file:4615Claude Code menyimpan marketplace plugin yang telah Anda tambahkan dalam file registri di `~/.claude/plugins/known_marketplaces.json`. Perintah plugin yang memerlukan registri, seperti `claude plugin install`, gagal dengan salah satu dari dua pesan ketika Claude Code tidak dapat menggunakan file tersebut:

4535 4616 

4536* `Failed to load marketplace configuration`: file bukan JSON yang valid, atau tidak dapat dibaca. File kosong gagal dengan cara ini juga.4617* `Failed to load marketplace configuration`: file ada tetapi bukan JSON yang valid atau tidak dapat dibaca. File kosong juga gagal dengan cara ini.

4537* `Marketplace configuration file is corrupted`: file adalah JSON yang valid tetapi isinya tidak cocok dengan skema registri.4618* `Marketplace configuration file is corrupted`: file berupa JSON yang valid tetapi isinya tidak cocok dengan skema registri.

4538 4619 

4539Dengan file kosong, `claude plugin install` melaporkan:4620Dengan file kosong, `claude plugin install` melaporkan:

4540 4621 


4546 4627 

4547**Yang harus dilakukan:**4628**Yang harus dilakukan:**

4548 4629 

4549* Buka `~/.claude/plugins/known_marketplaces.json` dan perbaiki JSON, atau perbaiki entri yang pesan namakan sebagai tidak cocok dengan skema registri4630* Buka `~/.claude/plugins/known_marketplaces.json` dan perbaiki JSON-nya, atau perbaiki entri yang disebutkan pesan sebagai tidak cocok dengan skema registri

4550* Jika Anda tidak dapat memperbaikinya, hapus file atau ganti isinya dengan `{}`, kemudian tambahkan kembali setiap marketplace dengan `claude plugin marketplace add <source>`. Claude Code mendaftarkan kembali marketplace yang dideklarasikan pengaturan pengguna atau terkelola Anda dalam [`extraKnownMarketplaces`](https://code.claude.com/docs/id/settings-reference#extraknownmarketplaces) lain kali Anda memulainya di folder yang telah Anda percayai.4631* Jika Anda tidak dapat memperbaikinya, hapus file tersebut atau ganti isinya dengan `{}`, lalu tambahkan kembali setiap marketplace dengan `claude plugin marketplace add <source>`. Claude Code mendaftarkan ulang marketplace yang dideklarasikan pengaturan pengguna atau pengaturan terkelola Anda di [`extraKnownMarketplaces`](https://code.claude.com/docs/id/settings-reference#extraknownmarketplaces) saat berikutnya Anda menjalankannya di folder yang telah Anda percayai.

4551 4632 

4552### Plugin is required by your organization4633### Plugin diwajibkan oleh organisasi Anda

4553 4634 

4554Anda menjalankan `claude plugin disable`, atau menggunakan tab **Installed** `/plugin`, untuk mematikan [plugin yang disinkronkan dari claude.ai](https://code.claude.com/docs/id/plugins/loading.md#synced-plugins) yang organisasi Anda tandai sebagai diperlukan:4635Anda menjalankan `claude plugin disable`, atau menggunakan tab **Installed** di `/plugin`, untuk mematikan [plugin yang disinkronkan dari claude.ai](https://code.claude.com/docs/id/plugins/loading.md#synced-plugins) yang ditandai sebagai wajib oleh organisasi Anda:

4555 4636 

4556```text theme={null}4637```text theme={null}

4557Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.4638Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.

4558```4639```

4559 4640 

4560Claude Code tidak menyimpan apa pun dan plugin tetap diaktifkan.4641Claude Code tidak menyimpan apa pun dan plugin tetap aktif.

4561 4642 

4562Ketika Anda mencoba menonaktifkan plugin yang diperlukan oleh plugin yang diperlukan, Claude Code menolak dengan cara yang sama, dengan pesan yang menamai plugin yang diperlukan yang membutuhkannya.4643Ketika Anda mencoba menonaktifkan plugin yang menjadi dependensi plugin wajib, Claude Code menolak dengan cara yang sama, dengan pesan yang menyebutkan plugin wajib yang membutuhkannya.

4563 4644 

4564**Yang harus dilakukan:**4645**Yang harus dilakukan:**

4565 4646 

4566* Tanyakan admin organisasi claude.ai Anda untuk mengubah status yang diperlukan plugin di claude.ai4647* Minta admin organisasi claude.ai Anda untuk mengubah status wajib plugin tersebut di claude.ai

4567 4648 

4568### Plugin was not uninstalled4649### Plugin tidak dihapus instalasinya

4569 4650 

4570Anda menjalankan [`claude plugin uninstall`](https://code.claude.com/docs/id/plugins/cli-reference#plugin-uninstall), atau memilih **Uninstall** di tab **Installed** `/plugin`, dan pencopotan berhenti dengan pesan yang dimulai `"<plugin>" was not uninstalled:`. Jika teks setelah titik dua itu dimulai dengan `installed_plugins.json` daripada menamai file pengaturan, penyebabnya adalah konten dalam `installed_plugins.json` yang versi Claude Code ini tidak dapat dibaca. Untuk bentuk itu, lihat [`installed_plugins.json` holds a record this version can't read](https://code.claude.com/docs/id/plugins/troubleshooting#installed-plugins-json-holds-a-record-this-version-cannot-read).4651Anda menjalankan [`claude plugin uninstall`](https://code.claude.com/docs/id/plugins/cli-reference#plugin-uninstall), atau memilih **Uninstall** di tab **Installed** di `/plugin`, dan penghapusan instalasi berhenti dengan pesan yang diawali `"<plugin>" was not uninstalled:`. Jika teks setelah titik dua tersebut diawali dengan `installed_plugins.json` alih-alih menyebutkan file pengaturan, penyebabnya adalah konten di `installed_plugins.json` yang tidak dapat dibaca oleh versi Claude Code ini. Untuk bentuk tersebut, lihat [`installed_plugins.json` menyimpan catatan yang tidak dapat dibaca versi ini](https://code.claude.com/docs/id/plugins/troubleshooting#installed-plugins-json-holds-a-record-this-version-cannot-read).

4571 4652 

4572Ketika Claude Code menghapus entri plugin dari `enabledPlugins` dan membaca kembali file pengaturan cakupan itu, baik plugin masih dihidupkan di sana, atau file yang dapat menghidupkannya tidak dapat dibaca atau diperiksa. Menghapus opsi tersimpan plugin, rahasia, dan data sementara entri pengaturan dapat menghidupkannya kembali akan kehilangannya, jadi pencopotan berhenti sebagai gantinya: plugin tetap terpasang dan tidak ada yang disimpannya yang dihapus.4653Ketika Claude Code menghapus entri plugin dari `enabledPlugins` dan membaca kembali file pengaturan cakupan tersebut, entah plugin masih dinyalakan di sana, atau file yang dapat menyalakannya tidak dapat dibaca atau diperiksa. Menghapus opsi, rahasia, dan data plugin yang tersimpan sementara entri pengaturan dapat menyalakannya kembali akan menghilangkan semua itu, sehingga penghapusan instalasi dihentikan: plugin tetap terinstal dan tidak ada yang disimpannya yang dihapus.

4573 4654 

4574```text theme={null}4655```text theme={null}

4575✘ Failed to uninstall plugin "formatter": "formatter" was not uninstalled: it is still switched on in /home/user/project/.claude/settings.local.json, although the settings change reported no error. It is still installed. Take it out of "enabledPlugins" in that file yourself, then uninstall it again.4656✘ Failed to uninstall plugin "formatter": "formatter" was not uninstalled: it is still switched on in /home/user/project/.claude/settings.local.json, although the settings change reported no error. It is still installed. Take it out of "enabledPlugins" in that file yourself, then uninstall it again.

4576```4657```

4577 4658 

4578Bagian tengah pesan menamai file dan penyebabnya:4659Bagian tengah pesan menyebutkan file dan penyebabnya:

4579 4660 

4580* `it is still switched on in <file>, although the settings change reported no error`: penulisan pengaturan melaporkan kesuksesan tetapi entri masih ada ketika file dibaca kembali4661* `it is still switched on in <file>, although the settings change reported no error`: penulisan pengaturan melaporkan keberhasilan tetapi entri masih ada ketika file dibaca kembali

4581* `it is still switched on in <file>, and the settings change failed (<error>)`: file tidak dapat disimpan, untuk alasan dalam tanda kurung4662* `it is still switched on in <file>, and the settings change failed (<error>)`: file tidak dapat disimpan, karena alasan di dalam tanda kurung

4582* `<file> is there and could not be read`: file ada tetapi tidak dapat dibaca sebagai pengaturan, misalnya karena bukan JSON yang valid, jadi mungkin masih mengaktifkan plugin4663* `<file> is there and could not be read`: file ada tetapi tidak dapat dibaca sebagai pengaturan, misalnya karena bukan JSON yang valid, sehingga file tersebut mungkin masih mengaktifkan plugin

4583* `<file> (not read: it is on a network path or is a link to one, or could not be checked)`: Claude Code tidak membaca file pengaturan proyek atau lokal karena file, atau folder `.claude` yang menahannya, adalah tautan yang mengarah ke lokasi jaringan, atau karena tidak dapat memeriksa jalur itu4664* `<file> (not read: it is on a network path or is a link to one, or could not be checked)`: Claude Code tidak membaca file pengaturan proyek atau lokal karena file tersebut, atau folder `.claude` yang menampungnya, adalah tautan yang mengarah ke lokasi jaringan, atau karena Claude Code tidak dapat memeriksa path tersebut

4584 4665 

4585`claude plugin uninstall` keluar 1, dan dengan `--json` hasilnya membawa `failureCode: "settings_still_on"`. `/plugin` menampilkan pesan yang sama.4666`claude plugin uninstall` keluar dengan kode 1, dan dengan `--json` hasilnya membawa `failureCode: "settings_still_on"`. `/plugin` menampilkan pesan yang sama.

4586 4667 

4587**Yang harus dilakukan:**4668**Yang harus dilakukan:**

4588 4669 

4589* Ikuti kalimat terakhir pesan: perbaiki atau ganti file pengaturan yang dinamainya, atau hapus entri plugin dari `enabledPlugins` di file itu sendiri, kemudian jalankan pencopotan lagi4670* Ikuti kalimat terakhir pesan: perbaiki atau ganti file pengaturan yang disebutkannya, atau hapus sendiri entri plugin dari `enabledPlugins` di file tersebut, lalu jalankan penghapusan instalasi lagi

4590 4671 

4591### Skipping connection (recent failure cached; retries automatically in 15 min, or edit the plugin config to retry now)4672### Skipping connection (recent failure cached; retries automatically in 15 min, or edit the plugin config to retry now)

4592 4673 

4593Pesan ini berarti Claude Code tidak memulai [server MCP yang disediakan plugin](https://code.claude.com/docs/id/mcp.md#plugin-provided-mcp-servers) berbasis stdio, karena koneksi ke server tersebut gagal kurang dari 15 menit sebelumnya:4674Pesan ini berarti Claude Code tidak memulai [server MCP yang disediakan plugin](https://code.claude.com/docs/id/mcp.md#plugin-provided-mcp-servers) berjenis stdio, karena koneksi ke server tersebut gagal kurang dari 15 menit sebelumnya:

4594 4675 

4595```text theme={null}4676```text theme={null}

4596Skipping connection (recent failure cached; retries automatically in 15 min, or edit the plugin config to retry now)4677Skipping connection (recent failure cached; retries automatically in 15 min, or edit the plugin config to retry now)

4597```4678```

4598 4679 

4599Sesi berlanjut tanpa tool dari server tersebut, dan Claude Code tidak mencoba server itu lagi dalam sesi tersebut ketika 15 menit berakhir. Ketika Anda memulai sesi baru atau menjalankan [`claude -p`](https://code.claude.com/docs/id/headless) setidaknya 15 menit setelah koneksi gagal terakhir, Claude Code mencoba server itu lagi.4680Sesi berlanjut tanpa tool dari server tersebut, dan Claude Code tidak mencoba server itu lagi di sesi tersebut ketika 15 menit berakhir. Ketika Anda memulai sesi baru atau menjalankan [`claude -p`](https://code.claude.com/docs/id/headless) setidaknya 15 menit setelah koneksi gagal terakhir, Claude Code mencoba server tersebut lagi.

4600 4681 

4601**Yang harus dilakukan:**4682**Yang harus dilakukan:**

4602 4683 

4603Agar Claude Code mencoba server lagi tanpa menunggu:4684Agar Claude Code mencoba server tersebut lagi tanpa menunggu:

4604 4685 

4605* **Dalam sesi interaktif**: jalankan `/mcp`, pilih server, dan pilih **Reconnect**4686* **Di sesi interaktif**: jalankan `/mcp`, pilih server, lalu pilih **Reconnect**

4606* **Dalam aplikasi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md)**: panggil [`reconnectMcpServer()`](https://code.claude.com/docs/id/agent-sdk/typescript#methods) di TypeScript atau [`ClaudeSDKClient.reconnect_mcp_server()`](https://code.claude.com/docs/id/agent-sdk/python#methods) di Python dengan nama server4687* **Di aplikasi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md)**: panggil [`reconnectMcpServer()`](https://code.claude.com/docs/id/agent-sdk/typescript#methods) di TypeScript atau [`ClaudeSDKClient.reconnect_mcp_server()`](https://code.claude.com/docs/id/agent-sdk/python#methods) di Python dengan nama server

4607* **Dalam `claude -p`**: mulai sesi interaktif yang memuat plugin yang sama, di mesin yang sama dan dengan akun sistem operasi serta nilai [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars) yang sama dengan eksekusi Anda. Hubungkan ulang server di sana dari `/mcp`. Setelah terhubung, Claude Code mencoba koneksi tersebut pada eksekusi Anda berikutnya.4688* **Di `claude -p`**: mulai sesi interaktif yang memuat plugin yang sama, di mesin yang sama dan dengan akun sistem operasi serta nilai [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars) yang sama dengan eksekusi Anda. Sambungkan ulang server di sana dari `/mcp`. Setelah tersambung, Claude Code mencoba koneksi tersebut pada eksekusi Anda berikutnya.

4608* **Jika Anda sedang mengembangkan plugin**: ubah `command`, `args`, atau `env` server di `.mcp.json` atau `plugin.json` plugin. Claude Code mencoba koneksi tersebut pada sesi atau eksekusi `claude -p` berikutnya yang memuat entri yang telah diubah.4689* **Jika Anda sedang mengembangkan plugin**: ubah `command`, `args`, atau `env` server di `.mcp.json` atau `plugin.json` plugin. Claude Code mencoba koneksi tersebut di sesi berikutnya atau eksekusi `claude -p` yang memuat entri yang telah diubah.

4609 4690 

4610Pesan ini menggantikan kesalahan dari koneksi yang gagal. Jika percobaan baru juga gagal, Claude Code melaporkan kesalahan percobaan tersebut alih-alih pesan ini.4691Pesan ini menggantikan error dari koneksi yang gagal. Jika percobaan baru juga gagal, Claude Code melaporkan error dari percobaan tersebut alih-alih pesan ini.

4611 4692 

4612## Kesalahan tool4693## Error tool

4613 4694 

4614Kesalahan ini berasal dari panggilan tool Claude. Claude memperbaiki sebagian besar kesalahan tool secara otomatis. Ketika salah satu memerlukan perubahan dari Anda, daftar **What to do** kesalahan tersebut mengatakan apa yang harus diubah.4695Error ini berasal dari panggilan tool Claude. Claude memperbaiki sebagian besar error tool dengan sendirinya. Ketika suatu error memerlukan perubahan dari Anda, daftar **Yang perlu dilakukan** pada error tersebut menjelaskan apa yang harus diubah.

4615 4696 

4616### No such tool available4697### No such tool available

4617 4698 

4618Claude memanggil tool dengan nama yang tidak ada dalam daftar tool sesi. Claude Code mengembalikan kesalahan tersebut kepada Claude sebagai hasil panggilan tool, dan giliran berlanjut. Ketika Claude Code dapat mengetahui mengapa tool tersebut tidak ada, Claude Code menambahkan kalimat setelah nama tool yang memberikan alasannya atau menyebutkan tool yang harus dipanggil sebagai gantinya, seperti pada baris kedua:4699Claude memanggil tool dengan nama yang tidak ada dalam daftar tool sesi. Claude Code mengembalikan error tersebut kepada Claude sebagai hasil panggilan tool, dan giliran berlanjut. Ketika Claude Code dapat mengetahui mengapa tool tersebut tidak ada, Claude Code menambahkan kalimat setelah nama tool yang memberikan alasannya atau menyebutkan tool yang sebaiknya dipanggil, seperti pada baris kedua:

4619 4700 

4620```text theme={null}4701```text theme={null}

4621Error: No such tool available: <tool name>4702Error: No such tool available: <tool name>

4622Error: No such tool available: read. Tool names are case-sensitive: call Read instead.4703Error: No such tool available: read. Tool names are case-sensitive: call Read instead.

4623```4704```

4624 4705 

4625Tepat setelah Anda melanjutkan sesi, server MCP mungkin masih berada pada upaya koneksi pertamanya ketika Claude memanggil salah satu tool-nya. Claude Code kemudian [menunggu server](https://code.claude.com/docs/id/mcp.md#tool-availability) dan mengembalikan kesalahan ini jika tool tersebut masih belum tersedia saat penantian berakhir. Sebelum v2.1.284, panggilan seperti itu langsung gagal alih-alih menunggu.4706Tepat setelah Anda melanjutkan sesi, server MCP mungkin masih dalam upaya koneksi pertamanya ketika Claude memanggil salah satu tool-nya. Claude Code kemudian [menunggu server](https://code.claude.com/docs/id/mcp.md#tool-availability) dan mengembalikan error ini jika tool masih belum tersedia ketika waktu tunggu berakhir. Sebelum v2.1.284, panggilan seperti itu langsung gagal alih-alih menunggu.

4626 4707 

4627Panggilan yang nama tool-nya [dipotong Claude Code menjadi 200 karakter](#tool-use-name-over-200-characters) juga gagal dengan kesalahan ini.4708Panggilan yang nama tool-nya [dipotong oleh Claude Code menjadi 200 karakter](#tool-use-name-over-200-characters) juga gagal dengan error ini.

4628 4709 

4629**What to do:**4710**Yang perlu dilakukan:**

4630 4711 

4631* Jika terjadi sekali, Anda tidak perlu melakukan apa pun. Claude membaca kesalahan tersebut dan giliran berlanjut.4712* Jika hanya terjadi sekali, Anda tidak perlu melakukan apa pun. Claude membaca error tersebut dan giliran berlanjut.

4632* Jika panggilan ke tool milik server MCP terus gagal dengan kesalahan ini, jalankan `/mcp` di sesi atau `claude mcp list` di shell Anda untuk memeriksa [status](https://code.claude.com/docs/id/mcp.md#server-status) server, dan sambungkan kembali server yang gagal dari `/mcp`. Di Agent SDK, lihat [Error handling](https://code.claude.com/docs/id/agent-sdk/mcp.md#error-handling).4713* Jika panggilan ke tool server MCP terus gagal dengan error ini, jalankan `/mcp` di sesi atau `claude mcp list` di shell Anda untuk memeriksa [status](https://code.claude.com/docs/id/mcp.md#server-status) server, lalu sambungkan kembali server yang gagal dari `/mcp`. Di Agent SDK, lihat [Penanganan error](https://code.claude.com/docs/id/agent-sdk/mcp.md#error-handling).

4633 4714 

4634### MCP server connection closed before the tool call was answered4715### MCP server connection closed before the tool call was answered

4635 4716 

4636Panggilan tool ke [server MCP](https://code.claude.com/docs/id/mcp.md) HTTP atau [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai) kehilangan koneksinya sebelum server menjawab, sehingga Claude Code tidak dapat mengetahui apakah tool tersebut sudah berjalan:4717Panggilan tool ke [server MCP](https://code.claude.com/docs/id/mcp.md) HTTP atau [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai) kehilangan koneksinya sebelum server menjawab, sehingga Claude Code tidak dapat mengetahui apakah tool tersebut telah berjalan:

4637 4718 

4638```text theme={null}4719```text theme={null}

4639MCP server "<name>" connection closed before the tool call was answered. The tool may have run: check whether it did before running it again.4720MCP server "<name>" connection closed before the tool call was answered. The tool may have run: check whether it did before running it again.

4640```4721```

4641 4722 

4642Mengulangi panggilan dapat mengulangi tindakan tool tersebut, seperti membuat issue kedua. Karena itu, Claude Code mengulangi panggilan dengan sendirinya, satu kali, ketika server menandai tool tersebut sebagai aman untuk diulang.4723Mengulangi panggilan dapat mengulangi tindakan tool, seperti membuat issue kedua. Oleh karena itu, Claude Code mengulangi panggilan dengan sendirinya, satu kali, hanya ketika server menandai tool tersebut sebagai aman untuk diulang.

4643 4724 

4644**What to do:**4725**Yang perlu dilakukan:**

4645 4726 

4646* Periksa di layanan yang menjadi sasaran tool apakah tindakan tersebut terjadi, misalnya apakah issue atau catatan yang seharusnya dibuatnya sudah ada4727* Periksa di layanan tempat tool bertindak apakah tindakan tersebut terjadi, misalnya apakah issue atau catatan yang seharusnya dibuat sudah ada

4647* Jika tindakan tersebut terjadi, jangan jalankan tool lagi. Claude menerima pesan ini sebagai pengganti hasil tool, jadi beri tahu Claude hasilnya.4728* Jika tindakan tersebut terjadi, jangan jalankan tool lagi. Claude menerima pesan ini sebagai pengganti hasil tool, jadi beri tahu Claude hasilnya.

4648* Jika tindakan tersebut tidak terjadi, minta Claude menjalankan tool lagi. Anda tidak perlu menyambungkan kembali server terlebih dahulu, karena Claude Code terhubung kembali ke server tersebut untuk panggilan berikutnya ke salah satu tool-nya. Jika koneksi itu juga gagal, lihat [Mid-session drops of a remote server](https://code.claude.com/docs/id/mcp.md#mid-session-drops-of-a-remote-server).4729* Jika tindakan tersebut tidak terjadi, minta Claude untuk menjalankan tool lagi. Anda tidak perlu menyambungkan ulang server terlebih dahulu, karena Claude Code akan terhubung kembali ke server tersebut untuk panggilan berikutnya ke salah satu tool-nya. Jika koneksi itu juga gagal, lihat [Putusnya server jarak jauh di tengah sesi](https://code.claude.com/docs/id/mcp.md#mid-session-drops-of-a-remote-server).

4649* Jika Anda membangun server tersebut dan tool-nya aman untuk dipanggil dua kali, [tandai sebagai aman untuk diulang](https://code.claude.com/docs/id/mcp.md#tool-calls-pending-when-a-connection-closes) agar Claude Code dapat mengulangi panggilan yang hilang4730* Jika Anda yang membangun server dan tool tersebut aman dipanggil dua kali, [tandai sebagai aman untuk diulang](https://code.claude.com/docs/id/mcp.md#tool-calls-pending-when-a-connection-closes) agar Claude Code dapat mengulangi panggilan yang hilang

4650 4731 

4651### MCP server is disabled4732### MCP server is disabled

4652 4733 

4653Pesan ini dalam hasil tool berarti Claude memanggil tool pada [server MCP](https://code.claude.com/docs/id/mcp.md) yang [dimatikan](https://code.claude.com/docs/id/mcp.md#disable-a-server-without-removing-it). Claude Code tidak terhubung ke server tersebut, jadi tool tidak berjalan, dan Claude menerima teks ini sebagai pengganti hasil:4734Pesan ini dalam hasil tool berarti Claude memanggil tool pada [server MCP](https://code.claude.com/docs/id/mcp.md) yang [dimatikan](https://code.claude.com/docs/id/mcp.md#disable-a-server-without-removing-it). Claude Code tidak terhubung ke server tersebut, sehingga tool tidak berjalan, dan Claude menerima teks ini sebagai pengganti hasil:

4654 4735 

4655```text wrap theme={null}4736```text wrap theme={null}

4656MCP server "<name>" is disabled — re-enable it via /mcp to use its tools4737MCP server "<name>" is disabled — re-enable it via /mcp to use its tools

4657```4738```

4658 4739 

4659**What to do:**4740**Yang perlu dilakukan:**

4660 4741 

4661* Jika Anda memang bermaksud mematikan server tersebut, Anda tidak perlu melakukan apa pun4742* Jika Anda memang bermaksud mematikan server tersebut, Anda tidak perlu melakukan apa pun

4662* Jika Claude membutuhkan tool dari server tersebut, aktifkan kembali server dari `/mcp` di prompt Claude Code4743* Jika Claude memerlukan tool dari server tersebut, aktifkan kembali dari `/mcp` di prompt Claude Code

4663* Dalam aplikasi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), aktifkan kembali server dengan memanggil [`toggleMcpServer()`](https://code.claude.com/docs/id/agent-sdk/typescript#togglemcpserver) di TypeScript dengan `enabled` diatur ke `true`, atau [`toggle_mcp_server()`](https://code.claude.com/docs/id/agent-sdk/python#claudesdkclient) di Python dengan `enabled` diatur ke `True`4744* Dalam aplikasi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), aktifkan kembali server dengan memanggil [`toggleMcpServer()`](https://code.claude.com/docs/id/agent-sdk/typescript#togglemcpserver) di TypeScript dengan `enabled` disetel ke `true`, atau [`toggle_mcp_server()`](https://code.claude.com/docs/id/agent-sdk/python#claudesdkclient) di Python dengan `enabled` disetel ke `True`

4664 4745 

4665### MCP tool call timed out with the server's question unanswered4746### MCP tool call timed out with the server's question unanswered

4666 4747 

4667Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), sebuah [server MCP](https://code.claude.com/docs/id/mcp.md) meminta input melalui [elicitation](https://code.claude.com/docs/id/mcp.md#respond-to-mcp-elicitation-requests) selama panggilan tool, dan batas waktu panggilan tersebut habis sebelum jawaban datang:4748Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), sebuah [server MCP](https://code.claude.com/docs/id/mcp.md) meminta input melalui [elicitation](https://code.claude.com/docs/id/mcp.md#respond-to-mcp-elicitation-requests) selama panggilan tool, dan batas waktu panggilan habis sebelum jawaban datang:

4668 4749 

4669```text theme={null}4750```text theme={null}

4670MCP server "<name>" tool "<tool>" timed out after <N>s. The server asked the user a question, and no answer came before the time limit. Do not call this tool again in this turn. Tell the user that the server's question got no answer, and wait for their reply.4751MCP server "<name>" tool "<tool>" timed out after <N>s. The server asked the user a question, and no answer came before the time limit. Do not call this tool again in this turn. Tell the user that the server's question got no answer, and wait for their reply.


4672 4753 

4673Sebelum v2.1.310, hasilnya berakhir pada `timed out after <N>s` dan tidak menyebutkan apa pun tentang pertanyaan tersebut.4754Sebelum v2.1.310, hasilnya berakhir pada `timed out after <N>s` dan tidak menyebutkan apa pun tentang pertanyaan tersebut.

4674 4755 

4675**What to do:**4756**Yang perlu dilakukan:**

4676 4757 

4677* Siapkan [hook `Elicitation`](https://code.claude.com/docs/id/hooks#elicitation) yang menjawab permintaan server4758* Siapkan [hook `Elicitation`](https://code.claude.com/docs/id/hooks#elicitation) yang menjawab permintaan server

4678* Dalam aplikasi Agent SDK TypeScript, buat callback [`onElicitation`](https://code.claude.com/docs/id/agent-sdk/typescript#options) Anda mengembalikan jawabannya sebelum batas waktu habis4759* Dalam aplikasi Agent SDK TypeScript, buat callback [`onElicitation`](https://code.claude.com/docs/id/agent-sdk/typescript#options) Anda mengembalikan jawabannya sebelum batas waktu habis

4679* Untuk memberi lebih banyak waktu bagi jawaban, atur [`timeout`](https://code.claude.com/docs/id/mcp#time-limits-on-mcp-tool-calls) yang lebih lama dalam milidetik di entri konfigurasi server, seperti `"timeout": 600000` untuk 10 menit4760* Untuk memberi lebih banyak waktu bagi jawaban, setel [`timeout`](https://code.claude.com/docs/id/mcp#time-limits-on-mcp-tool-calls) yang lebih panjang dalam milidetik di entri konfigurasi server, seperti `"timeout": 600000` untuk 10 menit

4680* Jalankan tugas dalam sesi interaktif sebagai gantinya dan jawab sendiri [dialog](https://code.claude.com/docs/id/mcp.md#respond-to-mcp-elicitation-requests) server4761* Jalankan tugas tersebut dalam sesi interaktif dan jawab sendiri [dialog](https://code.claude.com/docs/id/mcp.md#respond-to-mcp-elicitation-requests) server

4681 4762 

4682### Permission prompt tool returned an invalid result4763### Permission prompt tool returned an invalid result

4683 4764 

4684Tool yang Anda berikan ke [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) mengembalikan jawaban yang tidak dapat dibaca Claude Code, sehingga panggilan tool yang menunggunya tidak berjalan, bahkan jika jawaban tersebut mengizinkan panggilan itu:4765Tool yang Anda berikan ke [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) mengembalikan jawaban yang tidak dapat dibaca Claude Code, sehingga panggilan tool yang menunggunya tidak berjalan, bahkan jika jawaban tersebut mengizinkan panggilan:

4685 4766 

4686```text wrap theme={null}4767```text wrap theme={null}

4687Permission prompt tool returned an invalid result. Expected a single text block param with type="text" and a string text value.4768Permission prompt tool returned an invalid result. Expected a single text block param with type="text" and a string text value.

4688```4769```

4689 4770 

4690**What to do:**4771**Yang perlu dilakukan:**

4691 4772 

4692* Kembalikan satu blok teks yang teksnya adalah `{"behavior": "allow"}` atau `{"behavior": "deny", "message": "<reason>"}`. Untuk mengubah input, tambahkan `updatedInput` ke objek `allow`. Dari v2.1.86 hingga v2.1.206, `allow` memerlukan `"updatedInput": {}` untuk mempertahankan input.4773* Kembalikan satu blok teks yang teksnya adalah `{"behavior": "allow"}` atau `{"behavior": "deny", "message": "<reason>"}`. Untuk mengubah input, tambahkan `updatedInput` ke objek `allow`. Dari v2.1.86 hingga v2.1.206, sebuah `allow` memerlukan `"updatedInput": {}` untuk mempertahankan input.

4693* Jangan kembalikan [`structuredContent`](https://code.claude.com/docs/id/agent-sdk/custom-tools#return-structured-data), yang mungkin ditambahkan MCP SDK Anda dengan sendirinya. Misalnya, daftarkan tool:4774* Jangan kembalikan [`structuredContent`](https://code.claude.com/docs/id/agent-sdk/custom-tools#return-structured-data), yang mungkin ditambahkan sendiri oleh SDK MCP Anda. Misalnya, daftarkan tool:

4694 * **`FastMCP` atau `MCPServer` dari `mcp.server`**: dengan `structured_output=False`4775 * **`FastMCP` atau `MCPServer` dari `mcp.server`**: dengan `structured_output=False`

4695 * **`FastMCP` dari `fastmcp`**: dengan `output_schema=None`, dan kembalikan string4776 * **`FastMCP` dari `fastmcp`**: dengan `output_schema=None`, dan kembalikan string

4696 * **MCP TypeScript SDK**: tanpa `outputSchema`4777 * **MCP TypeScript SDK**: tanpa `outputSchema`

4697* Jika kesalahan hanya muncul dengan input sekitar 40 KB atau lebih, jangan salin input ke `updatedInput` atau `message` dari penolakan. Untuk mengubah input sebesar itu, [naikkan batas output tool prompt Anda](https://code.claude.com/docs/id/mcp.md#raise-the-limit-for-a-specific-tool).4778* Jika error hanya muncul dengan input sekitar 40 KB atau lebih, jangan salin input ke `updatedInput` atau ke `message` dari deny. Untuk mengubah input sebesar itu, [naikkan batas output tool prompt Anda](https://code.claude.com/docs/id/mcp.md#raise-the-limit-for-a-specific-tool).

4698 4779 

4699### Agent would be spawned with zero tools4780### Agent would be spawned with zero tools

4700 4781 

4701Setiap entri dalam [`tools` list](https://code.claude.com/docs/id/sub-agents#supported-frontmatter-fields) subagent gagal cocok dengan tool yang dapat digunakan, jadi Claude Code menolak untuk meluncurkan subagent: tanpa tool, subagent tidak bisa bertindak. Pesan mengelompokkan entri Anda berdasarkan apa yang salah:4782Setiap entri dalam [daftar `tools`](https://code.claude.com/docs/id/sub-agents#supported-frontmatter-fields) subagent gagal cocok dengan tool yang dapat digunakan, sehingga Claude Code menolak meluncurkan subagent: tanpa tool, subagent tidak dapat bertindak. Pesan tersebut mengelompokkan entri Anda berdasarkan apa yang salah:

4702 4783 

4703* **Unrecognized**: entri tidak cocok dengan nama tool apa pun, biasanya kesalahan ketik seperti `Grpe` untuk `Grep`.4784* **Tidak dikenali**: entri tidak cocok dengan nama tool mana pun, biasanya salah ketik seperti `Grpe` untuk `Grep`.

4704* **Not available to subagents**: entri menamai tool nyata yang [tidak dapat digunakan subagent](https://code.claude.com/docs/id/sub-agents.md#available-tools). Subagent latar belakang menyimpan set tool bawaan yang lebih kecil, jadi entri yang hanya dapat digunakan subagent foreground masuk ke sini ketika subagent akan berjalan di latar belakang, yang merupakan default. Jika Anda mencantumkan `Agent`, pesan melaporkannya di bawah grup berikutnya.4785* **Tidak tersedia untuk subagent**: entri menyebutkan tool nyata yang [tidak dapat digunakan subagent](https://code.claude.com/docs/id/sub-agents.md#available-tools). Subagent latar belakang mempertahankan set tool bawaan yang lebih kecil, sehingga entri yang hanya dapat digunakan oleh subagent latar depan masuk ke sini ketika subagent akan berjalan di latar belakang, yang merupakan default. Jika Anda mencantumkan `Agent`, pesan melaporkannya di bawah kelompok berikutnya.

4705* **Matched no tools in this session**: entri valid tetapi tidak ada tool dalam sesi saat ini yang cocok dengannya sekarang, seperti `mcp__github__*` tanpa server MCP GitHub yang terhubung, atau `Agent` untuk subagent pada [batas kedalaman](https://code.claude.com/docs/id/sub-agents.md#let-subagents-spawn-their-own-subagents).4786* **Tidak cocok dengan tool apa pun di sesi ini**: entri valid tetapi tidak ada tool di sesi saat ini yang cocok dengannya saat ini, seperti `mcp__github__*` tanpa server MCP GitHub yang terhubung, atau `Agent` untuk subagent pada [batas kedalaman](https://code.claude.com/docs/id/sub-agents.md#let-subagents-spawn-their-own-subagents).

4706 4787 

4707Menghilangkan bidang `tools` tidak pernah memicu penolakan ini. Jika Anda membiarkan daftar `tools` kosong, atau `disallowedTools` menghapus setiap entri di dalamnya, Claude Code juga melewati penolakan dan meluncurkan subagent tanpa tool.4788Menghilangkan field `tools` tidak pernah memicu penolakan ini. Jika Anda membiarkan daftar `tools` kosong, atau `disallowedTools` menghapus setiap entri di dalamnya, Claude Code juga melewati penolakan dan meluncurkan subagent tanpa tool.

4708 4789 

4709Sebelum v2.1.208, subagent diluncurkan tanpa tool dan dapat mengembalikan hasil yang kosong atau membingungkan.4790Sebelum v2.1.208, subagent diluncurkan tanpa tool dan dapat mengembalikan hasil yang kosong atau membingungkan.

4710 4791 


4712Agent 'code-reviewer' would be spawned with zero tools — refusing. Its tools list resolved to nothing: unrecognized [Grpe]. Fix the agent's tools frontmatter or pass a different subagent_type.4793Agent 'code-reviewer' would be spawned with zero tools — refusing. Its tools list resolved to nothing: unrecognized [Grpe]. Fix the agent's tools frontmatter or pass a different subagent_type.

4713```4794```

4714 4795 

4715**What to do:**4796**Yang perlu dilakukan:**

4716 4797 

4717* Perbaiki setiap entri yang disebutkan kesalahan dengan mengacu pada [tool yang tersedia untuk subagent](https://code.claude.com/docs/id/sub-agents.md#available-tools)4798* Perbaiki setiap entri yang disebutkan error dengan mengacu pada [tool yang tersedia untuk subagent](https://code.claude.com/docs/id/sub-agents.md#available-tools)

4718* Hapus entri untuk tool yang tidak dimiliki sesi, seperti tool MCP dari server yang tidak terhubung4799* Hapus entri untuk tool yang tidak dimiliki sesi, seperti tool MCP dari server yang tidak terhubung

4719* Jika entri menyebutkan server MCP yang terhubung, bandingkan entri tersebut dengan nama server itu sebagaimana dieja oleh [nama tool](https://code.claude.com/docs/id/permissions.md#mcp) server tersebut, seperti `reports__v2` dalam `mcp__reports__v2__get_totals`. Untuk server itu, tulis `mcp__reports__v2__*`, yaitu `mcp__` diikuti nama lengkapnya dan `__*`. Dengan `mcp__reports` yang lebih pendek, yang menyebutkan server bernama `reports`, subagent tidak mendapatkan satu pun tool `reports__v2`4800* Jika entri menyebutkan server MCP yang terhubung, bandingkan entri tersebut dengan nama server sebagaimana dieja dalam [nama tool](https://code.claude.com/docs/id/permissions.md#mcp) server tersebut, seperti `reports__v2` dalam `mcp__reports__v2__get_totals`. Untuk server tersebut, tulis `mcp__reports__v2__*`, yaitu `mcp__` diikuti nama lengkap dan `__*`. Dengan `mcp__reports` yang lebih pendek, yang menyebutkan server bernama `reports`, subagent tidak mendapatkan satu pun tool `reports__v2`

4720* Untuk tool yang [dilepaskan subagent latar belakang](https://code.claude.com/docs/id/sub-agents.md#available-tools), seperti `CronCreate`, hapus entri tersebut4801* Untuk tool yang [dibuang oleh subagent latar belakang](https://code.claude.com/docs/id/sub-agents.md#available-tools), seperti `CronCreate`, hapus entri tersebut

4721* Untuk mempertahankan tool seperti `CronCreate` sebagai gantinya, [biarkan Claude menunggu subagent](https://code.claude.com/docs/id/sub-agents.md#let-claude-wait-for-a-subagent), karena subagent yang ditunggu Claude berjalan di foreground dan mempertahankan tool tersebut. Jika definisi mengatur `background: true`, hapus bidang itu terlebih dahulu, karena bidang tersebut membuat subagent tetap berjalan di latar belakang4802* Untuk tetap mempertahankan tool seperti `CronCreate`, [biarkan Claude menunggu subagent](https://code.claude.com/docs/id/sub-agents.md#let-claude-wait-for-a-subagent), karena subagent yang ditunggu Claude berjalan di latar depan dan mempertahankan tool tersebut. Jika definisi menyetel `background: true`, hapus field tersebut terlebih dahulu, karena field itu membuat subagent tetap di latar belakang

4722* Hapus bidang `tools` alih-alih mencantumkan tool untuk memberikan subagent setiap [tool yang tersedia untuk subagent](https://code.claude.com/docs/id/sub-agents.md#available-tools)4803* Hapus field `tools` alih-alih mencantumkan tool untuk memberikan subagent setiap [tool yang tersedia untuk subagent](https://code.claude.com/docs/id/sub-agents.md#available-tools)

4723* Untuk daftar `tools` yang hanya berisi `Agent`, naikkan [batas kedalaman](https://code.claude.com/docs/id/sub-agents.md#let-subagents-spawn-their-own-subagents) atau berikan agent setidaknya satu tool lain: Claude Code menahan `Agent` pada batas itu, jadi daftar tanpa isi lain akan menghasilkan tidak ada tool4804* Untuk daftar `tools` yang hanya berisi `Agent`, naikkan [batas kedalaman](https://code.claude.com/docs/id/sub-agents.md#let-subagents-spawn-their-own-subagents) atau berikan agent setidaknya satu tool lain: Claude Code menahan `Agent` pada batas tersebut, sehingga daftar yang tidak berisi apa pun selain itu di-resolve menjadi tanpa tool

4724 4805 

4725### File is covered by a Read deny rule4806### File is covered by a Read deny rule

4726 4807 

4727Tool Edit atau Write dipanggil pada jalur yang cocok dengan [aturan penolakan `Read`](https://code.claude.com/docs/id/permissions#read-and-edit), termasuk membuat file baru di jalur itu. Kedua tool mengubah konten yang harus dapat dibaca kembali oleh Claude, jadi Claude Code menolak panggilan sebelum akses file apa pun. NotebookEdit tidak tercakup oleh aturan penolakan `Read`. Sebelum v2.1.228, aturan tersebut hanya memblokir tool Edit, dan sebelum v2.1.208, hanya aturan penolakan `Edit` yang memblokir edit.4808Tool Edit atau Write dipanggil pada path yang cocok dengan [aturan deny `Read`](https://code.claude.com/docs/id/permissions#read-and-edit), termasuk membuat file baru di path tersebut. Kedua tool mengubah konten yang harus dapat dibaca kembali oleh Claude, sehingga Claude Code menolak panggilan sebelum akses file apa pun. NotebookEdit tidak tercakup oleh aturan deny `Read`. Sebelum v2.1.228, aturan tersebut hanya memblokir tool Edit, dan sebelum v2.1.208, hanya aturan deny `Edit` yang memblokir pengeditan.

4728 4809 

4729```text theme={null}4810```text theme={null}

4730File is covered by a Read deny rule in your permission settings and cannot be edited.4811File is covered by a Read deny rule in your permission settings and cannot be edited.

4731```4812```

4732 4813 

4733Ketika Claude Code menolak tool Write, pesan berakhir dengan `and cannot be written` sebagai gantinya.4814Ketika Claude Code menolak tool Write, pesan tersebut berakhir dengan `and cannot be written`.

4734 4815 

4735**What to do:**4816**Yang perlu dilakukan:**

4736 4817 

4737* Jika Claude harus dapat mengubah file, hapus atau persempit aturan penolakan `Read` di `/permissions` atau di [settings](https://code.claude.com/docs/id/settings-reference.md#permission-settings)4818* Jika Claude seharusnya dapat mengubah file tersebut, hapus atau persempit aturan deny `Read` di `/permissions` atau di [pengaturan](https://code.claude.com/docs/id/settings-reference.md#permission-settings)

4738* Jika file harus tetap tidak tersentuh, pertahankan aturan tersebut dan tambahkan aturan penolakan `Edit` untuk jalur yang sama agar tool NotebookEdit juga terblokir4819* Jika file tersebut harus tetap tidak tersentuh, pertahankan aturan tersebut dan tambahkan aturan deny `Edit` untuk path yang sama agar tool NotebookEdit juga diblokir

4739 4820 

4740### Setting blocks writes outside the working directories4821### Pengaturan memblokir penulisan di luar direktori kerja

4741 4822 

4742Ketika Claude mencoba menulis file dan panggilan tool gagal dengan pesan ini, jalurnya berada di luar [direktori kerja](https://code.claude.com/docs/id/permissions.md#working-directories) sesi dan [`permissions.blockWritesOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockwritesoutsideworkingdirectories) aktif:4823Ketika Claude mencoba menulis file dan panggilan tool gagal dengan pesan ini, path tersebut berada di luar [direktori kerja](https://code.claude.com/docs/id/permissions.md#working-directories) sesi dan [`permissions.blockWritesOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockwritesoutsideworkingdirectories) aktif:

4743 4824 

4744```text wrap theme={null}4825```text wrap theme={null}

4745<path> is outside <dirs>; the permissions.blockWritesOutsideWorkingDirectories setting blocks writes outside the working directories. Ask the user to add the directory with /add-dir, or to remove that setting.4826<path> is outside <dirs>; the permissions.blockWritesOutsideWorkingDirectories setting blocks writes outside the working directories. Ask the user to add the directory with /add-dir, or to remove that setting.

4746```4827```

4747 4828 

4748Claude Code menolak penulisan tersebut di setiap mode izin. Penolakan juga dapat berbunyi:4829Claude Code menolak penulisan tersebut di setiap mode izin. Penolakan tersebut juga dapat berbunyi:

4749 4830 

4750```text wrap theme={null}4831```text wrap theme={null}

4751<path>: Writes outside the working directories are blocked (permissions.blockWritesOutsideWorkingDirectories). Add the directory with /add-dir, or remove that setting.4832<path>: Writes outside the working directories are blocked (permissions.blockWritesOutsideWorkingDirectories). Add the directory with /add-dir, or remove that setting.

4752```4833```

4753 4834 

4754**What to do:**4835**Yang perlu dilakukan:**

4755 4836 

4756* Jika Claude tidak seharusnya menulis di sana, tidak perlu melakukan apa pun4837* Jika Claude tidak seharusnya menulis di sana, jangan lakukan apa pun

4757* Agar Claude dapat menulis ke direktori yang sudah ada yang berisi jalur tersebut, jalankan `/add-dir <directory>` di prompt Claude Code, atau berikan `--add-dir <directory>` saat Anda memulai Claude Code4838* Untuk membiarkan Claude menulis ke direktori yang sudah ada yang berisi path tersebut, jalankan `/add-dir <directory>` di prompt Claude Code, atau berikan `--add-dir <directory>` ketika Anda memulai Claude Code

4758* Jika jalur tersebut adalah file pengaturan Claude Code, seperti `~/.claude/settings.json`, edit sendiri file tersebut. Menambahkan direktorinya dengan `/add-dir` tidak membantu, karena Claude Code kemudian menolak penulisan tersebut [sebagai file pengaturan](#writes-to-claude-code-settings-files-are-blocked).4839* Jika path tersebut adalah file pengaturan Claude Code, seperti `~/.claude/settings.json`, edit sendiri. Menambahkan direktorinya dengan `/add-dir` tidak membantu, karena Claude Code kemudian menolak penulisan tersebut [sebagai file pengaturan](#writes-to-claude-code-settings-files-are-blocked).

4759* Agar sebuah direktori tetap dapat ditulis di setiap sesi, cantumkan direktori tersebut di bawah [`permissions.additionalDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-additionaldirectories) dalam pengaturan pengguna atau pengaturan terkelola Anda4840* Agar suatu direktori tetap dapat ditulisi di setiap sesi, cantumkan di bawah [`permissions.additionalDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-additionaldirectories) dalam pengaturan pengguna atau pengaturan terkelola Anda

4760* Untuk mematikan `permissions.blockWritesOutsideWorkingDirectories`, hapus pengaturan tersebut dari setiap file pengaturan yang mengaturnya, lalu mulai ulang Claude Code4841* Untuk mematikan `permissions.blockWritesOutsideWorkingDirectories`, hapus dari setiap file pengaturan yang menyetelnya, lalu mulai ulang Claude Code

4761* Jika tidak ada file pengaturan Anda yang memiliki `permissions.blockWritesOutsideWorkingDirectories`, pengaturan tersebut dapat berasal dari `--settings` atau dari aplikasi host. Claude Code juga menolak penulisan ini selama tidak dapat membaca `permissions` dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md#keys-that-fail-closed) Anda. Tanyakan kepada pihak yang meluncurkan atau mengelola sesi tersebut.4842* Jika tidak ada file pengaturan Anda yang memiliki `permissions.blockWritesOutsideWorkingDirectories`, pengaturan tersebut dapat berasal dari `--settings` atau dari aplikasi host. Claude Code juga menolak penulisan ini selama tidak dapat membaca `permissions` dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md#keys-that-fail-closed) Anda. Tanyakan kepada siapa pun yang meluncurkan atau mengelola sesi tersebut.

4762 4843 

4763### Writes to Claude Code settings files are blocked4844### Writes to Claude Code settings files are blocked

4764 4845 


4768<path>: Writes to Claude Code settings files are blocked while permissions.blockWritesOutsideWorkingDirectories is on, because a settings file can lift that block. While a managed settings folder cannot be resolved, any .json file counts as one.4849<path>: Writes to Claude Code settings files are blocked while permissions.blockWritesOutsideWorkingDirectories is on, because a settings file can lift that block. While a managed settings folder cannot be resolved, any .json file counts as one.

4769```4850```

4770 4851 

4771**What to do:**4852**Yang perlu dilakukan:**

4772 4853 

4773* Untuk mengubah pengaturan, edit sendiri file pengaturan tersebut4854* Untuk mengubah pengaturan, edit sendiri file pengaturan tersebut

4774* Agar Claude dapat mengedit file pengaturan lagi, hapus `permissions.blockWritesOutsideWorkingDirectories` dari setiap file pengaturan yang mengaturnya, lalu mulai ulang Claude Code4855* Untuk membiarkan Claude mengedit file pengaturan lagi, hapus `permissions.blockWritesOutsideWorkingDirectories` dari setiap file pengaturan yang menyetelnya, lalu mulai ulang Claude Code

4775* Jika file tersebut bukan salah satu file pengaturan Anda, temukan file tersebut di antara file lain yang diperlakukan Claude Code sebagai file pengaturan:4856* Jika file tersebut bukan salah satu file pengaturan Anda, temukan di antara file lain yang diperlakukan Claude Code sebagai file pengaturan:

4776 * **File yang Anda berikan ke `--agents` atau `--mcp-config`**: edit sendiri file tersebut4857 * **File yang Anda berikan ke `--agents` atau `--mcp-config`**: edit sendiri

4777 * **Salinan tersimpan dari [pengaturan yang dikelola server](https://code.claude.com/docs/id/server-managed-settings.md#security-considerations) dan file yang disimpan bersamanya**: minta seorang [Owner](https://code.claude.com/docs/id/server-managed-settings.md#access-control) untuk mengubah pengaturan tersebut di pengaturan yang dikelola server.4858 * **Salinan tersimpan dari [pengaturan yang dikelola server](https://code.claude.com/docs/id/server-managed-settings.md#security-considerations) dan file yang disimpan bersamanya**: minta seorang [Owner](https://code.claude.com/docs/id/server-managed-settings.md#access-control) untuk mengubah pengaturan di pengaturan yang dikelola server.

4778 * **File `.json` apa pun, selama Claude Code tidak dapat mengetahui ke mana folder [`managed-settings.d/`](https://code.claude.com/docs/id/managed-settings#split-a-file-based-policy-across-teams) mengarah**: minta administrator Anda memeriksa folder tersebut4859 * **File `.json` apa pun, selama Claude Code tidak dapat mengetahui ke mana folder [`managed-settings.d/`](https://code.claude.com/docs/id/managed-settings#split-a-file-based-policy-across-teams) mengarah**: minta administrator Anda untuk memeriksa folder tersebut

4779 4860 

4780### Path cannot contain null bytes4861### Path cannot contain null bytes

4781 4862 

4782Argumen path atau pattern dalam panggilan tool file mengandung null byte, yang tidak dapat diterima oleh sistem file dan tool pencarian. Read, Write, Edit, NotebookEdit, Glob, dan Grep memeriksa hal ini, dan pesan menyebutkan tool dan argumennya:4863Argumen path atau pola dari panggilan tool file berisi null byte, yang tidak dapat diterima oleh sistem file dan tool pencarian. Read, Write, Edit, NotebookEdit, Glob, dan Grep memeriksa hal ini, dan pesan tersebut menyebutkan tool dan argumennya:

4783 4864 

4784```text theme={null}4865```text theme={null}

4785Read file_path cannot contain null bytes (\0). Remove the null byte and try again.4866Read file_path cannot contain null bytes (\0). Remove the null byte and try again.

4786```4867```

4787 4868 

4788Panggilan tool gagal, Claude melihat kesalahan tersebut, dan giliran berlanjut.4869Panggilan tool gagal, Claude melihat error tersebut, dan giliran berlanjut.

4789 4870 

4790**What to do:**4871**Yang perlu dilakukan:**

4791 4872 

4792* Tidak ada yang perlu dilakukan di sisi Anda: kesalahan dikembalikan ke Claude sebagai hasil tool, dan pesan itu sendiri memberi tahu Claude untuk menghapus null byte dan mencoba ulang4873* Tidak ada yang perlu dilakukan di pihak Anda: error dikembalikan kepada Claude sebagai hasil tool, dan pesan itu sendiri memberi tahu Claude untuk menghapus null byte dan mencoba lagi

4793 4874 

4794Sebelum v2.1.281, null byte dalam jalur Read, Write, Edit, atau NotebookEdit mengakhiri seluruh giliran dengan kesalahan yang menyebutkan `Path contains null bytes`, dan tool tidak pernah berjalan.4875Sebelum v2.1.281, null byte dalam path Read, Write, Edit, atau NotebookEdit mengakhiri seluruh giliran dengan error yang menyebutkan `Path contains null bytes`, dan tool tidak pernah berjalan.

4795 4876 

4796### Command contains an invisible character4877### Command contains an invisible character

4797 4878 

4798[Tool PowerShell](https://code.claude.com/docs/id/tools-reference.md#powershell-tool) menolak menjalankan perintah yang mengandung U+FEFF atau U+180E:4879[Tool PowerShell](https://code.claude.com/docs/id/tools-reference.md#powershell-tool) menolak menjalankan perintah yang berisi U+FEFF atau U+180E:

4799 4880 

4800```text theme={null}4881```text theme={null}

4801Error: command contains the invisible character U+FEFF (byte order mark) or U+180E (Mongolian vowel separator), and was not run. Remove the character, keep the text that needs it in a file that the command reads, or write it as $([char]0xFEFF) or $([char]0x180E) inside a double-quoted string4882Error: command contains the invisible character U+FEFF (byte order mark) or U+180E (Mongolian vowel separator), and was not run. Remove the character, keep the text that needs it in a file that the command reads, or write it as $([char]0xFEFF) or $([char]0x180E) inside a double-quoted string

4802```4883```

4803 4884 

4804**What to do:**4885**Yang perlu dilakukan:**

4805 4886 

4806* **Untuk perintah yang ditulis Claude**: tidak ada yang perlu Anda perbaiki. Pesan tersebut memberi tahu Claude cara menulis ulang perintah.4887* **Untuk perintah yang ditulis Claude**: tidak ada yang perlu Anda perbaiki. Pesan tersebut memberi tahu Claude cara menulis ulang perintah.

4807* **Untuk file skill atau perintah**: pesan muncul setelah `No shell command in <name> was run`. Lihat [tempat menemukan karakter tersebut dan menghapusnya](#no-shell-command-was-run).4888* **Untuk file skill atau perintah**: pesan tersebut mengikuti `No shell command in <name> was run`. Lihat [tempat menemukan karakter tersebut dan menghapusnya](#no-shell-command-was-run).

4808 4889 

4809### Command approved before Claude Code restarted was not run4890### Perintah yang disetujui sebelum Claude Code dimulai ulang tidak dijalankan

4810 4891 

4811Perintah shell yang Anda setujui tidak berjalan, dan Claude menerima pesan ini sebagai hasil perintah tersebut:4892Perintah shell yang Anda setujui tidak berjalan, dan Claude menerima pesan ini sebagai hasil perintah:

4812 4893 

4813```text wrap theme={null}4894```text wrap theme={null}

4814This call was not run. The command was approved before Claude Code restarted, and Claude Code could not confirm that the shell is back in the directory where it was approved. That directory may be gone or replaced, lie outside the directory where the session started, or be one that Claude Code needs approval to enter or is not allowed to examine. The shell's directory is <directory>. If the command still makes sense, cd to the directory it was meant for and make the call again; it may need approval again.4895This call was not run. The command was approved before Claude Code restarted, and Claude Code could not confirm that the shell is back in the directory where it was approved. That directory may be gone or replaced, lie outside the directory where the session started, or be one that Claude Code needs approval to enter or is not allowed to examine. The shell's directory is <directory>. If the command still makes sense, cd to the directory it was meant for and make the call again; it may need approval again.

4815```4896```

4816 4897 

4817Kalimat ketiga pesan tersebut dapat berbunyi `It does not keep track of that directory across a restart in a session that has been in a worktree.` sebagai gantinya.4898Kalimat ketiga pesan tersebut dapat berbunyi `It does not keep track of that directory across a restart in a session that has been in a worktree.`

4818 4899 

4819**What to do:**4900**Yang perlu dilakukan:**

4820 4901 

4821* Biarkan Claude melanjutkan, dan jawab prompt jika Anda diminta untuk menyetujui perintah tersebut lagi.4902* Biarkan Claude melanjutkan, dan jawab permintaan izin jika Anda diminta menyetujui perintah tersebut lagi.

4822 4903 

4823### File is too large to read as an image4904### File is too large to read as an image

4824 4905 

4825Claude mencoba membaca file sebagai gambar dengan [tool Read](https://code.claude.com/docs/id/tools-reference.md#read-tool-behavior), dan file tersebut lebih besar dari 128 MB, ukuran maksimum yang dimuat Read dari file gambar. Tidak ada yang dibaca, dan Claude menerima kesalahan ini sebagai hasil tool:4906Claude mencoba membaca file sebagai gambar dengan [tool Read](https://code.claude.com/docs/id/tools-reference.md#read-tool-behavior), dan file tersebut lebih besar dari 128 MB, ukuran maksimum yang dimuat Read dari file gambar. Tidak ada yang dibaca, dan Claude menerima error ini sebagai hasil tool:

4826 4907 

4827```text wrap theme={null}4908```text wrap theme={null}

4828File is too large to read as an image (the limit is 128MB): <path>. If it is an image, resize it or export a smaller copy, then read that.4909File is too large to read as an image (the limit is 128MB): <path>. If it is an image, resize it or export a smaller copy, then read that.

4829```4910```

4830 4911 

4831Ketika jalur tersebut adalah pipe atau perangkat, bukan file biasa, Read berhenti setelah lebih dari 128 MB diterima dan mengembalikan kesalahan ini sebagai gantinya:4912Ketika path tersebut adalah pipe atau perangkat, bukan file biasa, Read berhenti begitu lebih dari 128 MB telah tiba dan mengembalikan error ini:

4832 4913 

4833```text wrap theme={null}4914```text wrap theme={null}

4834Cannot read this as an image: <path> is a pipe or a device, not a regular file, and it sent more than 128MB without ending.4915Cannot read this as an image: <path> is a pipe or a device, not a regular file, and it sent more than 128MB without ending.

4835```4916```

4836 4917 

4837**What to do:**4918**Yang perlu dilakukan:**

4838 4919 

4839* Jika Claude mengikuti pesan `File is too large` dan melanjutkan dengan mengubah ukuran gambar atau membaca salinan yang lebih kecil, tidak perlu melakukan apa pun4920* Jika Claude mengikuti pesan `File is too large` dan melanjutkan dengan mengubah ukuran gambar atau membaca salinan yang lebih kecil, jangan lakukan apa pun

4840* Jika Claude berhenti pada kesalahan tersebut, ekspor sendiri salinan di bawah 128 MB, misalnya dengan resolusi yang lebih rendah, dan arahkan Claude ke file tersebut4921* Jika Claude berhenti pada error tersebut, ekspor sendiri salinan di bawah 128 MB, misalnya dengan resolusi lebih rendah, dan arahkan Claude ke file tersebut

4841* Jika jalur tersebut adalah pipe atau perangkat, arahkan Claude ke file gambar biasa sebagai gantinya4922* Jika path tersebut adalah pipe atau perangkat, arahkan Claude ke file gambar biasa

4842 4923 

4843### subagent\_type is required4924### subagent\_type is required

4844 4925 


4846subagent_type is required: the general-purpose agent is not available in this session. Available agents: ...4927subagent_type is required: the general-purpose agent is not available in this session. Available agents: ...

4847```4928```

4848 4929 

4849Claude memanggil [Agent tool](https://code.claude.com/docs/id/tools-reference.md#agent-tool-behavior) tanpa `subagent_type`, dan sesi ini tidak memiliki [subagent tujuan umum](https://code.claude.com/docs/id/sub-agents.md#built-in-subagents) sebagai cadangan. Hal itu terjadi dalam dua penyiapan:4930Claude memanggil [tool Agent](https://code.claude.com/docs/id/tools-reference.md#agent-tool-behavior) tanpa `subagent_type`, dan sesi ini tidak memiliki [subagent general-purpose](https://code.claude.com/docs/id/sub-agents.md#built-in-subagents) sebagai cadangan. Hal ini terjadi pada dua penyiapan:

4850 4931 

4851* [`CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1`](https://code.claude.com/docs/id/env-vars) diatur dalam mode non-interaktif, yang menghapus setiap subagent bawaan4932* [`CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1`](https://code.claude.com/docs/id/env-vars) disetel dalam mode non-interaktif, yang menghapus setiap subagent bawaan

4852* Agent thread utama sesi memiliki [`tools: Agent(...)` allowlist](https://code.claude.com/docs/id/sub-agents#restrict-which-subagents-can-be-spawned) yang tidak menyertakan `general-purpose`4933* Agent thread utama sesi memiliki [allowlist `tools: Agent(...)`](https://code.claude.com/docs/id/sub-agents#restrict-which-subagents-can-be-spawned) yang tidak menyertakan `general-purpose`

4853 4934 

4854**What to do:**4935**Yang perlu dilakukan:**

4855 4936 

4856* Biasanya tidak ada: pesan mencantumkan subagent yang dimiliki sesi, jadi Claude dapat mencoba ulang dengan salah satunya4937* Biasanya tidak ada: pesan tersebut mencantumkan subagent yang dimiliki sesi, sehingga Claude dapat mencoba ulang dengan salah satunya

4857* Jika Claude terus gagal, tambahkan `general-purpose` ke allowlist `tools: Agent(...)`, atau hapus pengaturan `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`4938* Jika Claude terus gagal, tambahkan `general-purpose` ke allowlist `tools: Agent(...)`, atau hapus setelan `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS`

4858 4939 

4859Sebelum v2.1.235, panggilan yang sama gagal dengan `Agent type 'general-purpose' not found`.4940Sebelum v2.1.235, panggilan yang sama gagal dengan `Agent type 'general-purpose' not found`.

4860 4941 

4861### Memory index is over its read limit4942### Memory index is over its read limit

4862 4943 

4863Claude menulis ke indeks [auto memory](https://code.claude.com/docs/id/memory.md#auto-memory) `MEMORY.md` dan membuatnya melampaui salah satu batas bacanya: 200 baris atau 25KB. Penulisan berhasil, tetapi hanya 200 baris pertama atau 25KB, mana pun yang lebih dulu, yang dimuat di awal sesi, jadi semua yang melampaui batas dibuang setiap kali indeks dibaca. Sebelum v2.1.210, indeks yang melampaui batas dipotong secara diam-diam pada pemuatan berikutnya tanpa sinyal saat penulisan.4944Claude menulis ke indeks [auto memory](https://code.claude.com/docs/id/memory.md#auto-memory) `MEMORY.md` dan membiarkannya melebihi salah satu batas bacanya: 200 baris atau 25KB. Penulisan berhasil, tetapi hanya 200 baris pertama atau 25KB pertama, mana yang lebih dulu tercapai, yang dimuat di awal sesi, sehingga semua yang melewati batas dibuang setiap kali indeks dibaca. Sebelum v2.1.210, indeks yang melebihi batas dipotong secara diam-diam pada pemuatan berikutnya tanpa sinyal saat penulisan.

4864 4945 

4865```text theme={null}4946```text theme={null}

4866Error: this write left the memory index at MEMORY.md at 214 lines, over its 200-line read limit. The write succeeded, but everything past the limit is silently dropped each time the index is loaded — entries at the end are already invisible to readers. Rewrite it to under 140 lines now: keep one line per entry, move detail into topic files, and merge or drop stale entries.4947Error: this write left the memory index at MEMORY.md at 214 lines, over its 200-line read limit. The write succeeded, but everything past the limit is silently dropped each time the index is loaded — entries at the end are already invisible to readers. Rewrite it to under 140 lines now: keep one line per entry, move detail into topic files, and merge or drop stale entries.

4867```4948```

4868 4949 

4869Hanya konten yang dimuat yang dihitung terhadap batas. Frontmatter YAML dan komentar HTML tingkat blok dihapus sebelum indeks dimuat, jadi keduanya dikecualikan dari pengukuran. Sebelum v2.1.211, Claude Code mengukur file mentah, dan frontmatter atau komentar dapat memicu kesalahan ini bahkan ketika konten yang dimuat masih muat.4950Hanya konten yang dimuat yang dihitung terhadap batas. Frontmatter YAML dan komentar HTML tingkat blok dihapus sebelum indeks dimuat, sehingga keduanya dikecualikan dari pengukuran. Sebelum v2.1.211, Claude Code mengukur file mentah, dan frontmatter atau komentar dapat memicu error ini bahkan ketika konten yang dimuat masih muat.

4870 4951 

4871Claude Code menyampaikan kesalahan kepada Claude setelah penulisan alih-alih mencetaknya sebagai spanduk di terminal Anda, jadi Anda mungkin hanya menyadarinya dalam transkrip.4952Claude Code menyampaikan error tersebut kepada Claude setelah penulisan, bukan mencetaknya sebagai banner di terminal Anda, sehingga Anda mungkin hanya melihatnya di transkrip.

4872 4953 

4873Ketika penulisan Claude membawa file mendekati batas tanpa melewatinya, Claude Code mengembalikan pengingat yang lebih ringan untuk memadatkan indeks alih-alih kesalahan ini.4954Ketika penulisan Claude membuat file mendekati batas tanpa melewatinya, Claude Code mengembalikan pengingat yang lebih ringan untuk memadatkan indeks alih-alih error ini.

4874 4955 

4875**What to do:**4956**Yang perlu dilakukan:**

4876 4957 

4877* Biarkan Claude menulis ulang `MEMORY.md`, atau minta Claude melakukannya: simpan satu baris per entri, pindahkan detail ke file topik, dan gabungkan atau buang entri yang usang4958* Biarkan Claude menulis ulang `MEMORY.md`, atau minta Claude melakukannya: pertahankan satu baris per entri, pindahkan detail ke file topik, dan gabungkan atau buang entri yang usang

4878* Untuk memangkas indeks sendiri, lihat [Audit and edit your memory](https://code.claude.com/docs/id/memory.md#audit-and-edit-your-memory)4959* Untuk memangkas indeks sendiri, lihat [Audit dan edit memori Anda](https://code.claude.com/docs/id/memory.md#audit-and-edit-your-memory)

4879 4960 

4880### pkill pattern matches the Claude Code process4961### pkill pattern matches the Claude Code process

4881 4962 

4882Perintah `pkill` dalam panggilan tool Bash menggunakan pola, biasanya dengan `-f`, yang cocok dengan proses Claude Code itu sendiri, jadi Claude Code menolak perintah alih-alih membiarkannya mengakhiri sesi. Claude Code menguji pola dengan `pgrep` sebelum menjalankan `pkill` dan menolak ketika ID prosesnya sendiri ada dalam hasil. Pemeriksaan hanya berjalan di Linux; di macOS, `pkill` berjalan tanpa modifikasi. Sebelum v2.1.214, perintah tetap berjalan, dan pola yang cocok menghentikan sesi Claude Code di tengah giliran.4963Perintah `pkill` dalam panggilan tool Bash menggunakan pola, biasanya dengan `-f`, yang cocok dengan proses Claude Code itu sendiri, sehingga Claude Code menolak perintah tersebut alih-alih membiarkannya mengakhiri sesi. Claude Code menguji pola dengan `pgrep` sebelum menjalankan `pkill` dan menolak ketika ID prosesnya sendiri ada dalam hasil. Pemeriksaan ini hanya berjalan di Linux; di macOS, `pkill` berjalan tanpa modifikasi. Sebelum v2.1.214, perintah tersebut berjalan, dan pola yang cocok menghentikan sesi Claude Code di tengah giliran.

4883 4964 

4884```text theme={null}4965```text theme={null}

4885pkill: refusing to run — this pattern matches the Claude CLI process (PID 12345). Narrow the pattern, or target your own children with `pkill -P $$ ...`.4966pkill: refusing to run — this pattern matches the Claude CLI process (PID 12345). Narrow the pattern, or target your own children with `pkill -P $$ ...`.

4886```4967```

4887 4968 

4888Penolakan muncul dalam hasil tool Bash alih-alih sebagai spanduk di terminal Anda, dan Claude biasanya menyesuaikan perintah dengan sendirinya.4969Penolakan muncul dalam hasil tool Bash, bukan sebagai banner di terminal Anda, dan Claude biasanya menyesuaikan perintah dengan sendirinya.

4889 4970 

4890**What to do:**4971**Yang perlu dilakukan:**

4891 4972 

4892* Persempit pola sehingga hanya cocok dengan proses yang dimaksud, misalnya jalur lengkap biner target alih-alih substring pendek4973* Persempit pola agar hanya cocok dengan proses yang dimaksud, misalnya path lengkap dari biner target, bukan substring pendek

4893* Untuk menghentikan proses yang dimulai oleh shell saat ini, gunakan `pkill -P $$` dengan pola tersebut, yang membatasi kecocokan ke proses anak milik shell itu sendiri4974* Untuk menghentikan proses yang dimulai oleh shell saat ini, gunakan `pkill -P $$` dengan pola tersebut, yang membatasi kecocokan pada proses anak milik shell itu sendiri

4894 4975 

4895### Failed to write to a teammate's inbox4976### Failed to write to a teammate's inbox

4896 4977 

4897Claude Code tidak dapat menulis pesan ke file kotak surat rekan kerja di bawah `~/.claude/teams/{team-name}/inboxes/`, jadi penerima tidak menerima apa pun. Penulisan gagal ketika Claude Code tidak dapat membuat atau memperbarui file, misalnya karena disk penuh, direktori tidak dapat ditulis, atau agent lain menahan kunci kotak surat terlalu lama. Sebelum v2.1.224, Claude Code melaporkan pesan sebagai terkirim bahkan ketika penulisan gagal.4978Claude Code tidak dapat menulis pesan ke file kotak surat rekan tim di bawah `~/.claude/teams/{team-name}/inboxes/`, sehingga penerima tidak menerima apa pun. Penulisan gagal ketika Claude Code tidak dapat membuat atau memperbarui file, misalnya karena disk penuh, direktori tidak dapat ditulisi, atau agent lain memegang kunci inbox terlalu lama. Sebelum v2.1.224, Claude Code melaporkan pesan sebagai terkirim bahkan ketika penulisan gagal.

4898 4979 

4899Kesalahan muncul dalam hasil tool agent pengirim alih-alih sebagai spanduk di terminal Anda, dan teksnya memberi tahu Claude untuk mencoba ulang:4980Error muncul dalam hasil tool agent pengirim, bukan sebagai banner di terminal Anda, dan teksnya memberi tahu Claude untuk mencoba lagi:

4900 4981 

4901```text theme={null}4982```text theme={null}

4902Failed to write to researcher's inbox — nothing was sent. Try again, or message the lead.4983Failed to write to researcher's inbox — nothing was sent. Try again, or message the lead.

4903```4984```

4904 4985 

4905Pesan protokol [tim agent](https://code.claude.com/docs/id/agent-teams.md) terstruktur gagal dengan cara yang sama, dan kesalahan menyebutkan pesan yang tidak terkirim: ketika Claude Code tidak dapat menulis persetujuan rencana, penolakan rencana, permintaan shutdown, atau penolakan shutdown, kesalahan berbunyi `Failed to write the <message> to <name>'s inbox — nothing was sent`. `plan approval` dalam daftar itu adalah keputusan pemimpin yang menyetujui rencana rekan kerja; pengajuan rencana rekan kerja adalah pesan `plan approval request` yang terpisah. Pesan itu dan dua pesan protokol lainnya membawa teks pesan dan konsekuensinya sendiri:4986Pesan protokol [tim agent](https://code.claude.com/docs/id/agent-teams.md) yang terstruktur gagal dengan cara yang sama, dan error tersebut menyebutkan pesan yang tidak terkirim: ketika Claude Code tidak dapat menulis persetujuan rencana, penolakan rencana, permintaan shutdown, atau penolakan shutdown, error berbunyi `Failed to write the <message> to <name>'s inbox — nothing was sent`. `plan approval` dalam daftar tersebut adalah keputusan lead yang menyetujui rencana rekan tim; pengajuan rencana dari rekan tim adalah pesan `plan approval request` yang terpisah. Pesan tersebut dan dua pesan protokol lainnya membawa teks pesan dan konsekuensinya sendiri:

4906 4987 

4907* `Failed to write the plan approval request to the lead's inbox — plan not submitted; try again`: rencana rekan kerja tidak pernah sampai ke pemimpin, dan rekan kerja tetap dalam plan mode sampai pengajuan ulang berhasil4988* `Failed to write the plan approval request to the lead's inbox — plan not submitted; try again`: rencana rekan tim tidak pernah sampai ke lead, dan rekan tim tetap berada dalam plan mode hingga pengajuan ulang berhasil

4908* `The permission request could not be delivered to the team lead (mailbox write failed)`: permintaan izin rekan kerja tidak pernah sampai ke pemimpin, jadi tidak ada yang menyetujui panggilan tool tersebut4989* `The permission request could not be delivered to the team lead (mailbox write failed)`: permintaan izin rekan tim tidak pernah sampai ke lead, sehingga tidak ada yang menyetujui panggilan tool

4909* `The confirmation could not be written to team-lead's inbox.`: persetujuan shutdown itu sendiri berlaku dan rekan kerja keluar; hanya konfirmasi kepada pemimpin yang hilang4990* `The confirmation could not be written to team-lead's inbox.`: persetujuan shutdown itu sendiri berlaku dan rekan tim keluar; hanya konfirmasi ke lead yang hilang

4910 4991 

4911Ketika Anda sendiri mengirim pesan ke rekan kerja, dengan mengetik `@name` diikuti pesan dalam sesi pemimpin, kegagalan yang sama muncul sebagai notifikasi, `Couldn't write to @name's inbox — message not sent. Try again.`, dan Claude Code menyimpan teks Anda di kotak prompt sehingga Anda dapat mengirimnya lagi.4992Ketika Anda sendiri mengirim pesan ke rekan tim, dengan mengetik `@name` diikuti pesan di sesi lead, kegagalan yang sama muncul sebagai notifikasi, `Couldn't write to @name's inbox — message not sent. Try again.`, dan Claude Code mempertahankan teks Anda di kotak prompt sehingga Anda dapat mengirimnya lagi.

4912 4993 

4913**What to do:**4994**Yang perlu dilakukan:**

4914 4995 

4915* Minta pengirim untuk mengirim ulang pesan; perebutan kunci kotak surat bersifat sementara dan hilang saat mencoba ulang4996* Minta pengirim untuk mengirim ulang pesan; perebutan kunci inbox bersifat sementara dan hilang saat dicoba ulang

4916* Periksa ruang disk yang tersedia, dan periksa bahwa `~/.claude/teams` dan file di bawahnya dapat ditulis oleh pengguna Anda4997* Periksa ruang disk yang tersedia, dan periksa bahwa `~/.claude/teams` serta file di bawahnya dapat ditulisi oleh pengguna Anda

4917 4998 

4918### Teammate's agent definition was not restored4999### Teammate's agent definition was not restored

4919 5000 

4920Claude mengirim pesan ke rekan kerja [tim agent](https://code.claude.com/docs/id/agent-teams.md) yang telah dihentikan, dan Claude Code menghidupkannya kembali tanpa menerapkan ulang [definisi subagent](https://code.claude.com/docs/id/agent-teams.md#use-subagent-definitions-for-teammates) yang menjadi dasar pembuatannya. Pemberitahuan muncul setelah laporan resume dalam hasil tool agent pengirim dan menyebutkan alasannya. Ketika file definisi berasal dari folder tanpa kepercayaan yang tersimpan, pemberitahuan berbunyi:5001Claude mengirim pesan ke rekan tim [tim agent](https://code.claude.com/docs/id/agent-teams.md) yang telah berhenti, dan Claude Code menghidupkannya kembali tanpa menerapkan ulang [definisi subagent](https://code.claude.com/docs/id/agent-teams.md#use-subagent-definitions-for-teammates) yang digunakan saat rekan tim itu dibuat. Pemberitahuan ini mengikuti laporan resume dalam hasil tool agent pengirim dan menyebutkan alasannya. Ketika file definisi berasal dari folder tanpa kepercayaan yang tersimpan, pemberitahuan berbunyi:

4921 5002 

4922```text wrap theme={null}5003```text wrap theme={null}

4923Its agent definition was not restored: the folder its definition file came from is not trusted (source: projectSettings), so the teammate is running with the team-essential tools and no custom instructions. To restore it, the user needs to run Claude Code in that folder once and accept the trust dialog (the --debug log names the folder); do not change trust settings on the user's behalf.5004Its agent definition was not restored: the folder its definition file came from is not trusted (source: projectSettings), so the teammate is running with the team-essential tools and no custom instructions. To restore it, the user needs to run Claude Code in that folder once and accept the trust dialog (the --debug log names the folder); do not change trust settings on the user's behalf.

4924```5005```

4925 5006 

4926Pemeriksaan berlaku untuk definisi di direktori `.claude/agents/` dari proyek atau dari direktori `--add-dir`, dan menerima dialog kepercayaan untuk folder induk tidak memenuhinya.5007Pemeriksaan ini berlaku untuk definisi di direktori `.claude/agents/` dari proyek atau dari direktori `--add-dir`, dan menerima dialog kepercayaan untuk folder induk tidak memenuhinya.

4927 5008 

4928**What to do:**5009**Yang perlu dilakukan:**

4929 5010 

4930* Jalankan `claude` di folder yang disebutkan [debug log](https://code.claude.com/docs/id/debug-your-config.md) dan terima dialog kepercayaan. Definisi diterapkan ulang saat berikutnya Claude Code menghidupkan kembali rekan kerja; Anda tidak perlu memulai ulang sesi pemimpin5011* Jalankan `claude` di folder yang disebutkan [log debug](https://code.claude.com/docs/id/debug-your-config.md) dan terima dialog kepercayaan. Definisi diterapkan ulang saat berikutnya Claude Code menghidupkan kembali rekan tim; Anda tidak perlu memulai ulang sesi lead

4931* Atau atur entri `hasTrustDialogAccepted` ke `true` di `~/.claude.json`, menggunakan kunci `projects["<path>"]` persis seperti yang dicetak log debug5012* Atau setel entri `hasTrustDialogAccepted` ke `true` di `~/.claude.json`, menggunakan kunci `projects["<path>"]` persis seperti yang dicetak log debug

4932 5013 

4933### Only a teammate can approve a shutdown request5014### Only a teammate can approve a shutdown request

4934 5015 

4935Claude Code menolak persetujuan shutdown [tim agent](https://code.claude.com/docs/id/agent-teams.md) karena sesi yang mengirimnya tidak berjalan sebagai rekan kerja. Tidak ada yang dikirim dan tidak ada yang di-shutdown. Penolakan muncul dalam hasil tool sesi pengirim:5016Claude Code menolak persetujuan shutdown [tim agent](https://code.claude.com/docs/id/agent-teams.md) karena sesi yang mengirimnya tidak berjalan sebagai rekan tim. Tidak ada yang dikirim dan tidak ada yang dimatikan. Penolakan muncul dalam hasil tool sesi pengirim:

4936 5017 

4937```text wrap theme={null}5018```text wrap theme={null}

4938Only a teammate can approve a shutdown request, and this session is not running as one. Nothing was sent. To shut down a teammate, send that teammate a shutdown_request message. The teammate is the one that approves it.5019Only a teammate can approve a shutdown request, and this session is not running as one. Nothing was sent. To shut down a teammate, send that teammate a shutdown_request message. The teammate is the one that approves it.

4939```5020```

4940 5021 

4941**What to do:**5022**Yang perlu dilakukan:**

4942 5023 

4943* Jika penolakan muncul di sesi pemimpin Anda, periksa terlebih dahulu apakah rekan kerja tersebut sudah di-shutdown sejak itu. Penolakan dikembalikan ke Claude dengan instruksi untuk mengirim `shutdown_request` sebagai gantinya, dan giliran berlanjut. Dalam sesi pemimpin interaktif, `<name> has shut down.` muncul ketika rekan kerja menyetujui permintaan shutdown.5024* Jika penolakan muncul di sesi lead Anda, pertama periksa apakah rekan tim sudah dimatikan sejak itu. Penolakan dikembalikan kepada Claude dengan instruksi untuk mengirim `shutdown_request` sebagai gantinya, dan giliran berlanjut. Dalam sesi lead interaktif, `<name> has shut down.` muncul ketika rekan tim menyetujui permintaan shutdown.

4944* Jika rekan kerja masih berjalan, minta pemimpin di prompt-nya untuk men-shutdown rekan kerja tersebut, misalnya `Ask the researcher teammate to shut down`. Lihat [Shut down teammates](https://code.claude.com/docs/id/agent-teams.md#shut-down-teammates).5025* Jika rekan tim masih berjalan, minta lead di prompt-nya untuk mematikan rekan tim, misalnya `Ask the researcher teammate to shut down`. Lihat [Mematikan rekan tim](https://code.claude.com/docs/id/agent-teams.md#shut-down-teammates).

4945* Jika mantan rekan kerja yang Anda lanjutkan sendiri dengan `claude --resume` mendapatkan penolakan ini, tidak ada yang dikirim. Untuk mengakhiri sesi tersebut, jalankan `/exit` di prompt-nya.5026* Jika mantan rekan tim yang Anda lanjutkan sendiri dengan `claude --resume` mendapat penolakan ini, tidak ada yang dikirim. Untuk mengakhiri sesi tersebut, jalankan `/exit` di prompt-nya.

4946 5027 

4947### A command-line deny rule cannot be handed to a teammate intact5028### A command-line deny rule cannot be handed to a teammate intact

4948 5029 

4949Pesan ini berarti Claude Code tidak memulai rekan kerja [split-pane](https://code.claude.com/docs/id/agent-teams.md#choose-a-display-mode) di [tim agent](https://code.claude.com/docs/id/agent-teams.md) Anda. Claude Code meneruskan aturan penolakan baris perintah milik pemimpin ke rekan kerja split-pane melalui baris perintah rekan kerja itu sendiri, dan berhenti ketika rekan kerja akan membaca salah satu aturan tersebut secara berbeda:5030Pesan ini berarti Claude Code tidak memulai rekan tim [split-pane](https://code.claude.com/docs/id/agent-teams.md#choose-a-display-mode) dalam [tim agent](https://code.claude.com/docs/id/agent-teams.md) Anda. Claude Code meneruskan aturan deny baris perintah milik lead ke rekan tim split-pane melalui baris perintah rekan tim itu sendiri, dan berhenti ketika rekan tim akan membaca salah satu aturan tersebut secara berbeda:

4950 5031 

4951```text wrap theme={null}5032```text wrap theme={null}

4952A command-line deny rule cannot be handed to a teammate intact, so the teammate would not enforce it — spawn aborted5033A command-line deny rule cannot be handed to a teammate intact, so the teammate would not enforce it — spawn aborted

4953```5034```

4954 5035 

4955**What to do:**5036**Yang perlu dilakukan:**

4956 5037 

4957* Jalankan `/config` di sesi pemimpin dan atur **Teammate mode** ke `in-process`, lalu minta Claude memulai rekan kerja lagi. Anda tidak perlu menemukan aturan tersebut atau memulai ulang pemimpin. Rekan kerja in-process [berjalan di bawah aturan penolakan aktif milik pemimpin](https://code.claude.com/docs/id/agent-teams.md#permissions).5038* Jalankan `/config` di sesi lead dan setel **Teammate mode** ke `in-process`, lalu minta Claude untuk memulai rekan tim lagi. Anda tidak perlu menemukan aturan tersebut atau memulai ulang lead. Rekan tim in-process [berjalan di bawah aturan deny aktif milik lead](https://code.claude.com/docs/id/agent-teams.md#permissions).

4958* Sesi berikutnya yang mengambil [`teammateMode`](https://code.claude.com/docs/id/settings-reference#teammatemode) dari pengaturan pengguna Anda juga memulai rekan kerja secara in-process, karena `/config` menyimpan pilihan tersebut di sana. Untuk kembali ke split pane di sesi berikutnya, atur **Teammate mode** ke `auto`, `tmux`, atau `iterm2`, mana pun yang Anda gunakan sebelumnya.5039* Sesi berikutnya yang mengambil [`teammateMode`](https://code.claude.com/docs/id/settings-reference#teammatemode) dari pengaturan pengguna Anda juga memulai rekan tim secara in-process, karena `/config` menyimpan pilihan tersebut di sana. Untuk kembali ke split pane di sesi berikutnya, setel **Teammate mode** ke `auto`, `tmux`, atau `iterm2`, mana pun yang Anda gunakan sebelumnya.

4959 5040 

4960### Message too large for cross-session delivery5041### Message too large for cross-session delivery

4961 5042 

4962Pesan [lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md) Claude ke sesi lain Anda di mesin ini terlalu panjang untuk dikirim. Claude Code menolaknya, dan sesi penerima tidak mendapat apa pun. Penolakan muncul dalam hasil tool sesi pengirim, bukan sebagai spanduk di terminal Anda. Penolakan ini menyebutkan kedua ukuran dan cara membuat pesan muat:5043[Pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md) Claude ke sesi Anda yang lain di mesin ini terlalu panjang untuk dikirim. Claude Code menolaknya, dan sesi penerima tidak mendapatkan apa pun. Penolakan muncul dalam hasil tool sesi pengirim, bukan sebagai banner di terminal Anda. Penolakan tersebut menyebutkan kedua ukuran dan cara membuat pesan muat:

4963 5044 

4964```text wrap theme={null}5045```text wrap theme={null}

4965Failed to send to api-worker: Message too large for cross-session delivery: the serialized message is 1,203,844 characters and the limit is 1,048,576. Shorten the message text — put bulk content in a file the recipient can read rather than in the message — or split it into smaller messages.5046Failed to send to api-worker: Message too large for cross-session delivery: the serialized message is 1,203,844 characters and the limit is 1,048,576. Shorten the message text — put bulk content in a file the recipient can read rather than in the message — or split it into smaller messages.


4967 5048 

4968Mengirim ulang teks yang sama gagal dengan cara yang sama.5049Mengirim ulang teks yang sama gagal dengan cara yang sama.

4969 5050 

4970**What to do:**5051**Yang perlu dilakukan:**

4971 5052 

4972* Minta Claude untuk merangkum pesan, atau menempatkan konten besar dalam file dan mengirim jalur file tersebut5053* Minta Claude untuk meringkas pesan, atau untuk menaruh konten besar di sebuah file dan mengirim path file tersebut

4973* Minta Claude untuk membagi konten ke beberapa pesan yang lebih pendek5054* Minta Claude untuk membagi konten ke beberapa pesan yang lebih pendek

4974 5055 

4975Sebelum v2.1.235, Claude Code melaporkan pesan yang terlalu besar sebagai terkirim. Sesi penerima membuangnya tanpa dibaca.5056Sebelum v2.1.235, Claude Code melaporkan pesan yang terlalu besar sebagai terkirim. Sesi penerima membuangnya tanpa dibaca.

4976 5057 

4977### Too many messages to this session just now5058### Too many messages to this session just now

4978 5059 

4979Claude mengirim rentetan cepat [pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md) ke salah satu sesi Anda di mesin ini, dan rentetan itu mencapai batas yang diterima kotak surat sesi tersebut. Claude Code menolak pengiriman berikutnya, dan sesi penerima tidak mendapat apa pun darinya. Penolakan muncul dalam hasil tool sesi pengirim, bukan sebagai spanduk di terminal Anda:5060Claude mengirim serangkaian [pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md) secara cepat ke salah satu sesi Anda di mesin ini, dan rangkaian tersebut mencapai batas yang diterima inbox sesi itu. Claude Code menolak pengiriman berikutnya, dan sesi penerima tidak mendapatkan apa pun darinya. Penolakan muncul dalam hasil tool sesi pengirim, bukan sebagai banner di terminal Anda:

4980 5061 

4981```text wrap theme={null}5062```text wrap theme={null}

4982Failed to send to api-worker: Too many messages to this session just now: 30 were sent recently and more would be dropped by its rate limit, so this one was not sent. Batch what remains into one message, or wait a little before sending more.5063Failed to send to api-worker: Too many messages to this session just now: 30 were sent recently and more would be dropped by its rate limit, so this one was not sent. Batch what remains into one message, or wait a little before sending more.

4983```5064```

4984 5065 

4985**What to do:**5066**Yang perlu dilakukan:**

4986 5067 

4987* Biasanya tidak ada: Claude mengelompokkan konten yang tersisa menjadi satu pesan, atau menunggu sebelum mengirim lebih banyak5068* Biasanya tidak ada: Claude menggabungkan sisa konten menjadi satu pesan, atau menunggu sebelum mengirim lebih banyak

4988* Jika Anda sendiri yang memicu rentetan tersebut, minta Claude untuk menggabungkan sisanya menjadi satu pesan5069* Jika Anda sendiri yang memicu rangkaian tersebut, minta Claude untuk menggabungkan sisanya menjadi satu pesan

4989 5070 

4990Sebelum v2.1.236, Claude Code melaporkan pengiriman ini sebagai terkirim. Sesi penerima membuangnya tanpa dibaca.5071Sebelum v2.1.236, Claude Code melaporkan pengiriman ini sebagai terkirim. Sesi penerima membuangnya tanpa dibaca.

4991 5072 

4992### Cross-session message was dropped at the recipient session's inbox5073### Cross-session message was dropped at the recipient session's inbox

4993 5074 

4994Claude mengirim [pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md) ke sesi lain Anda di mesin ini, dan kotak surat sesi itu membuangnya sebelum Claude dalam sesi itu membacanya. Baris tersebut menyebutkan alamat penerima dan, ketika penerima memberikan alasan, menambahkan alasan setelah tanda pisah:5075Claude mengirim [pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md) ke sesi Anda yang lain di mesin ini, dan inbox sesi tersebut membuangnya sebelum Claude di sesi itu membacanya. Baris tersebut menyebutkan penerima dan, ketika penerima memberikan alasan, menambahkan alasan setelah tanda pisah:

4995 5076 

4996```text wrap theme={null}5077```text wrap theme={null}

4997Cross-session message was dropped at the recipient session's inbox (recipient: uds:/tmp/cc-socks/13605.sock) and not delivered — its queue of undelivered peer messages was full. Claude was told not to resend right away.5078Cross-session message was dropped at the recipient session's inbox (recipient: uds:/tmp/cc-socks/13605.sock) and not delivered — its queue of undelivered peer messages was full. Claude was told not to resend right away.

4998```5079```

4999 5080 

5000Satu baris dapat mencakup beberapa pesan yang dibuang. Baris tersebut kemudian dimulai dalam bentuk jamak, misalnya `Cross-session messages (12) were dropped`. Untuk menemukan sesi pemilik suatu alamat, bandingkan dengan [baris `Peer address`](https://code.claude.com/docs/id/cross-session-messaging#the-sessions-inbox-socket) yang ditampilkan `/status` di setiap sesi.5081Satu baris dapat mencakup beberapa pesan yang dibuang. Baris tersebut kemudian dimulai dalam bentuk jamak, misalnya `Cross-session messages (12) were dropped`. Untuk menemukan sesi mana yang memiliki suatu alamat, bandingkan dengan [baris `Peer address`](https://code.claude.com/docs/id/cross-session-messaging#the-sessions-inbox-socket) yang ditampilkan `/status` di setiap sesi.

5001 5082 

5002Setelah tanda pisah, baris memberikan satu atau lebih alasan berikut:5083Setelah tanda pisah, baris tersebut memberikan satu atau beberapa alasan berikut:

5003 5084 

5004* `its queue of undelivered peer messages was full`: penerima sudah menyimpan pesan yang belum terkirim dari sesi lain sebanyak yang diizinkan antreannya5085* `its queue of undelivered peer messages was full`: penerima sudah menampung pesan yang belum terkirim dari sesi lain sebanyak yang diizinkan antreannya

5005* `you sent faster than that session accepts`: pesan sesi pengirim tiba lebih cepat daripada yang diterima penerima dari satu pengirim5086* `you sent faster than that session accepts`: pesan sesi pengirim tiba lebih cepat daripada yang diterima penerima dari satu pengirim

5006* `it repeated your previous message`: pesan identik dengan pesan yang dikirim sesi pengirim ke penerima ini tidak lama sebelumnya5087* `it repeated your previous message`: pesan tersebut identik dengan pesan yang dikirim sesi pengirim ke penerima ini sesaat sebelumnya

5007* `a relay loop between sessions was cut`: pesan melanjutkan rantai sesi yang saling berkirim pesan, dan rantai tersebut telah melewati penerima terlalu banyak kali atau tumbuh terlalu panjang5088* `a relay loop between sessions was cut`: pesan tersebut melanjutkan rantai sesi yang saling mengirim pesan, dan rantai tersebut telah melewati penerima terlalu banyak kali atau menjadi terlalu panjang

5008 5089 

5009**What to do:**5090**Yang perlu dilakukan:**

5010 5091 

5011* Asumsikan penerima tidak pernah melihat pesan yang dibuang. Claude Code memberi tahu Claude hal yang sama, dan memintanya menyertakan apa pun yang masih penting dalam satu pesan berikutnya alih-alih segera mengirim ulang5092* Anggap penerima tidak pernah melihat pesan yang dibuang. Claude Code memberi tahu Claude hal yang sama, dan memberitahunya untuk menyertakan apa pun yang masih penting dalam satu pesan berikutnya alih-alih langsung mengirim ulang

5012* Jika sesi Anda saling mengirim pembaruan secara sering, minta Claude mengirim pesan yang lebih sedikit dan lebih besar, seperti satu laporan ketika sebuah sesi menyelesaikan pekerjaannya5093* Jika sesi Anda sering saling mengirim pembaruan, minta Claude untuk mengirim lebih sedikit pesan yang lebih besar, seperti satu laporan ketika sebuah sesi menyelesaikan pekerjaannya

5013* Untuk `a relay loop between sessions was cut`, ketik sendiri instruksi berikutnya ke salah satu sesi. Pesan yang dikirim Claude sebagai respons terhadap prompt Anda sendiri memulai rantai baru5094* Untuk `a relay loop between sessions was cut`, ketik sendiri instruksi berikutnya ke salah satu sesi. Pesan yang dikirim Claude sebagai respons terhadap prompt Anda sendiri memulai rantai baru

5014 5095 

5015Sebelum v2.1.238, sesi pengirim tidak mendapat laporan ketika kotak surat penerima membuang pesan.5096Sebelum v2.1.238, sesi pengirim tidak mendapat laporan ketika inbox penerima membuang pesan.

5016 5097 

5017### Refusing to send a cross-session message5098### Refusing to send a cross-session message

5018 5099 

5019Sebelum Claude Code menulis [pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md) ke sesi lain Anda di mesin ini, Claude Code memeriksa bahwa soket kotak surat sesi target adalah endpoint yang dituju pesan tersebut. Ketika pemeriksaan gagal, Claude Code menolak pengiriman di sesi pengirim, dan sesi target tidak menerima apa pun. Untuk pesan yang dikirim Claude, penolakan muncul dalam hasil tool sesi pengirim:5100Sebelum Claude Code menulis [pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md) ke sesi Anda yang lain di mesin ini, Claude Code memeriksa bahwa socket inbox sesi target adalah endpoint yang dituju pesan tersebut. Ketika suatu pemeriksaan gagal, Claude Code menolak pengiriman di sesi pengirim, dan sesi target tidak menerima apa pun. Untuk pesan yang dikirim Claude, penolakan muncul dalam hasil tool sesi pengirim:

5020 5101 

5021```text theme={null}5102```text theme={null}

5022Failed to send to api-worker: Refusing to send: reply target is a symlink5103Failed to send to api-worker: Refusing to send: reply target is a symlink


5024 5105 

5025Teks setelah `Refusing to send:` menyebutkan pemeriksaan yang gagal:5106Teks setelah `Refusing to send:` menyebutkan pemeriksaan yang gagal:

5026 5107 

5027* `reply target is a symlink`: tautan simbolis berada di jalur soket sesi target. Claude Code tidak mengirimkan melaluinya, karena tautan di sana dapat mengarahkan pesan ke endpoint yang tidak dibuat oleh sesi target.5108* `reply target is a symlink`: sebuah symbolic link berada di path socket sesi target. Claude Code tidak mengirim melaluinya, karena link di sana dapat mengalihkan pesan ke endpoint yang tidak dibuat oleh sesi target.

5028* `cannot vet reply target`: Claude Code tidak dapat memeriksa jalur target sama sekali, misalnya karena pembacaannya gagal dengan kesalahan izin.5109* `cannot vet reply target`: Claude Code sama sekali tidak dapat memeriksa path target, misalnya karena pembacaannya gagal dengan error permission.

5029 5110 

5030**What to do:**5111**Yang perlu dilakukan:**

5031 5112 

5032* Biasanya tidak ada: pemeriksaan mencegah pesan mencapai endpoint selain sesi yang dituju, dan tidak ada yang dikirim5113* Biasanya tidak ada: pemeriksaan ini mencegah pesan mencapai endpoint selain sesi yang dituju, dan tidak ada yang dikirim

5033* Jika `reply target is a symlink` berulang untuk satu sesi, periksa apa yang membuat tautan di jalur soket sesi itu, yang ditampilkan di `/status` sesi tersebut di bawah `Peer address`5114* Jika `reply target is a symlink` berulang untuk satu sesi, periksa apa yang membuat link di path socket sesi tersebut, yang ditampilkan dalam `/status`-nya di bawah `Peer address`

5034 5115 

5035### Refusing to read, write, or search a path5116### Refusing to read, write, or search a path

5036 5117 

5037Claude Code memeriksa [aturan izin](https://code.claude.com/docs/id/permissions.md#read-and-edit) suatu jalur file, kemudian mengonfirmasi resolusi itu lagi ketika tool membuka file atau memulai pencarian. Ketika tidak dapat mengonfirmasi bahwa jalur masih mengarah ke lokasi yang disetujui pemeriksaan, Claude Code menolak operasi alih-alih mengikutinya. Penolakan muncul dalam hasil tool:5118Claude Code memeriksa [aturan izin](https://code.claude.com/docs/id/permissions.md#read-and-edit) suatu path file, lalu mengonfirmasi resolusi tersebut lagi ketika tool membuka file atau memulai pencarian. Ketika Claude Code tidak dapat mengonfirmasi bahwa path tersebut masih mengarah ke lokasi yang disetujui pemeriksaan, Claude Code menolak operasi tersebut alih-alih mengikutinya. Penolakan muncul dalam hasil tool:

5038 5119 

5039```text wrap theme={null}5120```text wrap theme={null}

5040Refusing to read /path/to/file: its symlink resolution changed after permission was checked (a link on the way now leads somewhere the check did not see). If a link in the working directory is being rewritten concurrently, stop that and retry.5121Refusing to read /path/to/file: its symlink resolution changed after permission was checked (a link on the way now leads somewhere the check did not see). If a link in the working directory is being rewritten concurrently, stop that and retry.


5042 5123 

5043Setiap penolakan menyebutkan alasannya:5124Setiap penolakan menyebutkan alasannya:

5044 5125 

5045* `its symlink resolution changed after permission was checked`: symlink di sepanjang jalur, atau di akar pencarian Grep atau Glob, diganti antara pemeriksaan izin dan operasi. Dalam penolakan baca, frasa dalam tanda kurung menyebutkan perbandingan mana yang gagal.5126* `its symlink resolution changed after permission was checked`: sebuah symlink di sepanjang path, atau pada root pencarian Grep atau Glob, diganti di antara pemeriksaan izin dan operasi. Dalam penolakan baca, frasa dalam tanda kurung menyebutkan perbandingan mana yang gagal.

5046* `its parent-directory symlink resolution changed after permission was checked`: direktori yang dilalui jalur penulisan tidak lagi mengarah ke lokasi yang disetujui5127* `its parent-directory symlink resolution changed after permission was checked`: direktori yang dilalui path penulisan tidak lagi di-resolve ke lokasi yang disetujui

5047* `where it leads on disk could not be determined (a link on the way could not be examined, or the links do not resolve)`: Claude Code tidak dapat mengikuti jalur ke lokasi akhir di disk, misalnya karena symlink di dalamnya membentuk loop5128* `where it leads on disk could not be determined (a link on the way could not be examined, or the links do not resolve)`: Claude Code tidak dapat mengikuti path ke lokasi akhir di disk, misalnya karena symlink di path tersebut membentuk loop

5048* `it is a symbolic link. Write to the link's target path instead`: tautan simbolis berada di lokasi penulisan yang diminta itu sendiri, misalnya `CLAUDE.md` yang merupakan symlink ke `AGENTS.md`; pesan mengarahkan Claude ke target tautan5129* `it is a symbolic link. Write to the link's target path instead`: sebuah symbolic link berada di lokasi penulisan yang diminta itu sendiri, misalnya `CLAUDE.md` yang merupakan symlink ke `AGENTS.md`; pesan tersebut mengarahkan Claude ke target link

5049* `Refusing to write through symlink: <path>. Resolve the symlink and pass the real target path explicitly.`: kondisi yang sama terdeteksi ketika penulis lain membuka file, seperti penulisan ke `.mcp.json` yang berupa symlink5130* `Refusing to write through symlink: <path>. Resolve the symlink and pass the real target path explicitly.`: kondisi yang sama yang terdeteksi ketika penulis lain membuka file, seperti penulisan ke `.mcp.json` yang merupakan symlink

5050* `Refusing to write into symlinked directory: <path>`: direktori yang menyimpan file itu sendiri adalah tautan simbolis, misalnya direktori `.claude/` proyek yang ditautkan ke lokasi lain5131* `Refusing to write into symlinked directory: <path>`: direktori yang menampung file itu sendiri adalah symbolic link, misalnya direktori `.claude/` proyek yang ditautkan ke lokasi lain

5051* `a path one of its Read deny rules is written through changed while the search was being prepared. Retry.`: aturan penolakan `Read` untuk pencarian menyebutkan jalur yang melewati symlink, dan tautan itu berubah saat Claude Code menyiapkan pencarian5132* `a path one of its Read deny rules is written through changed while the search was being prepared. Retry.`: aturan deny `Read` untuk pencarian menyebutkan path yang melewati symlink, dan link tersebut berubah ketika Claude Code sedang menyiapkan pencarian

5052* `it could not be opened (EACCES) — it is unreadable, or is being replaced concurrently.`: akar pencarian ada tetapi tidak dapat dibuka; kode dalam tanda kurung adalah kesalahan sistem operasi5133* `it could not be opened (EACCES) — it is unreadable, or is being replaced concurrently.`: root pencarian ada tetapi tidak dapat dibuka; kode dalam tanda kurung adalah error sistem operasi

5053* `its permission check expired before it ran (too many concurrent file operations). Retry.`: Claude Code mengeluarkan catatan persetujuan di bawah banyak operasi file simultan sebelum tool menggunakannya; mencoba ulang menjalankan pemeriksaan izin yang baru5134* `its permission check expired before it ran (too many concurrent file operations). Retry.`: Claude Code mengeluarkan catatan persetujuan di bawah banyak operasi file simultan sebelum tool menggunakannya; mencoba ulang menjalankan pemeriksaan izin yang baru

5054* `ripgrep was found only by name on PATH, and a search outside the working directory cannot apply your Read deny rules in that configuration`: Claude Code tidak dapat me-resolve biner `rg` ke jalur absolut, jadi menolak pencarian di luar direktori kerja alih-alih menjalankan pencarian yang tidak dicakup aturan penolakan Anda5135* `ripgrep was found only by name on PATH, and a search outside the working directory cannot apply your Read deny rules in that configuration`: Claude Code tidak dapat me-resolve biner `rg` ke path absolut, sehingga menolak pencarian di luar direktori kerja alih-alih menjalankan pencarian yang tidak tercakup aturan deny Anda

5055 5136 

5056**What to do:**5137**Yang perlu dilakukan:**

5057 5138 

5058* Biasanya tidak ada: penolakan sampai ke Claude sebagai hasil tool, dan operasi yang ditolak tidak berjalan5139* Biasanya tidak ada: penolakan sampai ke Claude sebagai hasil tool, dan operasi yang ditolak tidak berjalan

5059* Jika penolakan symlink berulang pada satu jalur, temukan apa yang terus menulis ulang tautan di sana, seperti alat build atau file watcher, atau minta Claude menggunakan jalur file yang sudah di-resolve alih-alih jalur yang ditautkan5140* Jika penolakan symlink berulang pada satu path, temukan apa yang terus menulis ulang link di sana, seperti tool build atau file watcher, atau minta Claude menggunakan path file yang sudah di-resolve alih-alih path yang ditautkan

5060* Jika penolakan ini muncul untuk setiap file saat Claude Code berjalan di Windows di dalam AppContainer atau sandbox token terbatas, tingkatkan ke v2.1.265 atau lebih baru5141* Jika penolakan ini muncul untuk setiap file saat Claude Code berjalan di Windows di dalam AppContainer atau sandbox restricted-token, tingkatkan ke v2.1.265 atau yang lebih baru

5061* Jika penolakan baca muncul di macOS untuk file yang tidak sedang ditulis ulang oleh apa pun, seperti tangkapan layar yang diseret ke prompt, tingkatkan ke v2.1.273 atau lebih baru5142* Jika penolakan baca muncul di macOS untuk file yang tidak sedang ditulis ulang oleh apa pun, seperti tangkapan layar yang diseret ke prompt, tingkatkan ke v2.1.273 atau yang lebih baru

5062* Untuk penolakan ripgrep, instal ripgrep dengan manajer paket Anda sehingga `rg` di-resolve ke jalur absolut di `PATH`, atau tetap lakukan pencarian di bawah direktori kerja5143* Untuk penolakan ripgrep, instal ripgrep dengan package manager Anda agar `rg` di-resolve ke path absolut di `PATH`, atau pertahankan pencarian di bawah direktori kerja

5063 5144 

5064Sebelum v2.1.251, Claude Code memeriksa ulang resolusi jalur hanya untuk penulisan file, jadi tautan yang diganti setelah pemeriksaan izin dapat mengarahkan pembacaan atau pencarian ke lokasi berbeda tanpa pesan. Dari penolakan-penolakan ini, hanya penolakan penulisan direktori induk, melalui symlink, dan direktori yang berupa symlink yang muncul di versi sebelumnya.5145Sebelum v2.1.251, Claude Code memeriksa ulang resolusi path hanya untuk penulisan file, sehingga link yang diganti setelah pemeriksaan izin dapat mengalihkan pembacaan atau pencarian ke lokasi berbeda tanpa pesan. Dari semua ini, hanya penolakan penulisan parent-directory, through-symlink, dan symlinked-directory yang muncul pada versi sebelumnya.

5065 5146 

5066Sebelum v2.1.280, penolakan `where it leads on disk could not be determined` tidak muncul.5147Sebelum v2.1.280, penolakan `where it leads on disk could not be determined` tidak muncul.

5067 5148 

5149### The search failed, so this is not a "no matches" result

5150 

5151Pencarian [Grep](https://code.claude.com/docs/id/tools-reference.md#grep-tool-behavior) atau [Glob](https://code.claude.com/docs/id/tools-reference.md#glob-tool-behavior) yang dijalankan Claude gagal sebelum mengembalikan hasil apa pun, sehingga tidak diketahui apakah ada kecocokan. Pesan yang diterima Claude sebagai pengganti hasil dimulai dengan:

5152 

5153```text wrap theme={null}

5154The search failed, so this is not a "no matches" result: matches may exist. What happened to the search program (ripgrep) is not known, and no results were read. Run the search once more. If it fails again, tell the user that searches are failing.

5155```

5156 

5157**Yang perlu dilakukan:**

5158 

5159* **Pertama kali muncul**: tidak ada. Pesan tersebut meminta Claude untuk mencari lagi terlebih dahulu.

5160* **Jika Claude mengatakan pencarian terus gagal**: tangkap error ripgrep untuk laporan bug:

5161 1. Dari shell Anda, mulai sesi dengan flag yang sama seperti sesi tempat pencarian gagal, ditambah [`--debug-file claude-debug.log`](https://code.claude.com/docs/id/cli-reference#cli-flags)

5162 2. Kirim kepada Claude permintaan yang menyebabkan pencarian gagal

5163 3. Jika pencarian gagal lagi, temukan baris yang berisi `rg error (signal=` di `claude-debug.log`

5164 4. Sertakan baris tersebut ketika Anda [melaporkan masalah](#report-an-error)

5165 

5068### Task output swap refused5166### Task output swap refused

5069 5167 

5070Claude Code menyimpan output setiap perintah Bash ke file di bawah direktori temp-nya. Setiap kali membuka salah satu file ini, Claude Code memeriksa bahwa jalur masih mengarah ke file yang dibuatnya, tanpa tautan simbolis, hard link tambahan, atau direktori yang dipindahkan yang mengalihkannya. Pesan ini berarti pemeriksaan itu gagal, jadi Claude Code menolak operasi alih-alih menulis atau membaca output melalui jalur itu. Pesan muncul dalam hasil tool Bash:5168Claude Code menyimpan output setiap perintah Bash ke file di bawah direktori temp-nya. Setiap kali membuka salah satu file ini, Claude Code memeriksa bahwa path tersebut masih mengarah ke file yang dibuatnya, tanpa symbolic link, hard link tambahan, atau direktori yang dipindahkan yang mengalihkannya. Pesan ini berarti pemeriksaan tersebut gagal, sehingga Claude Code menolak operasi alih-alih menulis atau membaca output melalui path tersebut. Pesan muncul dalam hasil tool Bash:

5071 5169 

5072```text wrap theme={null}5170```text wrap theme={null}

5073task output swap refused (tasks dir moved or linked): /private/tmp/claude-501/-Users-you-my-project/1f0e62dc-4b0a-4f5e-9c2d-8a7b6c5d4e3f/tasks/b7k2f9m3q.output. To recover: restart Claude Code with CLAUDE_CODE_TMPDIR set to a fresh directory; or, if /private/tmp/claude-501/-Users-you-my-project is a stray directory or a symbolic link that should not be there, remove that entry itself (not what it points to) and restart.5171task output swap refused (tasks dir moved or linked): /private/tmp/claude-501/-Users-you-my-project/1f0e62dc-4b0a-4f5e-9c2d-8a7b6c5d4e3f/tasks/b7k2f9m3q.output. To recover: restart Claude Code with CLAUDE_CODE_TMPDIR set to a fresh directory; or, if /private/tmp/claude-501/-Users-you-my-project is a stray directory or a symbolic link that should not be there, remove that entry itself (not what it points to) and restart.

5074```5172```

5075 5173 

5076Teks dalam tanda kurung menyebutkan pemeriksaan yang gagal. Alasan seperti `output symlink was re-pointed`, `output file identity changed`, dan `not a regular file` semuanya melaporkan kondisi yang sama: sesuatu di atau di sepanjang jalur output tidak lagi merupakan file yang dibuat Claude Code. Hanya beberapa alasan yang menyertakan kalimat `To recover:`.5174Teks dalam tanda kurung menyebutkan pemeriksaan yang gagal. Alasan seperti `output symlink was re-pointed`, `output file identity changed`, dan `not a regular file` semuanya melaporkan kondisi yang sama: sesuatu di atau di sepanjang path output bukan lagi file yang dibuat Claude Code. Hanya beberapa alasan yang membawa kalimat `To recover:`.

5077 5175 

5078Jika pemeriksaan gagal saat perintah masih berjalan, Claude Code menghentikan perintah, dan hasilnya melaporkan:5176Jika pemeriksaan gagal saat perintah masih berjalan, Claude Code menghentikan perintah tersebut, dan hasilnya melaporkan:

5079 5177 

5080```text theme={null}5178```text theme={null}

5081Command killed: its output file was replaced or could no longer be verified5179Command killed: its output file was replaced or could no longer be verified

5082```5180```

5083 5181 

5084**What to do:**5182**Yang perlu dilakukan:**

5085 5183 

5086* Tingkatkan ke v2.1.260 atau lebih baru. Versi sebelumnya terkadang menampilkan pesan ini ketika tidak ada tautan atau direktori yang dipindahkan5184* Tingkatkan ke v2.1.260 atau yang lebih baru. Versi sebelumnya terkadang menampilkan pesan ini ketika tidak ada link atau direktori yang dipindahkan

5087* Mulai ulang Claude Code dengan [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/id/env-vars) diatur ke direktori baru5185* Mulai ulang Claude Code dengan [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/id/env-vars) disetel ke direktori baru

5088* Atau periksa direktori proyek Anda di bawah direktori temp Claude Code, `/private/tmp/claude-501/-Users-you-my-project` dalam contoh pesan. Jika jalur itu adalah tautan simbolis, atau direktori yang tidak seharusnya ada, hapus tautan atau direktori itu sendiri alih-alih target tautan, dan mulai ulang Claude Code5186* Atau periksa direktori proyek Anda di bawah direktori temp Claude Code, `/private/tmp/claude-501/-Users-you-my-project` dalam contoh pesan. Jika path tersebut adalah symbolic link, atau direktori yang seharusnya tidak ada di sana, hapus link atau direktori itu sendiri, bukan target link-nya, dan mulai ulang Claude Code

5089* Jika penolakan berulang, ada proses yang mengganti, menautkan, atau menghapus entri di bawah direktori temp Claude Code saat sesi berjalan. Atur [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/id/env-vars) ke direktori yang tidak dikelola oleh apa pun dan mulai ulang5187* Jika penolakan berulang, ada proses yang mengganti, menautkan, atau menghapus entri di bawah direktori temp Claude Code saat sesi berjalan. Setel [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/id/env-vars) ke direktori yang tidak dikelola oleh hal lain dan mulai ulang

5090 5188 

5091### Disk full or disk quota used up5189### Disk full or disk quota used up

5092 5190 

5093Kosongkan ruang, inode, atau kuota disk pada volume yang menyimpan direktori sementara Claude Code. Baris dalam hasil perintah yang diawali `Disk full:`, `Disk quota used up:`, atau `Nearly out of inodes:` menyebutkan direktori tersebut.5191Kosongkan ruang, inode, atau kuota disk di volume yang menampung direktori sementara Claude Code. Baris dalam hasil perintah yang dimulai dengan `Disk full:`, `Disk quota used up:`, atau `Nearly out of inodes:` menyebutkan direktori tersebut.

5094 5192 

5095Claude Code menyimpan output setiap perintah Bash dan PowerShell ke file di bawah direktori tersebut. Jika Claude Code tidak dapat membuat file itu karena volume atau kuota Anda di dalamnya sudah penuh, perintah Anda tidak dimulai, dan hasil yang dibaca Claude adalah:5193Claude Code menyimpan output setiap perintah Bash dan PowerShell ke file di bawah direktori tersebut. Jika Claude Code tidak dapat membuat file itu karena volume atau kuota Anda di volume tersebut penuh, perintah Anda tidak dimulai, dan hasil yang dibaca Claude adalah:

5096 5194 

5097```text wrap theme={null}5195```text wrap theme={null}

5098The command was not started: this computer's disk is full (ENOSPC) on the volume holding /tmp/claude-501 (Claude Code's temporary directory), so the file that captures command output could not be created there and nothing ran. Free space on that volume, or restart Claude Code with CLAUDE_CODE_TMPDIR set to a directory on another one, then retry. If this is the user's own computer, tell them before deleting anything to make room.5196The command was not started: this computer's disk is full (ENOSPC) on the volume holding /tmp/claude-501 (Claude Code's temporary directory), so the file that captures command output could not be created there and nothing ran. Free space on that volume, or restart Claude Code with CLAUDE_CODE_TMPDIR set to a directory on another one, then retry. If this is the user's own computer, tell them before deleting anything to make room.

5099```5197```

5100 5198 

5101Pesan `Disk full:`, `Disk quota used up:`, dan `Nearly out of inodes:` muncul setelah perintah yang berjalan dan keluar dengan kode bukan nol. Misalnya:5199Pesan `Disk full:`, `Disk quota used up:`, dan `Nearly out of inodes:` mengikuti perintah yang berjalan dan keluar dengan kode bukan nol. Misalnya:

5102 5200 

5103```text wrap theme={null}5201```text wrap theme={null}

5104Disk full: this computer's volume holding /tmp/claude-501 (Claude Code's temporary directory) has 3 MB free, so whatever this command printed was lost and its own writes may have failed with "No space left on device". Free space on that volume, or restart Claude Code with CLAUDE_CODE_TMPDIR set to a directory on another one, then retry. If this is the user's own computer, tell them before deleting anything to make room.5202Disk full: this computer's volume holding /tmp/claude-501 (Claude Code's temporary directory) has 3 MB free, so whatever this command printed was lost and its own writes may have failed with "No space left on device". Free space on that volume, or restart Claude Code with CLAUDE_CODE_TMPDIR set to a directory on another one, then retry. If this is the user's own computer, tell them before deleting anything to make room.

5105```5203```

5106 5204 

5107**What to do:**5205**Yang perlu dilakukan:**

5108 5206 

5109* Di macOS dan Linux, jalankan `df -h <dir>` di shell Anda untuk melihat volume mana yang menyimpan direktori tersebut dan seberapa penuh volume itu. `df -i <dir>` menampilkan berapa banyak inode yang tersedia. `<dir>` adalah direktori yang disebutkan pesan Anda, seperti dalam `df -i /tmp/claude-501`5207* Di macOS dan Linux, jalankan `df -h <dir>` di shell Anda untuk melihat volume mana yang menampung direktori tersebut dan seberapa penuh volume itu. `df -i <dir>` menunjukkan berapa banyak inode yang tersedia. `<dir>` adalah direktori yang disebutkan pesan Anda, seperti dalam `df -i /tmp/claude-501`

5110* **`Disk full: this computer's volume` atau `disk is full (ENOSPC)`**: di mana pun pada volume tersebut, hapus file yang tidak Anda butuhkan5208* **`Disk full: this computer's volume` atau `disk is full (ENOSPC)`**: di mana pun pada volume tersebut, hapus file yang tidak Anda perlukan

5111* **`Disk quota used up:`, `disk quota is used up (EDQUOT)`, atau `Disk full: a test write`**: hapus file milik Anda sendiri pada volume tersebut, meskipun volume itu masih menunjukkan ruang kosong5209* **`Disk quota used up:`, `disk quota is used up (EDQUOT)`, atau `Disk full: a test write`**: hapus file milik Anda sendiri di volume tersebut, meskipun volume itu masih menunjukkan ruang kosong

5112* **`Nearly out of inodes:`**: hapus banyak file pada volume tersebut. Setiap file menggunakan satu inode berapa pun ukurannya, jadi yang penting adalah jumlahnya, bukan ukurannya5210* **`Nearly out of inodes:`**: hapus banyak file di volume tersebut. Setiap file menggunakan satu inode berapa pun ukurannya, sehingga yang penting adalah jumlahnya, bukan ukurannya

5113* Atau mulai ulang Claude Code dengan [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/id/env-vars) diatur ke direktori pada volume yang memiliki ruang5211* Atau mulai ulang Claude Code dengan [`CLAUDE_CODE_TMPDIR`](https://code.claude.com/docs/id/env-vars) disetel ke direktori di volume yang memiliki ruang

5114* Kemudian minta Claude menjalankan perintah lagi5212* Kemudian minta Claude menjalankan perintah tersebut lagi

5115 5213 

5116Sebelum v2.1.309, pesan-pesan tersebut berbunyi sebagai berikut, dan langkah yang sama berlaku:5214Sebelum v2.1.309, pesan-pesan tersebut berbunyi sebagai berikut, dan langkah yang sama berlaku:

5117 5215 

5118* `Your disk quota is full on the filesystem with Claude Code's temp directory <dir> (EDQUOT)`5216* `Your disk quota is full on the filesystem with Claude Code's temp directory <dir> (EDQUOT)`

5119* `The filesystem with Claude Code's temp directory <dir>, or your disk quota on it, is full (ENOSPC)`5217* `The filesystem with Claude Code's temp directory <dir>, or your disk quota on it, is full (ENOSPC)`

5120* `Command output was lost: the temp filesystem at <dir> is full` atau `... is out of inodes`5218* `Command output was lost: the temp filesystem at <dir> is full` atau `... is out of inodes`

5121* `The command was not started: this computer's disk is full (ENOSPC), so the file that captures command output could not be created. Nothing ran.`, atau hal yang sama dengan `(EDQUOT)`. Bentuk ini tidak menyebutkan direktori: periksa volume yang menyimpan direktori temp sistem Anda, seperti `/tmp`, atau direktori yang diatur dalam `CLAUDE_CODE_TMPDIR`5219* `The command was not started: this computer's disk is full (ENOSPC), so the file that captures command output could not be created. Nothing ran.`, atau yang sama dengan `(EDQUOT)`. Bentuk ini tidak menyebutkan direktori: periksa volume yang menampung direktori temp sistem Anda, seperti `/tmp`, atau direktori yang disetel di `CLAUDE_CODE_TMPDIR`

5122 5220 

5123Sebelum v2.1.305, perintah yang tidak dapat dimulai Claude Code karena disk penuh hanya mengembalikan teks kesalahan sistem operasi. Teks tersebut berbunyi, misalnya, `ENOSPC: no space left on device, open <path>.output`.5221Sebelum v2.1.305, perintah yang tidak dapat dimulai Claude Code karena disk penuh hanya mengembalikan teks error sistem operasi. Teks tersebut berbunyi, misalnya, `ENOSPC: no space left on device, open <path>.output`.

5124 5222 

5125### git is not installed on this Mac5223### git is not installed on this Mac

5126 5224 

5127Pesan ini berarti sebuah langkah dalam Claude Code membutuhkan git, dan git yang ditemukannya adalah pengganti dari Apple di `/usr/bin/git`. Alat pengembang yang menyediakan git belum terinstal.5225Pesan ini berarti suatu langkah di Claude Code memerlukan git, dan git yang ditemukannya adalah pengganti sementara dari Apple di `/usr/bin/git`. Alat pengembang yang menyediakan git tidak terinstal.

5128 5226 

5129Claude Code tidak menjalankan pengganti tersebut dan menampilkan teks ini sebagai gantinya, misalnya di dalam pesan yang lebih panjang:5227Claude Code tidak menjalankan pengganti sementara tersebut dan menampilkan teks ini sebagai gantinya, misalnya di dalam pesan yang lebih panjang:

5130 5228 

5131```text wrap theme={null}5229```text wrap theme={null}

5132git is not installed on this Mac. To install it, run xcode-select --install, then try again.5230git is not installed on this Mac. To install it, run xcode-select --install, then try again.

5133```5231```

5134 5232 

5135**What to do:**5233**Yang perlu dilakukan:**

5136 5234 

5137* Di Terminal, jalankan `xcode-select --install`, selesaikan instalasi yang dimulainya, lalu coba lagi apa yang sedang Anda lakukan di Claude Code5235* Di Terminal, jalankan `xcode-select --install`, selesaikan instalasi yang dimulainya, lalu coba lagi apa yang sedang Anda lakukan di Claude Code

5138 5236 

5139### File is not valid UTF-85237### File is not valid UTF-8

5140 5238 

5141Claude menggunakan tool Edit atau NotebookEdit pada file yang byte-nya tidak dapat didekodekan sebagai UTF-8, dan Claude Code menolak perubahan tersebut. Tidak ada yang ditulis, jadi file tetap seperti semula. Tool tersebut menyimpan kembali seluruh file sebagai UTF-8, yang akan mengubah setiap byte yang tidak dapat didekodekannya menjadi karakter pengganti `U+FFFD`. Pesan muncul dalam hasil tool:5239Claude menggunakan tool Edit atau NotebookEdit pada file yang byte-nya tidak dapat didekode sebagai UTF-8, dan Claude Code menolak perubahan tersebut. Tidak ada yang ditulis, sehingga file tetap seperti sebelumnya. Tool tersebut menyimpan kembali seluruh file sebagai UTF-8, yang akan mengubah setiap byte yang tidak dapat didekodenya menjadi karakter pengganti `U+FFFD`. Pesan muncul dalam hasil tool:

5142 5240 

5143```text wrap theme={null}5241```text wrap theme={null}

5144File is not valid UTF-8. It may use a legacy encoding such as Windows-1252, Shift-JIS or GBK, or be binary. This tool saves the whole file as UTF-8, which would replace every byte it cannot decode with U+FFFD. Nothing was written. Make the change with a shell command that reads and writes the file in its own encoding, or ask the user whether to convert the file to UTF-8 first.5242File is not valid UTF-8. It may use a legacy encoding such as Windows-1252, Shift-JIS or GBK, or be binary. This tool saves the whole file as UTF-8, which would replace every byte it cannot decode with U+FFFD. Nothing was written. Make the change with a shell command that reads and writes the file in its own encoding, or ask the user whether to convert the file to UTF-8 first.

5145```5243```

5146 5244 

5147File yang seharusnya berformat UTF-8 juga mendapatkan pesan ini ketika berisi bahkan satu urutan byte yang tidak valid, karena pemeriksaan mencakup byte file secara keseluruhan.5245File yang dimaksudkan sebagai UTF-8 juga mendapat pesan ini ketika berisi bahkan satu urutan byte yang tidak valid, karena pemeriksaan mencakup byte file secara keseluruhan.

5148 5246 

5149**What to do:**5247**Yang perlu dilakukan:**

5248 

5249* Untuk mempertahankan file dalam encoding-nya saat ini, biarkan Claude melakukan perubahan dengan perintah shell yang membaca dan menulis file dalam encoding tersebut, sebagaimana diinstruksikan pesan

5250* Untuk terus mengedit file dengan tool Edit, konversikan ke UTF-8, atau perbaiki byte yang tidak valid dalam file yang dimaksudkan sebagai UTF-8, lalu minta Claude melakukan pengeditan lagi

5251 

5252Sebelum v2.1.296, Edit dan NotebookEdit menerapkan pengeditan seperti itu dan menyimpan setiap byte yang tidak dapat didekodenya sebagai `U+FFFD`. Pada versi tersebut, perbarui Claude Code.

5150 5253 

5151* Untuk mempertahankan file dalam encoding saat ini, biarkan Claude membuat perubahan dengan perintah shell yang membaca dan menulis file dalam encoding tersebut, seperti yang diinstruksikan pesan5254### Refusing to apply edits: a hook is configured for file edits in this session

5152* Untuk terus mengedit file dengan tool Edit, konversikan file ke UTF-8, atau perbaiki byte yang tidak valid dalam file yang seharusnya berformat UTF-8, lalu minta Claude melakukan edit lagi

5153 5255 

5154Sebelum v2.1.296, Edit dan NotebookEdit menerapkan edit seperti itu dan menyimpan setiap byte yang tidak dapat didekodekan sebagai `U+FFFD`. Pada versi tersebut, perbarui Claude Code.5256Claude mencoba memublikasikan [artifact](https://code.claude.com/docs/id/artifacts.md) dengan [pembaruan satu langkah](https://code.claude.com/docs/id/artifacts.md#turn-off-one-step-artifact-updates), yaitu perubahan kecil pada file artifact yang disertakan dalam publikasi, dan Claude Code menolaknya. Tidak ada yang dipublikasikan dan file tidak berubah. Pesan muncul dalam hasil tool Artifact:

5257 

5258```text wrap theme={null}

5259Refusing to apply edits to <path>: a hook is configured for file edits in this session, so a publish can't apply edits here. Edit the file, then publish it without edits. Nothing was published.

5260```

5261 

5262Claude Code tidak mengizinkan pembaruan satu langkah selama sesi Anda memiliki [hook `PreToolUse`](https://code.claude.com/docs/id/hooks#pretooluse) atau [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) pada `Edit` atau `Write`.

5263 

5264**Yang perlu dilakukan:**

5265 

5266* Tidak ada, jika Claude melanjutkan dengan mengedit file dan memublikasikannya

5267* Jika Claude berhenti pada pesan tersebut, minta Claude untuk mengedit file dan memublikasikannya

5268* Jika pesan terus muncul kembali, keluar dan luncurkan ulang Claude Code

5269* Jika pesan tetap muncul kembali bahkan setelah peluncuran ulang, [matikan pembaruan satu langkah](https://code.claude.com/docs/id/artifacts.md#turn-off-one-step-artifact-updates)

5155 5270 

5156### The source file is not valid UTF-8 text5271### The source file is not valid UTF-8 text

5157 5272 

5158Claude mencoba menerbitkan [artifact](https://code.claude.com/docs/id/artifacts.md) dari file yang byte-nya tidak dapat didekodekan sebagai teks, atau yang teksnya sudah berisi karakter pengganti `U+FFFD`, jadi Claude Code menolak penerbitan sebelum mengunggah apa pun. Pesan muncul dalam hasil tool Artifact dan menyebutkan posisi pertama yang harus diperbaiki:5273Claude mencoba memublikasikan [artifact](https://code.claude.com/docs/id/artifacts.md) dari file yang byte-nya tidak dapat didekode sebagai teks, atau yang teksnya sudah berisi karakter pengganti `U+FFFD`, sehingga Claude Code menolak publikasi sebelum mengunggah apa pun. Pesan muncul dalam hasil tool Artifact dan menyebutkan posisi pertama yang perlu diperbaiki:

5159 5274 

5160```text wrap theme={null}5275```text wrap theme={null}

5161file_path: the source file is not valid UTF-8 text (first invalid byte at line 12, column 40). It may be saved in another encoding or contain binary data. Rewrite it as UTF-8, then publish again. Nothing was published.5276file_path: the source file is not valid UTF-8 text (first invalid byte at line 12, column 40). It may be saved in another encoding or contain binary data. Rewrite it as UTF-8, then publish again. Nothing was published.


5163file_path: the source file has the replacement character U+FFFD at line 12, column 40, usually left where an earlier edit or paste lost a character. Replace it with the intended text (in HTML, write an intended U+FFFD as &#xFFFD;), then publish again. Nothing was published.5278file_path: the source file has the replacement character U+FFFD at line 12, column 40, usually left where an earlier edit or paste lost a character. Replace it with the intended text (in HTML, write an intended U+FFFD as &#xFFFD;), then publish again. Nothing was published.

5164```5279```

5165 5280 

5166Claude Code mendekodekan file sebagai UTF-8, atau sebagai UTF-16 ketika file dimulai dengan byte-order mark UTF-16 little-endian. Ketika file UTF-16 seperti itu tidak dapat didekodekan, pesan pertama menyebutkan `UTF-16` dan tetap meminta Anda menulis ulang file sebagai UTF-8. Ketika ada lebih banyak posisi setelah posisi yang disebutkan, pesan menambahkan hitungan seperti `(+2 more)` setelah posisi tersebut.5281Claude Code mendekode file sebagai UTF-8, atau sebagai UTF-16 ketika file dimulai dengan byte-order mark UTF-16 little-endian. Ketika file UTF-16 seperti itu tidak dapat didekode, pesan pertama menyebutkan `UTF-16` dan tetap meminta Anda menulis ulang file sebagai UTF-8. Ketika ada posisi lain setelah posisi yang disebutkan, pesan menambahkan hitungan seperti `(+2 more)` setelah posisi tersebut.

5167 5282 

5168**What to do:**5283**Yang perlu dilakukan:**

5169 5284 

5170* Biasanya tidak ada: Claude menulis ulang file dan menerbitkannya lagi5285* Biasanya tidak ada: Claude menulis ulang file dan memublikasikannya lagi

5171* Jika file tersebut Anda tulis atau ekspor sendiri, simpan lagi sebagai UTF-8, dan ganti setiap `U+FFFD` dengan karakter yang hilang akibat edit, paste, atau konversi sebelumnya5286* Jika file tersebut adalah file yang Anda tulis atau ekspor, simpan lagi sebagai UTF-8, dan ganti setiap `U+FFFD` dengan karakter yang hilang akibat pengeditan, penempelan, atau konversi sebelumnya

5172* Untuk menampilkan `U+FFFD` yang disengaja di halaman, tuliskan sebagai `&#xFFFD;` dalam HTML alih-alih karakter literal5287* Untuk menampilkan `U+FFFD` yang disengaja di halaman, tulis sebagai `&#xFFFD;` di HTML alih-alih karakter literal

5173 5288 

5174Sebelum v2.1.267, Claude Code mengunggah file seperti itu tanpa memeriksanya, dan server yang menolak penerbitan sebagai gantinya.5289Sebelum v2.1.267, Claude Code mengunggah file seperti itu tanpa memeriksanya, dan server yang menolak publikasi.

5175 5290 

5176### Not published: that file is on a network share5291### Not published: that file is on a network share

5177 5292 

5178Claude mencoba menerbitkan [artifact](https://code.claude.com/docs/id/artifacts.md) dari file di jalur yang menyebutkan host jaringan:5293Claude mencoba memublikasikan [artifact](https://code.claude.com/docs/id/artifacts.md) dari file di path yang menyebutkan host jaringan:

5179 5294 

5180* Di Windows, jalur `\\server\share` yang tidak berada di bawah drive jaringan yang dipetakan dan Anda berikan saat peluncuran dengan [`--add-dir`](https://code.claude.com/docs/id/cli-reference#cli-flags)5295* Di Windows, path `\\server\share` yang tidak berada di bawah drive jaringan yang dipetakan yang Anda berikan saat peluncuran dengan [`--add-dir`](https://code.claude.com/docs/id/cli-reference#cli-flags)

5181* Di macOS atau Linux, jalur automount seperti `/net/<host>/page.html`5296* Di macOS atau Linux, path automount seperti `/net/<host>/page.html`

5182 5297 

5183Mencari jalur seperti itu akan menghubungi host yang disebutkannya, dan di Windows kontak tersebut dapat mengirimkan kredensial Anda ke host itu. Claude Code menolak menerbitkan file dan tidak membacanya. Penolakan muncul dalam hasil tool Artifact:5298Mencari path seperti itu menghubungi host yang disebutkannya, dan di Windows kontak tersebut dapat mengirimkan kredensial Anda ke host. Claude Code menolak memublikasikan file dan tidak membacanya. Penolakan muncul dalam hasil tool Artifact:

5184 5299 

5185```text theme={null}5300```text theme={null}

5186Not published: that file is on a network share. Publish a file from this session's folders instead.5301Not published: that file is on a network share. Publish a file from this session's folders instead.

5187```5302```

5188 5303 

5189**What to do:**5304**Yang perlu dilakukan:**

5190 5305 

5191* Tidak ada, jika Anda tidak membutuhkan file yang persis itu: pesan memberi tahu Claude untuk menerbitkan file dari folder sesi itu sendiri sebagai gantinya5306* Tidak ada, jika Anda tidak memerlukan file tersebut secara spesifik: pesan memberi tahu Claude untuk memublikasikan file dari folder sesi itu sendiri

5192* Untuk menerbitkan file yang persis itu, salin ke folder di disk lokal dan minta lagi5307* Untuk memublikasikan file tersebut secara spesifik, salin ke folder di disk lokal dan minta lagi

5193* Di Windows, agar Claude dapat menerbitkan langsung dari share, petakan share tersebut ke huruf drive dan berikan drive tersebut saat Anda memulai Claude Code. Di PowerShell, misalnya, jalankan `net use Z: \\server\share` lalu `claude --add-dir Z:\`. Claude kemudian dapat menerbitkan file dari drive tersebut. Menambahkan drive di tengah sesi dengan `/add-dir` tidak cukup.5308* Di Windows, untuk membiarkan Claude memublikasikan langsung dari share, petakan ke huruf drive dan berikan drive tersebut ketika Anda memulai Claude Code. Di PowerShell, misalnya, jalankan `net use Z: \\server\share` lalu `claude --add-dir Z:\`. Claude kemudian dapat memublikasikan file dari drive tersebut. Menambahkan drive di tengah sesi dengan `/add-dir` tidak cukup.

5194* Di macOS atau Linux, mount share tersebut di sebuah direktori seperti di bawah `/mnt` atau `/Volumes`, dan terbitkan dari jalur itu alih-alih jalur automount5309* Di macOS atau Linux, mount share di direktori seperti salah satu di bawah `/mnt` atau `/Volumes`, dan publikasikan dari path tersebut alih-alih path automount

5195 5310 

5196### Not published: Claude sent the same content again after a newer version of the artifact turned it away5311### Not published: Claude sent the same content again after a newer version of the artifact turned it away

5197 5312 

5198Baris merah di bawah panggilan Artifact ini berarti Claude Code menghentikan penerbitan berulang: [artifact](https://code.claude.com/docs/id/artifacts.md) tidak diperbarui, dan tidak ada yang ditulis ke file yang menjadi sumber penerbitan Claude. Anda tidak perlu melakukan apa pun kecuali Claude berhenti tanpa menerbitkan.5313Baris merah di bawah panggilan Artifact ini berarti Claude Code menghentikan publikasi berulang: [artifact](https://code.claude.com/docs/id/artifacts.md) tidak diperbarui, dan tidak ada yang ditulis ke file yang dipublikasikan Claude. Anda tidak perlu melakukan apa pun kecuali Claude berhenti tanpa memublikasikan.

5199 5314 

5200Sebelumnya dalam sesi, Claude Code menolak penerbitan karena artifact memiliki versi yang lebih baru, misalnya versi yang diterbitkan oleh [editor](https://code.claude.com/docs/id/artifacts.md#let-someone-edit-with-you) atau oleh sesi lain Anda. Bagian akhir baris tersebut menyatakan apa yang harus dilakukan Claude selanjutnya:5315Sebelumnya dalam sesi, Claude Code menolak publikasi karena artifact memiliki versi yang lebih baru, misalnya versi yang dipublikasikan oleh [editor](https://code.claude.com/docs/id/artifacts.md#let-someone-edit-with-you) atau oleh sesi Anda yang lain. Akhir baris tersebut menyatakan apa yang harus dilakukan Claude selanjutnya:

5201 5316 

5202```text wrap theme={null}5317```text wrap theme={null}

5203Not published: Claude sent the same content again after a newer version of the artifact turned it away. Claude needs to work from that newer version first.5318Not published: Claude sent the same content again after a newer version of the artifact turned it away. Claude needs to work from that newer version first.


5206Not published: Claude sent its changes again over the same file after a newer version of the artifact turned them away. The artifact hasn't changed since, so publishing once more should go through.5321Not published: Claude sent its changes again over the same file after a newer version of the artifact turned them away. The artifact hasn't changed since, so publishing once more should go through.

5207```5322```

5208 5323 

5209**What to do:**5324**Yang perlu dilakukan:**

5210 5325 

5211* **Berakhir dengan `Claude needs to work from that newer version first`**: jika Claude berhenti di sana, minta Claude mengambil versi artifact saat ini, menggabungkan perubahannya ke dalamnya, dan menerbitkan lagi5326* **Berakhir dengan `Claude needs to work from that newer version first`**: jika Claude berhenti di sana, minta Claude untuk mengambil versi artifact saat ini, menggabungkan perubahannya, dan memublikasikan lagi

5212* **Berakhir dengan `should go through`**: jika Claude berhenti di sana, minta Claude menerbitkan lagi5327* **Berakhir dengan `should go through`**: jika Claude berhenti di sana, minta Claude untuk memublikasikan lagi

5213 5328 

5214### Reading a local file from outside the connected folders in a Cowork session5329### Membaca file lokal dari luar folder yang terhubung dalam sesi Cowork

5215 5330 

5216Dalam sesi [Cowork](https://claude.com/docs/cowork/overview) yang berjalan di mesin Anda di aplikasi Claude Desktop, Claude menyebutkan file lokal untuk [artifact](https://code.claude.com/docs/id/artifacts.md). Claude Code tidak dapat mengonfirmasi bahwa file tersebut adalah file biasa di dalam folder yang terhubung ke sesi: jalurnya berada di luar folder tersebut, melewati tautan simbolis, atau dieja dengan cara yang dapat menunjuk ke file yang berbeda dari yang terlihat. Membaca file seperti itu memerlukan persetujuan Anda, dan dalam sesi yang tidak dapat menampilkan kartu persetujuan, seperti sesi yang diatur untuk melewati semua persetujuan, Claude Code menolak pembacaan.5331Dalam sesi [Cowork](https://claude.com/docs/cowork/overview) yang berjalan di mesin Anda di aplikasi Claude Desktop, Claude menyebutkan file lokal untuk sebuah [artifact](https://code.claude.com/docs/id/artifacts.md). Claude Code tidak dapat mengonfirmasi bahwa file tersebut adalah file biasa di dalam folder yang terhubung dengan sesi: path berada di luar folder tersebut, melewati symbolic link, atau dieja dengan cara yang dapat menyebutkan file yang berbeda dari yang terlihat. Membaca file seperti itu memerlukan persetujuan Anda, dan dalam sesi yang tidak dapat menampilkan kartu persetujuan kepada Anda, seperti sesi yang disetel untuk melewati semua persetujuan, Claude Code menolak pembacaan tersebut.

5217 5332 

5218Penolakan muncul dalam hasil tool Artifact; ketika file tidak dapat diperiksa sama sekali, penolakan menyebutkan kegagalan itu sebagai gantinya:5333Penolakan muncul dalam hasil tool Artifact; ketika file sama sekali tidak dapat diperiksa, penolakan menyebutkan kegagalan tersebut sebagai gantinya:

5219 5334 

5220```text wrap theme={null}5335```text wrap theme={null}

5221Reading a local file from outside this session's connected folders, or through a link, needs the approval card, and no one can answer it in this Cowork session. Use a plain file inside the connected folders; do not retry this file in this session.5336Reading a local file from outside this session's connected folders, or through a link, needs the approval card, and no one can answer it in this Cowork session. Use a plain file inside the connected folders; do not retry this file in this session.


5223cannot read file_path (ENOENT) — the file could not be examined, and no one can answer the approval card in this Cowork session. Check that the file exists as a plain file inside the connected folders, then retry with that path.5338cannot read file_path (ENOENT) — the file could not be examined, and no one can answer the approval card in this Cowork session. Check that the file exists as a plain file inside the connected folders, then retry with that path.

5224```5339```

5225 5340 

5226**What to do:**5341**Yang perlu dilakukan:**

5227 5342 

5228* Biasanya tidak ada: pesan memberi tahu Claude untuk menggunakan file biasa di dalam folder yang terhubung sebagai gantinya5343* Biasanya tidak ada: pesan memberi tahu Claude untuk menggunakan file biasa di dalam folder yang terhubung

5229* Untuk memasukkan file yang persis itu ke dalam artifact, salin ke salah satu folder yang terhubung ke sesi sebagai file biasa, bukan symlink, dan minta lagi5344* Untuk memasukkan file tersebut secara spesifik ke dalam artifact, salin ke salah satu folder yang terhubung dengan sesi sebagai file biasa, bukan symlink, dan minta lagi

5230 5345 

5231### WebFetch cannot fetch localhost5346### WebFetch cannot fetch localhost

5232 5347 

5233Claude memanggil [WebFetch](https://code.claude.com/docs/id/tools-reference.md#webfetch-tool-behavior) dengan URL yang nama host-nya tidak memiliki titik, seperti `http://localhost:3000` atau nama intranet tunggal seperti `http://wiki/`. WebFetch menolak URL ini sebelum membuat permintaan apa pun:5348Claude memanggil [WebFetch](https://code.claude.com/docs/id/tools-reference.md#webfetch-tool-behavior) dengan URL yang hostname-nya tidak memiliki titik, seperti `http://localhost:3000` atau nama intranet tunggal seperti `http://wiki/`. WebFetch menolak URL ini sebelum membuat permintaan apa pun:

5234 5349 

5235```text wrap theme={null}5350```text wrap theme={null}

5236WebFetch cannot fetch localhost or other hostnames without a dot. To reach a local server, use Bash with curl instead.5351WebFetch cannot fetch localhost or other hostnames without a dot. To reach a local server, use Bash with curl instead.

5237```5352```

5238 5353 

5239**What to do:**5354**Yang perlu dilakukan:**

5240 5355 

5241* Biasanya tidak ada: pesan mengarahkan Claude ke `curl` melalui tool Bash, yang dapat menjangkau server lokal dan intranet5356* Biasanya tidak ada: pesan mengarahkan Claude ke `curl` melalui tool Bash, yang dapat menjangkau server lokal dan intranet

5242 5357 

5243Sebelum v2.1.268, WebFetch melaporkan URL ini dengan kesalahan `Invalid URL` generik.5358Sebelum v2.1.268, WebFetch melaporkan URL ini dengan error generik `Invalid URL`.

5244 5359 

5245### WebFetch domain safety check failed5360### WebFetch domain safety check failed

5246 5361 

5247Sebelum mengambil URL, WebFetch mengirim nama host URL ke `api.anthropic.com` untuk memeriksanya terhadap [daftar blokir keamanan domain](https://code.claude.com/docs/id/data-usage.md#webfetch-domain-safety-check) Anthropic. Jika pemeriksaan tidak dapat diselesaikan, WebFetch tidak dapat mengonfirmasi bahwa domain aman, jadi tidak mengambil halaman dan hasil tool berisi salah satu pesan berikut sebagai gantinya:5362Sebelum mengambil URL, WebFetch mengirim hostname URL ke `api.anthropic.com` untuk memeriksanya terhadap [blocklist keamanan domain](https://code.claude.com/docs/id/data-usage.md#webfetch-domain-safety-check) Anthropic. Jika pemeriksaan tidak dapat diselesaikan, WebFetch tidak dapat mengonfirmasi bahwa domain tersebut aman, sehingga tidak mengambil halaman dan hasil tool membawa salah satu pesan berikut sebagai gantinya:

5248 5363 

5249```text wrap theme={null}5364```text wrap theme={null}

5250The safety check for domain example.com is rate-limited (too many domain checks from this network; the limit is shared and can stay exhausted for minutes). Do not retry WebFetch in a loop or sleep to wait it out; continue without this page and report that its safety check was rate-limited. A single later attempt is fine; if that is rate-limited too, stop.5365The safety check for domain example.com is rate-limited (too many domain checks from this network; the limit is shared and can stay exhausted for minutes). Do not retry WebFetch in a loop or sleep to wait it out; continue without this page and report that its safety check was rate-limited. A single later attempt is fine; if that is rate-limited too, stop.


5252Unable to verify if domain example.com is safe to fetch. This may be due to network restrictions or enterprise security policies blocking claude.ai.5367Unable to verify if domain example.com is safe to fetch. This may be due to network restrictions or enterprise security policies blocking claude.ai.

5253```5368```

5254 5369 

5255* `rate-limited`: endpoint pemeriksaan menjawab dengan HTTP `429`. Pesan memberi tahu Claude untuk melanjutkan tanpa halaman tersebut dan mencoba ulang paling banyak sekali nanti. Claude Code tidak melakukan cache terhadap pemeriksaan yang gagal, jadi pengambilan domain itu di kemudian hari menjalankan pemeriksaan lagi. Jika sesi di jaringan Anda sering mengalami ini, Anda dapat melewati pemeriksaan dengan [`skipWebFetchPreflight: true`](https://code.claude.com/docs/id/settings-reference#skipwebfetchpreflight) dalam pengaturan.5370* `rate-limited`: endpoint pemeriksaan menjawab dengan HTTP `429`. Pesan memberi tahu Claude untuk melanjutkan tanpa halaman tersebut dan mencoba lagi paling banyak sekali nanti. Claude Code tidak menyimpan pemeriksaan yang gagal di cache, sehingga pengambilan domain tersebut berikutnya menjalankan pemeriksaan lagi. Jika sesi di jaringan Anda sering mengalami hal ini, Anda dapat melewati pemeriksaan dengan [`skipWebFetchPreflight: true`](https://code.claude.com/docs/id/settings-reference#skipwebfetchpreflight) di pengaturan.

5256* `Unable to verify`: permintaan pemeriksaan gagal, habis waktu, atau mendapat status kesalahan lain. Jika jaringan Anda memblokir `api.anthropic.com`, tambahkan domain itu ke allowlist, atau lewati pemeriksaan dengan [`skipWebFetchPreflight: true`](https://code.claude.com/docs/id/settings-reference#skipwebfetchpreflight) dalam pengaturan.5371* `Unable to verify`: permintaan pemeriksaan gagal, mengalami timeout, atau mendapat status error lain. Jika jaringan Anda memblokir `api.anthropic.com`, masukkan domain tersebut ke allowlist, atau lewati pemeriksaan dengan [`skipWebFetchPreflight: true`](https://code.claude.com/docs/id/settings-reference#skipwebfetchpreflight) di pengaturan.

5257 5372 

5258Sebelum v2.1.286, pesan rate-limited berbunyi `The safety check for domain example.com is temporarily rate-limited (too many domain checks from this network). Retry after about a minute; retrying sooner will fail the same way.`.5373Sebelum v2.1.286, pesan rate-limited berbunyi `The safety check for domain example.com is temporarily rate-limited (too many domain checks from this network). Retry after about a minute; retrying sooner will fail the same way.`.

5259Sebelum v2.1.285, pemeriksaan yang terkena rate limit dilaporkan dengan pesan `Unable to verify` sebagai gantinya.5374Sebelum v2.1.285, pemeriksaan yang terkena rate limit dilaporkan dengan pesan `Unable to verify` sebagai gantinya.

5260 5375 

5261## Kesalahan sesi latar belakang5376## Error sesi latar belakang

5262 5377 

5263[Sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) berjalan tanpa terminal interaktif mereka sendiri, jadi perintah yang membutuhkan satu berperilaku berbeda di sana. Pesan-pesan ini muncul dalam transkrip sesi latar belakang, di terminal yang terhubung ke satu, di sesi atau shell tempat Anda mengirim, atau, untuk [entri worktree-guard](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) di bawah, di sesi apa pun yang terisolasi dalam worktree atau menjalankan subagent yang terisolasi worktree; di mana pesan spesifik untuk satu surface, entrinya mengatakan demikian.5378[Sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) berjalan tanpa terminal interaktifnya sendiri, sehingga perintah yang membutuhkan terminal berperilaku berbeda di sana. Pesan-pesan ini muncul di transkrip sesi latar belakang, di terminal yang terhubung ke sesi tersebut, di sesi atau shell tempat Anda melakukan dispatch, atau, untuk [entri worktree-guard](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) di bawah, di sesi mana pun yang diisolasi dalam worktree atau yang menjalankan subagent yang diisolasi dalam worktree; jika suatu pesan khusus untuk satu surface, entrinya akan menyebutkannya.

5264 5379 

5265### Perintah ditolak dalam sesi latar belakang5380### Perintah yang ditolak dalam sesi latar belakang

5266 5381 

5267Perintah yang membuka dialog interaktif tidak dapat melakukannya saat tidak ada terminal yang terhubung ke sesi latar belakang. `/install-github-app`, daftar pengaturan `/mcp`, dan tindakan autentikasi dalam menu server MCP merespons dengan pesan. Untuk `/install-github-app` dan daftar pengaturan `/mcp`, sesi juga muncul di bawah **Needs input** dalam [tampilan agent](https://code.claude.com/docs/id/agent-view.md) sehingga Anda dapat menemukannya, melampirkan, dan menjalankan perintah lagi. Saat terminal terhubung, perintah-perintah ini berfungsi secara normal.5382Perintah yang membuka dialog interaktif tidak dapat melakukannya selama tidak ada terminal yang terhubung ke sesi latar belakang. `/install-github-app`, daftar pengaturan `/mcp`, dan tindakan autentikasi di menu server MCP merespons dengan sebuah pesan. Untuk `/install-github-app` dan daftar pengaturan `/mcp`, sesi tersebut juga muncul di bawah **Needs input** di [agent view](https://code.claude.com/docs/id/agent-view.md) sehingga Anda dapat menemukannya, terhubung, dan menjalankan perintah tersebut lagi. Selama terminal terhubung, perintah-perintah ini berfungsi normal.

5268 5383 

5269Sebelum v2.1.216, sesi tidak muncul di bawah **Needs input** setelah `/install-github-app` atau daftar pengaturan `/mcp` ditolak. Di v2.1.213 hingga v2.1.215, perintah masih berfungsi saat terminal terhubung, dan pesan penolakan memberi tahu Anda untuk melampirkan dan menjalankan perintah lagi. Dari v2.1.208 hingga v2.1.212, Claude Code menolaknya bahkan saat terminal terhubung, dengan pesan seperti `Can't open MCP settings in a background session`; pada versi tersebut, jalankan perintah dari sesi `claude` biasa sebagai gantinya, atau tingkatkan. Sebelum v2.1.208, mereka membuka dialog mereka di dalam sesi latar belakang. Di v2.1.208 saja, Claude Code juga menolak pemilih `/model` dalam sesi latar belakang, dan `/upgrade` mencetak URL upgrade alih-alih membuka browser.5384Sebelum v2.1.216, sesi tidak muncul di bawah **Needs input** setelah `/install-github-app` atau daftar pengaturan `/mcp` ditolak. Pada v2.1.213 hingga v2.1.215, perintah-perintah tersebut tetap berfungsi selama terminal terhubung, dan pesan penolakan meminta Anda untuk terhubung dan menjalankan perintah lagi. Dari v2.1.208 hingga v2.1.212, Claude Code menolaknya bahkan saat terminal terhubung, dengan pesan seperti `Can't open MCP settings in a background session`; pada versi tersebut, jalankan perintah dari sesi `claude` biasa, atau lakukan upgrade. Sebelum v2.1.208, perintah-perintah tersebut membuka dialognya di dalam sesi latar belakang. Khusus di v2.1.208, Claude Code juga menolak pemilih `/model` dalam sesi latar belakang, dan `/upgrade` mencetak URL upgrade alih-alih membuka browser.

5270 5385 

5271Kata-kata tersebut menamai perintah. Daftar pengaturan `/mcp` melaporkan:5386Kata-kata dalam pesan menyebutkan nama perintahnya. Daftar pengaturan `/mcp` melaporkan:

5272 5387 

5273```text theme={null}5388```text theme={null}

5274Can't open MCP settings while no terminal is attached to this background session. This session now shows "needs input" in agent view — open it and run /mcp to manage servers, or use `/mcp enable|disable|reconnect <server>` to steer without the panel.5389Can't open MCP settings while no terminal is attached to this background session. This session now shows "needs input" in agent view — open it and run /mcp to manage servers, or use `/mcp enable|disable|reconnect <server>` to steer without the panel.


5276 5391 

5277**Yang harus dilakukan:**5392**Yang harus dilakukan:**

5278 5393 

5279* Lampirkan ke sesi dari tampilan agent dan jalankan perintah lagi5394* Hubungkan ke sesi dari agent view dan jalankan perintah lagi

5280* Atau gunakan formulir yang dinamai pesan, seperti `/mcp reconnect <server>`, `/mcp enable`, atau `/mcp disable`, yang berfungsi tanpa melampirkan5395* Atau gunakan bentuk yang disebutkan pesan, seperti `/mcp reconnect <server>`, `/mcp enable`, atau `/mcp disable`, yang berfungsi tanpa perlu terhubung

5281 5396 

5282### Penulisan atau perintah diblokir karena jalur tidak dapat diselesaikan dengan aman5397### Penulisan atau perintah diblokir karena path tidak dapat di-resolve dengan aman

5283 5398 

5284Claude mengatasi file atau direktori kerja melalui ejaan yang [penjaga isolasi worktree](https://code.claude.com/docs/id/agent-view.md#how-file-edits-are-isolated) tidak dapat menyelesaikan ke satu lokasi yang dapat diverifikasi. Penjaga memeriksa penulisan dan direktori kerja perintah di [sesi apa pun yang terisolasi dalam worktree](https://code.claude.com/docs/id/worktrees.md#how-claude-code-enforces-isolation), interaktif atau latar belakang, dan di [subagent yang terisolasi worktree](https://code.claude.com/docs/id/worktrees.md#isolate-subagents-with-worktrees). Ini menyelesaikan symlink sebelum memeriksa bahwa operasi tidak mencapai checkout bersama, dan ketika resolusi gagal, ia memblokir operasi daripada membiarkannya mendarat di sana. Pesan menamai bentuk jalur yang ditolaknya dan cara mencoba lagi:5399Claude merujuk ke sebuah file atau direktori kerja melalui ejaan path yang tidak dapat di-resolve oleh [penjaga isolasi worktree](https://code.claude.com/docs/id/agent-view.md#how-file-edits-are-isolated) ke satu lokasi yang dapat diverifikasi. Penjaga ini memeriksa penulisan dan direktori kerja perintah di [sesi mana pun yang diisolasi dalam worktree](https://code.claude.com/docs/id/worktrees.md#how-claude-code-enforces-isolation), baik interaktif maupun latar belakang, serta di [subagent yang diisolasi dalam worktree](https://code.claude.com/docs/id/worktrees.md#isolate-subagents-with-worktrees). Penjaga ini me-resolve symlink sebelum memeriksa bahwa operasi tidak mencapai checkout bersama, dan ketika proses resolve gagal, penjaga memblokir operasi tersebut alih-alih membiarkannya berakhir di sana. Pesan tersebut menyebutkan bentuk path yang ditolaknya dan cara mencoba ulang:

5285 5400 

5286```text theme={null}5401```text theme={null}

5287This write was blocked because the path is spelled in a form that cannot be safely resolved (for example through a symlink storing a raw dot segment, a network-share or device-namespace shape, or an unreadable ancestor directory). If the file is inside the worktree /path/to/worktree, address it by its direct symlink-free path instead.5402This write was blocked because the path is spelled in a form that cannot be safely resolved (for example through a symlink storing a raw dot segment, a network-share or device-namespace shape, or an unreadable ancestor directory). If the file is inside the worktree /path/to/worktree, address it by its direct symlink-free path instead.

5288```5403```

5289 5404 

5290Perintah yang diblokir melaporkan penyebab yang sama untuk direktori kerjanya dan berakhir dengan `re-run the command from its direct symlink-free path`. Sebelum v2.1.217, penjaga membandingkan ejaan jalur tanpa menyelesaikan symlink, jadi ejaan ini tidak diblokir dan penulisan yang dirutekan melalui symlink dapat mendarat di checkout bersama.5405Perintah yang diblokir melaporkan penyebab yang sama untuk direktori kerjanya dan diakhiri dengan `re-run the command from its direct symlink-free path`. Sebelum v2.1.217, penjaga membandingkan ejaan path tanpa me-resolve symlink, sehingga ejaan-ejaan ini tidak diblokir dan penulisan yang diarahkan melalui symlink dapat berakhir di checkout bersama.

5291 5406 

5292**Yang harus dilakukan:**5407**Yang harus dilakukan:**

5293 5408 

5294* Biasanya tidak ada: pesan lengkap masuk ke Claude sebagai kesalahan tool, dan Claude mencoba lagi dengan jalur langsung yang dinamainya. Untuk pengeditan file yang diblokir, tampilan percakapan menampilkan hanya baris `Error editing file` pendek; pesan lengkap muncul dalam tampilan transkrip, yang Anda buka dengan `Ctrl+O`. Perintah yang diblokir mencetaknya dalam output perintahnya.5409* Biasanya tidak ada: pesan lengkap dikirim ke Claude sebagai error tool, dan Claude mencoba ulang dengan path langsung yang disebutkannya. Untuk pengeditan file yang diblokir, tampilan percakapan hanya menampilkan baris singkat `Error editing file`; pesan lengkapnya muncul di tampilan transkrip, yang Anda buka dengan `Ctrl+O`. Perintah yang diblokir mencetaknya di output perintahnya.

5295* Jika blokir berulang pada file yang sama, jalur kemungkinan besar berjalan melalui symlink yang di-commit yang targetnya berisi `..`, seperti `docs/current -> ../README.md`; minta Claude untuk mengedit file target dengan jalur sebenarnya alih-alih melalui tautan5410* Jika pemblokiran berulang pada file yang sama, path tersebut kemungkinan melewati symlink yang telah di-commit yang targetnya berisi `..`, seperti `docs/current -> ../README.md`; minta Claude mengedit file target melalui path aslinya, bukan melalui tautan tersebut

5296 5411 

5297### Penulisan atau perintah diblokir karena jalur menamai lokasi jaringan5412### Penulisan atau perintah diblokir karena path menunjuk lokasi jaringan

5298 5413 

5299Claude mengatasi file atau direktori kerja melalui jalur yang menamai drive yang bukan di mesin Anda, bagian UNC seperti `\\server\share\file` atau jalur automount `/net`, sementara checkout sesi berada di disk lokal. [Penjaga isolasi worktree](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) yang sama tidak dapat memverifikasi bahwa jalur seperti itu tetap keluar dari checkout bersama, jadi ia memblokir operasi. Mengisolasi sesi dalam worktree tidak menghilangkan blokir. Pesan menamai bentuk jalur yang digunakan sebagai gantinya:5414Claude merujuk ke sebuah file atau direktori kerja melalui path yang menunjuk drive yang tidak ada di mesin Anda, share UNC seperti `\\server\share\file` atau path automount `/net`, sementara checkout sesi berada di disk lokal. [Penjaga isolasi worktree](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) yang sama tidak dapat memverifikasi bahwa path semacam itu tetap berada di luar checkout bersama, sehingga penjaga memblokir operasi tersebut. Mengisolasi sesi dalam worktree tidak mencabut pemblokiran ini. Pesan tersebut menyebutkan bentuk path yang harus digunakan sebagai gantinya:

5300 5415 

5301```text theme={null}5416```text theme={null}

5302This write was blocked because the path is network-shaped (a UNC share or /net automount spelling) while this session's checkout is local. Isolating cannot unblock it. If the file is genuinely inside the worktree /path/to/worktree, address it by its local, plainly-spelled path instead.5417This write was blocked because the path is network-shaped (a UNC share or /net automount spelling) while this session's checkout is local. Isolating cannot unblock it. If the file is genuinely inside the worktree /path/to/worktree, address it by its local, plainly-spelled path instead.

5303```5418```

5304 5419 

5305Perintah yang diblokir melaporkan penyebab yang sama untuk direktori kerjanya dan berakhir dengan `re-run the command from its local, plainly-spelled path`. Sebelum v2.1.217, penjaga hanya membandingkan teks jalur, jadi mengatasi file di dalam checkout melalui jalur UNC atau `/net` tidak diblokir.5420Perintah yang diblokir melaporkan penyebab yang sama untuk direktori kerjanya dan diakhiri dengan `re-run the command from its local, plainly-spelled path`. Sebelum v2.1.217, penjaga hanya membandingkan teks path, sehingga merujuk ke file di dalam checkout melalui path UNC atau `/net` tidak diblokir.

5306 5421 

5307**Yang harus dilakukan:**5422**Yang harus dilakukan:**

5308 5423 

5309* Biasanya tidak ada: Claude mencoba lagi dengan ejaan lokal yang diminta pesan5424* Biasanya tidak ada: Claude mencoba ulang dengan ejaan lokal yang diminta oleh pesan tersebut

5310 5425 

5311### Perintah diblokir oleh pemeriksaan isolasi worktree5426### Perintah diblokir oleh pemeriksaan isolasi worktree

5312 5427 

5313Claude menjalankan perintah Bash, [PowerShell](https://code.claude.com/docs/id/tools-reference.md#powershell-tool), atau [Monitor](https://code.claude.com/docs/id/tools-reference.md#monitor-tool) dalam [sesi yang terisolasi dalam worktree](https://code.claude.com/docs/id/worktrees.md#how-claude-code-enforces-isolation), dan Claude Code menolaknya karena salah satu alasan berikut:5428Claude menjalankan perintah Bash, [PowerShell](https://code.claude.com/docs/id/tools-reference.md#powershell-tool), atau [Monitor](https://code.claude.com/docs/id/tools-reference.md#monitor-tool) dalam [sesi yang diisolasi dalam worktree](https://code.claude.com/docs/id/worktrees.md#how-claude-code-enforces-isolation), dan Claude Code menolaknya karena salah satu alasan berikut:

5314 5429 

5315* Perintah akan berjalan di checkout utama atau di worktree lain. Pesan mengatakan direktori kerjanya `resolved to the shared checkout` atau `is in a different worktree`.5430* Perintah akan berjalan di checkout utama atau di worktree lain. Pesan menyebutkan bahwa direktori kerjanya `resolved to the shared checkout` atau `is in a different worktree`.

5316* Perintah Bash atau Monitor menunjukkan git ke checkout utama.5431* Perintah Bash atau Monitor mengarahkan git ke checkout utama.

5317* Claude Code tidak dapat memverifikasi dari teks perintah Bash atau Monitor bahwa git apa pun yang dijalankan perintah tetap berada di dalam worktree. Perintah yang tidak pernah menamai git masih dapat ditolak karena alasan ini, karena memperluas indirection variabel seperti `${!name}` atau menjalankan substitusi fungsi Bash seperti `${ command; }` menghasilkan nilai pada runtime yang dapat menjadi perintah itu sendiri.5432* Claude Code tidak dapat memverifikasi dari teks perintah Bash atau Monitor bahwa git apa pun yang dijalankan perintah tersebut tetap berada di dalam worktree. Perintah yang sama sekali tidak menyebut git tetap dapat ditolak karena alasan ini, karena mengekspansi indireksi variabel seperti `${!name}` atau menjalankan substitusi fungsi Bash seperti `${ command; }` menghasilkan nilai saat runtime yang dapat berupa perintah itu sendiri.

5318 5433 

5319Pesan mengatakan `is isolated in the worktree <path>, but this command`, diikuti oleh alasannya, seperti perintah yang teksnya tidak dapat diverifikasi Claude Code:5434Pesan tersebut menyebutkan `is isolated in the worktree <path>, but this command`, diikuti dengan alasannya, seperti perintah yang teksnya tidak dapat diverifikasi oleh Claude Code:

5320 5435 

5321```text wrap theme={null}5436```text wrap theme={null}

5322This session is isolated in the worktree /path/to/worktree, but this command evaluates ${!x@P} arithmetically inside a construct too complex to verify, which can run a command hidden in a variable's value. Refusing to run it — a worktree-isolated session's git operations must target its own worktree. Split it into plain, separate commands and run them from /path/to/worktree.5437This session is isolated in the worktree /path/to/worktree, but this command evaluates ${!x@P} arithmetically inside a construct too complex to verify, which can run a command hidden in a variable's value. Refusing to run it — a worktree-isolated session's git operations must target its own worktree. Split it into plain, separate commands and run them from /path/to/worktree.


5324 5439 

5325**Yang harus dilakukan:**5440**Yang harus dilakukan:**

5326 5441 

5327* **Git yang ditunjukkan ke checkout utama, atau teks perintah yang tidak dapat diverifikasi**: tidak ada. Claude membaca pesan dan menulis ulang perintah dengan cara yang diminta kalimat terakhirnya. Jika perintah yang Anda minta terus ditolak karena ekspansi dalam teksnya, ejakan nilai yang ditandai secara harfiah dan jalankan git sebagai perintah biasa tersendiri dari dalam worktree5442* **Git diarahkan ke checkout utama, atau teks perintah tidak dapat diverifikasi**: tidak ada. Claude membaca pesan tersebut dan menulis ulang perintah sesuai permintaan kalimat terakhirnya. Jika perintah yang Anda minta terus ditolak karena suatu ekspansi dalam teksnya, tuliskan nilai yang ditandai secara literal dan jalankan git sebagai perintah tersendiri yang sederhana dari dalam worktree

5328* Untuk bertindak pada checkout utama dengan sengaja, jalankan perintah sendiri di terminal di luar sesi5443* Untuk bertindak pada checkout utama secara sengaja, jalankan perintah tersebut sendiri di terminal di luar sesi

5329 5444 

5330### Sesi ini tidak memiliki transkrip yang disimpan5445### This session has no saved transcript

5331 5446 

5332Anda melampirkan ke sesi yang Anda [pindahkan ke latar belakang](https://code.claude.com/docs/id/agent-view.md#from-inside-a-session) dengan `←` atau `/background` dan yang berhenti sebelum menjalankan gilirannya sendiri. Claude Code tidak dapat menemukan percakapan tempat Anda memindahkannya, jadi sesi tidak memiliki apa pun untuk dilanjutkan. Pesan berakhir dengan perintah `claude respawn` untuk sesi ini:5447Anda terhubung ke sesi yang Anda [pindahkan ke latar belakang](https://code.claude.com/docs/id/agent-view.md#from-inside-a-session) dengan `←` atau `/background` dan sesi tersebut berhenti sebelum menjalankan gilirannya sendiri. Claude Code tidak dapat menemukan percakapan asal tempat Anda memindahkannya, sehingga sesi tersebut tidak memiliki apa pun untuk dilanjutkan. Pesan diakhiri dengan perintah `claude respawn` untuk sesi ini:

5333 5448 

5334```text theme={null}5449```text theme={null}

5335This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.5450This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.

5336```5451```

5337 5452 

5338Membuka baris sesi yang sama dalam [tampilan agent](https://code.claude.com/docs/id/agent-view.md) menampilkan `Press enter again to restart this session fresh` di bawah daftar sebagai gantinya, dan `Enter` kedua pada baris memulai ulang sesi dengan percakapan kosong.5453Membuka baris sesi yang sama di [agent view](https://code.claude.com/docs/id/agent-view.md) menampilkan `Press enter again to restart this session fresh` di bawah daftar, dan menekan `Enter` kedua kalinya pada baris tersebut akan memulai ulang sesi dengan percakapan kosong.

5339 5454 

5340**Yang harus dilakukan:**5455**Yang harus dilakukan:**

5341 5456 

5342* Untuk memulai sesi yang dihentikan secara segar, jalankan `claude respawn <id>` dengan ID dari pesan, atau tekan `Enter` dua kali pada barisnya dalam tampilan agent5457* Untuk memulai sesi yang berhenti dari awal, jalankan `claude respawn <id>` dengan ID dari pesan, atau tekan `Enter` dua kali pada barisnya di agent view

5343* Jika sesi memang menyelesaikan respons dan Anda masih melihat penolakan ini pada versi sebelum v2.1.214, folder yang tidak dapat dibaca di `~/.claude/projects` dapat membuat pemindaian transkrip melewatkan percakapan yang disimpan; perbarui ke v2.1.214 atau lebih baru, yang mentoleransi folder yang tidak dapat dibaca selama pemindaian5458* Jika sesi tersebut sebenarnya telah menyelesaikan respons dan Anda masih melihat penolakan ini pada versi sebelum v2.1.214, folder yang tidak dapat dibaca di `~/.claude/projects` dapat membuat pemindaian transkrip melewatkan percakapan yang tersimpan; perbarui ke v2.1.214 atau lebih baru, yang menoleransi folder yang tidak dapat dibaca selama pemindaian

5344 5459 

5345### Sesi ini berjalan di terminal lain5460### This session is running in another terminal

5346 5461 

5347Anda membuka baris sesi yang dihentikan dalam [tampilan agent](https://code.claude.com/docs/id/agent-view.md), dan percakapan yang disimpannya sudah terbuka dalam proses Claude Code langsung lain di mesin ini, jadi Claude Code menolak untuk memulai proses kedua yang akan menulis ke transkrip yang sama. Pesan mana yang Anda lihat tergantung pada [apa yang memegang percakapan](https://code.claude.com/docs/id/agent-view.md#opening-a-session-says-the-conversation-is-already-open):5462Anda membuka baris sesi yang berhenti di [agent view](https://code.claude.com/docs/id/agent-view.md), dan percakapan tersimpannya sudah terbuka di proses Claude Code aktif lain di mesin ini, sehingga Claude Code menolak memulai proses kedua yang akan menulis ke transkrip yang sama. Pesan yang Anda lihat bergantung pada [apa yang memegang percakapan tersebut](https://code.claude.com/docs/id/agent-view.md#opening-a-session-says-the-conversation-is-already-open):

5348 5463 

5349```text theme={null}5464```text theme={null}

5350Can't open — this session is running in another terminal5465Can't open — this session is running in another terminal

5351This conversation is already open in another running Claude session — use that one, or close it and try again5466This conversation is already open in another running Claude session — use that one, or close it and try again

5352```5467```

5353 5468 

5354* **`running in another terminal`**: terminal memegang percakapan, misalnya yang tempat Anda melanjutkannya dengan `claude --resume` atau `/resume`. Baris juga menampilkan `Open in a terminal`.5469* **`running in another terminal`**: sebuah terminal memegang percakapan tersebut, misalnya terminal tempat Anda melanjutkannya dengan `claude --resume` atau `/resume`. Baris tersebut juga menampilkan `Open in a terminal`.

5355* **`already open in another running Claude session`**: proses Claude Code non-interaktif lain menahannya, misalnya proses [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md#the-supervisor-process) untuk percakapan yang sama yang belum keluar.5470* **`already open in another running Claude session`**: proses Claude Code non-interaktif lain memegangnya, misalnya proses [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md#the-supervisor-process) untuk percakapan yang sama yang belum keluar.

5356 5471 

5357**Yang harus dilakukan:**5472**Yang harus dilakukan:**

5358 5473 

5359* Lanjutkan percakapan dalam proses yang memilikinya, atau keluar dari proses itu dan buka baris lagi5474* Lanjutkan percakapan di proses yang membukanya, atau keluar dari proses tersebut lalu buka baris itu lagi

5360 5475 

5361Sebelum v2.1.248, hanya penolakan `already open in another running Claude session` yang ada: percakapan yang dilanjutkan dalam terminal tidak dihitung sebagai terbuka, dan membuka baris memulai proses Claude Code kedua yang menulis ke percakapan yang sama.5476Sebelum v2.1.248, hanya penolakan `already open in another running Claude session` yang ada: percakapan yang dilanjutkan di terminal tidak dihitung sebagai terbuka, dan membuka baris tersebut memulai proses Claude Code kedua yang menulis ke percakapan yang sama.

5362 5477 

5363### Percakapan yang disimpan sesi ini tidak lagi ada di disk5478### This session's saved conversation is no longer on disk

5364 5479 

5365Anda membuka [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang berakhir saat layanan latar belakang mati, dan [pembersihan transkrip](https://code.claude.com/docs/id/settings-reference.md#cleanupperioddays) telah menghapus percakapan yang disimpannya, misalnya setelah mesin mati selama berminggu-minggu. Membuka baris seperti itu biasanya [melanjutkan percakapan yang disimpannya](https://code.claude.com/docs/id/agent-view.md#sessions-show-as-failed-after-shutdown). Tanpa apa pun yang tersisa untuk dilanjutkan, Claude Code menolak daripada menjalankan kembali prompt asli sesi tanpa bertanya:5480Anda membuka [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang berakhir saat layanan latar belakang mati, dan [pembersihan transkrip](https://code.claude.com/docs/id/settings-reference.md#cleanupperioddays) sejak saat itu telah menghapus percakapan tersimpannya, misalnya setelah mesin mati selama berminggu-minggu. Membuka baris seperti itu biasanya [melanjutkan percakapan tersimpannya](https://code.claude.com/docs/id/agent-view.md#sessions-show-as-failed-after-shutdown). Karena tidak ada yang tersisa untuk dilanjutkan, Claude Code menolak alih-alih menjalankan ulang prompt asli sesi tanpa bertanya:

5366 5481 

5367```text theme={null}5482```text theme={null}

5368This session's saved conversation is no longer on disk (it ended while the background service was off, and old transcripts are cleaned up), so there is nothing to resume. `claude rm 7c5dcf5d` deletes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.5483This session's saved conversation is no longer on disk (it ended while the background service was off, and old transcripts are cleaned up), so there is nothing to resume. `claude rm 7c5dcf5d` deletes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.

5369```5484```

5370 5485 

5371`claude attach <id>` mencetak teks ini. Dalam tampilan agent, footer lebih pendek dan berakhir dengan `ctrl+x deletes the row`.5486`claude attach <id>` mencetak teks ini. Di agent view, footer lebih pendek dan diakhiri dengan `ctrl+x deletes the row`.

5372 5487 

5373**Yang harus dilakukan:**5488**Yang harus dilakukan:**

5374 5489 

5375* Jalankan `claude rm <id>` untuk menghapus baris. Ketika salah satu dari [kasus yang disimpan](https://code.claude.com/docs/id/agent-view.md#what-deleting-a-session-removes) berlaku, `claude rm` menyimpan baris dan worktree sebagai gantinya dan menamai alasannya5490* Jalankan `claude rm <id>` untuk menghapus baris tersebut. Ketika salah satu [kasus yang dipertahankan](https://code.claude.com/docs/id/agent-view.md#what-deleting-a-session-removes) berlaku, `claude rm` mempertahankan baris dan worktree tersebut dan menyebutkan alasannya

5376* Untuk menjalankan prompt asli sesi lagi sebagai percakapan segar, jalankan `claude respawn <id>`5491* Untuk menjalankan prompt asli sesi lagi sebagai percakapan baru, jalankan `claude respawn <id>`

5377 5492 

5378Sebelum v2.1.248, membuka baris seperti itu menjalankan kembali prompt asli sesi alih-alih menolak, menarik tugas yang berusia berminggu-minggu kembali ke latar depan.5493Sebelum v2.1.248, membuka baris seperti itu menjalankan ulang prompt asli sesi alih-alih menolak, sehingga menarik tugas yang berumur berminggu-minggu kembali ke latar depan.

5379 5494 

5380### Worktree memiliki commit yang tidak didorong ke mana pun5495### Worktree has commits that are not pushed anywhere

5381 5496 

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

5383 5498 

5384```text theme={null}5499```text theme={null}

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


5387 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef5502 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef

5388```5503```

5389 5504 

5390Ketika Claude Code tidak dapat merangkum commit, baris detail berbunyi `The worktree has unpushed commits` sebagai gantinya. Dalam [tampilan agent](https://code.claude.com/docs/id/agent-view.md), baris sesi menampilkan `not deleted` dengan alasan yang sama.5505Ketika Claude Code tidak dapat merangkum commit tersebut, baris detail berbunyi `The worktree has unpushed commits` sebagai gantinya. Di [agent view](https://code.claude.com/docs/id/agent-view.md), baris sesi menampilkan `not deleted` dengan alasan yang sama.

5391 5506 

5392Commit pada remote tidak memblokir penghapusan. Begitu juga commit pada salinan lokal branch default remote `origin` Anda, selama branch itu diperiksa dalam checkout utama Anda, direktori repositori itu sendiri daripada worktree.5507Commit yang ada di remote tidak memblokir penghapusan. Begitu pula commit di salinan lokal branch default dari remote `origin` Anda, selama branch tersebut di-checkout di checkout utama Anda, yaitu direktori repositori itu sendiri dan bukan worktree.

5393 5508 

5394**Yang harus dilakukan:**5509**Yang harus dilakukan:**

5395 5510 

5396* Untuk menyimpan commit, dorong branch worktree, atau gabungkan ke dalam branch default yang diperiksa dalam checkout utama Anda, kemudian hapus sesi lagi5511* Untuk mempertahankan commit, push branch worktree tersebut, atau merge ke branch default yang di-checkout di checkout utama Anda, lalu hapus sesi lagi

5397* Untuk membuang commit, jalankan perintah `claude rm <id> --discard-unpushed` yang dicetak pesan, atau tekan `Ctrl+X` dua kali pada baris sesi dalam tampilan agent lagi. Ini menghapus sesi dan worktree bersama dengan branch-nya, commit yang tidak didorong, dan perubahan yang belum di-commit. Jika penghapusan ditolak lagi, ikuti pesan yang baru.5512* Untuk membuang commit, jalankan perintah `claude rm <id> --discard-unpushed` yang dicetak pesan, atau tekan `Ctrl+X` dua kali pada baris sesi di agent view lagi. Ini menghapus sesi dan worktree beserta branch-nya, commit yang belum di-push, dan perubahan apa pun yang belum di-commit. Jika penghapusan ditolak lagi, ikuti pesan yang baru.

5398* Ketika pesan mengatakan worktree juga dicatat oleh sesi selesai lain, menghapus lagi tidak membuangnya: dorong commit, kemudian hapus sesi lagi5513* Ketika pesan menyatakan bahwa worktree tersebut juga tercatat oleh sesi lain yang telah selesai, menghapus lagi tidak akan membuangnya: push commit tersebut, lalu hapus sesi lagi

5399 5514 

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

5401 5516 

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

5403 5518 

5404Sebelum v2.1.248, branch default yang diperiksa dalam checkout utama Anda tidak dihitung: branch yang sudah Anda gabungkan di sana masih memicu penolakan ini sampai commit-nya mencapai remote.5519Sebelum v2.1.248, branch default yang di-checkout di checkout utama Anda tidak dihitung: branch yang telah Anda merge di sana tetap memicu penolakan ini sampai commit-nya mencapai remote.

5405 5520 

5406### Proses host terminal mati5521### Terminal host process died

5407 5522 

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

5409 5524 

5410Di Linux dan WSL, layanan latar belakang memeriksa setiap proses host setiap beberapa detik, menandai sesi gagal ketika proses telah keluar tetapi koneksinya ke layanan tidak pernah ditutup, dan menampilkan alasannya pada barisnya dalam [tampilan agent](https://code.claude.com/docs/id/agent-view.md#read-session-state):5525Di Linux dan WSL, layanan latar belakang memeriksa setiap proses host setiap beberapa detik, menandai sesi sebagai gagal ketika proses telah keluar tetapi koneksinya ke layanan tidak pernah ditutup, dan menampilkan alasannya pada baris sesi di [agent view](https://code.claude.com/docs/id/agent-view.md#read-session-state):

5411 5526 

5412```text theme={null}5527```text theme={null}

5413terminal host process died — press Enter to restart5528terminal host process died — press Enter to restart

5414```5529```

5415 5530 

5416Dari shell, `claude attach <id>` memulai ulang sesi yang sudah ditandai gagal untuk host yang mati, dan sebaliknya mencetak penyebab dan keluar:5531Dari shell, `claude attach <id>` memulai ulang sesi yang sudah ditandai gagal karena host yang mati, dan jika tidak, mencetak penyebabnya lalu keluar:

5417 5532 

5418```text theme={null}5533```text theme={null}

5419Couldn't attach to <id> — This session's terminal host process died (the conversation is saved) — run `claude attach <id>` again to restart it on a fresh host.5534Couldn't attach to <id> — This session's terminal host process died (the conversation is saved) — run `claude attach <id>` again to restart it on a fresh host.

5420```5535```

5421 5536 

5422Percakapan disimpan bagaimanapun.5537Percakapan tetap tersimpan dalam kedua kasus tersebut.

5423 5538 

5424Baris yang menjalankan [perintah shell](https://code.claude.com/docs/id/agent-view.md#run-a-shell-command) sebagai gantinya menampilkan `terminal host process died — its output is gone; the command was not run again`, dan `claude attach` mencetak `This command's terminal host process died — its output is gone and the command was not run again`. Claude Code tidak pernah menjalankan kembali perintah untuk Anda.5539Baris yang menjalankan [perintah shell](https://code.claude.com/docs/id/agent-view.md#run-a-shell-command) menampilkan `terminal host process died — its output is gone; the command was not run again` sebagai gantinya, dan `claude attach` mencetak `This command's terminal host process died — its output is gone and the command was not run again`. Claude Code tidak pernah menjalankan ulang perintah tersebut untuk Anda.

5425 5540 

5426**Yang harus dilakukan:**5541**Yang harus dilakukan:**

5427 5542 

5428* Dalam tampilan agent, tekan `Enter` pada baris yang gagal; sesi dimulai ulang pada proses host segar dan percakapan dilanjutkan5543* Di agent view, tekan `Enter` pada baris yang gagal; sesi dimulai ulang pada proses host baru dan percakapan dilanjutkan

5429* Dari shell, jalankan `claude attach <id>` lagi. Claude Code mencetak `Session <id>'s terminal host died — restarting it on a fresh one…` dan membuka kembali sesi5544* Dari shell, jalankan `claude attach <id>` lagi. Claude Code mencetak `Session <id>'s terminal host died — restarting it on a fresh one…` dan membuka kembali sesi tersebut

5430* Anda tidak dapat memulai ulang baris perintah shell dengan cara ini; kirim perintah lagi untuk menjalankannya kembali5545* Anda tidak dapat memulai ulang baris perintah shell dengan cara ini; lakukan dispatch perintah tersebut lagi untuk menjalankannya ulang

5431 5546 

5432Sebelum v2.1.247, proses host yang mati dapat melewati setiap pemeriksaan kelangsungan hidup yang dijalankan layanan latar belakang, jadi membuka sesi menampilkan `opening… · esc to cancel` tanpa batas dan `claude attach <id>` menunggu tanpa melaporkan kesalahan.5547Sebelum v2.1.247, proses host yang mati dapat lolos dari setiap pemeriksaan keaktifan yang dijalankan layanan latar belakang, sehingga membuka sesi menampilkan `opening… · esc to cancel` tanpa batas waktu dan `claude attach <id>` menunggu tanpa melaporkan error.

5433 5548 

5434### Sesi tidak merespons5549### Session isn't responding

5435 5550 

5436Anda membuka [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) dan layanan latar belakang menerima pembukaan, tetapi tidak ada output yang tiba selama sekitar sepuluh detik, jadi Claude Code menyimpulkan bahwa proses yang menyampaikan terminal sesi tidak dapat memberikan output, dan mengakhiri upaya alih-alih menunggu.5551Anda membuka [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) dan layanan latar belakang menerima pembukaan tersebut, tetapi tidak ada output yang tiba selama sekitar sepuluh detik, sehingga Claude Code menyimpulkan bahwa proses yang meneruskan terminal sesi tidak dapat mengirimkan output, dan mengakhiri upaya tersebut alih-alih menunggu.

5437 5552 

5438Dalam tampilan agent, Claude Code menawarkan restart dalam footer:5553Di agent view, Claude Code menawarkan mulai ulang di footer:

5439 5554 

5440```text theme={null}5555```text theme={null}

5441Press enter again to restart this session — it isn't responding (its conversation is saved and resumes).5556Press enter again to restart this session — it isn't responding (its conversation is saved and resumes).

5442```5557```

5443 5558 

5444Dari shell, `claude attach <id>` mencetak penyebab dan keluar:5559Dari shell, `claude attach <id>` mencetak penyebabnya lalu keluar:

5445 5560 

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

5447Couldn't attach to <id> — Session isn't responding — `claude stop <id>`, then `claude attach <id>` restarts it (the conversation is saved).5562Couldn't attach to <id> — Session isn't responding — `claude stop <id>`, then `claude attach <id>` restarts it (the conversation is saved).

5448```5563```

5449 5564 

5450Claude Code tidak pernah memulai ulang baris yang menjalankan [perintah shell](https://code.claude.com/docs/id/agent-view.md#run-a-shell-command) untuk Anda, karena restart akan menjalankan perintah lagi.5565Claude Code tidak pernah memulai ulang baris yang menjalankan [perintah shell](https://code.claude.com/docs/id/agent-view.md#run-a-shell-command) untuk Anda, karena memulai ulang akan menjalankan perintah tersebut lagi.

5451 5566 

5452**Yang harus dilakukan:**5567**Yang harus dilakukan:**

5453 5568 

5454* Dalam tampilan agent, tekan `Enter` pada baris yang sama lagi. Claude Code menghentikan proses yang tidak responsif dan memulai ulang sesi, dan percakapan dilanjutkan. Tidak ada yang dihentikan tanpa tekan kedua itu5569* Di agent view, tekan `Enter` pada baris yang sama lagi. Claude Code menghentikan proses yang tidak responsif dan memulai ulang sesi, dan percakapan dilanjutkan. Tidak ada yang dihentikan tanpa tekanan kedua tersebut

5455* Dari shell, jalankan `claude stop <id>`, kemudian `claude attach <id>`5570* Dari shell, jalankan `claude stop <id>`, lalu `claude attach <id>`

5456* Untuk baris perintah shell, tekan `Ctrl+X` dalam tampilan agent atau jalankan `claude stop <id>` untuk menghentikannya; kirim perintah lagi untuk menjalankannya kembali5571* Untuk baris perintah shell, tekan `Ctrl+X` di agent view atau jalankan `claude stop <id>` untuk menghentikannya; lakukan dispatch perintah tersebut lagi untuk menjalankannya ulang

5457 5572 

5458### Sesi dihentikan saat respawn sedang dalam perjalanan5573### Session was stopped while the respawn was in flight

5459 5574 

5460Anda membuka [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang prosesnya tidak berjalan, dan saat Claude Code memulainya kembali, proses Claude Code lain menghentikannya, misalnya `claude stop` di terminal lain. Claude Code menyimpan sesi tetap dihentikan:5575Anda membuka [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang prosesnya tidak berjalan, dan saat Claude Code memulai ulang sesi tersebut, proses Claude Code lain menghentikannya, misalnya `claude stop` di terminal lain. Claude Code membiarkan sesi tetap berhenti:

5461 5576 

5462```text theme={null}5577```text theme={null}

5463Session <id> was stopped while the respawn was in flight5578Session <id> was stopped while the respawn was in flight

5464```5579```

5465 5580 

5466Membuka sesi yang baru saja Anda kirim, saat prosesnya masih dimulai, menunggu proses sebagai gantinya. Sebelum v2.1.246, membukanya pada saat itu dapat menghentikannya dan menampilkan pesan ini.5581Membuka sesi yang baru saja Anda dispatch, saat prosesnya masih dimulai, akan menunggu proses tersebut sebagai gantinya. Sebelum v2.1.246, membukanya pada saat itu dapat menghentikannya dan menampilkan pesan ini.

5467 5582 

5468**Yang harus dilakukan:**5583**Yang harus dilakukan:**

5469 5584 

5470* Jika Anda tidak menghentikan sesi, buka barisnya lagi dalam tampilan agent atau jalankan `claude respawn <id>` untuk memulainya kembali5585* Jika Anda tidak menghentikan sesi tersebut, buka barisnya lagi di agent view atau jalankan `claude respawn <id>` untuk memulainya ulang

5471* Jika Anda menghentikannya sendiri, tidak ada yang tersisa untuk dilakukan: sesi tetap dihentikan5586* Jika Anda sendiri yang menghentikannya, tidak ada lagi yang perlu dilakukan: sesi tetap berhenti

5472 5587 

5473### Agent sesi tidak lagi tersedia5588### Agent sesi tidak lagi tersedia

5474 5589 

5475Anda melanjutkan sesi yang menjalankan [agent khusus](https://code.claude.com/docs/id/sub-agents.md#invoke-subagents-explicitly), dimulai dengan `--agent` atau pengaturan `agent`, dan Claude Code tidak menemukan agent dengan nama itu. Ini mencari direktori asli sesi terlebih dahulu, ketika Anda telah [mempercayai workspace itu](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust), kemudian direktori tempat Anda melanjutkan. Sesi masih dilanjutkan, tetapi dengan tool default, jadi pembatasan tool agent tidak lagi berlaku:5590Anda melanjutkan sesi yang menjalankan [agent kustom](https://code.claude.com/docs/id/sub-agents.md#invoke-subagents-explicitly), yang dimulai dengan `--agent` atau pengaturan `agent`, dan Claude Code tidak menemukan agent dengan nama tersebut. Claude Code mencari terlebih dahulu di direktori asli sesi, jika Anda telah [memercayai workspace tersebut](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust), lalu di direktori tempat Anda melanjutkan. Sesi tetap dilanjutkan, tetapi dengan tool default, sehingga pembatasan tool dari agent tersebut tidak lagi berlaku:

5476 5591 

5477```text theme={null}5592```text theme={null}

5478This session was running agent 'code-reviewer', which is no longer available (no agent by that name in /home/you/project). Continuing with the default tools and system prompt — the agent's tool restrictions no longer apply. To restore it, re-create the agent, or resume with an explicit --agent <name>.5593This session was running agent 'code-reviewer', which is no longer available (no agent by that name in /home/you/project). Continuing with the default tools and system prompt — the agent's tool restrictions no longer apply. To restore it, re-create the agent, or resume with an explicit --agent <name>.

5479```5594```

5480 5595 

5481Peringatan hanya menamai direktori yang Claude Code cari, dan muncul dalam percakapan yang dilanjutkan apakah Anda membangunkan [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), menjalankan `/resume` atau `claude --resume`, atau melanjutkan dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), di mana ia juga masuk ke stderr. Sesi menggunakan `--input-format stream-json` tidak menampilkannya, karena Agent SDK menyediakan agent setelah startup.5596Peringatan ini hanya menyebutkan direktori yang dicari Claude Code, dan muncul di percakapan yang dilanjutkan baik saat Anda membangunkan [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), menjalankan `/resume` atau `claude --resume`, maupun melanjutkan dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), di mana peringatan juga dikirim ke stderr. Sesi yang menggunakan `--input-format stream-json` tidak menampilkannya, karena Agent SDK menyediakan agent setelah startup.

5482 5597 

5483Claude Code tidak menyimpan fallback ke sesi, jadi peringatan berulang pada setiap resume sampai Anda bertindak. Agent `claude` bawaan tidak memicu peringatan, karena jatuh kembali ke set tool default tidak mengubah apa pun untuk itu. Sebelum v2.1.216, Claude Code secara diam-diam melanjutkan sebagai agent default, dan pencarian mencakup hanya direktori tempat Anda melanjutkan, jadi agent yang bersifat proyek hilang pada resume apa pun dari direktori lain.5598Claude Code tidak menyimpan fallback ini ke sesi, sehingga peringatan berulang setiap kali dilanjutkan sampai Anda bertindak. Agent bawaan `claude` tidak memicu peringatan ini, karena fallback ke set tool default tidak mengubah apa pun baginya. Sebelum v2.1.216, Claude Code secara diam-diam melanjutkan sebagai agent default, dan pencarian hanya mencakup direktori tempat Anda melanjutkan, sehingga agent bercakupan proyek hilang setiap kali dilanjutkan dari direktori lain.

5484 5599 

5485**Yang harus dilakukan:**5600**Yang harus dilakukan:**

5486 5601 

5487* Buat ulang file agent di `.claude/agents/<name>.md` dalam proyek sesi, atau di `~/.claude/agents/<name>.md` untuk agent pribadi, kemudian lanjutkan lagi5602* Buat ulang file agent di `.claude/agents/<name>.md` dalam proyek sesi, atau di `~/.claude/agents/<name>.md` untuk agent pribadi, lalu lanjutkan lagi

5488* Atau lanjutkan dengan `--agent <name>` yang menamai agent yang memang ada, untuk menjalankan sesi sebagai agent itu sebagai gantinya5603* Atau lanjutkan dengan `--agent <name>` yang menyebutkan agent yang memang ada, untuk menjalankan sesi sebagai agent tersebut

5489* Jika agent bersifat proyek dan Anda belum mempercayai direktori asli sesi, jalankan Claude Code di sana sekali, terima dialog kepercayaan, kemudian lanjutkan lagi5604* Jika agent bercakupan proyek dan Anda belum memercayai direktori asli sesi, jalankan Claude Code di sana sekali, terima dialog kepercayaan, lalu lanjutkan lagi

5490 5605 

5491### Sesi ini dimulai ulang setelah wakeup /loop berikutnya jatuh tempo5606### This session restarted after its next /loop wakeup was due

5492 5607 

5493Sebuah [`/loop` yang mengatur tempo sendiri](https://code.claude.com/docs/id/scheduled-tasks#let-claude-choose-the-interval) dalam [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) telah berhenti. Proses sesi berakhir saat loop sedang menunggu wakeup berikutnya, dan wakeup itu jatuh tempo sebelum [proses berikutnya](https://code.claude.com/docs/id/agent-view.md#the-supervisor-process) sesi dimulai. Wakeup yang terlewat tidak dijalankan terlambat. Pemberitahuan menyebutkan seberapa terlambat wakeup tersebut ketika sesi dimulai ulang:5608[`/loop` dengan laju mandiri](https://code.claude.com/docs/id/scheduled-tasks#let-claude-choose-the-interval) dalam [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) telah berhenti. Proses sesi berakhir saat loop sedang menunggu wakeup berikutnya, dan wakeup tersebut jatuh tempo sebelum [proses berikutnya](https://code.claude.com/docs/id/agent-view.md#the-supervisor-process) dari sesi dimulai. Wakeup yang terlewat tidak dijalankan terlambat. Pemberitahuan menyebutkan seberapa terlambat wakeup tersebut saat sesi dimulai ulang:

5494 5609 

5495```text theme={null}5610```text theme={null}

5496This session restarted 12m after its next /loop wakeup was due, so that wakeup will not fire. The loop stays stopped until Claude schedules it again: reply to continue it.5611This session restarted 12m after its next /loop wakeup was due, so that wakeup will not fire. The loop stays stopped until Claude schedules it again: reply to continue it.


5500 5615 

5501**Yang harus dilakukan:**5616**Yang harus dilakukan:**

5502 5617 

5503* Untuk melanjutkan loop, [balas ke sesi](https://code.claude.com/docs/id/agent-view.md#peek-and-reply) dan katakan demikian, seperti `keep the loop running`. Claude membaca pemberitahuan bersama balasan Anda dan dapat menjadwalkan wakeup berikutnya5618* Untuk melanjutkan loop, [balas sesi tersebut](https://code.claude.com/docs/id/agent-view.md#peek-and-reply) dan nyatakan demikian, seperti `keep the loop running`. Claude membaca pemberitahuan bersama balasan Anda dan dapat menjadwalkan wakeup berikutnya

5504* Jika Anda sudah selesai dengan loop, tidak perlu melakukan apa pun. Loop sudah berhenti5619* Jika Anda sudah selesai dengan loop tersebut, tidak perlu melakukan apa pun. Loop sudah berhenti

5505 5620 

5506### No LLM gateway: a gateway set in your shell isn't passed to a session opened from another folder5621### No LLM gateway: a gateway set in your shell isn't passed to a session opened from another folder

5507 5622 

5508[Sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang menampilkan pesan ini tidak menggunakan [LLM gateway](https://code.claude.com/docs/id/llm-gateway) Anda: sesi tersebut tidak mendapatkan alamat gateway, sehingga permintaannya gagal. Pesan muncul dalam percakapan sebagai pengganti balasan Claude, dengan ID dan folder sesi Anda terisi:5623[Sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang menampilkan pesan ini tidak menggunakan [LLM gateway](https://code.claude.com/docs/id/llm-gateway) Anda: sesi tidak mendapatkan alamat gateway, sehingga permintaannya gagal. Pesan muncul di percakapan sebagai pengganti balasan Claude, dengan ID dan folder sesi Anda terisi:

5509 5624 

5510```text wrap theme={null}5625```text wrap theme={null}

5511No LLM gateway: a gateway set in your shell isn't passed to a session opened from another folder. To fix, run `claude respawn abc12345` from ~/project in another terminal where your gateway is set, or set ANTHROPIC_BASE_URL and its API key or token in a settings file's env block.5626No LLM gateway: a gateway set in your shell isn't passed to a session opened from another folder. To fix, run `claude respawn abc12345` from ~/project in another terminal where your gateway is set, or set ANTHROPIC_BASE_URL and its API key or token in a settings file's env block.

5512```5627```

5513 5628 

5514Saat Anda terhubung ke sesi, pemberitahuan di bawah prompt-nya menampilkan bentuk singkat `No LLM gateway: opened from another folder · respawn from ~/project`.5629Selama Anda terhubung ke sesi tersebut, pemberitahuan di bawah prompt-nya menampilkan bentuk singkat `No LLM gateway: opened from another folder · respawn from ~/project`.

5515 5630 

5516Anda mengirim, membangunkan, atau memulai ulang sesi dari folder selain yang dinamai pesan, saat `ANTHROPIC_BASE_URL` diatur ke gateway Anda. Untuk kasus di mana gateway yang diekspor shell memang mencapai sesi latar belakang, lihat [LLM gateway](https://code.claude.com/docs/id/agent-view.md#llm-gateway).5631Anda melakukan dispatch, membangunkan, atau memulai ulang sesi dari folder selain yang disebutkan pesan, sementara `ANTHROPIC_BASE_URL` diatur ke gateway Anda. Untuk kasus di mana gateway yang diekspor shell memang mencapai sesi latar belakang, lihat [LLM gateway](https://code.claude.com/docs/id/agent-view.md#llm-gateway).

5517 5632 

5518**Yang harus dilakukan:**5633**Yang harus dilakukan:**

5519 5634 

5520* **Anda menggunakan tampilan agent dalam proyek yang pengaturannya mengatur gateway**: letakkan `ANTHROPIC_BASE_URL` beserta kunci API atau token-nya di [blok `env` file pengaturan](https://code.claude.com/docs/id/llm-gateway-connect#set-in-a-settings-file). Gunakan `~/.claude/settings.json`, atau `.claude/settings.local.json` dalam proyek sesi itu sendiri, yang keduanya dibaca oleh sesi yang di-respawn. Kemudian jalankan `claude respawn <id>` di shell Anda dari folder mana pun.5635* **Anda menggunakan agent view dalam proyek yang pengaturannya menetapkan gateway**: letakkan `ANTHROPIC_BASE_URL` beserta kunci API atau token-nya di [blok `env` dari file pengaturan](https://code.claude.com/docs/id/llm-gateway-connect#set-in-a-settings-file). Gunakan `~/.claude/settings.json`, atau `.claude/settings.local.json` dalam proyek sesi itu sendiri, yang keduanya dibaca oleh sesi yang di-respawn. Lalu jalankan `claude respawn <id>` di shell Anda dari folder mana pun.

5521* **Anda mengekspor gateway di terminal Anda**: di terminal tempat Anda telah mengekspor variabel gateway, `cd` ke folder yang dinamai pesan dan jalankan perintah `claude respawn <id>` dari pesan. Sesi dimulai ulang dari percakapan yang disimpannya.5636* **Anda mengekspor gateway di terminal Anda**: di terminal tempat Anda telah mengekspor variabel gateway, `cd` ke folder yang disebutkan pesan dan jalankan perintah `claude respawn <id>` dari pesan tersebut. Sesi dimulai ulang dari percakapan tersimpannya.

5522 * Gateway mencapai sesi hanya ketika [supervisor](https://code.claude.com/docs/id/agent-view.md#the-supervisor-process) itu sendiri dimulai dari shell yang mengekspor gateway yang sama. Jika supervisor tidak demikian, mulai ulang dari terminal tersebut seperti yang dijelaskan [Dispatch gagal dengan `Could not resolve authentication method`](https://code.claude.com/docs/id/agent-view#dispatch-fails-with-could-not-resolve-authentication-method), kemudian jalankan perintah respawn lagi.5637 * Gateway hanya mencapai sesi ketika [supervisor](https://code.claude.com/docs/id/agent-view.md#the-supervisor-process) itu sendiri dimulai dari shell yang mengekspor gateway yang sama. Jika supervisor tidak dimulai demikian, mulai ulang dari terminal tersebut seperti yang dijelaskan dalam [Dispatch gagal dengan `Could not resolve authentication method`](https://code.claude.com/docs/id/agent-view#dispatch-fails-with-could-not-resolve-authentication-method), lalu jalankan perintah respawn lagi.

5523 5638 

5524Sebelum v2.1.302, sesi latar belakang dalam situasi ini menampilkan kesalahan masuk seperti [`Not logged in · Please run /login`](#not-logged-in) sebagai gantinya, tanpa menamai folder.5639Sebelum v2.1.302, sesi latar belakang dalam situasi ini menampilkan error masuk seperti [`Not logged in · Please run /login`](#not-logged-in) sebagai gantinya, tanpa menyebutkan folder.

5525 5640 

5526### Kesalahan peluncur CLAUDE\_CODE\_PROCESS\_WRAPPER5641### Error launcher CLAUDE\_CODE\_PROCESS\_WRAPPER

5527 5642 

5528[`CLAUDE_CODE_PROCESS_WRAPPER`](https://code.claude.com/docs/id/corporate-launcher) diatur, dan nilainya tidak dapat digunakan, jadi Claude Code menolak untuk memulai proses yang terpengaruh daripada menjalankannya tanpa peluncur. Masalah konfigurasi dilaporkan dengan pesan yang dimulai dengan nama variabel dan menyatakan alasannya, misalnya:5643[`CLAUDE_CODE_PROCESS_WRAPPER`](https://code.claude.com/docs/id/corporate-launcher) diatur, dan nilainya tidak dapat digunakan, sehingga Claude Code menolak memulai proses yang terpengaruh alih-alih menjalankannya tanpa launcher. Masalah konfigurasi dilaporkan dengan pesan yang diawali nama variabel dan menyebutkan alasannya, misalnya:

5529 5644 

5530```text theme={null}5645```text theme={null}

5531CLAUDE_CODE_PROCESS_WRAPPER: launcher `/opt/corp/launcher` is not an executable regular file5646CLAUDE_CODE_PROCESS_WRAPPER: launcher `/opt/corp/launcher` is not an executable regular file

5532```5647```

5533 5648 

5534Peluncur yang dimulai tetapi keluar tanpa mengganti dirinya dengan Claude Code gagal sesi yang dimulainya, dan baris sesi dalam tampilan agent melaporkan bahwa peluncur `must exec, not daemonize`, diikuti oleh apa pun yang dicetak peluncur. Sesi yang tidak dapat dimulai atau menjangkau layanan latar belakang karena peluncur melaporkan masalah peluncur sebagai alasan di dalam `Couldn't reach the background service (...)`.5649Launcher yang dimulai tetapi keluar tanpa menggantikan dirinya dengan Claude Code menggagalkan sesi yang sedang dimulainya, dan baris sesi di agent view melaporkan bahwa launcher `must exec, not daemonize`, diikuti apa pun yang dicetak launcher. Sesi yang tidak dapat dimulai atau menjangkau layanan latar belakang karena launcher melaporkan masalah launcher sebagai alasan di dalam `Couldn't reach the background service (...)`.

5535 5650 

5536**Yang harus dilakukan:**5651**Yang harus dilakukan:**

5537 5652 

5538* Atur variabel ke jalur absolut dari executable yang berakhir dengan memanggil `exec "$@"`. Lihat [kontrak peluncur](https://code.claude.com/docs/id/corporate-launcher.md#the-launcher-contract) untuk kontrak lengkap5653* Atur variabel ke path absolut dari executable yang diakhiri dengan memanggil `exec "$@"`. Lihat [kontrak launcher](https://code.claude.com/docs/id/corporate-launcher.md#the-launcher-contract) untuk kontrak lengkapnya

5539* Periksa `/status`, yang menampilkan perintah peluncuran yang diselesaikan dalam entri Self-exec-nya dan memperingatkan ketika layanan latar belakang yang berjalan tidak cocok, atau jalankan `claude daemon status` dari shell5654* Periksa `/status`, yang menampilkan perintah peluncuran yang telah di-resolve di entri Self-exec dan memberi peringatan ketika layanan latar belakang yang berjalan tidak cocok dengannya, atau jalankan `claude daemon status` dari shell

5540* Setelah memperbaiki nilai dalam blok `env` dari [pengaturan](https://code.claude.com/docs/id/corporate-launcher.md#set-up-the-launcher), mulai ulang layanan latar belakang dengan `claude daemon stop --any` sehingga pengiriman berikutnya memulai yang dibungkus5655* Setelah memperbaiki nilai di blok `env` dari [pengaturan](https://code.claude.com/docs/id/corporate-launcher.md#set-up-the-launcher), mulai ulang layanan latar belakang dengan `claude daemon stop --any` agar dispatch berikutnya memulai layanan yang dibungkus

5541 5656 

5542### EUNKNOWN saat memulai sesi latar belakang5657### EUNKNOWN saat memulai sesi latar belakang

5543 5658 

5544Windows menolak untuk memulai program dengan kode kesalahan yang tidak memiliki nama standar, jadi kegagalan muncul sebagai `EUNKNOWN`. Pemicu biasanya adalah kebijakan pembatasan perangkat lunak, seperti Group Policy atau AppLocker, memblokir program yang dimulai. Kesalahan muncul ketika Anda memulai [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) dengan `/background` atau `claude --bg`:5659Windows menolak memulai program dengan kode error yang tidak memiliki nama standar, sehingga kegagalan muncul sebagai `EUNKNOWN`. Pemicu yang umum adalah kebijakan pembatasan perangkat lunak, seperti Group Policy atau AppLocker, yang memblokir program yang sedang dimulai. Error muncul ketika Anda memulai [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) dengan `/background` atau `claude --bg`:

5545 5660 

5546```text theme={null}5661```text theme={null}

5547Couldn't reach the background service (spawn background service: EUNKNOWN: unknown error, uv_spawn) — run 'claude daemon status'5662Couldn't reach the background service (spawn background service: EUNKNOWN: unknown error, uv_spawn) — run 'claude daemon status'

5548```5663```

5549 5664 

5550Pada beberapa akun pesan mengatakan `daemon` sebagai pengganti `background service`.5665Pada beberapa akun, pesan menyebutkan `daemon` sebagai pengganti `background service`.

5551 5666 

5552Pada instalasi npm, `EUNKNOWN` yang muncul saat `npm install -g @anthropic-ai/claude-code` mengganti biner memiliki penyebab yang sama dengan [`EACCES` selama reinstal](#eacces-when-starting-a-background-session) dan hilang ketika Anda mencoba lagi setelah instalasi selesai.5667Pada instalasi npm, `EUNKNOWN` yang muncul saat `npm install -g @anthropic-ai/claude-code` sedang mengganti binary memiliki penyebab yang sama dengan [`EACCES` selama instalasi ulang](#eacces-when-starting-a-background-session) dan hilang ketika Anda mencoba ulang setelah instalasi selesai.

5553 5668 

5554Claude Code memulai layanan latar belakang melalui PowerShell sehingga layanan bertahan menutup terminal, menggunakan PowerShell 7 ketika diinstal dan Windows PowerShell 5.1 sebaliknya. Ketika tidak ada PowerShell yang dapat berjalan, Claude Code memulai layanan secara langsung sebagai gantinya, jadi kebijakan yang memblokir hanya PowerShell tidak menyebabkan kesalahan ini.5669Claude Code memulai layanan latar belakang melalui PowerShell agar layanan tetap bertahan saat terminal ditutup, menggunakan PowerShell 7 jika terinstal dan Windows PowerShell 5.1 jika tidak. Ketika tidak ada PowerShell yang dapat berjalan, Claude Code memulai layanan secara langsung, sehingga kebijakan yang hanya memblokir PowerShell tidak menyebabkan error ini.

5555 5670 

5556Sebelum v2.1.212, Claude Code hanya menggunakan Windows PowerShell 5.1 untuk memulai layanan, jadi mesin apa pun di mana Group Policy memblokir PowerShell 5.1 gagal dengan `Couldn't start the session — EUNKNOWN: unknown error, uv_spawn`, bahkan dengan PowerShell 7 diinstal.5671Sebelum v2.1.212, Claude Code hanya menggunakan Windows PowerShell 5.1 untuk memulai layanan, sehingga mesin mana pun yang Group Policy-nya memblokir PowerShell 5.1 gagal dengan `Couldn't start the session — EUNKNOWN: unknown error, uv_spawn`, bahkan jika PowerShell 7 terinstal.

5557 5672 

5558**Yang harus dilakukan:**5673**Yang harus dilakukan:**

5559 5674 

5560* Jika pesan berbunyi `Couldn't start the session`, tingkatkan ke v2.1.212 atau lebih baru. Pada versi sebelumnya Anda juga dapat menjalankan `claude daemon run` di terminal terpisah terlebih dahulu, kemudian mulai sesi latar belakang lagi. Perintah itu menjalankan layanan latar belakang di latar depan terminal, jadi layanan berlangsung hanya selama terminal itu tetap terbuka.5675* Jika pesan berbunyi `Couldn't start the session`, upgrade ke v2.1.212 atau lebih baru. Pada versi sebelumnya, Anda juga dapat menjalankan `claude daemon run` di terminal terpisah terlebih dahulu, lalu memulai sesi latar belakang lagi. Perintah tersebut menjalankan layanan latar belakang di latar depan terminal, sehingga layanan hanya bertahan selama terminal tersebut tetap terbuka.

5561* Jika instalasi npm mengganti biner, tunggu hingga selesai, kemudian mulai sesi latar belakang lagi5676* Jika instalasi npm sedang mengganti binary, tunggu hingga selesai, lalu mulai sesi latar belakang lagi

5562* Jika kesalahan muncul pada v2.1.212 atau lebih baru saat tidak ada instalasi npm yang berjalan, periksa dengan administrator Windows Anda apakah kebijakan pembatasan memblokir executable Claude Code5677* Jika error muncul pada v2.1.212 atau lebih baru saat tidak ada instalasi npm yang berjalan, tanyakan kepada administrator Windows Anda apakah kebijakan pembatasan memblokir executable Claude Code

5563* Jika layanan latar belakang berhenti ketika Anda menutup terminal, Claude Code memulainya tanpa PowerShell. Instal PowerShell 7, atau minta administrator Anda untuk membuka blokir PowerShell, sehingga layanan dapat bertahan lebih lama dari terminal.5678* Jika layanan latar belakang berhenti saat Anda menutup terminal, Claude Code memulainya tanpa PowerShell. Instal PowerShell 7, atau minta administrator Anda untuk membuka blokir PowerShell, agar layanan dapat bertahan lebih lama dari terminal.

5564 5679 

5565### EACCES saat memulai sesi latar belakang5680### EACCES saat memulai sesi latar belakang

5566 5681 

5567Claude Code tidak dapat menjalankan binernya sendiri untuk memulai [layanan latar belakang](https://code.claude.com/docs/id/agent-view.md#the-supervisor-process) yang menyelenggarakan sesi latar belakang. Pada instalasi npm, ini biasanya berarti `npm install -g @anthropic-ai/claude-code` mengganti biner pada saat itu, apakah Anda menjalankannya atau [auto-updater](https://code.claude.com/docs/id/setup.md#auto-updates) melakukannya. Kesalahan muncul ketika Anda membuka sesi dari [tampilan agent](https://code.claude.com/docs/id/agent-view.md):5682Claude Code tidak dapat menjalankan binary-nya sendiri untuk memulai [layanan latar belakang](https://code.claude.com/docs/id/agent-view.md#the-supervisor-process) yang menampung sesi latar belakang. Pada instalasi npm, ini biasanya berarti `npm install -g @anthropic-ai/claude-code` sedang mengganti binary pada saat itu, baik Anda yang menjalankannya maupun [auto-updater](https://code.claude.com/docs/id/setup.md#auto-updates). Error muncul ketika Anda membuka sesi dari [agent view](https://code.claude.com/docs/id/agent-view.md):

5568 5683 

5569```text theme={null}5684```text theme={null}

5570Couldn't start the background service — spawn background service: EACCES: permission denied, posix_spawn '/usr/local/lib/node_modules/@anthropic-ai/claude-code/bin/claude'5685Couldn't start the background service — spawn background service: EACCES: permission denied, posix_spawn '/usr/local/lib/node_modules/@anthropic-ai/claude-code/bin/claude'

5571```5686```

5572 5687 

5573Ketika Anda memulai sesi dengan `/background` atau `claude --bg`, alasan yang sama muncul di dalam `Couldn't reach the background service (...)`. Selama jendela reinstal yang sama kesalahan dapat menamai kode lain sebagai gantinya, seperti `ENOENT` atau `ENOEXEC`, atau `EUNKNOWN` atau `EPERM` di Windows; `EUNKNOWN` yang bertahan di seluruh percobaan ulang memiliki [penyebab berbeda](#eunknown-when-starting-a-background-session).5688Ketika Anda memulai sesi dengan `/background` atau `claude --bg`, alasan yang sama muncul di dalam `Couldn't reach the background service (...)`. Selama jendela instalasi ulang yang sama, error dapat menyebutkan kode lain, seperti `ENOENT` atau `ENOEXEC`, atau `EUNKNOWN` atau `EPERM` di Windows; `EUNKNOWN` yang tetap muncul setelah beberapa kali percobaan ulang memiliki [penyebab yang berbeda](#eunknown-when-starting-a-background-session).

5574 5689 

5575Pada instalasi npm, Claude Code menunggu reinstal selesai dan mencoba lagi sendiri: hingga sepuluh detik, dan hingga dua menit saat instalasi npm Claude Code masih terlihat berjalan di mesin, yang mencakup proses Claude Code lain mengunduh pembaruan. Ketika instalasi melampaui waktu tunggu itu, kegagalan menamai pembaruan alih-alih kode kesalahan telanjang:5690Pada instalasi npm, Claude Code menunggu instalasi ulang selesai dan mencoba ulang dengan sendirinya: hingga sepuluh detik, dan hingga dua menit selama instalasi npm Claude Code terlihat masih berjalan di mesin, yang mencakup proses Claude Code lain yang sedang mengunduh pembaruan. Ketika instalasi berlangsung lebih lama dari waktu tunggu tersebut, kegagalan menyebutkan pembaruan alih-alih hanya kode error:

5576 5691 

5577```text theme={null}5692```text theme={null}

5578Claude Code is being updated by npm on this machine (still not runnable after 2 min, EACCES) — try again when the update finishes5693Claude Code is being updated by npm on this machine (still not runnable after 2 min, EACCES) — try again when the update finishes

5579```5694```

5580 5695 

5581Sebelum v2.1.257, waktu tunggu berhenti pada sepuluh detik dalam setiap kasus, jadi kesalahan ini muncul saat proses Claude Code lain masih mengunduh pembaruan. Sebelum v2.1.246, Claude Code gagal sekaligus, tanpa menunggu.5696Sebelum v2.1.257, penantian berhenti pada sepuluh detik dalam setiap kasus, sehingga error ini muncul saat proses Claude Code lain masih mengunduh pembaruan. Sebelum v2.1.246, Claude Code langsung gagal, tanpa menunggu.

5582 5697 

5583**Yang harus dilakukan:**5698**Yang harus dilakukan:**

5584 5699 

5585* Tunggu beberapa detik, kemudian buka sesi atau kirim lagi. Ketika pesan mengatakan Claude Code sedang diperbarui, coba lagi setelah pembaruan selesai.5700* Tunggu beberapa detik, lalu buka sesi atau lakukan dispatch lagi. Ketika pesan menyatakan Claude Code sedang diperbarui, coba lagi setelah pembaruan selesai.

5586* Jika kesalahan bertahan saat tidak ada instalasi npm yang berjalan, pengguna Anda tidak dapat menjalankan biner yang diinstal. Periksa hak aksesnya dan direktorinya, atau instal ulang Claude Code.5701* Jika error tetap muncul saat tidak ada instalasi npm yang berjalan, pengguna Anda tidak dapat menjalankan binary yang terinstal. Periksa permission binary tersebut dan direktorinya, atau instal ulang Claude Code.

5587 5702 

5588### Layanan latar belakang keluar sebelum dapat dijangkau5703### Background service exited before it became reachable

5589 5704 

5590Proses yang Claude Code mulai sebagai [layanan latar belakang](https://code.claude.com/docs/id/agent-view.md#the-supervisor-process) keluar sebelum menerima koneksi, jadi Claude Code tidak dapat membuka sesi Anda. Ketika layanan mencetak kesalahan sebelum keluar, alasan dalam tanda kurung memberikan exit code atau sinyal dan baris pertama yang dicetak layanan, yang menamai apa yang menghentikannya:5705Proses yang dimulai Claude Code sebagai [layanan latar belakang](https://code.claude.com/docs/id/agent-view.md#the-supervisor-process) keluar sebelum menerima koneksi, sehingga Claude Code tidak dapat membuka sesi Anda. Ketika layanan mencetak error sebelum keluar, alasan dalam tanda kurung memberikan exit code atau sinyal dan baris pertama yang dicetak layanan, yang menyebutkan apa yang menghentikannya:

5591 5706 

5592```text theme={null}5707```text theme={null}

5593Couldn't reach the background service (background service exited before it became reachable (exit code N): <the service's first error line>) — run 'claude daemon status'5708Couldn't reach the background service (background service exited before it became reachable (exit code N): <the service's first error line>) — run 'claude daemon status'

5594```5709```

5595 5710 

5596Ketika Anda membuka sesi dari [tampilan agent](https://code.claude.com/docs/id/agent-view.md), alasan yang sama mengikuti `Couldn't start the background service —`. Ketika layanan tidak mencetak apa pun sebelum keluar, pesan mengatakan `nothing on stderr` sebagai gantinya.5711Ketika Anda membuka sesi dari [agent view](https://code.claude.com/docs/id/agent-view.md), alasan yang sama mengikuti `Couldn't start the background service —`. Ketika layanan tidak mencetak apa pun sebelum keluar, pesan menyebutkan `nothing on stderr` sebagai gantinya.

5597 5712 

5598Claude Code melaporkan kegagalan dengan baris kesalahan layanan. Sebelum v2.1.246, kegagalan muncul hanya setelah menunggu 45 detik, sebagai `background service did not become reachable within 45s`, tanpa baris kesalahan layanan.5713Claude Code melaporkan kegagalan dengan baris error dari layanan. Sebelum v2.1.246, kegagalan baru muncul setelah menunggu 45 detik, sebagai `background service did not become reachable within 45s`, tanpa baris error dari layanan.

5599 5714 

5600Dua alasan yang dikutip memiliki penyebab yang diketahui:5715Dua alasan yang dikutip memiliki penyebab yang diketahui:

5601 5716 

5602* `Error: claude native binary not installed.`: instalasi npm mengganti biner Claude Code pada saat itu, jadi layanan menjalankan placeholder npm sebagai gantinya. Coba lagi setelah instalasi selesai; jika baris bertahan tanpa instalasi yang berjalan, [selesaikan instalasi npm](https://code.claude.com/docs/id/troubleshoot-install.md#native-binary-not-found-after-npm-install). Sebelum v2.1.257, pembaruan diri npm macOS menghasilkan kegagalan ini pada setiap awal selama jendela instalasi.5717* `Error: claude native binary not installed.`: instalasi npm sedang mengganti binary Claude Code pada saat itu, sehingga layanan menjalankan placeholder npm sebagai gantinya. Coba lagi setelah instalasi selesai; jika baris tersebut tetap muncul tanpa ada instalasi yang berjalan, [selesaikan instalasi npm](https://code.claude.com/docs/id/troubleshoot-install.md#native-binary-not-found-after-npm-install). Sebelum v2.1.257, self-update npm di macOS menghasilkan kegagalan ini pada setiap start selama jendela instalasi.

5603* `nothing on stderr` dengan exit code 1, pada setiap awal, di Windows: `daemon.lock` menamai proses yang Claude Code tidak dapat menandai atau membuktikan hilang, jadi setiap layanan baru menyimpulkan yang lain menyimpan kunci dan keluar. Kunci yang penulis Claude Code dapat membuktikan hilang diganti sendiri dan tidak menghasilkan kegagalan ini. Ketika kegagalan berulang pada setiap awal, hapus `~/.claude/daemon.lock`, kemudian buka sesi atau kirim lagi. Sebelum v2.1.257, kunci seperti itu memblokir setiap awal sampai Anda menghapus file.5718* `nothing on stderr` dengan exit code 1, pada setiap start, di Windows: `daemon.lock` menyebutkan proses yang tidak dapat diberi sinyal oleh Claude Code dan juga tidak dapat dibuktikan sudah tidak ada, sehingga setiap layanan baru menyimpulkan bahwa layanan lain memegang kunci tersebut lalu keluar. Kunci yang penulisnya dapat dibuktikan oleh Claude Code sudah tidak ada akan diganti dengan sendirinya dan tidak menghasilkan kegagalan ini. Ketika kegagalan berulang pada setiap start, hapus `~/.claude/daemon.lock`, lalu buka sesi atau lakukan dispatch lagi. Sebelum v2.1.257, kunci seperti itu memblokir setiap start sampai Anda menghapus file tersebut.

5604 5719 

5605**Yang harus dilakukan:**5720**Yang harus dilakukan:**

5606 5721 

5607* Jika pesan mengutip baris, perbaiki apa yang dinamainya, kemudian buka sesi atau kirim lagi. Upaya berikutnya memulai layanan lagi5722* Jika pesan mengutip sebuah baris, perbaiki apa yang disebutkannya, lalu buka sesi atau lakukan dispatch lagi. Upaya berikutnya akan memulai layanan lagi

5608* Jalankan `claude daemon status` untuk memeriksa apakah layanan berjalan sekarang5723* Jalankan `claude daemon status` untuk memeriksa apakah sebuah layanan sedang berjalan sekarang

5609 5724 

5610### Direktori kerja tidak lagi ada saat memulai sesi latar belakang5725### Direktori kerja tidak lagi ada saat memulai sesi latar belakang

5611 5726 

5612Direktori tempat Anda memulai [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) dihapus saat sesi dimulai. Claude Code tidak memulai sesi, dan pesan menamai direktori yang hilang:5727Direktori tempat Anda memulai [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) dihapus saat sesi sedang dimulai. Claude Code tidak memulai sesi, dan pesan menyebutkan direktori yang hilang:

5613 5728 

5614```text theme={null}5729```text theme={null}

5615Couldn't start a background session (working directory no longer exists or is not accessible: /tmp/demo)5730Couldn't start a background session (working directory no longer exists or is not accessible: /tmp/demo)

5616```5731```

5617 5732 

5618Sebelum v2.1.257, sesi tampak dimulai dan kemudian ditampilkan dalam tampilan agent sebagai baris yang gagal dengan alasan yang sama.5733Sebelum v2.1.257, sesi tampak dimulai lalu muncul di agent view sebagai baris gagal dengan alasan yang sama.

5734 

5735Sebelum v2.1.281, pesan ini juga muncul ketika direktori sudah tidak ada sebelum Anda memulai sesi. Kasus tersebut melaporkan [`could not be resolved on disk`](#workspace-not-trusted-when-dispatching-a-background-session).

5619 5736 

5620Sebelum v2.1.281, pesan ini juga muncul ketika direktori sudah hilang sebelum Anda memulai sesi. Kasus itu melaporkan [`could not be resolved on disk`](#workspace-not-trusted-when-dispatching-a-background-session).5737**Yang harus dilakukan:**

5738 

5739* Buat ulang direktori yang disebutkan pesan, atau lakukan dispatch dari direktori yang ada, lalu coba lagi

5740 

5741### This forked session could not be started

5742 

5743Anda [melakukan fork sesi Remote Control](https://code.claude.com/docs/id/remote-control.md#fork-a-session-from-your-browser) dari claude.ai, dan Claude Code tidak dapat menyelesaikan proses memulai [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang menjalankan fork tersebut di mesin Anda. Pemberitahuan ini muncul di transkrip sesi hasil fork:

5744 

5745```text theme={null}

5746This forked session could not be started. Fork the conversation again to retry.

5747```

5748 

5749Sesi yang Anda fork tetap berjalan.

5621 5750 

5622**Yang harus dilakukan:**5751**Yang harus dilakukan:**

5623 5752 

5624* Buat ulang direktori yang dinamai pesan, atau kirim dari direktori yang ada, kemudian coba lagi5753* Kembali ke sesi yang Anda fork dan fork lagi setelah sesi tersebut idle

5625 5754 

5626### Workspace tidak dipercaya saat mengirim sesi latar belakang5755### Workspace tidak dipercaya saat melakukan dispatch sesi latar belakang

5627 5756 

5628Anda memulai atau memulai ulang [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) dalam direktori yang belum Anda [percayai](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust), dan dialog kepercayaan workspace tidak dapat muncul untuk bertanya. Claude Code tidak memulai sesi:5757Anda memulai atau memulai ulang [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) di direktori yang belum Anda [percayai](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust), dan dialog kepercayaan workspace tidak dapat muncul untuk menanyakannya kepada Anda. Claude Code tidak memulai sesi:

5629 5758 

5630```text theme={null}5759```text theme={null}

5631Workspace not trusted. Run `claude` in /path/to/project once and accept the trust prompt, then retry.5760Workspace not trusted. Run `claude` in /path/to/project once and accept the trust prompt, then retry.

5632```5761```

5633 5762 

5634Dari terminal di direktori sesi itu sendiri, perintah yang sama menampilkan dialog kepercayaan sebagai gantinya dan memulai sesi setelah Anda menerima. Pesan ini muncul di mana tidak ada dialog yang dapat muncul, seperti dalam skrip, atau ketika Anda memulai ulang sesi dari direktori selain miliknya sendiri.5763Dari terminal di direktori sesi itu sendiri, perintah yang sama menampilkan dialog kepercayaan sebagai gantinya dan memulai sesi setelah Anda menerimanya. Pesan ini muncul di tempat yang tidak memungkinkan dialog, seperti dalam skrip, atau ketika Anda memulai ulang sesi dari direktori selain direktorinya sendiri.

5635 5764 

5636Dua varian menamai penyebab berbeda:5765Dua varian menyebutkan penyebab yang berbeda:

5637 5766 

5638* **`The home directory is trusted one session at a time`**: direktori sesi adalah direktori home Anda. Claude Code tidak pernah menyimpan kepercayaan untuk direktori home, jadi menerima dialog di sana dalam sesi sebelumnya tidak dihitung.5767* **`The home directory is trusted one session at a time`**: direktori sesi adalah direktori home Anda. Claude Code tidak pernah menyimpan kepercayaan untuk direktori home, sehingga menerima dialog di sana pada sesi sebelumnya tidak dihitung.

5639* **`<path> could not be resolved on disk`**: Claude Code tidak dapat menemukan direktori sesi di disk.5768* **`<path> could not be resolved on disk`**: Claude Code tidak dapat menemukan direktori sesi di disk.

5640 5769 

5641Sebelum v2.1.286, di Windows, pesan ini juga dapat muncul di direktori yang sudah Anda percayai, jika catatan kepercayaannya disimpan dengan jalur dalam huruf besar/kecil yang berbeda. Perbarui ke v2.1.286 atau lebih baru.5770Sebelum v2.1.286, di Windows, pesan ini juga dapat muncul di direktori yang sudah Anda percayai, jika catatan kepercayaannya disimpan dengan path dalam huruf besar-kecil yang berbeda. Perbarui ke v2.1.286 atau lebih baru.

5642 5771 

5643**Yang harus dilakukan:**5772**Yang harus dilakukan:**

5644 5773 

5645* Jalankan `claude` di direktori yang dinamai pesan dan terima dialog kepercayaan, kemudian jalankan perintah lagi5774* Jalankan `claude` di direktori yang disebutkan pesan dan terima dialog kepercayaan, lalu jalankan perintah lagi

5646* Untuk pesan direktori home, jalankan perintah dari terminal di direktori home Anda sehingga dialog dapat muncul, atau mulai sesi dari direktori proyek sebagai gantinya5775* Untuk pesan direktori home, jalankan perintah dari terminal di direktori home Anda agar dialog dapat muncul, atau mulai sesi dari direktori proyek sebagai gantinya

5647* Untuk pesan `could not be resolved on disk`, buat ulang direktori, atau mulai sesi baru dari direktori yang ada5776* Untuk pesan `could not be resolved on disk`, buat ulang direktori tersebut, atau mulai sesi baru dari direktori yang ada

5648 5777 

5649## Kesalahan Wrapper dan IDE5778## Kesalahan Wrapper dan IDE

5650 5779 


5815* Jika ini adalah sesi tingkat atas, keluar dan restart dengan [`CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1`](https://code.claude.com/docs/id/env-vars) diatur. Penyimpanan berlaku dari restart, jadi pesan yang dikirim sebelumnya tidak disimpan.5944* Jika ini adalah sesi tingkat atas, keluar dan restart dengan [`CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1`](https://code.claude.com/docs/id/env-vars) diatur. Penyimpanan berlaku dari restart, jadi pesan yang dikirim sebelumnya tidak disimpan.

5816* Untuk memperbaiki peluncuran di masa depan dari terminal atau peluncur yang sama, hapus `CLAUDE_CODE_CHILD_SESSION` dari lingkungannya5945* Untuk memperbaiki peluncuran di masa depan dari terminal atau peluncur yang sama, hapus `CLAUDE_CODE_CHILD_SESSION` dari lingkungannya

5817 5946 

5818## Peringatan Konfigurasi5947## Peringatan konfigurasi

5819 5948 

5820Untuk menemukan peringatan yang diberikan Claude Code saat startup dalam sesi interaktif, lihat terlebih dahulu di bawah banner startup, lalu di log debug:5949Untuk menemukan peringatan yang diberikan Claude Code saat startup dalam sesi interaktif, periksa terlebih dahulu di bawah banner startup, lalu di log debug:

5821 5950 

5822* **Baris di bawah banner startup**: beberapa peringatan tentang [aturan izin](https://code.claude.com/docs/id/permissions.md), seperti [`⚠ Deny rule Bsh matches no tool · check for typos`](#matches-no-tool)5951* **Baris di bawah banner startup**: beberapa peringatan tentang [aturan izin](https://code.claude.com/docs/id/permissions.md), seperti [`⚠ Deny rule Bsh matches no tool · check for typos`](#matches-no-tool)

5823* **Log debug**: Claude Code menyimpan log ini hanya dalam mode debug. Untuk membaca peringatan di dalamnya, mulai Claude Code dari shell Anda dengan `claude --debug-file <path>`, lalu buka file di jalur tersebut.5952* **Log debug**: Claude Code menyimpan log ini hanya dalam mode debug. Untuk membaca peringatan di dalamnya, jalankan Claude Code dari shell Anda dengan `claude --debug-file <path>`, lalu buka file di path tersebut.

5824 5953 

5825Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan output teks, di luar [background session](https://code.claude.com/docs/id/agent-view.md), cari peringatan startup di stderr.5954Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan output teks, di luar [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), cari peringatan startup di stderr.

5826 5955 

5827Sebelum v2.1.305, lihat juga di stderr dalam sesi interaktif, termasuk untuk peringatan aturan izin yang sekarang ditampilkan sebagai baris di bawah banner.5956Sebelum v2.1.305, periksa juga stderr dalam sesi interaktif, termasuk untuk peringatan aturan izin yang kini ditampilkan sebagai baris di bawah banner.

5828 5957 

5829### Claude Code keluar setelah kesalahan antarmuka yang tidak dapat dipulihkan5958### Claude Code exited after an unrecoverable interface error

5830 5959 

5831Claude Code mencetak pesan ini ketika keluar karena antarmuka terminalnya mengalami kesalahan yang tidak dapat dipulihkan, di salah satu renderer. Kalimat kedua muncul hanya ketika kesalahan terjadi saat renderer [fullscreen](https://code.claude.com/docs/id/fullscreen.md) sedang memulai:5960Claude Code mencetak pesan ini saat keluar karena antarmuka terminalnya mengalami error yang tidak dapat dipulihkan, pada renderer mana pun. Kalimat kedua hanya muncul jika error terjadi saat renderer [fullscreen](https://code.claude.com/docs/id/fullscreen.md) sedang dimulai:

5832 5961 

5833```text theme={null}5962```text theme={null}

5834Claude Code exited after an unrecoverable interface error (<error>). It happened while the fullscreen renderer was starting, so the next launch will use the classic renderer (CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 forces that any time).5963Claude Code exited after an unrecoverable interface error (<error>). It happened while the fullscreen renderer was starting, so the next launch will use the classic renderer (CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 forces that any time).

5835```5964```

5836 5965 

5837**Yang harus dilakukan:**5966**Yang perlu dilakukan:**

5838 5967 

5839* Mulai Claude Code lagi. Untuk melanjutkan percakapan, jalankan `claude --resume` di direktori yang sama.5968* Jalankan Claude Code lagi. Untuk melanjutkan percakapan, jalankan `claude --resume` di direktori yang sama.

5840* Jika pesan menyebutkan renderer fullscreen, [Fullscreen rendering](https://code.claude.com/docs/id/fullscreen.md#fullscreen-renderer-didnt-finish-starting) mengatakan apa yang dilakukan peluncuran berikutnya, yang tergantung pada cara Anda mengaktifkan fullscreen, dan cara mencoba fullscreen lagi atau tetap menggunakan renderer klasik.5969* Jika pesan menyebut renderer fullscreen, [Rendering fullscreen](https://code.claude.com/docs/id/fullscreen.md#fullscreen-renderer-didnt-finish-starting) menjelaskan apa yang dilakukan peluncuran berikutnya, yang bergantung pada cara Anda mengaktifkan fullscreen, serta cara mencoba fullscreen lagi atau tetap menggunakan renderer klasik.

5841 5970 

5842Sebelum v2.1.236, Claude Code keluar tanpa mencetak pesan setelah kesalahan jenis ini.5971Sebelum v2.1.236, Claude Code keluar tanpa mencetak pesan setelah error semacam ini.

5843 5972 

5844### Deskripsi agent melebihi batas token 15.0k5973### Agent descriptions are over the 15.0k-token limit

5845 5974 

5846Claude Code menampilkan peringatan ini sebagai pemberitahuan startup dalam tampilan percakapan daripada di stderr. Deskripsi gabungan dari [subagents](https://code.claude.com/docs/id/sub-agents.md) Anda, kecuali yang bawaan, melebihi 15.000 token seperti yang diperkirakan Claude Code. Setiap agent menghitung namanya ditambah frontmatter `description` nya. Claude Code memuat setiap agent terlepas dari apakah totalnya melebihi batas, jadi peringatan tidak mengubah apa yang dimuat.5975Claude Code menampilkan peringatan ini sebagai pemberitahuan startup di tampilan percakapan, bukan di stderr. Gabungan deskripsi [subagent](https://code.claude.com/docs/id/sub-agents.md) Anda, kecuali yang bawaan, melebihi 15.000 token menurut estimasi Claude Code. Setiap agent menghitung namanya ditambah frontmatter `description`-nya. Claude Code memuat setiap agent terlepas dari apakah totalnya melebihi batas atau tidak, jadi peringatan ini tidak mengubah apa yang dimuat.

5847 5976 

5848```text theme={null}5977```text theme={null}

5849Agent descriptions are over the 15.0k-token limit (~16.2k tokens) · ask Claude to trim agent descriptions in .claude/agents/5978Agent descriptions are over the 15.0k-token limit (~16.2k tokens) · ask Claude to trim agent descriptions in .claude/agents/

5850```5979```

5851 5980 

5852**Yang harus dilakukan:**5981**Yang perlu dilakukan:**

5853 5982 

5854* Perpendek frontmatter `description` dari file agent Anda, atau minta Claude untuk memangkasnya untuk Anda.5983* Persingkat frontmatter `description` dari file agent Anda, atau minta Claude untuk memangkasnya untuk Anda.

5855* Hapus file agent yang tidak lagi Anda gunakan.5984* Hapus file agent yang tidak lagi Anda gunakan.

5856 5985 

5857### Hook needs quotes around a path with a space5986### Hook needs quotes around a path with a space

5858 5987 

5859Notifikasi dalam tampilan percakapan ini berarti skrip sebuah hook tidak dijalankan karena jalurnya mengandung spasi dan tidak diberi tanda kutip. Hook tersebut adalah hook [`asyncRewake`](https://code.claude.com/docs/id/hooks#run-hooks-in-the-background) dalam bentuk shell. Dalam `command`-nya, interpreter seperti `python3` diikuti oleh placeholder jalur tanpa tanda kutip, dan jalur yang telah diselesaikan mengandung spasi.5988Notifikasi di tampilan percakapan ini berarti skrip sebuah hook tidak berjalan karena path-nya mengandung spasi dan tidak diberi tanda kutip. Hook tersebut adalah hook [`asyncRewake`](https://code.claude.com/docs/id/hooks#run-hooks-in-the-background) dalam bentuk shell. Dalam `command`-nya, sebuah interpreter seperti `python3` diikuti oleh placeholder path tanpa tanda kutip, dan path yang di-resolve mengandung spasi.

5860 5989 

5861Notifikasi dimulai dengan nama event hook dan menyebutkan skripnya:5990Notifikasi diawali dengan nama event hook dan menyebut skripnya:

5862 5991 

5863```text theme={null}5992```text theme={null}

5864Stop hook needs quotes around a path with a space (check.py)5993Stop hook needs quotes around a path with a space (check.py)

5865```5994```

5866 5995 

5867**Yang harus dilakukan:**5996**Yang perlu dilakukan:**

5868 5997 

5869* Dalam `command` dari hook yang menjalankan skrip yang disebutkan notifikasi, apit jalur dengan tanda kutip ganda. Dalam file JSON, tuliskan sebagai `"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/hooks/check.py\""`.5998* Dalam `command` dari hook yang menjalankan skrip yang disebut notifikasi, apit path dengan tanda kutip ganda. Dalam file JSON, tulis sebagai `"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/hooks/check.py\""`.

5870 5999 

5871### Instruction file not loaded6000### Instruction file not loaded

5872 6001 

5873Pemberitahuan dalam tampilan percakapan sesi interaktif ini berarti sebuah [file memori](https://code.claude.com/docs/id/memory.md#how-claude-md-files-load) yang ada tidak dimuat. Sebuah pembatasan baca sedang berlaku.6002Pemberitahuan di tampilan percakapan sesi interaktif ini berarti sebuah [file memori](https://code.claude.com/docs/id/memory.md#how-claude-md-files-load) yang ada tidak dimuat. Sebuah pembatasan baca sedang berlaku.

5874 6003 

5875```text theme={null}6004```text theme={null}

5876Instruction file not loaded (a Read deny rule covers it):6005Instruction file not loaded (a Read deny rule covers it):

5877path: .claude/rules/shared.md6006path: .claude/rules/shared.md

5878```6007```

5879 6008 

5880Bagian dalam tanda kurung menyebutkan alasannya, misalnya:6009Bagian dalam tanda kurung menyebut alasannya, misalnya:

5881 6010 

5882* **`a Read deny rule covers it`**: sebuah [aturan deny](https://code.claude.com/docs/id/permissions.md#read-and-edit) `Read` cocok dengan jalur file seperti yang tertulis atau dengan tujuan yang diarahkan oleh link pada file tersebut6011* **`a Read deny rule covers it`**: sebuah [aturan deny](https://code.claude.com/docs/id/permissions.md#read-and-edit) `Read` cocok dengan path file sebagaimana tertulis atau dengan tujuan tautan pada file tersebut

5883* **`it's read from outside your working directories, where reads are blocked`**: file diselesaikan ke luar [direktori kerja](https://code.claude.com/docs/id/settings-reference.md#permissions-blockreadsoutsideworkingdirectories) sementara [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) aktif6012* **`it's read from outside your working directories, where reads are blocked`**: file di-resolve ke luar [direktori kerja](https://code.claude.com/docs/id/settings-reference.md#permissions-blockreadsoutsideworkingdirectories) saat [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) aktif

5884* **`where it leads couldn't be worked out`**: misalnya, file adalah link yang mengarah kembali ke dirinya sendiri, secara langsung atau melalui link lain6013* **`where it leads couldn't be worked out`**: misalnya, file tersebut adalah tautan yang mengarah kembali ke dirinya sendiri, secara langsung atau melalui tautan lain

5885 6014 

5886Ketika file memori milik sebuah subdirektori tidak dapat dimuat saat Claude bekerja dengan file di sana, baris yang sama muncul dalam percakapan selama giliran tersebut. Ketika lebih banyak file yang ditahan daripada yang disebutkan baris-baris tersebut, baris terakhir menghitung sisanya, seperti `and 3 more instruction files not loaded`.6015Ketika file memori milik sebuah subdirektori tidak dapat dimuat saat Claude bekerja dengan file di sana, baris yang sama muncul di percakapan selama giliran tersebut. Ketika lebih banyak file yang ditahan daripada yang disebut oleh baris-baris tersebut, baris terakhir menghitung sisanya, seperti `and 3 more instruction files not loaded`.

5887 6016 

5888**Yang harus dilakukan:**6017**Yang perlu dilakukan:**

5889 6018 

5890* Tidak ada, jika pembatasan tersebut memang disengaja: sesi berjalan tanpa instruksi dari file tersebut.6019* Tidak ada, jika pembatasan tersebut memang disengaja: sesi berjalan tanpa instruksi dari file tersebut.

5891* Untuk memuat file yang ditahan karena `a Read deny rule covers it`, [hapus atau persempit aturan tersebut](https://code.claude.com/docs/id/permissions.md#manage-permissions). Kemudian mulai sesi baru.6020* Untuk memuat file yang ditahan karena `a Read deny rule covers it`, [hapus atau persempit aturan tersebut](https://code.claude.com/docs/id/permissions.md#manage-permissions). Lalu mulai sesi baru.

5892* Untuk memuat file yang ditahan karena `it's read from outside your working directories, where reads are blocked`, pindahkan file tersebut atau target link-nya ke dalam direktori kerja. Kemudian mulai sesi baru.6021* Untuk memuat file yang ditahan karena `it's read from outside your working directories, where reads are blocked`, pindahkan file tersebut atau target tautannya ke dalam direktori kerja. Lalu mulai sesi baru.

5893* Untuk memuat file yang ditahan karena `where it leads couldn't be worked out`, periksa apakah file tersebut adalah link yang mengarah kembali ke dirinya sendiri. Jika ya, arahkan link ke file yang ada atau letakkan file biasa di tempatnya. Kemudian mulai sesi baru.6022* Untuk memuat file yang ditahan karena `where it leads couldn't be worked out`, periksa apakah file tersebut adalah tautan yang mengarah kembali ke dirinya sendiri. Jika ya, arahkan tautan ke file yang ada atau letakkan file biasa di tempatnya. Lalu mulai sesi baru.

5894 6023 

5895Sebelum v2.1.292, pemberitahuan menyebutkan file di akhir baris yang sama setelah alasannya.6024Sebelum v2.1.292, pemberitahuan menyebut file di akhir baris yang sama setelah alasannya.

5896 6025 

5897### Skill, command, atau workflow tidak dimuat karena namanya dicadangkan6026### Skill, perintah, atau workflow tidak dimuat karena namanya dicadangkan

5898 6027 

5899Folder skill, frontmatter `name`, file atau subfolder di `.claude/commands/`, atau [saved workflow](https://code.claude.com/docs/id/workflows.md#save-the-workflow-for-reuse) menggunakan nama `anthropic-skills` atau nama yang dimulai dengan `anthropic-skills:`. Claude Code [mencadangkan nama itu untuk skills yang disinkronkan dari claude.ai](https://code.claude.com/docs/id/skills.md#names-reserved-for-synced-skills) dan tidak memuat item itu.6028Sebuah folder skill, `name` frontmatter, file atau subfolder di `.claude/commands/`, atau [workflow tersimpan](https://code.claude.com/docs/id/workflows.md#save-the-workflow-for-reuse) menggunakan nama `anthropic-skills` atau nama yang diawali dengan `anthropic-skills:`. Claude Code [mencadangkan nama tersebut untuk skill yang disinkronkan dari claude.ai](https://code.claude.com/docs/id/skills.md#names-reserved-for-synced-skills) dan tidak memuat item tersebut.

5900 6029 

5901Claude Code menampilkan peringatan ini sebagai pemberitahuan startup dalam tampilan percakapan daripada di stderr:6030Claude Code menampilkan peringatan ini sebagai pemberitahuan startup di tampilan percakapan, bukan di stderr:

5902 6031 

5903```text theme={null}6032```text theme={null}

5904Not loaded: rename .claude/skills/anthropic-skills, then restart — its name uses "anthropic-skills", a name reserved for the skills synced from your claude.ai account6033Not loaded: rename .claude/skills/anthropic-skills, then restart — its name uses "anthropic-skills", a name reserved for the skills synced from your claude.ai account

5905```6034```

5906 6035 

5907Pemberitahuan menyebutkan apa yang harus diubah untuk item pertama yang ditolak: folder atau file untuk diubah nama, baris `name:` untuk diedit, atau workflow untuk diubah nama. Ketika lebih dari satu item ditolak, pemberitahuan berakhir dengan hitungan seperti `· 2 more`, dan [log debug](https://code.claude.com/docs/id/debug-your-config.md) menyebutkan masing-masing.6036Pemberitahuan menyebut apa yang perlu diubah untuk item pertama yang ditolaknya: folder atau file yang perlu diganti namanya, baris `name:` yang perlu diedit, atau workflow yang perlu diganti namanya. Ketika lebih dari satu item ditolak, pemberitahuan diakhiri dengan hitungan seperti `· 2 more`, dan [log debug](https://code.claude.com/docs/id/debug-your-config.md) menyebut masing-masing item.

5908 6037 

5909**Yang harus dilakukan:**6038**Yang perlu dilakukan:**

5910 6039 

5911* Ubah nama item yang dinamai pemberitahuan, atau edit baris `name:` yang ditunjuknya, kemudian restart sesi.6040* Ganti nama item yang disebut pemberitahuan, atau edit baris `name:` yang ditunjuknya, lalu mulai ulang sesi.

5912 6041 

5913Sebelum v2.1.282, Claude Code memuat skills dan commands dengan nama-nama ini.6042Sebelum v2.1.282, Claude Code memuat skill dan perintah dengan nama-nama ini.

5914 6043 

5915### Skill or command name refused6044### Skill or command name refused

5916 6045 

5917Pemberitahuan startup ini berarti Claude Code menolak nama dari setidaknya satu [skill atau perintah kustom](https://code.claude.com/docs/id/skills.md), sehingga item tersebut tidak dimuat atau dimuat tanpa bidang `name`-nya:6046Pemberitahuan startup ini berarti Claude Code menolak nama dari setidaknya satu [skill atau perintah kustom](https://code.claude.com/docs/id/skills.md), sehingga item tersebut tidak dimuat atau dimuat tanpa field `name`-nya:

5918 6047 

5919```text theme={null}6048```text theme={null}

59201 skill or command name refused: run with --debug to see which ([names]), rename, then restart — a name may not hold hidden, direction-changing or blank-like characters, < or >, or be over 256 characters60491 skill or command name refused: run with --debug to see which ([names]), rename, then restart — a name may not hold hidden, direction-changing or blank-like characters, < or >, or be over 256 characters

5921```6050```

5922 6051 

5923* **Tidak dimuat**: Claude Code menolak nama yang digunakan oleh skill atau perintah, seperti nama direktorinya atau nama file atau subfolder file perintah. Item tersebut tidak ada di menu `/` dan Claude tidak dapat memanggilnya. Barisnya dalam log debug berbunyi `<name> is not offered`.6052* **Tidak dimuat**: Claude Code menolak nama yang digunakan skill atau perintah, seperti nama direktorinya atau nama atau subfolder file perintah. Item tersebut tidak ada di menu `/` dan Claude tidak dapat memanggilnya. Barisnya di log debug berbunyi `<name> is not offered`.

5924* **Bidang `name` diabaikan**: Claude Code menolak frontmatter `name` sebuah skill. Skill tersebut tetap dimuat, tetapi menu `/` tidak menampilkan nilai `name` dan mengetiknya tidak memanggil skill tersebut. Barisnya dalam log debug berbunyi `<name value> is not shown for <skill>`.6053* **Field `name` diabaikan**: Claude Code menolak `name` frontmatter sebuah skill. Skill tetap dimuat, tetapi menu `/` tidak menampilkan nilai `name` dan mengetiknya tidak memanggil skill tersebut. Barisnya di log debug berbunyi `<name value> is not shown for <skill>`.

5925 6054 

5926**Yang harus dilakukan:**6055**Yang perlu dilakukan:**

5927 6056 

5928* Mulai Claude Code dengan `claude --debug` dari shell Anda dan cari `[names]` di [log debug](https://code.claude.com/docs/id/debug-your-config.md). Setiap nama yang dihitung pemberitahuan memiliki satu baris di sana. Baris tersebut menuliskan beberapa karakter tersembunyi sebagai kode, seperti `\u{200B}` untuk zero-width space, sehingga Anda dapat melihat letaknya.6057* Jalankan Claude Code dengan `claude --debug` dari shell Anda dan cari `[names]` di [log debug](https://code.claude.com/docs/id/debug-your-config.md). Setiap nama yang dihitung pemberitahuan memiliki satu baris di sana. Baris tersebut menuliskan beberapa karakter tersembunyi sebagai kode, seperti `\u{200B}` untuk spasi nol-lebar, sehingga Anda dapat melihat letaknya.

5929* Hapus [karakter yang tidak boleh ada dalam nama skill](https://code.claude.com/docs/id/skills.md#characters-a-skill-name-cant-hold) dengan mengganti nama folder atau file atau mengedit baris `name:`, atau perpendek nama yang lebih dari 256 karakter. Kemudian restart sesi, kecuali file berada di direktori yang [dipantau perubahannya](https://code.claude.com/docs/id/skills.md#live-change-detection) oleh Claude Code. Untuk skill dari plugin yang tidak Anda tulis, minta pembuat plugin untuk mengganti namanya.6058* Hapus [karakter yang tidak boleh ada dalam nama skill](https://code.claude.com/docs/id/skills.md#characters-a-skill-name-cant-hold) dengan mengganti nama folder atau file atau mengedit baris `name:`, atau persingkat nama yang melebihi 256 karakter. Lalu mulai ulang sesi, kecuali jika file berada di direktori yang [dipantau perubahannya](https://code.claude.com/docs/id/skills.md#live-change-detection) oleh Claude Code. Untuk skill dari plugin yang tidak Anda tulis, minta pembuat plugin untuk mengganti namanya.

5930 6059 

5931### Workspace belum dipercaya6060### Workspace has not been trusted

5932 6061 

5933Claude Code menemukan aturan `permissions.allow` atau entri `permissions.additionalDirectories` dalam `.claude/settings.json` atau `.claude/settings.local.json` proyek dan tidak menerapkannya, karena [aturan allow dari pengaturan proyek memerlukan kepercayaan workspace](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust). Jumlah, nama pengaturan, dan file yang dinamai dalam pesan bervariasi dengan konfigurasi Anda. Aturan `deny` dan `ask` tidak terpengaruh.6062Claude Code menemukan aturan `permissions.allow` atau entri `permissions.additionalDirectories` di `.claude/settings.json` atau `.claude/settings.local.json` proyek dan tidak menerapkannya, karena [aturan allow dari pengaturan proyek memerlukan kepercayaan workspace](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust). Jumlah, nama pengaturan, dan file yang disebut dalam pesan bervariasi sesuai konfigurasi Anda. Aturan `deny` dan `ask` tidak terpengaruh.

5934 6063 

5935```text theme={null}6064```text theme={null}

5936Ignoring 2 permissions.allow entries from .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/Users/you/project"].hasTrustDialogAccepted: true in /Users/you/.claude.json.6065Ignoring 2 permissions.allow entries from .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/Users/you/project"].hasTrustDialogAccepted: true in /Users/you/.claude.json.

5937```6066```

5938 6067 

5939**Yang harus dilakukan:**6068**Yang perlu dilakukan:**

5940 6069 

5941* Jalankan `claude` di direktori dan terima dialog kepercayaan. [Project allow rules and workspace trust](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust) mengatakan folder mana yang dicakup oleh penerimaan tersebut.6070* Jalankan `claude` di direktori tersebut dan terima dialog kepercayaan. [Aturan allow proyek dan kepercayaan workspace](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust) menjelaskan folder mana yang dicakup oleh penerimaan tersebut.

5942* Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan `-p` tidak ada dialog yang ditampilkan. Atur entri `hasTrustDialogAccepted` dalam `~/.claude.json` menggunakan kunci `projects` yang tepat yang dicetak pesan.6071* Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan `-p` tidak ada dialog yang ditampilkan. Atur entri `hasTrustDialogAccepted` di `~/.claude.json` menggunakan key `projects` persis seperti yang dicetak pesan.

5943* Jika pesan menyebutkan `.claude/settings.local.json` dan Anda memulai Claude Code di luar repositori git atau di direktori home Anda, perbarui ke v2.1.200 atau lebih baru. Versi 2.1.196 hingga 2.1.199 memperlakukan `.claude/settings.local.json` Anda sendiri sebagai yang disediakan repositori di workspace tersebut. Pada v2.1.207 dan lebih baru, pembaruan tidak cukup di luar repositori git jika Anda belum mempercayai folder: menentukan bahwa folder tidak berada di dalam repositori menjalankan git, dan Claude Code menjalankan pemeriksaan itu hanya setelah Anda menerima dialog kepercayaan, jadi gunakan langkah pertama. Direktori home Anda dan [configuration home](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust) lainnya dikecualikan dan tidak menunggu dialog. Lihat [Project allow rules and workspace trust](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust).6072* Jika pesan menyebut `.claude/settings.local.json` dan Anda menjalankan Claude Code di luar repositori git atau di direktori home Anda, perbarui ke v2.1.200 atau lebih baru. Versi 2.1.196 hingga 2.1.199 memperlakukan `.claude/settings.local.json` milik Anda sendiri sebagai file yang disediakan repositori di workspace tersebut. Pada v2.1.207 dan yang lebih baru, memperbarui saja tidak cukup di luar repositori git jika Anda belum memercayai folder tersebut: menentukan bahwa sebuah folder tidak berada di dalam repositori menjalankan git, dan Claude Code menjalankan pemeriksaan tersebut hanya setelah Anda menerima dialog kepercayaan, jadi gunakan langkah pertama. Direktori home Anda dan [direktori home konfigurasi](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust) lainnya dikecualikan dan tidak menunggu dialog. Lihat [Aturan allow proyek dan kepercayaan workspace](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust).

5944 6073 

5945### Direktori kerja adalah jalur jaringan6074### Direktori kerja adalah path jaringan

5946 6075 

5947Claude Code tidak menambahkan jalur jaringan sebagai direktori kerja. Mencari jalur jaringan dapat menghubungi host yang dinamainya, dan di Windows kontak itu dapat mengirim kredensial Anda ke host. Oleh karena itu, Claude Code menolak jalur tersebut tanpa mencarinya.6076Claude Code tidak menambahkan path jaringan sebagai direktori kerja. Mencari path jaringan dapat menghubungi host yang disebutnya, dan di Windows kontak tersebut dapat mengirimkan kredensial Anda ke host. Oleh karena itu, Claude Code menolak path tersebut tanpa mencarinya.

5948 6077 

5949Anda melihat pesan ini ketika Anda menjalankan `/add-dir` dengan jalur jaringan:6078Anda melihat pesan ini saat menjalankan `/add-dir` dengan path jaringan:

5950 6079 

5951```text theme={null}6080```text theme={null}

5952\\server\share is a network path, which cannot be added as a working directory. On Windows, map the share to a drive letter and pass it at launch with --add-dir (a drive letter added mid-session does not yet carry remote-read trust).6081\\server\share is a network path, which cannot be added as a working directory. On Windows, map the share to a drive letter and pass it at launch with --add-dir (a drive letter added mid-session does not yet carry remote-read trust).

5953```6082```

5954 6083 

5955Ketika Anda meneruskannya saat startup, dengan `--add-dir` atau dalam `permissions.additionalDirectories`, Claude Code dimulai tanpa direktori tersebut. Dalam sesi interaktif, Anda tidak melihat pesan ini saat startup, karena pesan tersebut masuk ke log debug bersama [peringatan startup](#configuration-warnings) lainnya.6084Jika Anda memberikannya saat startup, dengan `--add-dir` atau di `permissions.additionalDirectories`, Claude Code dimulai tanpa direktori tersebut. Dalam sesi interaktif Anda tidak melihat pesan saat startup, karena pesan masuk ke log debug bersama [peringatan startup](#configuration-warnings) lainnya.

5956 6085 

5957Jalur yang Claude Code tolak dengan cara ini termasuk:6086Path yang ditolak Claude Code dengan cara ini meliputi:

5958 6087 

5959* Berbagi UNC seperti `\\server\share`6088* Share UNC seperti `\\server\share`

5960* Jalur automount seperti `/net/<host>`, kecuali Anda meluncurkan Claude Code dari direktori di bawah automount host itu. Pembacaan di bawah automount itu tetap melalui [pemeriksaan jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths).6089* Path automount seperti `/net/<host>`, kecuali jika Anda menjalankan Claude Code dari direktori di bawah automount host tersebut. Pembacaan di bawah automount tersebut tetap melalui [pemeriksaan path jaringan](https://code.claude.com/docs/id/permissions.md#network-paths).

5961* Jalur lokal yang mencapai lokasi jaringan melalui symbolic link atau junction6090* Path lokal yang menjangkau lokasi jaringan melalui tautan simbolik atau junction

5962 6091 

5963Huruf drive yang dipetakan dan jalur `\\wsl$` tidak dihitung sebagai jalur jaringan.6092Huruf drive yang dipetakan dan path `\\wsl$` tidak dihitung sebagai path jaringan.

5964 6093 

5965**Yang harus dilakukan:**6094**Yang perlu dilakukan:**

5966 6095 

5967* Di Windows, petakan berbagi ke huruf drive dan teruskan drive tersebut pada peluncuran. Di PowerShell, misalnya, jalankan `net use Z: \\server\share` lalu `claude --add-dir Z:\`.6096* Di Windows, petakan share ke huruf drive dan berikan drive tersebut saat peluncuran. Di PowerShell, misalnya, jalankan `net use Z: \\server\share` lalu `claude --add-dir Z:\`.

5968* Di macOS atau Linux, pasang berbagi di jalur lokal dan tambahkan jalur itu sebagai gantinya.6097* Di macOS atau Linux, mount share di path lokal dan tambahkan path tersebut sebagai gantinya.

5969* Jika jalur ada di `permissions.additionalDirectories`, hapus dari file pengaturan yang mencantumnya.6098* Jika path ada di `permissions.additionalDirectories`, hapus dari file pengaturan yang mencantumkannya.

5970 6099 

5971Sebelum v2.1.257, Claude Code menerima jalur jaringan yang dapat dijangkau sebagai direktori kerja.6100Sebelum v2.1.257, Claude Code menerima path jaringan yang dapat dijangkau sebagai direktori kerja.

5972 6101 

5973### Pengaturan yang dikelola jarak jauh gagal dimuat6102### Remote managed settings failed to load

5974 6103 

5975Sesi Anda memenuhi syarat untuk [server-managed settings](https://code.claude.com/docs/id/server-managed-settings.md), tetapi Claude Code tidak dapat mengambilnya atau tidak dapat menerapkan apa yang dikembalikan server, jadi menampilkan peringatan ini dalam sesi interaktif dan di tab Code Claude Desktop.6104Sesi Anda memenuhi syarat untuk [pengaturan yang dikelola server](https://code.claude.com/docs/id/server-managed-settings.md), tetapi Claude Code tidak dapat mengambilnya atau tidak dapat menerapkan apa yang dikembalikan server, sehingga menampilkan peringatan ini dalam sesi interaktif dan di tab Code Claude Desktop.

5976 6105 

5977Penyebab dalam tanda kurung menyebutkan apa yang gagal, seperti `network error`, `request timed out`, atau `authentication rejected (401)`. Penyebab `no setting in the server response could be applied as written` berarti server menjawab tetapi tidak ada pengaturan yang dikembalikannya yang lulus [validation](https://code.claude.com/docs/id/server-managed-settings.md#invalid-entries-in-delivered-settings). Sebelum v2.1.282, penyebab ini berbunyi `server returned invalid settings`.6106Penyebab dalam tanda kurung menyebut apa yang gagal, seperti `network error`, `request timed out`, atau `authentication rejected (401)`. Penyebab `no setting in the server response could be applied as written` berarti server menjawab tetapi tidak ada pengaturan yang dikembalikannya yang lolos [validasi](https://code.claude.com/docs/id/server-managed-settings.md#invalid-entries-in-delivered-settings). Sebelum v2.1.282, penyebab ini berbunyi `server returned invalid settings`.

5978 6107 

5979Sisa baris mengatakan kebijakan mana yang dijalankan sesi:6108Sisa baris menyebut kebijakan mana yang digunakan sesi:

5980 6109 

5981* **Pengaturan di-cache dari pengambilan sebelumnya yang berhasil**: Claude Code menjalankan sesi pada kebijakan yang di-cache itu, kecuali [variabel lingkungan yang ditahan](https://code.claude.com/docs/id/server-managed-settings.md#fetch-and-caching-behavior), dan baris berbunyi `using cached policy`.6110* **Pengaturan yang di-cache dari pengambilan berhasil sebelumnya**: Claude Code menjalankan sesi dengan kebijakan yang di-cache tersebut, kecuali [environment variable yang ditahan](https://code.claude.com/docs/id/server-managed-settings.md#fetch-and-caching-behavior), dan baris berbunyi `using cached policy`.

5982* **Tidak ada cache**: Claude Code menjalankan sesi tanpa server-managed settings, dan baris berbunyi `no remote policy applied`.6111* **Tidak ada cache**: Claude Code menjalankan sesi tanpa pengaturan yang dikelola server, dan baris berbunyi `no remote policy applied`.

5983 6112 

5984Di tab Code, peringatan muncul sebagai baris dalam percakapan ketika Anda mengirim pesan, dan baris baru muncul ketika status pengambilan berubah. Tiga pesan terkait muncul dengan cara yang sama:6113Di tab Code, peringatan muncul sebagai baris di percakapan saat Anda mengirim pesan, dan baris baru muncul ketika status pengambilan berubah. Tiga pesan terkait muncul dengan cara yang sama:

5985 6114 

5986* `Remote managed settings are still loading`: pengambilan masih berjalan ketika sesi dilanjutkan6115* `Remote managed settings are still loading`: pengambilan masih berjalan saat sesi dilanjutkan

5987* `Remote managed settings did not load`: pengambilan berakhir tanpa jawaban6116* `Remote managed settings did not load`: pengambilan berakhir tanpa jawaban

5988* `Remote managed settings have now loaded`: pengaturan dimuat setelah salah satu peringatan ini, dan sisa baris mengatakan apakah kebijakan jarak jauh berlaku6117* `Remote managed settings have now loaded`: pengaturan dimuat setelah salah satu peringatan ini, dan sisa baris menyebut apakah kebijakan remote berlaku

5989 6118 

5990**Yang harus dilakukan:**6119**Yang perlu dilakukan:**

5991 6120 

5992* Bertindak atas penyebab yang dinamai pesan: untuk penyebab jaringan, periksa bahwa mesin ini dapat menjangkau `api.anthropic.com`; untuk penyebab autentikasi, periksa sign-in Anda dengan `/status`6121* Tindak lanjuti penyebab yang disebut pesan: untuk penyebab jaringan, periksa bahwa mesin ini dapat menjangkau `api.anthropic.com`; untuk penyebab autentikasi, periksa status masuk Anda dengan `/status`

5993* Untuk `no setting in the server response could be applied as written`, minta administrator Anda untuk memperbaiki pengaturan di server6122* Untuk `no setting in the server response could be applied as written`, minta admin Anda untuk memperbaiki pengaturan di server

5994* Jalankan `/status` atau `claude doctor` untuk diagnostik lengkap6123* Jalankan `/status` atau `claude doctor` untuk diagnostik lengkap

5995 6124 

5996Sebelum v2.1.248, Claude Code melaporkan pengambilan pengaturan yang gagal hanya dalam log debug.6125Sebelum v2.1.248, Claude Code melaporkan pengambilan pengaturan yang gagal hanya di log debug.

5997 6126 

5998### Claude Code tidak dapat memuat pengaturan organisasi Anda6127### Claude Code tidak dapat memuat pengaturan organisasi Anda

5999 6128 

6000Sesi Anda belum dimulai karena pengaturan organisasi Anda, termasuk [server-managed settings](https://code.claude.com/docs/id/server-managed-settings.md) miliknya, harus dimuat terlebih dahulu dan Claude Code tidak dapat memuatnya. Misalnya:6129Sesi Anda belum dimulai karena pengaturan organisasi Anda, termasuk [pengaturan yang dikelola server](https://code.claude.com/docs/id/server-managed-settings.md), harus dimuat terlebih dahulu dan Claude Code tidak dapat memuatnya. Misalnya:

6001 6130 

6002```text theme={null}6131```text theme={null}

6003Claude Code couldn't reach Anthropic to load your organization's settings (could not connect). <Organization name> requires them before a session can start.6132Claude Code couldn't reach Anthropic to load your organization's settings (could not connect). <Organization name> requires them before a session can start.


6005 6134 

6006Jika pesan berada dalam dialog berjudul `Claude Code can't start this session yet`, dialog akan tertutup dan sesi dimulai segera setelah pengaturan dimuat.6135Jika pesan berada dalam dialog berjudul `Claude Code can't start this session yet`, dialog akan tertutup dan sesi dimulai segera setelah pengaturan dimuat.

6007 6136 

6008Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dan dalam [background sessions](https://code.claude.com/docs/id/agent-view.md), Claude Code mencetak pesan tersebut dan keluar dengan status 1 sebagai gantinya.6137Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dan dalam [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), Claude Code mencetak pesan dan keluar dengan status 1 sebagai gantinya.

6009 6138 

6010**Yang harus dilakukan:**6139**Yang perlu dilakukan:**

6011 6140 

6012* **`could not connect`, atau `the reply came from a network proxy, not Anthropic`**: periksa koneksi jaringan Anda, dan pada jaringan perusahaan minta tim IT untuk mengizinkan HTTPS ke `api.anthropic.com/api/claude_code/policy_limits` dan `api.anthropic.com/api/claude_code/settings`. Kemudian pilih **Retry now**, atau jalankan perintah Anda lagi.6141* **`could not connect`, atau `the reply came from a network proxy, not Anthropic`**: periksa koneksi jaringan Anda, dan di jaringan perusahaan minta tim IT untuk mengizinkan HTTPS ke `api.anthropic.com/api/claude_code/policy_limits` dan `api.anthropic.com/api/claude_code/settings`. Lalu pilih **Retry now**, atau jalankan perintah Anda lagi.

6013* **`timed out`, `Anthropic returned an error`, atau `Anthropic asked it to retry shortly`**: biarkan dialog mencoba ulang, atau jalankan perintah Anda lagi nanti. Periksa [status.anthropic.com](https://status.anthropic.com) jika hal ini terus terjadi.6142* **`timed out`, `Anthropic returned an error`, atau `Anthropic asked it to retry shortly`**: biarkan dialog mencoba ulang, atau jalankan perintah Anda lagi nanti. Periksa [status.anthropic.com](https://status.anthropic.com) jika hal ini terus terjadi.

6014* **`still loading`, atau `couldn't verify your sign-in with Anthropic yet`**: biarkan dialog mencoba ulang, atau jalankan perintah Anda lagi. Jika pesan sign-in terus muncul kembali, masuk lagi dengan menjalankan `claude auth login` di shell Anda.6143* **`still loading`, atau `couldn't verify your sign-in with Anthropic yet`**: biarkan dialog mencoba ulang, atau jalankan perintah Anda lagi. Jika pesan masuk terus muncul kembali, masuk lagi dengan menjalankan `claude auth login` di shell Anda.

6015* **`Your Claude session has expired`**: sign-in yang tersimpan di mesin ini tidak lagi valid, sehingga mencoba ulang tidak akan membantu. Dalam dialog, pilih **Sign in again** untuk menutup Claude Code; kemudian, di shell Anda, jalankan `claude auth login`, yang tetap berfungsi meskipun sesi tidak dapat dimulai.6144* **`Your Claude session has expired`**: status masuk yang tersimpan di mesin ini tidak lagi valid, jadi mencoba ulang tidak akan membantu. Di dialog, pilih **Sign in again** untuk menutup Claude Code; lalu, di shell Anda, jalankan `claude auth login`, yang tetap berfungsi meskipun sesi tidak dapat dimulai.

6016* **`none of the settings the server returned could be applied as written`**: minta administrator Anda untuk memperbaiki [server-managed settings](https://code.claude.com/docs/id/server-managed-settings.md#invalid-entries-in-delivered-settings) organisasi, lalu coba lagi.6145* **`none of the settings the server returned could be applied as written`**: minta admin Anda untuk memperbaiki [pengaturan yang dikelola server](https://code.claude.com/docs/id/server-managed-settings.md#invalid-entries-in-delivered-settings) organisasi, lalu coba lagi.

6017 6146 

6018### Pengaturan yang dikelola tidak disetujui6147### Managed settings were not approved

6019 6148 

6020[Server-managed settings](https://code.claude.com/docs/id/server-managed-settings.md) organisasi Anda mencakup pengaturan yang memerlukan persetujuan Anda, dan Anda menolak [dialog persetujuan keamanan](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs), jadi Claude Code keluar tanpa menerapkannya:6149[Pengaturan yang dikelola server](https://code.claude.com/docs/id/server-managed-settings.md) organisasi Anda mencakup pengaturan yang memerlukan persetujuan Anda, dan Anda menolak [dialog persetujuan keamanan](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs), sehingga Claude Code keluar tanpa menerapkannya:

6021 6150 

6022```text theme={null}6151```text theme={null}

6023Managed settings were not approved; exiting without applying them.6152Managed settings were not approved; exiting without applying them.

6024```6153```

6025 6154 

6026**Yang harus dilakukan:**6155**Yang perlu dilakukan:**

6027 6156 

6028* Mulai Claude Code lagi dan setujui dialog untuk melanjutkan di bawah pengaturan organisasi Anda. Dialog yang ditolak tidak diingat, jadi muncul lagi pada startup berikutnya.6157* Jalankan Claude Code lagi dan setujui dialog untuk melanjutkan dengan pengaturan organisasi Anda. Dialog yang ditolak tidak diingat, sehingga akan muncul lagi pada startup berikutnya.

6029* Jika Anda tidak yakin tentang pengaturan yang dialog cantumkan, tanyakan kepada siapa pun yang memelihara pengaturan yang dikelola organisasi Anda sebelum menyetujui6158* Jika Anda ragu tentang pengaturan yang dicantumkan dialog, tanyakan kepada siapa pun yang mengelola pengaturan terkelola organisasi Anda sebelum menyetujuinya

6030 6159 

6031### Pengaturan terkelola memerlukan persetujuan Anda6160### Managed settings need your approval

6032 6161 

6033[Server-managed settings](https://code.claude.com/docs/id/server-managed-settings.md) organisasi Anda mencakup pengaturan yang memerlukan persetujuan Anda dalam [dialog persetujuan keamanan](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs). Perintah `claude plugin` yang Anda jalankan tidak dapat membaca dari keyboard, sehingga tidak dapat menampilkan dialog tersebut. Hal itu terjadi ketika Anda melakukan pipe atau mengalihkan inputnya dan, di macOS dan Linux, perintah tersebut juga tidak dapat membuka `/dev/tty`. Perintah berhenti sebelum membuat perubahan apa pun:6162[Pengaturan yang dikelola server](https://code.claude.com/docs/id/server-managed-settings.md) organisasi Anda mencakup pengaturan yang memerlukan persetujuan Anda di [dialog persetujuan keamanan](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs). Perintah `claude plugin` yang Anda jalankan tidak dapat membaca dari keyboard, sehingga tidak dapat menampilkan dialog tersebut. Hal itu terjadi saat Anda melakukan pipe atau redirect pada inputnya dan, di macOS dan Linux, perintah tersebut juga tidak dapat membuka `/dev/tty`. Perintah berhenti sebelum membuat perubahan apa pun:

6034 6163 

6035```text theme={null}6164```text theme={null}

6036Your organization's managed settings need your approval, which couldn't be asked for here. Run `claude` in a terminal and approve them, then run this command again.6165Your organization's managed settings need your approval, which couldn't be asked for here. Run `claude` in a terminal and approve them, then run this command again.

6037```6166```

6038 6167 

6039**Yang harus dilakukan:**6168**Yang perlu dilakukan:**

6040 6169 

6041* Jalankan `claude` di terminal dan setujui pengaturan ketika dialog muncul, lalu jalankan perintah `claude plugin` yang sama lagi. Claude Code menyimpan persetujuan dan pengaturan yang disetujui di [direktori konfigurasi](https://code.claude.com/docs/id/server-managed-settings.md#approval-memory) Anda. Jika perintah yang berhenti dijalankan sebagai pengguna lain atau dengan `CLAUDE_CONFIG_DIR` diatur, jalankan `claude` dengan cara yang sama sehingga keduanya menggunakan direktori yang sama.6170* Jalankan `claude` di terminal dan setujui pengaturan saat dialog muncul, lalu jalankan perintah `claude plugin` yang sama lagi. Claude Code menyimpan persetujuan dan pengaturan yang disetujui di [direktori konfigurasi](https://code.claude.com/docs/id/server-managed-settings.md#approval-memory) Anda. Jika perintah yang berhenti dijalankan sebagai pengguna lain atau dengan `CLAUDE_CONFIG_DIR` diatur, jalankan `claude` dengan cara yang sama agar keduanya menggunakan direktori yang sama.

6042 6171 

6043### Managed settings memblokir model default6172### Pengaturan terkelola memblokir model default

6044 6173 

6045[Managed settings](https://code.claude.com/docs/id/managed-settings.md) organisasi Anda memblokir model yang opsi Default diselesaikan dan setiap model yang dapat diturunkan. Sesi yang akan dimulai pada opsi Default keluar pada startup daripada menjalankan model yang diblokir. Pesan mana yang Anda lihat tergantung pada pengaturan yang memblokir. Ketika daftar [`deniedModels`](https://code.claude.com/docs/id/model-config#block-specific-models-or-versions) memblokir, pesan berbunyi:6174[Pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) organisasi Anda memblokir model yang di-resolve dari opsi Default dan setiap model yang dapat menjadi turunannya. Sesi yang akan dimulai dengan opsi Default keluar saat startup alih-alih menjalankan model yang diblokir. Pesan yang Anda lihat bergantung pada pengaturan yang memblokirnya. Ketika daftar [`deniedModels`](https://code.claude.com/docs/id/model-config#block-specific-models-or-versions) memblokirnya, pesan berbunyi:

6046 6175 

6047```text theme={null}6176```text theme={null}

6048Claude Code can't start: your organization's managed settings block the default model (claude-opus-5-5) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".6177Claude Code can't start: your organization's managed settings block the default model (claude-opus-5-5) in "deniedModels", and none of the models they allow can be used as the default instead. Ask your administrator to update "deniedModels" or "availableModels".

6049```6178```

6050 6179 

6051Ketika daftar `availableModels` dengan [`availableModelsMatch`](https://code.claude.com/docs/id/settings-reference#availablemodelsmatch) diatur ke `"exact"` menghilangkannya, pesan berbunyi:6180Ketika daftar `availableModels` dengan [`availableModelsMatch`](https://code.claude.com/docs/id/settings-reference#availablemodelsmatch) diatur ke `"exact"` tidak mencantumkannya, pesan berbunyi:

6052 6181 

6053```text theme={null}6182```text theme={null}

6054Claude Code can't start: your organization allows only the models listed in "availableModels", and none of them can be used as the default model (claude-opus-5-5 isn't listed). Ask your administrator to update "availableModels".6183Claude Code can't start: your organization allows only the models listed in "availableModels", and none of them can be used as the default model (claude-opus-5-5 isn't listed). Ask your administrator to update "availableModels".

6055```6184```

6056 6185 

6057**Yang harus dilakukan:**6186**Yang perlu dilakukan:**

6058 6187 

6059* Jika Anda mengelola pengaturan, tambahkan model yang dapat dijalankan pengguna Anda ke `availableModels`, atau persempit entri `deniedModels` yang memblokir setiap fallback. [Block specific models or versions](https://code.claude.com/docs/id/model-config.md#block-specific-models-or-versions) menjelaskan bagaimana opsi Default diturunkan6188* Jika Anda mengelola pengaturan tersebut, tambahkan model yang dapat dijalankan pengguna Anda ke `availableModels`, atau persempit entri `deniedModels` yang memblokir setiap fallback. [Memblokir model atau versi tertentu](https://code.claude.com/docs/id/model-config.md#block-specific-models-or-versions) menjelaskan bagaimana opsi Default beralih ke model yang lebih rendah

6060* Jika Anda tidak mengelolanya, kirim pesan ke administrator Anda. File pengaturan Anda sendiri tidak dapat memperluas daftar `availableModels` atau `deniedModels` yang dikelola6189* Jika Anda tidak mengelolanya, kirim pesan tersebut ke admin Anda. File pengaturan Anda sendiri tidak dapat memperluas daftar `availableModels` atau `deniedModels` yang terkelola

6061 6190 

6062### Managed settings tidak mengizinkan penyedia API ini6191### Pengaturan terkelola tidak mengizinkan penyedia API ini

6063 6192 

6064[Managed settings](https://code.claude.com/docs/id/managed-settings.md) organisasi Anda menetapkan daftar [`allowedProviders`](https://code.claude.com/docs/id/settings-reference#allowedproviders), dan penyedia API sesi tidak ada di dalamnya atau sesi menggunakan endpoint yang tidak disematkan dengan cara yang diperlukan entri itu. Claude Code menolak pada startup, sebelum login, atau ketika sesi berikutnya menghubungi API. Pesan dimulai dengan penyedia yang diizinkan:6193[Pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) organisasi Anda menetapkan daftar [`allowedProviders`](https://code.claude.com/docs/id/settings-reference#allowedproviders), dan penyedia API sesi tidak ada di dalamnya atau sesi menggunakan endpoint yang tidak dipatok sesuai yang disyaratkan entri tersebut. Claude Code menolak saat startup, sebelum login, atau saat sesi berikutnya menghubungi API. Pesan diawali dengan penyedia yang diizinkan:

6065 6194 

6066```text theme={null}6195```text theme={null}

6067Your organization's managed settings allow Claude Code to use: Anthropic API, Amazon Bedrock.6196Your organization's managed settings allow Claude Code to use: Anthropic API, Amazon Bedrock.

6068```6197```

6069 6198 

6070Ketika daftar kosong, pesan berbunyi sebagai gantinya:6199Ketika daftar kosong, pesan berbunyi:

6071 6200 

6072```text theme={null}6201```text theme={null}

6073Your organization's managed settings allow Claude Code to use no API provider at all (allowedProviders is an empty list), so it cannot start on this machine.6202Your organization's managed settings allow Claude Code to use no API provider at all (allowedProviders is an empty list), so it cannot start on this machine.

6074```6203```

6075 6204 

6076Ketika setiap entri tidak dikenali, parenthetical berbunyi `(allowedProviders lists only unrecognized entries)` sebagai gantinya.6205Ketika setiap entri tidak dikenali, bagian dalam tanda kurung berbunyi `(allowedProviders lists only unrecognized entries)`.

6077 6206 

6078**Yang harus dilakukan:**6207**Yang perlu dilakukan:**

6079 6208 

6080* Ikuti langkah `To continue:` pesan6209* Ikuti langkah-langkah `To continue:` dalam pesan

6081* Jika Anda mengelola pengaturan, baris pesan yang dimulai `Admins:` menyebutkan entri untuk ditambahkan atau nilai untuk disematkan, dan entri [`allowedProviders`](https://code.claude.com/docs/id/settings-reference#allowedproviders) mengatakan blok `env` sumber mana yang dapat menyematkannya6210* Jika Anda mengelola pengaturan tersebut, baris pesan yang diawali `Admins:` menyebut entri yang perlu ditambahkan atau nilai yang perlu dipatok, dan entri [`allowedProviders`](https://code.claude.com/docs/id/settings-reference#allowedproviders) menjelaskan blok `env` dari sumber mana yang dapat mematoknya

6082 6211 

6083### Server MCP diblokir oleh kebijakan yang dikelola perusahaan6212### MCP server is blocked by enterprise managed policy

6084 6213 

6085Anda memilih **Reconnect** pada server di `/mcp`, atau mengaktifkan kembali server yang dinonaktifkan di sana, dan pengaturan yang [membatasi server MCP](https://code.claude.com/docs/id/managed-mcp.md) memblokir server itu. Claude Code menolak untuk menghubungkannya dan menampilkan:6214Anda memilih **Reconnect** pada sebuah server di `/mcp`, atau mengaktifkan kembali server yang dinonaktifkan di sana, dan sebuah pengaturan yang [membatasi server MCP](https://code.claude.com/docs/id/managed-mcp.md) memblokir server tersebut. Claude Code menolak untuk menghubungkannya dan menampilkan:

6086 6215 

6087```text theme={null}6216```text theme={null}

6088MCP server <name> is blocked by enterprise managed policy6217MCP server <name> is blocked by enterprise managed policy

6089```6218```

6090 6219 

6091Salah satu dari pengaturan ini dapat menghasilkan pesan:6220Salah satu pengaturan berikut dapat menghasilkan pesan ini:

6092 6221 

6093* Entri [`deniedMcpServers`](https://code.claude.com/docs/id/managed-mcp#policy-based-control-with-allowlists-and-denylists) yang cocok dengan server, termasuk yang ada di `~/.claude/settings.json` Anda sendiri atau `.claude/settings.json` proyek6222* Entri [`deniedMcpServers`](https://code.claude.com/docs/id/managed-mcp#policy-based-control-with-allowlists-and-denylists) yang cocok dengan server, termasuk yang ada di `~/.claude/settings.json` milik Anda sendiri atau `.claude/settings.json` proyek

6094* Daftar [`allowedMcpServers`](https://code.claude.com/docs/id/managed-mcp#policy-based-control-with-allowlists-and-denylists) yang tidak cocok dengan server6223* Daftar [`allowedMcpServers`](https://code.claude.com/docs/id/managed-mcp#policy-based-control-with-allowlists-and-denylists) yang tidak cocok dengan server

6095* [`strictPluginOnlyCustomization`](https://code.claude.com/docs/id/settings-reference#strictpluginonlycustomization) dengan `mcp` terkunci, yang memblokir server yang dikonfigurasi dalam `~/.claude.json` dan `.mcp.json`6224* [`strictPluginOnlyCustomization`](https://code.claude.com/docs/id/settings-reference#strictpluginonlycustomization) dengan `mcp` dikunci, yang memblokir server yang dikonfigurasi di `~/.claude.json` dan `.mcp.json`

6096* [`disableClaudeAiConnectors`](https://code.claude.com/docs/id/mcp#disable-claude-ai-connectors), ketika server adalah konektor claude.ai6225* [`disableClaudeAiConnectors`](https://code.claude.com/docs/id/mcp#disable-claude-ai-connectors), ketika server adalah konektor claude.ai

6097 6226 

6098**Yang harus dilakukan:**6227**Yang perlu dilakukan:**

6099 6228 

6100* Periksa file pengaturan pengguna dan proyek Anda sendiri untuk salah satu pengaturan ini dan ubah atau hapus6229* Periksa file pengaturan pengguna dan proyek Anda sendiri untuk salah satu pengaturan ini lalu ubah atau hapus

6101* Jika tidak ada pengaturan Anda sendiri yang menjelaskan blokir, tanyakan administrator Anda pengaturan yang dikelola mana yang memblokir server6230* Jika tidak ada pengaturan Anda sendiri yang menjelaskan pemblokiran, tanyakan kepada admin Anda pengaturan terkelola mana yang memblokir server tersebut

6102 6231 

6103Sebelum v2.1.257, **Reconnect** dan re-enable di `/mcp` dapat menghubungkan server yang pembaruan kebijakan mid-session memblokir.6232Sebelum v2.1.257, **Reconnect** dan pengaktifan ulang di `/mcp` dapat menghubungkan server yang diblokir oleh pembaruan kebijakan di tengah sesi.

6104 6233 

6105### Nama server MCP dicadangkan6234### Nama server MCP dicadangkan

6106 6235 

6107Pesan ini menyebutkan salah satu server MCP Anda, yang namanya termasuk di antara nama yang dicadangkan Claude Code, seperti nama server bawaannya:6236Pesan ini menyebut salah satu server MCP Anda, yang namanya termasuk dalam nama yang dicadangkan Claude Code, seperti nama server bawaannya:

6108 6237 

6109```text theme={null}6238```text theme={null}

6110"workspace" is a reserved MCP server name and was not loaded6239"workspace" is a reserved MCP server name and was not loaded

6111```6240```

6112 6241 

6113**Yang harus dilakukan:**6242**Yang perlu dilakukan:**

6114 6243 

6115* Ganti nama server di tempat Anda mendefinisikannya, misalnya dari `workspace` menjadi `my-workspace`6244* Ganti nama server di tempat Anda mendefinisikannya, misalnya dari `workspace` menjadi `my-workspace`

6116* Untuk nama cadangan lain yang harus dihindari, lihat [peringatan konfigurasi MCP](https://code.claude.com/docs/id/mcp.md#configuration-warnings)6245* Untuk nama lain yang dicadangkan dan perlu dihindari, lihat [Peringatan konfigurasi MCP](https://code.claude.com/docs/id/mcp.md#configuration-warnings)

6117 6246 

6118### Dokumen pengaturan yang dikelola tidak dapat diuraikan6247### Managed settings document could not be parsed

6119 6248 

6120Organisasi Anda menerapkan [managed settings](https://code.claude.com/docs/id/managed-settings.md), dan salah satu dokumen yang diterapkan ada tetapi tidak dapat diuraikan sebagai objek JSON, jadi Claude Code keluar dengan kode 1 pada startup daripada berjalan tanpa kebijakan yang dibawa dokumen. Baris menyebutkan sumber yang gagal sebelum pesan:6249Organisasi Anda men-deploy [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md), dan salah satu dokumen yang di-deploy ada tetapi tidak dapat di-parse sebagai objek JSON, sehingga Claude Code keluar dengan kode 1 saat startup alih-alih berjalan tanpa kebijakan yang dibawa dokumen tersebut. Baris menyebut sumber yang gagal sebelum pesan:

6121 6250 

6122```text theme={null}6251```text theme={null}

6123/Library/Application Support/ClaudeCode/managed-settings.json: Managed settings document could not be parsed as a JSON object; none of its settings are in effect. Fix or remove it.6252/Library/Application Support/ClaudeCode/managed-settings.json: Managed settings document could not be parsed as a JSON object; none of its settings are in effect. Fix or remove it.


6125 6254 

6126Sumbernya adalah salah satu dari:6255Sumbernya adalah salah satu dari:

6127 6256 

6128* Jalur file `managed-settings.json` atau file drop-in di bawah `managed-settings.d`6257* Path file `managed-settings.json` atau file drop-in di bawah `managed-settings.d`

6129* Profil preferensi yang dikelola macOS, `per-user managed preferences` atau `device-level managed preferences`6258* Profil preferensi terkelola macOS, `per-user managed preferences` atau `device-level managed preferences`

6130* Nilai registry Windows, `Registry: HKLM\SOFTWARE\Policies\ClaudeCode\Settings`6259* Nilai registry Windows, `Registry: HKLM\SOFTWARE\Policies\ClaudeCode\Settings`

6131 6260 

6132[Find entries Claude Code dropped](https://code.claude.com/docs/id/managed-settings.md#find-entries-claude-code-dropped) mencantumkan apa yang membuat setiap sumber tidak dapat diuraikan.6261[Menemukan entri yang dibuang Claude Code](https://code.claude.com/docs/id/managed-settings.md#find-entries-claude-code-dropped) mencantumkan apa yang membuat setiap sumber tidak dapat di-parse.

6133 6262 

6134Claude Code menolak untuk memulai bahkan ketika sumber admin lain memberikan kebijakan yang valid. Anda melihat kesalahan ini dalam sesi interaktif, `claude -p`, sesi Agent SDK, [background sessions](https://code.claude.com/docs/id/agent-view.md), dan sebagian besar subperintah, `claude doctor` termasuk. Penolakan gagal tertutup dengan sengaja: pengaturan dalam dokumen yang tidak dapat diuraikan Claude Code tidak dapat ditegakkan, dan memulai bagaimanapun akan menjalankan sesi tanpa kontrol organisasi Anda.6263Claude Code menolak untuk dimulai meskipun sumber admin lain menyediakan kebijakan yang valid. Anda melihat error ini dalam sesi interaktif, `claude -p`, sesi Agent SDK, [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), dan sebagian besar subperintah, termasuk `claude doctor`. Penolakan ini sengaja bersifat fail-closed: pengaturan dalam dokumen yang tidak dapat di-parse Claude Code tidak dapat diberlakukan, dan tetap memulai akan menjalankan sesi tanpa kontrol organisasi.

6135 6264 

6136Masalah skema dalam dokumen yang dapat diuraikan tidak menghasilkan kesalahan ini. [Find entries Claude Code dropped](https://code.claude.com/docs/id/managed-settings.md#find-entries-claude-code-dropped) mencakup apa yang Claude Code lakukan dengan satu.6265Masalah skema dalam dokumen yang dapat di-parse tidak menghasilkan error ini. [Menemukan entri yang dibuang Claude Code](https://code.claude.com/docs/id/managed-settings.md#find-entries-claude-code-dropped) menjelaskan apa yang dilakukan Claude Code terhadapnya.

6137 6266 

6138Ketika direktori `managed-settings.d/` ada tetapi tidak dapat didaftar, Claude Code melaporkan `Managed settings drop-in directory could not be read:` diikuti oleh kesalahan yang mendasar sebagai gantinya. [Find entries Claude Code dropped](https://code.claude.com/docs/id/managed-settings.md#find-entries-claude-code-dropped) mencakup kapan kegagalan baca keluar pada startup.6267Ketika direktori `managed-settings.d/` ada tetapi isinya tidak dapat dicantumkan, Claude Code melaporkan `Managed settings drop-in directory could not be read:` diikuti oleh error yang mendasarinya. [Menemukan entri yang dibuang Claude Code](https://code.claude.com/docs/id/managed-settings.md#find-entries-claude-code-dropped) menjelaskan kapan kegagalan baca menyebabkan keluar saat startup.

6139 6268 

6140**Yang harus dilakukan:**6269**Yang perlu dilakukan:**

6141 6270 

6142* Jika Anda mengelola mesin, perbaiki dokumen yang dinamai sehingga diuraikan sebagai objek JSON, atau hapus file, profil, atau nilai registry. `managed-settings.json` kosong dihitung sebagai `{}` dan tidak memblokir peluncuran.6271* Jika Anda mengelola mesin tersebut, perbaiki dokumen yang disebut agar dapat di-parse sebagai objek JSON, atau hapus file, profil, atau nilai registry tersebut. `managed-settings.json` yang kosong dihitung sebagai `{}` dan tidak memblokir peluncuran.

6143* Jika tidak, minta administrator Anda untuk memperbaiki dokumen yang diterapkan. Tidak ada dalam file pengaturan Anda sendiri yang menyebabkan atau menghapus kesalahan ini.6272* Jika tidak, minta admin Anda untuk memperbaiki dokumen yang di-deploy. Tidak ada apa pun dalam file pengaturan Anda sendiri yang menyebabkan atau menghilangkan error ini.

6144 6273 

6145### Tidak dapat membaca pengaturan kebijakan yang dikelola6274### Unable to read managed policy settings

6146 6275 

6147Organisasi Anda menerapkan [managed settings](https://code.claude.com/docs/id/managed-settings.md), dan salah satu sumber yang diterapkan ada tetapi tidak dapat dibaca, karena alasan seperti kesalahan I/O daripada sistem operasi menolak pembacaan. Tanpa sumber admin lain yang menyediakan kebijakan, Claude Code keluar pada startup daripada berjalan tanpa kebijakan yang mungkin dibawa sumber:6276Organisasi Anda men-deploy [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md), dan salah satu sumber yang di-deploy ada tetapi tidak dapat dibaca, karena alasan seperti error I/O, bukan karena sistem operasi menolak pembacaan. Tanpa sumber admin lain yang menyediakan kebijakan, Claude Code keluar saat startup alih-alih berjalan tanpa kebijakan yang mungkin dibawa sumber tersebut:

6148 6277 

6149```text theme={null}6278```text theme={null}

6150Unable to read managed policy settings.6279Unable to read managed policy settings.


6154Detail: <source>: <reason>6283Detail: <source>: <reason>

6155```6284```

6156 6285 

6157Dalam keadaan yang sama, alur sign-in, permintaan API dari sesi yang sudah berjalan, dan server [`claude gateway`](https://code.claude.com/docs/id/claude-apps-gateway) ditolak dengan varian baris pertama yang menyebutkan [`allowedProviders`](https://code.claude.com/docs/id/settings-reference#allowedproviders).6286Dalam keadaan yang sama, alur masuk, permintaan API dari sesi yang sudah berjalan, dan server [`claude gateway`](https://code.claude.com/docs/id/claude-apps-gateway) ditolak dengan varian baris pertama yang menyebut [`allowedProviders`](https://code.claude.com/docs/id/settings-reference#allowedproviders).

6158 6287 

6159Pembacaan yang ditolak sistem operasi, seperti pada file root-only, tidak menghasilkan keluar ini: [sesi dimulai tanpa kebijakan sumber itu](https://code.claude.com/docs/id/managed-settings.md#find-entries-claude-code-dropped). Untuk sumber yang tidak dapat diuraikan, Claude Code keluar dengan [pesan berbeda yang menyebutkan sumber](#managed-settings-document-could-not-be-parsed).6288Pembacaan yang ditolak sistem operasi, seperti pada file khusus root, tidak menyebabkan keluar ini: [sesi dimulai tanpa kebijakan dari sumber tersebut](https://code.claude.com/docs/id/managed-settings.md#find-entries-claude-code-dropped). Untuk sumber yang tidak dapat di-parse, Claude Code keluar dengan [pesan berbeda yang menyebut sumbernya](#managed-settings-document-could-not-be-parsed).

6160 6289 

6161**Yang harus dilakukan:**6290**Yang perlu dilakukan:**

6162 6291 

6163* Jika Anda mengelola mesin, perbaiki masalah yang dinamai baris `Detail:` sehingga sumber yang diterapkan dapat dibaca, atau hapus sumber6292* Jika Anda mengelola mesin tersebut, perbaiki masalah yang disebut baris `Detail:` agar sumber yang di-deploy dapat dibaca, atau hapus sumber tersebut

6164* Jika tidak, kirim pesan ke administrator Anda. Tidak ada dalam file pengaturan Anda sendiri yang menyebabkan atau menghapus kesalahan ini6293* Jika tidak, kirim pesan tersebut ke admin Anda. Tidak ada apa pun dalam file pengaturan Anda sendiri yang menyebabkan atau menghilangkan error ini

6165 6294 

6166Sebelum v2.1.285, hanya sesi yang masuk dengan kredensial claude.ai atau Claude Console yang keluar dengan pesan ini, dan pembacaan yang ditolak sistem operasi juga menghasilkannya.6295Sebelum v2.1.285, hanya sesi yang masuk dengan kredensial claude.ai atau Claude Console yang keluar dengan pesan ini, dan pembacaan yang ditolak sistem operasi juga menghasilkannya.

6167 6296 

6168### Managed settings contain invalid entries, including PreToolUse/PermissionRequest hooks that are NOT loaded6297### Managed settings contain invalid entries, including PreToolUse/PermissionRequest hooks that are NOT loaded

6169 6298 

6170Blok stderr dari proses `-p` ini berarti sebuah sumber [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) berisi entri hook yang tidak dapat dimuat oleh Claude Code. Hook tersebut tidak berjalan, dan ketika sebuah baris mencantumkan bidang `hooks` sumber tersebut sebagai diabaikan, tidak ada hook dari sumber tersebut yang berjalan.6299Blok stderr dari eksekusi `-p` ini berarti sebuah sumber [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) berisi entri hook yang tidak dapat dimuat Claude Code. Hook tersebut tidak berjalan, dan ketika sebuah baris mencantumkan field `hooks` sumber tersebut sebagai diabaikan, tidak ada hook dari sumber tersebut yang berjalan.

6171 6300 

6172Setiap baris menyebutkan sumber, bidang jika ada, dan masalahnya, seperti `type` hook yang tidak dikenal atau hook yang dideklarasikan di luar kunci `hooks`:6301Setiap baris menyebut sumber, field jika ada, dan masalahnya, seperti `type` hook yang tidak dikenal atau hook yang dideklarasikan di luar key `hooks`:

6173 6302 

6174```text theme={null}6303```text theme={null}

6175Managed settings contain invalid entries, including PreToolUse/PermissionRequest hooks that are NOT loaded; fix or remove each entry:6304Managed settings contain invalid entries, including PreToolUse/PermissionRequest hooks that are NOT loaded; fix or remove each entry:

6176 <source> (<field>): <message>6305 <source> (<field>): <message>

6177```6306```

6178 6307 

6179**Yang harus dilakukan:**6308**Yang perlu dilakukan:**

6180 6309 

6181* Jika Anda mengelola sumber tersebut, perbaiki atau hapus setiap entri yang dicantumkan blok. [Konfigurasi hook](https://code.claude.com/docs/id/hooks.md#configuration) menunjukkan bentuk yang diharapkan Claude Code di bawah `hooks`.6310* Jika Anda mengelola sumber tersebut, perbaiki atau hapus setiap entri yang dicantumkan blok. [Konfigurasi hook](https://code.claude.com/docs/id/hooks.md#configuration) menunjukkan bentuk yang diharapkan Claude Code di bawah `hooks`.

6182* Jika sumber sebuah baris adalah `parent managed settings`, aplikasi yang meluncurkan Claude Code meneruskan entri tersebut sebagai [pengaturan induk](https://code.claude.com/docs/id/managed-settings.md#parent-settings-from-embedding-hosts), jadi laporkan kepada pengembang aplikasi tersebut6311* Jika sumber sebuah baris adalah `parent managed settings`, aplikasi yang meluncurkan Claude Code meneruskan entri tersebut sebagai [pengaturan induk](https://code.claude.com/docs/id/managed-settings.md#parent-settings-from-embedding-hosts), jadi laporkan ke pengembang aplikasi tersebut

6183* Jika tidak, kirim blok tersebut ke administrator Anda6312* Jika tidak, kirim blok tersebut ke admin Anda

6184 6313 

6185Sebelum v2.1.300, proses `-p` mencantumkan kasus ini di bawah header `Managed settings failed to load; policies from the failed source are NOT in effect:`.6314Sebelum v2.1.300, eksekusi `-p` mencantumkan kasus ini di bawah header `Managed settings failed to load; policies from the failed source are NOT in effect:`.

6186 6315 

6187### otelHeadersHelper gagal6316### otelHeadersHelper failed

6188 6317 

6189Claude Code menampilkan peringatan ini sebagai notifikasi dalam antarmuka terminal, sekali per sesi interaktif, ketika skrip [`otelHeadersHelper`](https://code.claude.com/docs/id/settings-reference#otelheadershelper) gagal atau mencetak output yang tidak memenuhi [persyaratan skrip](https://code.claude.com/docs/id/monitoring-usage.md#script-requirements).6318Claude Code menampilkan peringatan ini sebagai notifikasi di antarmuka terminal, sekali per sesi interaktif, ketika skrip [`otelHeadersHelper`](https://code.claude.com/docs/id/settings-reference#otelheadershelper) gagal atau mencetak output yang tidak memenuhi [persyaratan skrip](https://code.claude.com/docs/id/monitoring-usage.md#script-requirements).

6190 6319 

6191Sementara skrip terus gagal, ekspor gagal dan backend telemetri Anda tidak menerima apa pun dari sesi.6320Selama skrip terus gagal, ekspor gagal dan backend telemetri Anda tidak menerima apa pun dari sesi.

6192 6321 

6193Teks setelah `See /status:` mengatakan apa yang gagal, seperti kode keluar skrip diikuti oleh output kesalahannya:6322Teks setelah `See /status:` menyebut apa yang gagal, seperti exit code skrip diikuti oleh output error-nya:

6194 6323 

6195```text theme={null}6324```text theme={null}

6196otelHeadersHelper failed; telemetry is not being exported. See /status: exited 1: token service unreachable6325otelHeadersHelper failed; telemetry is not being exported. See /status: exited 1: token service unreachable

6197```6326```

6198 6327 

6199**Yang harus dilakukan:**6328**Yang perlu dilakukan:**

6200 6329 

6201* Jalankan `/status` untuk membaca detail kegagalan.6330* Jalankan `/status` untuk membaca detail kegagalan.

6202* Perbaiki skrip sehingga keluar 0 dalam 30 detik dan mencetak objek JSON dari nilai header string di stdout. Lihat [script requirements](https://code.claude.com/docs/id/monitoring-usage.md#script-requirements).6331* Perbaiki skrip agar keluar dengan 0 dalam 30 detik dan mencetak objek JSON berisi nilai header string di stdout. Lihat [persyaratan skrip](https://code.claude.com/docs/id/monitoring-usage.md#script-requirements).

6203* Jika organisasi Anda menerapkan skrip melalui [managed settings](https://code.claude.com/docs/id/managed-settings.md), minta siapa pun yang memeliharanya untuk memperbaikinya.6332* Jika organisasi Anda men-deploy skrip melalui [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md), minta siapa pun yang mengelolanya untuk memperbaikinya.

6204 6333 

6205Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan `-p`, kegagalan yang sama muncul di stderr sebagai `otelHeadersHelper failed (OpenTelemetry export headers unavailable): <error>` sebagai gantinya.6334Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan `-p`, kegagalan yang sama muncul di stderr sebagai `otelHeadersHelper failed (OpenTelemetry export headers unavailable): <error>`.

6206 6335 

6207### headersHelper tidak dijalankan6336### headersHelper not run

6208 6337 

6209Claude Code menghubungkan server MCP dengan `headers` statis saja dan melewati [`headersHelper`](https://code.claude.com/docs/id/mcp#use-dynamic-headers-for-custom-authentication) server, karena helper adalah perintah shell dan folder tidak memiliki kepercayaan yang disimpan. Folder mendapatkan kepercayaan yang disimpan ketika Anda mengatur entrinya di `~/.claude.json` dengan tangan atau, di luar direktori home Anda, ketika Anda menerima dialog kepercayaan untuk itu dalam sesi interaktif. Lihat [Trust a folder before its headersHelper runs](https://code.claude.com/docs/id/mcp.md#trust-a-folder-before-its-headershelper-runs) untuk server mana pemeriksaan ini berlaku.6338Claude Code menghubungkan server MCP hanya dengan `headers` statisnya dan melewati [`headersHelper`](https://code.claude.com/docs/id/mcp#use-dynamic-headers-for-custom-authentication) server tersebut, karena helper adalah perintah shell dan folder tidak memiliki kepercayaan tersimpan. Sebuah folder mendapatkan kepercayaan tersimpan ketika Anda mengatur entrinya di `~/.claude.json` secara manual atau, di luar direktori home Anda, ketika Anda menerima dialog kepercayaan untuknya dalam sesi interaktif. Lihat [Memercayai folder sebelum headersHelper-nya berjalan](https://code.claude.com/docs/id/mcp.md#trust-a-folder-before-its-headershelper-runs) untuk server mana saja yang dikenai pemeriksaan ini.

6210 6339 

6211Claude Code menulis baris ini dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) saja, sekali per server. Dalam sesi interaktif, itu menulis penolakan yang sama ke log debug sebagai gantinya.6340Claude Code menulis baris ini hanya dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), sekali per server. Dalam sesi interaktif, Claude Code menulis penolakan yang sama ke log debug sebagai gantinya.

6212 6341 

6213```text theme={null}6342```text theme={null}

6214MCP server 'internal-api': headersHelper not run — this workspace has no persisted trust; accept the trust dialog here once interactively, or set projects["/Users/you/project"].hasTrustDialogAccepted in /Users/you/.claude.json.6343MCP server 'internal-api': headersHelper not run — this workspace has no persisted trust; accept the trust dialog here once interactively, or set projects["/Users/you/project"].hasTrustDialogAccepted in /Users/you/.claude.json.

6215```6344```

6216 6345 

6217Kunci `projects` yang dicetak pesan adalah folder yang [Project allow rules and workspace trust](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust) katakan Claude Code kunci kepercayaan. Menerima dialog kepercayaan untuk folder induk tidak memenuhi pemeriksaan, dan sesi `-p` atau SDK tidak memenuhinya juga.6346Key `projects` yang dicetak pesan adalah folder yang menurut [Aturan allow proyek dan kepercayaan workspace](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust) digunakan Claude Code sebagai kunci kepercayaan. Menerima dialog kepercayaan untuk folder induk tidak memenuhi pemeriksaan, demikian pula sesi `-p` atau SDK.

6218 6347 

6219**Yang harus dilakukan:**6348**Yang perlu dilakukan:**

6220 6349 

6221* Jalankan `claude` di folder yang dinamai pesan, terima dialog kepercayaan, kemudian jalankan perintah `-p` atau SDK Anda lagi6350* Jalankan `claude` di folder yang disebut pesan, terima dialog kepercayaan, lalu jalankan perintah `-p` atau SDK Anda lagi

6222* Atur entri `hasTrustDialogAccepted` dalam `~/.claude.json` sendiri, menggunakan kunci `projects` yang tepat yang dicetak pesan6351* Atur sendiri entri `hasTrustDialogAccepted` di `~/.claude.json`, menggunakan key `projects` persis seperti yang dicetak pesan

6223* Jika Anda memulai sesi di direktori home Anda, bekerja dari direktori proyek yang telah Anda percayai. Ketika Anda menerima dialog kepercayaan di direktori home Anda, Claude Code menyimpan kepercayaan itu untuk sesi saat ini saja.6352* Jika Anda memulai sesi di direktori home Anda, bekerjalah dari direktori proyek yang telah Anda percayai. Ketika Anda menerima dialog kepercayaan di direktori home Anda, Claude Code menyimpan kepercayaan tersebut hanya untuk sesi saat ini.

6224 6353 

6225### Aturan Tool(content) yang salah format6354### Malformed Tool(content) rule

6226 6355 

6227[Aturan izin](https://code.claude.com/docs/id/permissions.md#permission-rule-syntax) dalam salah satu file pengaturan Anda tidak memiliki bentuk `Tool` atau `Tool(content)`, misalnya karena teks mengikuti tanda kurung penutup atau salah satu tanda kurung hilang. Claude Code melewati aturan dan mencantumnya dalam dialog pengaturan yang tidak valid ketika sesi interaktif dimulai, dan dalam output [`claude doctor`](https://code.claude.com/docs/id/debug-your-config#check-resolved-settings):6356Sebuah [aturan izin](https://code.claude.com/docs/id/permissions.md#permission-rule-syntax) di salah satu file pengaturan Anda tidak memiliki bentuk `Tool` atau `Tool(content)`, misalnya karena ada teks setelah tanda kurung penutup atau salah satu tanda kurung hilang. Claude Code melewati aturan tersebut dan mencantumkannya di dialog pengaturan tidak valid saat sesi interaktif dimulai, serta di output [`claude doctor`](https://code.claude.com/docs/id/debug-your-config#check-resolved-settings):

6228 6357 

6229```text theme={null}6358```text theme={null}

6230Invalid permission rule "Bash(ls) x" was skipped: Malformed Tool(content) rule. Rules take the form Tool or Tool(content) and must end at the closing ")"; parentheses inside the content are literal6359Invalid permission rule "Bash(ls) x" was skipped: Malformed Tool(content) rule. Rules take the form Tool or Tool(content) and must end at the closing ")"; parentheses inside the content are literal

6231```6360```

6232 6361 

6233**Yang harus dilakukan:**6362**Yang perlu dilakukan:**

6234 6363 

6235* Dalam file pengaturan yang tercantum dengan pesan, tulis ulang aturan sehingga berakhir pada tanda kurung penutupnya, misalnya `Bash(ls *)` sebagai pengganti `Bash(ls) x`6364* Di file pengaturan yang dicantumkan bersama pesan, tulis ulang aturan agar berakhir pada tanda kurung penutupnya, misalnya `Bash(ls *)` sebagai ganti `Bash(ls) x`

6236* Biarkan tanda kurung di dalam konten apa adanya. Mereka literal, jadi aturan seperti `Edit(./Finance (2024)/**)` valid tanpa escaping6365* Biarkan tanda kurung di dalam konten apa adanya. Tanda kurung tersebut bersifat literal, sehingga aturan seperti `Edit(./Finance (2024)/**)` valid tanpa escape

6237 6366 

6238Sebelum v2.1.260, Claude Code melaporkan aturan dengan tanda kurung yang tidak cocok sebagai `Mismatched parentheses`.6367Sebelum v2.1.260, Claude Code melaporkan aturan dengan tanda kurung yang tidak berpasangan sebagai `Mismatched parentheses`.

6239 6368 

6240### Matches no tool · check for typos6369### Matches no tool · check for typos

6241 6370 

6242Baris di bawah banner startup ini menyebutkan [aturan izin](https://code.claude.com/docs/id/permissions.md) deny atau ask yang nama tool-nya tidak dikenali Claude Code, sehingga aturan tersebut tidak berlaku untuk tool yang Anda maksud. Aturan deny yang ditulis sebagai `Bsh` tidak diterapkan pada Bash, begitu pula aturan yang menggunakan label yang ditampilkan tool dalam transkrip alih-alih nama kanoniknya. Baris tersebut mengulang aturan seperti yang Anda tulis:6371Baris di bawah banner startup ini menyebut [aturan izin](https://code.claude.com/docs/id/permissions.md) deny atau ask yang nama tool-nya tidak dikenali Claude Code, sehingga aturan tersebut tidak berlaku untuk tool yang Anda maksud. Aturan deny yang ditulis sebagai `Bsh` tidak diterapkan ke Bash, begitu pula aturan yang menggunakan label yang ditampilkan tool di transkrip alih-alih nama kanoniknya. Baris tersebut mengulang aturan sebagaimana Anda menulisnya:

6243 6372 

6244```text theme={null}6373```text theme={null}

6245⚠ Deny rule Bsh matches no tool · check for typos6374⚠ Deny rule Bsh matches no tool · check for typos

6246```6375```

6247 6376 

6248Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan output teks, Claude Code mencetak peringatan di stderr dalam bentuk yang lebih panjang sebagai gantinya:6377Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan output teks, Claude Code mencetak peringatan di stderr dalam bentuk yang lebih panjang:

6249 6378 

6250```text theme={null}6379```text theme={null}

6251Permission deny rule "Bsh" matches no known tool — check for typos.6380Permission deny rule "Bsh" matches no known tool — check for typos.

6252```6381```

6253 6382 

6254**Yang harus dilakukan:**6383**Yang perlu dilakukan:**

6255 6384 

6256* Perbaiki nama tool dalam aturan, misalnya `Bash` sebagai pengganti `Bsh`. Cari nama kanonik di [referensi tool](https://code.claude.com/docs/id/tools-reference.md).6385* Perbaiki nama tool dalam aturan, misalnya `Bash` sebagai ganti `Bsh`. Cari nama kanonik di [referensi tool](https://code.claude.com/docs/id/tools-reference.md).

6257* Untuk menemukan tempat aturan didefinisikan, jalankan `/permissions` dalam sesi dan pilih aturan tersebut. Detailnya menyebutkan asalnya, seperti `From project local settings`, atau `From CLI argument` untuk nilai `--disallowedTools`.6386* Untuk menemukan tempat aturan didefinisikan, jalankan `/permissions` dalam sesi dan pilih aturan tersebut. Detailnya menyebut asalnya, seperti `From project local settings`, atau `From CLI argument` untuk nilai `--disallowedTools`.

6258* Jika detailnya berbunyi `From enterprise managed settings`, teruskan baris tersebut kepada siapa pun yang memelihara [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) Anda, karena Anda tidak dapat mengubah aturan tersebut sendiri.6387* Jika detailnya berbunyi `From enterprise managed settings`, teruskan baris tersebut ke siapa pun yang mengelola [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) Anda, karena Anda tidak dapat mengubah aturan tersebut sendiri.

6259 6388 

6260Dalam [background session](https://code.claude.com/docs/id/agent-view.md) atau dengan `--output-format json` atau `stream-json`, Claude Code menulis peringatan ke log debug daripada stderr. Jalankan dengan `--debug` untuk menangkapnya di `~/.claude/debug/<session-id>.txt`.6389Dalam [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) atau dengan `--output-format json` atau `stream-json`, Claude Code menulis peringatan ke log debug alih-alih stderr. Jalankan dengan `--debug` untuk menangkapnya di `~/.claude/debug/<session-id>.txt`.

6261 6390 

6262Sebelum v2.1.305, sesi interaktif mencetak bentuk yang lebih panjang di stderr saat startup alih-alih menampilkan baris tersebut.6391Sebelum v2.1.305, sesi interaktif mencetak bentuk yang lebih panjang di stderr saat startup alih-alih menampilkan baris tersebut.

6263 6392 

6264### Tidak cocok dengan pemeriksaan izin file6393### Is not matched by file permission checks

6265 6394 

6266Claude Code menemukan aturan [izin](https://code.claude.com/docs/id/permissions.md#read-and-edit) `Write`, `NotebookEdit`, `MultiEdit`, atau `Glob` dengan jalur dalam salah satu [file pengaturan](https://code.claude.com/docs/id/settings.md#where-settings-live) Anda, dalam [managed settings](https://code.claude.com/docs/id/managed-settings.md), atau dalam nilai flag `--allowedTools`, `--disallowedTools`, atau `--settings`. Itu memeriksa izin file terhadap aturan `Edit` dan `Read` saja, jadi tidak pernah berkonsultasi dengan aturan jalur yang menyebutkan salah satu tool file lainnya. Itu menyimpan aturan dan tidak mengubah apa pun yang lain.6395Claude Code menemukan [aturan izin](https://code.claude.com/docs/id/permissions.md#read-and-edit) `Write`, `NotebookEdit`, `MultiEdit`, atau `Glob` dengan path di salah satu [file pengaturan](https://code.claude.com/docs/id/settings.md#where-settings-live) Anda, di [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md), atau di nilai flag `--allowedTools`, `--disallowedTools`, atau `--settings`. Claude Code memeriksa izin file hanya terhadap aturan `Edit` dan `Read`, sehingga tidak pernah memeriksa aturan path yang menyebut salah satu tool file lainnya. Claude Code mempertahankan aturan tersebut dan tidak mengubah apa pun lainnya.

6267 6396 

6268* **Sesi interaktif**: peringatan lengkap masuk ke [log debug](#configuration-warnings), dan aturan deny atau ask dengan bentuk ini juga ditampilkan sebagai baris berikut di bawah banner startup:6397* **Sesi interaktif**: peringatan lengkap masuk ke [log debug](#configuration-warnings), dan aturan deny atau ask dengan bentuk ini juga ditampilkan sebagai baris ini di bawah banner startup:

6269 6398 

6270 ```text theme={null}6399 ```text theme={null}

6271 ⚠ Deny rule Write(docs/**) never matches · use Edit(docs/**)6400 ⚠ Deny rule Write(docs/**) never matches · use Edit(docs/**)

6272 ```6401 ```

6273 6402 

6274 Aturan allow dengan bentuk ini tidak mendapat baris. Untuk menemukan tempat aturan didefinisikan, jalankan `/permissions` dalam sesi dan pilih aturan tersebut.6403 Aturan allow dengan bentuk ini tidak mendapatkan baris. Untuk menemukan tempat aturan didefinisikan, jalankan `/permissions` dalam sesi dan pilih aturan tersebut.

6275* **[Mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan output teks**: peringatan lengkap di stderr menyebutkan aturan, sumbernya dalam tanda kurung, dan penggantian untuk ditulis:6404* **[Mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan output teks**: peringatan lengkap di stderr menyebut aturan, sumbernya dalam tanda kurung, dan pengganti yang perlu ditulis:

6276 6405 

6277 ```text theme={null}6406 ```text theme={null}

6278 Permission deny rule (.claude/settings.json): Write(docs/**) is not matched by file permission checks — only Edit(path) rules are. Use Edit(docs/**) instead (Edit rules cover all file-editing tools).6407 Permission deny rule (.claude/settings.json): Write(docs/**) is not matched by file permission checks — only Edit(path) rules are. Use Edit(docs/**) instead (Edit rules cover all file-editing tools).

6279 ```6408 ```

6280* **[Background session](https://code.claude.com/docs/id/agent-view.md), atau `--output-format json` atau `stream-json`**: peringatan lengkap masuk ke log debug daripada stderr, jadi output yang dibaca mesin tetap bersih. Jalankan dengan `--debug` untuk menangkapnya di `~/.claude/debug/<session-id>.txt`.6409* **[Sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), atau `--output-format json` atau `stream-json`**: peringatan lengkap masuk ke log debug alih-alih stderr, sehingga output yang dibaca mesin tetap bersih. Jalankan dengan `--debug` untuk menangkapnya di `~/.claude/debug/<session-id>.txt`.

6281 6410 

6282**Yang harus dilakukan:**6411**Yang perlu dilakukan:**

6283 6412 

6284* Ganti aturan `Write(path)`, `NotebookEdit(path)`, dan `MultiEdit(path)` warisan dengan `Edit(path)`. Aturan `Edit` mencakup semua tool pengeditan file.6413* Ganti aturan `Write(path)`, `NotebookEdit(path)`, dan `MultiEdit(path)` lama dengan `Edit(path)`. Aturan `Edit` mencakup semua tool pengeditan file.

6285* Kecuali dalam `--allowedTools`, di mana Claude Code menerima aturan `Glob` tanpa peringatan, ganti aturan `Glob(path)` dengan `Read(path)`.6414* Kecuali di `--allowedTools`, tempat Claude Code menerima aturan `Glob` tanpa peringatan, ganti aturan `Glob(path)` dengan `Read(path)`.

6286* Perbaiki aturan di sumbernya, yang disebutkan peringatan lengkap dalam tanda kurung: jalur file pengaturan, atau flag itu sendiri untuk `--allowed-tools` dan `--disallowed-tools`. Jalur `claude-settings-<hash>.json` yang tidak ada di disk mewakili nilai `--settings` inline. Perbaiki JSON yang Anda teruskan ke flag itu.6415* Perbaiki aturan di sumbernya, yang disebut peringatan lengkap dalam tanda kurung: path file pengaturan, atau flag itu sendiri untuk `--allowed-tools` dan `--disallowed-tools`. Path `claude-settings-<hash>.json` yang tidak ada di disk mewakili nilai `--settings` inline. Perbaiki JSON yang Anda berikan ke flag tersebut.

6287* Biarkan aturan nama tool bare seperti `Write` atau `Glob` saja. Claude Code mencocokkannya di [tingkat tool](https://code.claude.com/docs/id/permissions.md#match-all-uses-of-a-tool) dan tidak memperingatkan tentang mereka.6416* Biarkan aturan nama tool polos seperti `Write` atau `Glob`. Claude Code mencocokkannya di [tingkat tool](https://code.claude.com/docs/id/permissions.md#match-all-uses-of-a-tool) dan tidak memberi peringatan tentangnya.

6288* Untuk aturan dari pengaturan terkelola, tanda kurung pada peringatan lengkap berbunyi `managed policy settings` dan detail aturan di `/permissions` berbunyi `From enterprise managed settings`. Teruskan peringatan tersebut kepada siapa pun yang memelihara pengaturan terkelola Anda, karena Anda tidak dapat menghapusnya sendiri.6417* Untuk aturan dari pengaturan terkelola, tanda kurung dalam peringatan lengkap berbunyi `managed policy settings` dan detail aturan di `/permissions` berbunyi `From enterprise managed settings`. Teruskan peringatan tersebut ke siapa pun yang mengelola pengaturan terkelola Anda, karena Anda tidak dapat menghilangkannya sendiri.

6289 6418 

6290Sebelum v2.1.210, Claude Code menerima aturan ini tanpa peringatan. Sebelum v2.1.305, sesi interaktif mencetak peringatan lengkap di stderr.6419Sebelum v2.1.210, Claude Code menerima aturan ini tanpa peringatan. Sebelum v2.1.305, sesi interaktif mencetak peringatan lengkap di stderr.

6291 6420 

6292### Memiliki wildcard sebelum sisa perintah6421### Has a wildcard before the rest of the command

6293 6422 

6294Claude Code menemukan aturan allow `Bash` yang `*` nya datang sebelum kata belakangan yang menentukan perintah mana itu, seperti `Bash(git * main)` atau `Bash(git -C * status *)`, dalam salah satu [file pengaturan](https://code.claude.com/docs/id/settings.md#where-settings-live) Anda, dalam [managed settings](https://code.claude.com/docs/id/managed-settings.md), atau dalam nilai flag `--allowedTools` atau `--settings`. `*` cocok dengan teks apa pun, termasuk opsi yang disisipkan pada posisi itu: `Bash(git * main)` juga menyetujui `git -c core.fsmonitor=<script> diff main`, di mana `-c` membuat git menjalankan program yang dinamai perintah. [Wildcard patterns](https://code.claude.com/docs/id/permissions.md#wildcard-patterns) menunjukkan aturan pencocokan.6423Claude Code menemukan aturan allow `Bash` yang `*`-nya berada sebelum kata selanjutnya yang menentukan perintah apa itu, seperti `Bash(git * main)` atau `Bash(git -C * status *)`, di salah satu [file pengaturan](https://code.claude.com/docs/id/settings.md#where-settings-live) Anda, di [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md), atau di nilai flag `--allowedTools` atau `--settings`. `*` cocok dengan teks apa pun, termasuk opsi yang disisipkan di posisi tersebut: `Bash(git * main)` juga menyetujui `git -c core.fsmonitor=<script> diff main`, di mana `-c` membuat git menjalankan program yang disebut perintah. [Pola wildcard](https://code.claude.com/docs/id/permissions.md#wildcard-patterns) menunjukkan aturan pencocokannya.

6295 6424 

6296Peringatan ada sehingga Anda dapat mempersempit aturan yang wildcard-nya lebih luas dari yang Anda maksudkan. Claude Code menyimpan aturan dan tidak mengubah apa pun tentang cara pencocokannya. Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan output teks, peringatan di stderr menyebutkan aturan dan sumbernya dalam tanda kurung:6425Peringatan ini ada agar Anda dapat mempersempit aturan yang wildcard-nya lebih luas dari yang Anda maksudkan. Claude Code mempertahankan aturan tersebut dan tidak mengubah apa pun tentang cara pencocokannya. Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan output teks, peringatan di stderr menyebut aturan dan sumbernya dalam tanda kurung:

6297 6426 

6298```text theme={null}6427```text theme={null}

6299Permission allow rule (.claude/settings.json): Bash(git -C * status *) has a wildcard before the rest of the command, so it also matches any options inserted at that position and approves them without a prompt. For git, options such as -c and --exec-path can run arbitrary commands. Replace that * with the exact value you mean, or only use * after the subcommand (for example Bash(git status *)).6428Permission allow rule (.claude/settings.json): Bash(git -C * status *) has a wildcard before the rest of the command, so it also matches any options inserted at that position and approves them without a prompt. For git, options such as -c and --exec-path can run arbitrary commands. Replace that * with the exact value you mean, or only use * after the subcommand (for example Bash(git status *)).

6300```6429```

6301 6430 

6302Dalam sesi interaktif, peringatan lengkap masuk ke [log debug](#configuration-warnings) dan aturan tersebut ditampilkan sebagai baris berikut di bawah banner startup:6431Dalam sesi interaktif, peringatan lengkap masuk ke [log debug](#configuration-warnings) dan aturan ditampilkan sebagai baris ini di bawah banner startup:

6303 6432 

6304```text theme={null}6433```text theme={null}

6305⚠ Allow rule Bash(git -C * status *) allows any option at its * · use an exact value6434⚠ Allow rule Bash(git -C * status *) allows any option at its * · use an exact value


6307 6436 

6308Untuk menemukan tempat aturan didefinisikan, jalankan `/permissions` dalam sesi dan pilih aturan tersebut.6437Untuk menemukan tempat aturan didefinisikan, jalankan `/permissions` dalam sesi dan pilih aturan tersebut.

6309 6438 

6310**Yang harus dilakukan:**6439**Yang perlu dilakukan:**

6311 6440 

6312* Ganti `*` sebelum subperintah dengan nilai yang tepat yang Anda maksudkan: `Bash(git checkout main)` sebagai pengganti `Bash(git * main)`.6441* Ganti `*` sebelum subperintah dengan nilai persis yang Anda maksud: `Bash(git checkout main)` sebagai ganti `Bash(git * main)`.

6313* Pindahkan setiap `*` setelah subperintah: `Bash(git status *)` sebagai pengganti `Bash(git -C * status *)`. Tulis satu aturan per subperintah yang ingin Anda izinkan.6442* Pindahkan setiap `*` ke setelah subperintah: `Bash(git status *)` sebagai ganti `Bash(git -C * status *)`. Tulis satu aturan per subperintah yang ingin Anda izinkan.

6314* Perbaiki aturan di sumbernya, yang disebutkan peringatan lengkap dalam tanda kurung: jalur file pengaturan, atau flag `--allowed-tools` itu sendiri. Jalur `claude-settings-<hash>.json` yang tidak ada di disk mewakili nilai `--settings` inline. Perbaiki JSON yang Anda teruskan ke flag itu.6443* Perbaiki aturan di sumbernya, yang disebut peringatan lengkap dalam tanda kurung: path file pengaturan, atau flag `--allowed-tools` itu sendiri. Path `claude-settings-<hash>.json` yang tidak ada di disk mewakili nilai `--settings` inline. Perbaiki JSON yang Anda berikan ke flag tersebut.

6315* Untuk aturan dari pengaturan terkelola, tanda kurung pada peringatan lengkap berbunyi `managed policy settings` dan detail aturan di `/permissions` berbunyi `From enterprise managed settings`. Teruskan peringatan tersebut kepada siapa pun yang memelihara pengaturan terkelola Anda, karena Anda tidak dapat menghapusnya sendiri.6444* Untuk aturan dari pengaturan terkelola, tanda kurung dalam peringatan lengkap berbunyi `managed policy settings` dan detail aturan di `/permissions` berbunyi `From enterprise managed settings`. Teruskan peringatan tersebut ke siapa pun yang mengelola pengaturan terkelola Anda, karena Anda tidak dapat menghilangkannya sendiri.

6316 6445 

6317Dalam [background session](https://code.claude.com/docs/id/agent-view.md) atau dengan `--output-format json` atau `stream-json`, Claude Code menulis peringatan ke log debug daripada stderr, jadi output yang dibaca mesin tetap bersih. Jalankan dengan `--debug` untuk menangkapnya di `~/.claude/debug/<session-id>.txt`. Sebelum v2.1.246, Claude Code menerima aturan ini tanpa peringatan.6446Dalam [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) atau dengan `--output-format json` atau `stream-json`, Claude Code menulis peringatan ke log debug alih-alih stderr, sehingga output yang dibaca mesin tetap bersih. Jalankan dengan `--debug` untuk menangkapnya di `~/.claude/debug/<session-id>.txt`. Sebelum v2.1.246, Claude Code menerima aturan ini tanpa peringatan.

6318 6447 

6319Sebelum v2.1.305, sesi interaktif mencetak peringatan lengkap di stderr alih-alih menampilkan baris.6448Sebelum v2.1.305, sesi interaktif mencetak peringatan lengkap di stderr alih-alih menampilkan baris.

6320 6449 

6321### Denying Bash also turns off the PowerShell tool6450### Denying Bash also turns off the PowerShell tool

6322 6451 

6323Anda menghapus seluruh tool Bash, misalnya dengan `--disallowedTools Bash` atau dengan [aturan deny](https://code.claude.com/docs/id/permissions.md#match-all-uses-of-a-tool) `Bash` atau `Bash(*)` tanpa cakupan di salah satu file pengaturan Anda. Di Windows dengan Git Bash terinstal, [menolak Bash juga mematikan tool PowerShell](https://code.claude.com/docs/id/tools-reference.md#bash-deny-rules-also-turn-off-the-powershell-tool), sehingga sesi dimulai tanpa tool shell.6452Anda menghapus seluruh tool Bash, misalnya dengan `--disallowedTools Bash` atau dengan [aturan deny](https://code.claude.com/docs/id/permissions.md#match-all-uses-of-a-tool) `Bash` atau `Bash(*)` polos di salah satu file pengaturan Anda. Di Windows dengan Git Bash terinstal, [menolak Bash juga mematikan tool PowerShell](https://code.claude.com/docs/id/tools-reference.md#bash-deny-rules-also-turn-off-the-powershell-tool), sehingga sesi dimulai tanpa tool shell.

6324 6453 

6325Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan output teks, Claude Code mencetak peringatan ini di stderr saat startup, dan sesi interaktif hanya menuliskannya ke [log debug](#configuration-warnings):6454Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan output teks, Claude Code mencetak peringatan ini di stderr saat startup, dan sesi interaktif menulisnya hanya ke [log debug](#configuration-warnings):

6326 6455 

6327```text theme={null}6456```text theme={null}

6328Denying Bash also turns off the PowerShell tool, so Claude has neither. To use PowerShell, set CLAUDE_CODE_USE_POWERSHELL_TOOL=1.6457Denying Bash also turns off the PowerShell tool, so Claude has neither. To use PowerShell, set CLAUDE_CODE_USE_POWERSHELL_TOOL=1.

6329```6458```

6330 6459 

6331**Yang harus dilakukan:**6460**Yang perlu dilakukan:**

6332 6461 

6333* Agar Claude menggunakan PowerShell, atur [`CLAUDE_CODE_USE_POWERSHELL_TOOL`](https://code.claude.com/docs/id/env-vars) ke `1` di environment Anda atau di blok `env` file pengaturan, seperti yang ditunjukkan [Enable the PowerShell tool](https://code.claude.com/docs/id/tools-reference.md#enable-the-powershell-tool). Tool PowerShell kemudian tetap aktif bersama aturan deny Bash Anda.6462* Agar Claude menggunakan PowerShell, atur [`CLAUDE_CODE_USE_POWERSHELL_TOOL`](https://code.claude.com/docs/id/env-vars) ke `1` di environment Anda atau di blok `env` sebuah file pengaturan, seperti yang ditunjukkan [Mengaktifkan tool PowerShell](https://code.claude.com/docs/id/tools-reference.md#enable-the-powershell-tool). Tool PowerShell kemudian tetap aktif bersama aturan deny Bash Anda.

6334* Untuk memblokir perintah tertentu alih-alih seluruh tool, ganti entri `Bash` tanpa cakupan dengan aturan bercakupan seperti `Bash(git push *)` di file pengaturan atau flag yang sama. Claude tetap memiliki tool Bash, dan tool PowerShell tetap mati sampai Anda juga mengatur variabel tersebut atau menambahkan [aturan izin `PowerShell`](https://code.claude.com/docs/id/permissions#powershell) bercakupan.6463* Untuk memblokir perintah tertentu alih-alih seluruh tool, ganti entri `Bash` polos dengan aturan terbatas seperti `Bash(git push *)` di file pengaturan atau flag yang sama. Claude tetap memiliki tool Bash, dan tool PowerShell tetap mati sampai Anda juga mengatur variabel tersebut atau menambahkan [aturan izin `PowerShell`](https://code.claude.com/docs/id/permissions#powershell) yang terbatas.

6335 6464 

6336Dalam [background session](https://code.claude.com/docs/id/agent-view.md) atau dengan `--output-format json` atau `stream-json`, Claude Code menulis peringatan ke log debug daripada stderr. Jalankan dengan `--debug` untuk menangkapnya di `~/.claude/debug/<session-id>.txt`. Sebelum v2.1.287, Claude Code mematikan tool PowerShell dengan cara yang sama tanpa mencetak peringatan.6465Dalam [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) atau dengan `--output-format json` atau `stream-json`, Claude Code menulis peringatan ke log debug alih-alih stderr. Jalankan dengan `--debug` untuk menangkapnya di `~/.claude/debug/<session-id>.txt`. Sebelum v2.1.287, Claude Code mematikan tool PowerShell dengan cara yang sama tanpa mencetak peringatan.

6337 6466 

6338Sebelum v2.1.305, sesi interaktif juga mencetak peringatan di stderr saat startup.6467Sebelum v2.1.305, sesi interaktif juga mencetak peringatan di stderr saat startup.

6339 6468 

6340### crossSessionInbound harus salah satu dari accept, hold, refuse6469### crossSessionInbound must be one of accept, hold, refuse

6341 6470 

6342File pengaturan menetapkan [`crossSessionInbound`](https://code.claude.com/docs/id/settings-reference#crosssessioninbound) ke nilai yang tidak dikenali Claude Code, seperti typo `"reject"`. Kalimat kedua peringatan tergantung pada file mana yang menyimpan nilai; dalam file pengguna, proyek, lokal, atau `--settings` berbunyi:6471Sebuah file pengaturan mengatur [`crossSessionInbound`](https://code.claude.com/docs/id/settings-reference#crosssessioninbound) ke nilai yang tidak dikenali Claude Code, seperti salah ketik `"reject"`. Kalimat kedua peringatan bergantung pada file mana yang berisi nilai tersebut; di file pengguna, proyek, lokal, atau `--settings` berbunyi:

6343 6472 

6344```text theme={null}6473```text theme={null}

6345"crossSessionInbound" must be one of "accept", "hold", "refuse"; received "reject". This value was ignored; while it is present, cross-session messages are held for your approval instead of being delivered. Set it to one of the values above.6474"crossSessionInbound" must be one of "accept", "hold", "refuse"; received "reject". This value was ignored; while it is present, cross-session messages are held for your approval instead of being delivered. Set it to one of the values above.

6346```6475```

6347 6476 

6348Dalam [managed settings](https://code.claude.com/docs/id/managed-settings.md), Claude Code memperlakukan nilai yang tidak dikenali sebagai `refuse`, nilai paling ketat, dan peringatan mengatakan pesan lintas sesi ditolak sampai administrator memperbaikinya. Untuk cara hold menggabungkan dengan nilai dalam file pengaturan lainnya, lihat [`crossSessionInbound`](https://code.claude.com/docs/id/settings-reference#crosssessioninbound).6477Di [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md), Claude Code memperlakukan nilai yang tidak dikenali sebagai `refuse`, nilai yang paling ketat, dan peringatan menyebut bahwa pesan lintas sesi ditolak sampai admin memperbaikinya. Untuk cara penahanan digabungkan dengan nilai di file pengaturan Anda yang lain, lihat [`crossSessionInbound`](https://code.claude.com/docs/id/settings-reference#crosssessioninbound).

6349 6478 

6350**Yang harus dilakukan:**6479**Yang perlu dilakukan:**

6351 6480 

6352* Atur kunci ke `"accept"`, `"hold"`, atau `"refuse"`, atau hapus6481* Atur key ke `"accept"`, `"hold"`, atau `"refuse"`, atau hapus key tersebut

6353* Ketika peringatan menyebutkan managed settings, minta administrator untuk memperbaiki nilai6482* Ketika peringatan menyebut pengaturan terkelola, minta admin untuk memperbaiki nilainya

6354 6483 

6355Sebelum v2.1.248, Claude Code mengabaikan nilai yang tidak dikenali tanpa peringatan.6484Sebelum v2.1.248, Claude Code mengabaikan nilai yang tidak dikenali tanpa peringatan.

6356 6485 

6357### ANTHROPIC\_FOUNDRY\_RESOURCE harus berupa nama resource Foundry6486### ANTHROPIC\_FOUNDRY\_RESOURCE must be a Foundry resource name

6358 6487 

6359Anda menetapkan [`ANTHROPIC_FOUNDRY_RESOURCE`](https://code.claude.com/docs/id/env-vars) ke sesuatu selain nama resource [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md) saja, seperti URL endpoint atau nama host-nya. Claude Code menolak nilai tersebut sebelum mengirim permintaan. Pesan muncul sebagai pengganti balasan Claude, bukan sebagai peringatan startup:6488Anda mengatur [`ANTHROPIC_FOUNDRY_RESOURCE`](https://code.claude.com/docs/id/env-vars) ke sesuatu selain nama resource [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md) polos, seperti URL endpoint atau nama host-nya. Claude Code menolak nilai tersebut sebelum mengirim permintaan. Pesan muncul di tempat balasan Claude, bukan sebagai peringatan startup:

6360 6489 

6361```text theme={null}6490```text theme={null}

6362API Error: ANTHROPIC_FOUNDRY_RESOURCE must be a Foundry resource name (2-64 letters, digits and hyphens, not starting or ending with a hyphen, such as my-resource), not a URL or host name. To use a full URL, set ANTHROPIC_FOUNDRY_BASE_URL instead.6491API Error: ANTHROPIC_FOUNDRY_RESOURCE must be a Foundry resource name (2-64 letters, digits and hyphens, not starting or ending with a hyphen, such as my-resource), not a URL or host name. To use a full URL, set ANTHROPIC_FOUNDRY_BASE_URL instead.

6363```6492```

6364 6493 

6365**Yang harus dilakukan:**6494**Yang perlu dilakukan:**

6366 6495 

6367* Atur `ANTHROPIC_FOUNDRY_RESOURCE` ke nama resource saja dan restart Claude Code. Untuk endpoint `https://my-resource.services.ai.azure.com/anthropic`, namanya adalah `my-resource`.6496* Atur `ANTHROPIC_FOUNDRY_RESOURCE` hanya ke nama resource dan mulai ulang Claude Code. Untuk endpoint `https://my-resource.services.ai.azure.com/anthropic`, namanya adalah `my-resource`.

6368* Untuk memberikan URL endpoint lengkap sebagai gantinya, atur [`ANTHROPIC_FOUNDRY_BASE_URL`](https://code.claude.com/docs/id/env-vars) ke URL tersebut dan hapus `ANTHROPIC_FOUNDRY_RESOURCE`, kemudian restart Claude Code. Claude Code hanya menerima salah satu dari kedua variabel tersebut.6497* Untuk memberikan URL endpoint lengkap, atur [`ANTHROPIC_FOUNDRY_BASE_URL`](https://code.claude.com/docs/id/env-vars) ke URL tersebut dan hapus `ANTHROPIC_FOUNDRY_RESOURCE`, lalu mulai ulang Claude Code. Claude Code hanya menerima salah satu dari kedua variabel tersebut.

6369 6498 

6370### Batas 200K tidak ditegakkan6499### The 200K limit isn't enforced

6371 6500 

6372Anda menetapkan [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](https://code.claude.com/docs/id/env-vars), yang biasanya membuat [auto-compaction](https://code.claude.com/docs/id/model-config.md#default-auto-compact-thresholds) menahan sesi pada model konteks 1M ke jendela 200K, tetapi tidak ada ambang batas compaction yang membatasi sesi ini pada atau di bawah 200K, jadi percakapan dapat tumbuh melampaui itu.6501Anda mengatur [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](https://code.claude.com/docs/id/env-vars), yang biasanya membuat [auto-compaction](https://code.claude.com/docs/id/model-config.md#default-auto-compact-thresholds) membatasi sesi pada model konteks 1M ke jendela 200K, tetapi tidak ada ambang compaction yang membatasi sesi ini pada atau di bawah 200K, sehingga percakapan dapat tumbuh melewatinya.

6373 6502 

6374```text theme={null}6503```text theme={null}

6375CLAUDE_CODE_DISABLE_1M_CONTEXT is set, but the 200K limit isn't enforced for <model>, so this session can grow past it. To enforce it, set CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 (or the autoCompactWindow setting).6504CLAUDE_CODE_DISABLE_1M_CONTEXT is set, but the 200K limit isn't enforced for <model>, so this session can grow past it. To enforce it, set CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 (or the autoCompactWindow setting).

6376```6505```

6377 6506 

6378Claude Code menegakkan batas 200K sendiri untuk setiap model yang dikenalinya sebagai memiliki jendela 1M asli, dan untuk ID model yang tidak dikenalinya, itu compacts pada jendela yang diasumsikan. Peringatan muncul ketika konfigurasi lain mengalahkan penegakan itu:6507Claude Code memberlakukan batas 200K dengan sendirinya untuk setiap model yang dikenalinya memiliki jendela 1M bawaan, dan untuk ID model yang tidak dikenalinya, Claude Code melakukan compaction pada jendela yang diasumsikannya. Peringatan muncul ketika konfigurasi lain menggagalkan pemberlakuan tersebut:

6379 6508 

6380* ID model bukan yang dikenali Claude Code, seperti alias [LLM gateway](https://code.claude.com/docs/id/llm-gateway), dan Anda menetapkan [`CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1`](https://code.claude.com/docs/id/env-vars) atau menaikkan jendela yang diasumsikan melampaui 200K dengan [`CLAUDE_CODE_MAX_CONTEXT_TOKENS`](https://code.claude.com/docs/id/env-vars). Dalam hal ini pesan juga menawarkan `or update to a Claude Code version that recognizes <model>` sebagai obat.6509* ID model bukan ID yang dikenali Claude Code, seperti alias [LLM gateway](https://code.claude.com/docs/id/llm-gateway), dan Anda mengatur [`CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1`](https://code.claude.com/docs/id/env-vars) atau menaikkan jendela yang diasumsikan melewati 200K dengan [`CLAUDE_CODE_MAX_CONTEXT_TOKENS`](https://code.claude.com/docs/id/env-vars). Dalam kasus ini pesan juga menawarkan `or update to a Claude Code version that recognizes <model>` sebagai solusi.

6381* Beta `context-1m` yang diminta melalui [`ANTHROPIC_BETAS`](https://code.claude.com/docs/id/env-vars) atau flag [`--betas`](https://code.claude.com/docs/id/cli-reference#cli-flags) masih meminta API untuk jendela 1M pada model yang menerima beta itu, sementara tidak ada yang compacts sesi pada 200K6510* Beta `context-1m` yang diminta melalui [`ANTHROPIC_BETAS`](https://code.claude.com/docs/id/env-vars) atau flag [`--betas`](https://code.claude.com/docs/id/cli-reference#cli-flags) tetap meminta jendela 1M dari API pada model yang menerima beta tersebut, sementara tidak ada yang melakukan compaction pada sesi di 200K

6382 6511 

6383**Yang harus dilakukan:**6512**Yang perlu dilakukan:**

6384 6513 

6385* Atur [`CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000`](https://code.claude.com/docs/id/env-vars), atau pengaturan [`autoCompactWindow`](https://code.claude.com/docs/id/settings-reference#autocompactwindow) ke `200000`, sehingga auto-compaction compacts pada batas 200K6514* Atur [`CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000`](https://code.claude.com/docs/id/env-vars), atau pengaturan [`autoCompactWindow`](https://code.claude.com/docs/id/settings-reference#autocompactwindow) ke `200000`, agar auto-compaction melakukan compaction di batas 200K

6386* Jika pesan menyebutkan ID model yang versi ini tidak kenali, jalankan `claude update`. Versi yang mengenali ID sebagai model konteks 1M menegakkan batas tanpa konfigurasi lebih lanjut.6515* Jika pesan menyebut ID model yang tidak dikenali versi ini, jalankan `claude update`. Versi yang mengenali ID tersebut sebagai model konteks 1M memberlakukan batas tanpa konfigurasi tambahan.

6387* Jika Anda ingin sesi menggunakan jendela penuh model sebagai gantinya, batalkan `CLAUDE_CODE_DISABLE_1M_CONTEXT`; peringatan melaporkan hanya bahwa batas 200K tidak ditegakkan6516* Jika Anda ingin sesi menggunakan jendela penuh model, hapus pengaturan `CLAUDE_CODE_DISABLE_1M_CONTEXT`; peringatan hanya melaporkan bahwa batas 200K tidak diberlakukan

6388 6517 

6389Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan output teks, peringatan ini muncul di stderr. Dalam sesi interaktif, [background session](https://code.claude.com/docs/id/agent-view.md), atau dengan `--output-format json` atau `stream-json`, peringatan ini masuk ke log debug sebagai gantinya. Jalankan dengan `--debug` untuk menangkapnya di `~/.claude/debug/<session-id>.txt`.6518Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan output teks, peringatan ini muncul di stderr. Dalam sesi interaktif, [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), atau dengan `--output-format json` atau `stream-json`, peringatan masuk ke log debug sebagai gantinya. Jalankan dengan `--debug` untuk menangkapnya di `~/.claude/debug/<session-id>.txt`.

6390 6519 

6391Sebelum v2.1.305, sesi interaktif mencetak peringatan di stderr saat startup.6520Sebelum v2.1.305, sesi interaktif mencetak peringatan di stderr saat startup.

6392 6521 

6393### ID model yang tidak dikenali pada permintaan6522### ID model tidak dikenali pada permintaan

6394 6523 

6395Claude Code mengirim permintaan untuk ID model yang versi Claude Code Anda tidak kenali, dan tidak menemukan entri [`modelOverrides`](https://code.claude.com/docs/id/model-config#override-model-ids-per-version) yang memetakan ID itu ke model yang dikenalinya. Claude Code masih mengirim permintaan dengan ID seperti yang Anda konfigurasi, dan tidak keluar atau beralih model.6524Claude Code mengirim permintaan untuk ID model yang tidak dikenali versi Claude Code Anda, dan tidak menemukan entri [`modelOverrides`](https://code.claude.com/docs/id/model-config#override-model-ids-per-version) yang memetakan ID tersebut ke model yang dikenalinya. Claude Code tetap mengirim permintaan dengan ID sebagaimana yang Anda konfigurasikan, dan tidak keluar atau berganti model.

6396 6525 

6397```text theme={null}6526```text theme={null}

6398[claude-code:unrecognized_model] {"model":"my-proxy-model","query_source":"sdk"}6527[claude-code:unrecognized_model] {"model":"my-proxy-model","query_source":"sdk"}

6399```6528```

6400 6529 

6401Dalam skrip atau harness yang membaca stderr, cocokkan pada awalan `[claude-code:unrecognized_model]`. Setelah awalan dan satu spasi, Claude Code menulis objek JSON satu baris. Claude Code dapat menambahkan bidang ke dalamnya dalam versi yang lebih baru, jadi abaikan bidang apa pun yang tidak Anda harapkan. Itu menulis setidaknya dua ini:6530Dalam skrip atau harness yang membaca stderr, cocokkan dengan prefiks `[claude-code:unrecognized_model]`. Setelah prefiks dan satu spasi, Claude Code menulis objek JSON satu baris. Claude Code dapat menambahkan field ke objek tersebut di versi mendatang, jadi abaikan field yang tidak Anda harapkan. Claude Code menulis setidaknya dua field berikut:

6402 6531 

6403* `model`: string model seperti yang Anda konfigurasi6532* `model`: string model sebagaimana yang Anda konfigurasikan

6404* `query_source`: jalur permintaan yang menggunakan model. Misalnya, nilainya adalah `sdk` untuk percakapan utama dari proses `-p` dan dimulai dengan `agent:` untuk subagent.6533* `query_source`: jalur permintaan yang menggunakan model tersebut. Misalnya, nilainya adalah `sdk` untuk percakapan utama eksekusi `-p` dan diawali dengan `agent:` untuk subagent.

6405 6534 

6406Claude Code menulis baris ke salah satu dari dua tempat, tergantung pada cara Anda menjalankannya:6535Claude Code menulis baris tersebut ke salah satu dari dua tempat, tergantung cara Anda menjalankannya:

6407 6536 

6408* Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan `-p`, Claude Code menulis ke stderr di bawah setiap `--output-format`, jadi Anda dapat menguraikan stdout tanpa memfilter baris keluar6537* Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan `-p`, Claude Code menulisnya ke stderr di bawah setiap `--output-format`, sehingga Anda dapat mem-parse stdout tanpa menyaring baris tersebut

6409* Dalam sesi interaktif atau [background session](https://code.claude.com/docs/id/agent-view.md), Claude Code menulis ke log debug sebagai gantinya; jalankan dengan `--debug` untuk menangkapnya di `~/.claude/debug/<session-id>.txt`6538* Dalam sesi interaktif atau [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), Claude Code menulisnya ke log debug sebagai gantinya; jalankan dengan `--debug` untuk menangkapnya di `~/.claude/debug/<session-id>.txt`

6410 6539 

6411Claude Code menulis baris sekali per ID model per proses. Itu menulis baris terpisah untuk setiap ID yang tidak dikenali lebih lanjut, seperti yang digunakan [subagent](https://code.claude.com/docs/id/sub-agents.md#choose-a-model) atau [background functionality](https://code.claude.com/docs/id/model-config.md#environment-variables).6540Claude Code menulis baris tersebut sekali per ID model per proses. Claude Code menulis baris terpisah untuk setiap ID tidak dikenali lainnya, seperti ID yang digunakan [subagent](https://code.claude.com/docs/id/sub-agents.md#choose-a-model) atau [fungsionalitas latar belakang](https://code.claude.com/docs/id/model-config.md#environment-variables).

6412 6541 

6413Claude Code tidak menulis baris untuk ID penyedia yang diselesaikannya ke model yang dikenalinya, seperti Amazon Bedrock `us.anthropic.claude-...` ID, ID Agent Platform Google Cloud dengan akhiran versi `@`, dan nama deployment Microsoft Foundry yang berisi ID model Claude. Claude Code memeriksa model di balik [application inference profile ARN](https://code.claude.com/docs/id/amazon-bedrock.md#map-each-model-version-to-an-inference-profile) Amazon Bedrock daripada ARN itu sendiri. Itu tidak menulis baris untuk ARN yang tidak dapat diselesaikannya, seperti yang salah ketik.6542Claude Code tidak menulis baris tersebut untuk ID penyedia yang di-resolve-nya ke model yang dikenalinya, seperti ID Amazon Bedrock `us.anthropic.claude-...`, ID Agent Platform Google Cloud dengan sufiks versi `@`, dan nama deployment Microsoft Foundry yang berisi ID model Claude. Claude Code memeriksa model di balik [ARN application inference profile](https://code.claude.com/docs/id/amazon-bedrock.md#map-each-model-version-to-an-inference-profile) Amazon Bedrock, bukan ARN itu sendiri. Claude Code tidak menulis baris untuk ARN yang tidak dapat di-resolve-nya, seperti ARN yang salah ketik.

6414 6543 

6415**Yang harus dilakukan:**6544**Yang perlu dilakukan:**

6416 6545 

6417* Jika Anda menetapkan ID dengan sengaja, seperti alias [LLM gateway](https://code.claude.com/docs/id/llm-gateway), tambahkan entri [`modelOverrides`](https://code.claude.com/docs/id/model-config#override-model-ids-per-version) ke [file pengaturan](https://code.claude.com/docs/id/settings.md#where-settings-live) Anda dengan ID sebagai nilainya. Gunakan ID model Anthropic sebagai kunci, bukan alias keluarga seperti `opus`. Untuk `my-proxy-model` dari baris contoh, tambahkan entri ini:6546* Jika Anda mengatur ID tersebut dengan sengaja, seperti alias [LLM gateway](https://code.claude.com/docs/id/llm-gateway), tambahkan entri [`modelOverrides`](https://code.claude.com/docs/id/model-config#override-model-ids-per-version) ke [file pengaturan](https://code.claude.com/docs/id/settings.md#where-settings-live) Anda dengan ID tersebut sebagai nilainya. Gunakan ID model Anthropic sebagai key, bukan alias keluarga seperti `opus`. Untuk `my-proxy-model` dari baris contoh, tambahkan entri ini:

6418 6547 

6419 ```json theme={null}6548 ```json theme={null}

6420 {6549 {


6424 }6553 }

6425 ```6554 ```

6426 6555 

6427 Claude Code kemudian memperlakukan `my-proxy-model` sebagai `claude-opus-4-6` dan berhenti menulis baris.6556 Claude Code kemudian memperlakukan `my-proxy-model` sebagai `claude-opus-4-6` dan berhenti menulis baris tersebut.

6428 6557 

6429* Jika ID menyebutkan model yang lebih baru dari versi Claude Code Anda, jalankan `claude update`6558* Jika ID menyebut model yang lebih baru dari versi Claude Code Anda, jalankan `claude update`

6430 6559 

6431* Jika ID adalah typo, perbaiki di mana pun dari [tempat Anda dapat menetapkan model](https://code.claude.com/docs/id/model-config.md#setting-your-model) atau [variabel alias](https://code.claude.com/docs/id/model-config.md#environment-variables) yang menyimpannya. Jika `query_source` dimulai dengan `agent:`, perbaiki di mana Anda menetapkan [model subagent](https://code.claude.com/docs/id/sub-agents.md#choose-a-model) sebagai gantinya.6560* Jika ID salah ketik, perbaiki di mana pun [tempat Anda dapat mengatur model](https://code.claude.com/docs/id/model-config.md#setting-your-model) atau [variabel alias](https://code.claude.com/docs/id/model-config.md#environment-variables) yang menyimpannya. Jika `query_source` diawali dengan `agent:`, perbaiki di tempat Anda mengatur [model subagent](https://code.claude.com/docs/id/sub-agents.md#choose-a-model).

6432 6561 

6433Sebelum v2.1.233, Claude Code tidak menulis baris ketika mengirim permintaan untuk ID model yang tidak dikenalinya.6562Sebelum v2.1.233, Claude Code tidak menulis baris apa pun saat mengirim permintaan untuk ID model yang tidak dikenalinya.

6434 6563 

6435### Entri allow sandbox diabaikan di bawah kunci terkelola6564### Entri allow sandbox diabaikan di bawah kunci terkelola

6436 6565 

6437Peringatan di `/status` dan `claude doctor` ini berarti pengaturan terkelola menetapkan [`allowManagedReadPathsOnly`](https://code.claude.com/docs/id/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) atau [`allowManagedDomainsOnly`](https://code.claude.com/docs/id/settings-reference#sandbox-network-allowmanageddomainsonly), sehingga entri [`allowRead`](https://code.claude.com/docs/id/settings-reference#sandbox-filesystem-allowread) atau [`allowedDomains`](https://code.claude.com/docs/id/settings-reference#sandbox-network-alloweddomains) dalam file yang disebutkannya tidak berlaku:6566Peringatan di `/status` dan `claude doctor` ini berarti pengaturan terkelola mengatur [`allowManagedReadPathsOnly`](https://code.claude.com/docs/id/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) atau [`allowManagedDomainsOnly`](https://code.claude.com/docs/id/settings-reference#sandbox-network-allowmanageddomainsonly), sehingga entri [`allowRead`](https://code.claude.com/docs/id/settings-reference#sandbox-filesystem-allowread) atau [`allowedDomains`](https://code.claude.com/docs/id/settings-reference#sandbox-network-alloweddomains) di file yang disebutnya tidak berlaku:

6438 6567 

6439```text wrap theme={null}6568```text wrap theme={null}

6440sandbox.filesystem.allowRead is ignored — managed settings set allowManagedReadPathsOnly, so only allowRead paths from managed settings are honored. The 3 entries in /home/you/.claude/settings.json will NOT apply (see https://code.claude.com/docs/en/settings#sandbox-settings).6569sandbox.filesystem.allowRead is ignored — managed settings set allowManagedReadPathsOnly, so only allowRead paths from managed settings are honored. The 3 entries in /home/you/.claude/settings.json will NOT apply (see https://code.claude.com/docs/en/settings#sandbox-settings).

6441```6570```

6442 6571 

6443Untuk kunci jaringan, peringatan menyebutkan `sandbox.network.allowedDomains` dan `allowManagedDomainsOnly`, dan mengatakan `only allowed domains (and WebFetch domain rules) from managed settings are honored`.6572Untuk kunci jaringan, peringatan menyebut `sandbox.network.allowedDomains` dan `allowManagedDomainsOnly`, serta menyatakan `only allowed domains (and WebFetch domain rules) from managed settings are honored`.

6444 6573 

6445**Yang harus dilakukan:**6574**Yang perlu dilakukan:**

6446 6575 

6447* Anda tidak perlu menindaklanjuti peringatan ini6576* Anda tidak perlu menindaklanjuti peringatan ini

6448* Jika Anda memerlukan jalur atau domain tersebut dan pengaturan terkelola organisasi Anda menetapkan kunci tersebut, minta administrator Anda untuk menambahkannya ke pengaturan tersebut. Peringatan tetap ada sampai Anda juga menghapus entri dari file yang disebutkan.6577* Jika Anda membutuhkan path atau domain tersebut dan pengaturan terkelola organisasi Anda mengatur kunci tersebut, minta admin Anda untuk menambahkannya ke pengaturan tersebut. Peringatan tetap ada sampai Anda juga menghapus entri dari file yang disebut.

6449* Untuk menghilangkan peringatan, hapus entri dari file yang disebutkan. Untuk file yang Anda bagikan, seperti `.claude/settings.json` proyek, Anda dapat membiarkan entri tetap ada untuk rekan tim yang tidak memiliki kunci tersebut dan membiarkan peringatan tetap tampil.6578* Untuk menghilangkan peringatan, hapus entri dari file yang disebut. Untuk file yang Anda bagikan, seperti `.claude/settings.json` proyek, Anda dapat membiarkan entri tersebut untuk rekan tim yang tidak terkena kunci dan membiarkan peringatan tetap tampil.

6450 6579 

6451### File mask sandbox yang tertinggal di jalur write-deny6580### Sandbox mask files left behind at write-deny paths

6452 6581 

6453Peringatan di `claude doctor` dan `/status` ini mencantumkan file mask: file placeholder read-only 0-byte di jalur yang penulisannya ditolak oleh [sandbox](https://code.claude.com/docs/id/sandboxing.md). Peringatan ini muncul di Linux dan WSL2 ketika sandboxing diaktifkan dengan isolasi filesystem aktif. Hapus file-file tersebut dari shell Anda setelah tidak ada sesi Claude Code yang terbuka di proyek yang menyimpannya.6582Peringatan di `claude doctor` dan `/status` ini mencantumkan file mask: file placeholder read-only berukuran 0 byte di path yang ditolak penulisannya oleh [sandbox](https://code.claude.com/docs/id/sandboxing.md). Peringatan muncul di Linux dan WSL2 saat sandboxing diaktifkan dengan isolasi filesystem aktif. Hapus file tersebut dari shell Anda setelah tidak ada sesi Claude Code yang terbuka di proyek yang menyimpannya.

6454 6583 

6455Sandbox membuat placeholder saat perintah sandboxed berjalan dan menghapusnya ketika perintah selesai. Placeholder tertinggal dalam kasus seperti berikut:6584Sandbox membuat placeholder saat perintah dalam sandbox berjalan dan menghapusnya saat perintah berakhir. Placeholder tertinggal dalam kasus seperti berikut:

6456 6585 

6457* Sesi dihentikan paksa sebelum perintah selesai, misalnya oleh SIGKILL6586* Sesi dihentikan paksa sebelum perintah berakhir, misalnya oleh SIGKILL

6458* Anda keluar dari sesi saat perintah sandboxed masih berjalan, seperti perintah yang berjalan di latar belakang6587* Anda keluar dari sesi saat perintah dalam sandbox masih berjalan, seperti perintah di latar belakang

6459 6588 

6460Di `claude doctor`, peringatan berbunyi:6589Di `claude doctor`, peringatan berbunyi:

6461 6590 


6464 Fix: A session leaves one where it was killed, or where it exited while a sandboxed command was still running. Remove each with `rm <path>` while no other Claude Code session is running in that project — a 0-byte read-only file where a settings file belongs makes "Yes, and don't ask again" fail to save, and the sandbox binds it read-only again on every start6593 Fix: A session leaves one where it was killed, or where it exited while a sandboxed command was still running. Remove each with `rm <path>` while no other Claude Code session is running in that project — a 0-byte read-only file where a settings file belongs makes "Yes, and don't ask again" fail to save, and the sandbox binds it read-only again on every start

6465```6594```

6466 6595 

6467**Yang harus dilakukan:**6596**Yang perlu dilakukan:**

6468 6597 

6469* Keluar dari setiap sesi Claude Code yang terbuka di proyek yang menyimpan file yang tercantum, termasuk sesi mana pun tempat `/status` menampilkan peringatan, lalu bekerja dari shell Anda. Placeholder yang masih digunakan oleh sandbox sesi lain adalah bagian aktif dari perlindungan tulis sesi tersebut6598* Keluar dari setiap sesi Claude Code yang terbuka di proyek yang menyimpan file yang dicantumkan, termasuk sesi mana pun tempat `/status` menampilkan peringatan, lalu bekerjalah dari shell Anda. Placeholder yang masih digunakan sandbox sesi lain adalah bagian aktif dari perlindungan penulisan sesi tersebut

6470* Di shell Anda, hapus setiap file yang tercantum dengan `rm`, dan konfirmasi jika `rm` menanyakan tentang file yang dilindungi dari penulisan. Peringatan menyebutkan hingga tiga file dan menghitung sisanya, jadi jalankan `claude doctor` lagi setelah menghapus sampai peringatan tidak lagi muncul6599* Di shell Anda, hapus setiap file yang dicantumkan dengan `rm`, dan konfirmasi jika `rm` menanyakan tentang file yang dilindungi dari penulisan. Peringatan menyebut hingga tiga file dan menghitung sisanya, jadi jalankan `claude doctor` lagi setelah menghapus sampai peringatan tidak lagi muncul

6471* Jika pilihan izin yang Anda simpan dengan "Yes, and don't ask again" tidak tetap, simpan lagi setelah menghapus placeholder6600* Jika pilihan izin yang Anda simpan dengan "Yes, and don't ask again" tidak tersimpan, simpan lagi setelah menghapus placeholder

6472 6601 

6473Sebelum v2.1.309, peringatan berbunyi `Stale sandbox mask files left by a killed session`.6602Sebelum v2.1.309, peringatan berbunyi `Stale sandbox mask files left by a killed session`.

6474 6603 

6475Sebelum v2.1.257, `claude doctor` tidak menandai file-file ini; versi-versi sebelumnya meninggalkan placeholder yang sama di belakang ketika sesi dibunuh.6604Sebelum v2.1.257, `claude doctor` tidak menandai file-file ini; versi sebelumnya meninggalkan placeholder yang sama saat sesi dihentikan paksa.

6476 6605 

6477### Two Claude Code config files exist6606### Two Claude Code config files exist

6478 6607 

6479Claude Code menggunakan file pertama yang disebutkan pesan ini, sehingga isi file kedua tidak berlaku. File pertama adalah `.config.json`, nama lama untuk [`.claude.json`](https://code.claude.com/docs/id/claude-directory#ce-claude-json). Pesan tersebut menyertakan pemeriksaan untuk mengetahui file mana yang menyimpan penyiapan Anda:6608Claude Code menggunakan file pertama yang disebut pesan ini, sehingga isi file kedua tidak berlaku. File pertama adalah `.config.json`, nama lama untuk [`.claude.json`](https://code.claude.com/docs/id/claude-directory#ce-claude-json). Pesan menyertakan pemeriksaan untuk mengetahui file mana yang berisi penyiapan Anda:

6480 6609 

6481```text wrap theme={null}6610```text wrap theme={null}

6482Two Claude Code config files exist: this run uses /home/you/.claude/.config.json, not /home/you/.claude.json. The file with the higher count here is usually yours, and this prints nothing else from them: grep -c -E '"(hasCompletedOnboarding|mcpServers)"' "/home/you/.claude/.config.json" "/home/you/.claude.json". To end this: if several hosts share this home, first get every host to version 2.1.319 or later, since an older one can write a moved .config.json back. Then stop your Claude processes on every host, move aside the one you do not want, and start none until no host lists it.6611Two Claude Code config files exist: this run uses /home/you/.claude/.config.json, not /home/you/.claude.json. The file with the higher count here is usually yours, and this prints nothing else from them: grep -c -E '"(hasCompletedOnboarding|mcpServers)"' "/home/you/.claude/.config.json" "/home/you/.claude.json". To end this: if several hosts share this home, first get every host to version 2.1.319 or later, since an older one can write a moved .config.json back. Then stop your Claude processes on every host, move aside the one you do not want, and start none until no host lists it.


6484 6613 

6485Di Windows, `The one with hasCompletedOnboarding or mcpServers in it is usually yours.` menggantikan kalimat yang berisi perintah `grep`.6614Di Windows, `The one with hasCompletedOnboarding or mcpServers in it is usually yours.` menggantikan kalimat yang berisi perintah `grep`.

6486 6615 

6487**Yang harus dilakukan:**6616**Yang perlu dilakukan:**

6488 6617 

6489**1. Temukan file yang menyimpan penyiapan Anda**6618**1. Temukan file yang berisi penyiapan Anda**

6490 6619 

6491* **Di Windows**: buka kedua file dan lihat mana yang berisi `hasCompletedOnboarding` atau `mcpServers`6620* **Di Windows**: buka kedua file dan lihat mana yang berisi `hasCompletedOnboarding` atau `mcpServers`

6492* **Di platform lain**: di shell Anda, jalankan perintah `grep` dari pesan dan lihat file mana yang memiliki hitungan lebih tinggi6621* **Di platform lain**: di shell Anda, jalankan perintah `grep` dari pesan dan lihat file mana yang memiliki hitungan lebih tinggi

6493 6622 

6494**2. Perbarui setiap host yang berbagi direktori home**6623**2. Perbarui setiap host yang berbagi direktori home**

6495 6624 

6496Jika beberapa host berbagi direktori home ini, perbarui terlebih dahulu Claude Code di setiap host ke versi yang disebutkan pesan atau yang lebih baru. Versi yang lebih lama dapat menulis kembali `.config.json` yang telah dipindahkan.6625Jika beberapa host berbagi direktori home ini, terlebih dahulu perbarui Claude Code di setiap host ke versi yang disebut pesan atau yang lebih baru. Versi lama dapat menulis kembali `.config.json` yang telah dipindahkan.

6497 6626 

6498**3. Hentikan Claude Code**6627**3. Hentikan Claude Code**

6499 6628 


6501 6630 

6502**4. Pindahkan file yang tidak Anda inginkan**6631**4. Pindahkan file yang tidak Anda inginkan**

6503 6632 

6504Pindahkan file yang tidak Anda inginkan keluar dari foldernya. Pindahkan, jangan hapus, sehingga Anda dapat mengembalikannya.6633Pindahkan file yang tidak Anda inginkan keluar dari foldernya. Pindahkan alih-alih menghapusnya, agar Anda dapat mengembalikannya.

6505 6634 

6506**5. Tunggu sebelum memulai Claude Code lagi**6635**5. Tunggu sebelum menjalankan Claude Code lagi**

6507 6636 

6508Jangan memulai Claude Code di host mana pun sampai tidak ada host yang masih mencantumkan file yang dipindahkan di jalur lamanya.6637Jangan jalankan Claude Code di host mana pun sampai tidak ada host yang masih mencantumkan file yang dipindahkan di path lamanya.

6509 6638 

6510Pesan berhenti muncul setelah salah satu dari kedua file tersebut tidak ada lagi.6639Pesan berhenti muncul setelah salah satu dari kedua file tersebut tidak ada lagi.

6511 6640 

6512### Make this change again later: \~/.claude.json could not be updated6641### Make this change again later: \~/.claude.json could not be updated

6513 6642 

6514Pemberitahuan di stderr ini berarti sebuah perubahan pada [`~/.claude.json`](https://code.claude.com/docs/id/claude-directory#ce-claude-json), seperti sign-in atau jawaban atas prompt kepercayaan, tidak tersimpan ke file tersebut:6643Pemberitahuan di stderr ini berarti perubahan pada [`~/.claude.json`](https://code.claude.com/docs/id/claude-directory#ce-claude-json), seperti proses masuk atau jawaban atas prompt kepercayaan, tidak tersimpan ke file:

6515 6644 

6516```text theme={null}6645```text theme={null}

6517Make this change again later: /home/user/.claude.json could not be updated, so it applies to this session only.6646Make this change again later: /home/user/.claude.json could not be updated, so it applies to this session only.

6518```6647```

6519 6648 

6520**Yang harus dilakukan:**6649**Yang perlu dilakukan:**

6521 6650 

6522* Lakukan perubahan tersebut lagi dalam sesi berikutnya. Misalnya, jalankan `/login` lagi atau jawab prompt kepercayaan lagi.6651* Lakukan perubahan lagi di sesi berikutnya. Misalnya, jalankan `/login` lagi atau jawab prompt kepercayaan lagi.

6523 6652 

6524## Respons tampak berkualitas lebih rendah dari biasanya6653## Respons tampak berkualitas lebih rendah dari biasanya

6525 6654 

fast-mode.md +40 −18

Details

12 12 

13Fast mode adalah konfigurasi kecepatan tinggi untuk model yang didukung, membuat model hingga 2,5x lebih cepat dengan biaya per token yang lebih tinggi. Aktifkan dengan `/fast` ketika Anda membutuhkan kecepatan untuk pekerjaan interaktif seperti iterasi cepat atau debugging langsung, dan nonaktifkan ketika biaya lebih penting daripada latensi.13Fast mode adalah konfigurasi kecepatan tinggi untuk model yang didukung, membuat model hingga 2,5x lebih cepat dengan biaya per token yang lebih tinggi. Aktifkan dengan `/fast` ketika Anda membutuhkan kecepatan untuk pekerjaan interaktif seperti iterasi cepat atau debugging langsung, dan nonaktifkan ketika biaya lebih penting daripada latensi.

14 14 

15Fast mode menggunakan model yang sama dengan konfigurasi API berbeda yang memprioritaskan kecepatan daripada efisiensi biaya, sehingga kualitas dan kemampuannya tetap sama. Fast mode didukung pada Fable 5.2, Opus 5.5, Opus 5, dan Opus 4.8. Mode ini tidak tersedia pada Sonnet, Haiku, atau model lainnya.15Fast mode menggunakan model yang sama dengan konfigurasi API berbeda yang memprioritaskan kecepatan daripada efisiensi biaya, sehingga kualitas dan kemampuannya tetap sama. Di Anthropic API, fast mode didukung pada Fable 5.2, Opus 5.5, Opus 5, dan Opus 4.8, tetapi tidak pada Sonnet, Haiku, atau model lainnya. Untuk model di Agent Platform milik Google Cloud, lihat [Menggunakan fast mode di Agent Platform](#use-fast-mode-on-agent-platform).

16 16 

17> [!WARNING]17> [!WARNING]

18>18>


25 25 

26Yang perlu diketahui:26Yang perlu diketahui:

27 27 

28* Gunakan `/fast` untuk mengaktifkan mode cepat di Claude Code CLI. Ekstensi [VS Code](https://code.claude.com/docs/id/vs-code.md) menawarkan perintah **Toggle fast mode** ketika model yang dipilih mendukung mode cepat. Claude Code menyimpan pengaturan tersebut ke pengaturan [`fastMode`](#toggle-fast-mode) Anda.28* Gunakan `/fast` untuk mengaktifkan fast mode di Claude Code CLI. [Ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) menawarkan perintah **Toggle fast mode** ketika model yang dipilih mendukung fast mode. Di Anthropic API, Claude Code menyimpan pilihan tersebut ke [pengaturan `fastMode`](#toggle-fast-mode) Anda.

29* Harga fast mode per MTok input/output adalah \$16/\$80 pada Fable 5.2, \$8/\$40 pada Opus 5.5, dan \$10/\$50 pada Opus 5 dan Opus 4.8.29* Harga fast mode Anthropic per MTok input/output adalah \$16/\$80 pada Fable 5.2, \$8/\$40 pada Opus 5.5, dan \$10/\$50 pada Opus 5 dan Opus 4.8.

30* Tersedia untuk pengguna Claude Code pada paket langganan (Pro/Max/Ultra/Team/Enterprise) dan di Claude Console. Organisasi Team dan Enterprise memerlukan Owner untuk mengaktifkannya terlebih dahulu, dan organisasi Console memerlukan akses yang disediakan terlebih dahulu untuk menggunakannya dengan Opus 5 atau Opus 4.8. [Persyaratan](#requirements) menjelaskan keduanya.30* Tersedia untuk pengguna Claude Code pada paket langganan (Pro/Max/Ultra/Team/Enterprise), di Claude Console, dan di Agent Platform milik Google Cloud [dengan ketentuan](#use-fast-mode-on-agent-platform). Organisasi Team dan Enterprise memerlukan Owner untuk mengaktifkannya terlebih dahulu, dan organisasi Console memerlukan akses yang disediakan terlebih dahulu untuk menggunakannya dengan Opus 5 atau Opus 4.8. [Persyaratan](#requirements) menjelaskan keduanya.

31* Untuk pengguna Claude Code pada paket langganan (Pro/Max/Ultra/Team/Enterprise), fast mode tersedia hanya melalui kredit penggunaan dan tidak termasuk dalam rate limit langganan.31* Untuk pengguna Claude Code pada paket langganan (Pro/Max/Ultra/Team/Enterprise), fast mode tersedia hanya melalui kredit penggunaan dan tidak termasuk dalam rate limit langganan.

32 32 

33## Mengaktifkan atau menonaktifkan fast mode33## Mengaktifkan atau menonaktifkan fast mode

34 34 

35Di Agent Platform, `/fast` dan pengaturan `fastMode` bekerja secara berbeda, jadi ikuti [Menggunakan fast mode di Agent Platform](#use-fast-mode-on-agent-platform) sebagai gantinya.

36 

35Di CLI, aktifkan atau nonaktifkan fast mode dengan salah satu cara berikut:37Di CLI, aktifkan atau nonaktifkan fast mode dengan salah satu cara berikut:

36 38 

37* Jalankan `/fast`, tekan Space untuk mengaktifkan atau menonaktifkan, lalu tekan Enter untuk mengonfirmasi39* Jalankan `/fast`, tekan Space untuk mengaktifkan atau menonaktifkan, lalu tekan Enter untuk mengonfirmasi

38* Pada model yang mendukung fast mode, atur `"fastMode": true` di [file pengaturan pengguna](https://code.claude.com/docs/id/settings.md) Anda. Jika Anda mengaturnya pada model lain, Anda tetap menggunakan model tersebut dengan fast mode nonaktif. Pada Fable 5.2, pengaturan tersebut saja tidak berpengaruh hingga Anda menjalankan `/fast` saat menggunakan Fable 5.2.40* Pada model yang mendukung fast mode, atur `"fastMode": true` di [file pengaturan pengguna](https://code.claude.com/docs/id/settings.md) Anda. Jika Anda mengaturnya pada model lain, Anda tetap menggunakan model tersebut dengan fast mode nonaktif. Pada Fable 5.2, pengaturan tersebut saja tidak berpengaruh hingga Anda menjalankan `/fast` saat menggunakan Fable 5.2.

39 41 

40Secara default, fast mode yang Anda aktifkan dalam sesi interaktif akan tetap berlaku di seluruh sesi pada model yang didukung. Pada Fable 5.2, fast mode hanya tetap berlaku jika Anda [mengaktifkannya saat menggunakan Fable 5.2](#switch-models-while-fast-mode-is-on). Anda dapat mengonfigurasi fast mode agar diatur ulang di setiap sesi. Lihat [mewajibkan opt-in per sesi](#require-per-session-opt-in) untuk detailnya.42Secara default di Anthropic API, fast mode yang Anda aktifkan dalam sesi interaktif akan tetap berlaku di seluruh sesi pada model yang didukung. Pada Fable 5.2, fast mode hanya tetap berlaku jika Anda [mengaktifkannya saat menggunakan Fable 5.2](#switch-models-while-fast-mode-is-on). Anda dapat mengonfigurasi fast mode agar diatur ulang di setiap sesi. Lihat [mewajibkan opt-in per sesi](#require-per-session-opt-in) untuk detailnya.

41 43 

42Di luar [sesi cloud](#use-fast-mode-in-cloud-sessions), dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan flag `-p`, `/fast` hanya berfungsi dalam sesi yang diluncurkan dengan fast mode di nilai [`--settings`](https://code.claude.com/docs/id/cli-reference#cli-flags)-nya, misalnya `claude -p --settings '{"fastMode": true}'`; pengalihan tersebut kemudian hanya berlaku untuk sesi itu dan tidak disimpan sebagai default Anda. Bentuk `-p` memerlukan Claude Code v2.1.205 atau yang lebih baru. Di tempat lain dalam mode non-interaktif, perintah tersebut melaporkan bahwa fast mode tidak tersedia.44Di luar [sesi cloud](#use-fast-mode-in-cloud-sessions), dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan flag `-p`, `/fast` hanya berfungsi dalam sesi yang diluncurkan dengan fast mode di nilai [`--settings`](https://code.claude.com/docs/id/cli-reference#cli-flags)-nya, misalnya `claude -p --settings '{"fastMode": true}'`; pengalihan tersebut kemudian hanya berlaku untuk sesi itu dan tidak disimpan sebagai default Anda. Bentuk `-p` memerlukan Claude Code v2.1.205 atau yang lebih baru. Di tempat lain dalam mode non-interaktif, perintah tersebut melaporkan bahwa fast mode tidak tersedia.

43 45 


47 49 

48Saat Anda mengaktifkan fast mode dengan `/fast`:50Saat Anda mengaktifkan fast mode dengan `/fast`:

49 51 

50* Jika model Anda saat ini tidak mendukung fast mode, Claude Code beralih ke Opus52* Di Anthropic API, jika model Anda saat ini tidak mendukung fast mode, Claude Code beralih ke Opus

51* Fast mode pada Fable 5.2 memerlukan Claude Code v2.1.321 atau yang lebih baru53* Fast mode pada Fable 5.2 memerlukan Claude Code v2.1.321 atau yang lebih baru

52* Anda akan melihat pesan konfirmasi: "Fast mode ON"54* Anda akan melihat pesan konfirmasi: "Fast mode ON"

53* Ikon kecil `↯` muncul di samping prompt selama fast mode aktif55* Ikon kecil `↯` muncul di samping prompt selama fast mode aktif

54* Jalankan `/fast` lagi kapan saja untuk memeriksa apakah fast mode aktif atau tidak56* Jalankan `/fast` lagi kapan saja untuk memeriksa apakah fast mode aktif atau tidak

55 57 

56Opus 5.5 adalah default fast mode di Claude Code v2.1.280 dan yang lebih baru. Sebelum v2.1.280, fast mode secara default menggunakan Opus 5 sejak v2.1.219.58Di Anthropic API, Opus 5.5 adalah default fast mode di Claude Code v2.1.280 dan yang lebih baru. Sebelum v2.1.280, fast mode secara default menggunakan Opus 5 sejak v2.1.219.

57 59 

58Saat Anda menonaktifkan fast mode dengan `/fast` lagi, Anda tetap menggunakan model Anda saat ini. Untuk beralih ke model lain, gunakan `/model`.60Saat Anda menonaktifkan fast mode dengan `/fast` lagi, Anda tetap menggunakan model Anda saat ini. Untuk beralih ke model lain, gunakan `/model`.

59 61 


63 65 

64* **Beralih dari model yang didukung**: saat Anda beralih ke model yang tidak mendukung fast mode, Claude Code mematikan fast mode. Ini termasuk Opus 4.7; sebelum v2.1.221, fast mode tetap aktif setelah beralih ke Opus 4.7 dan API menolak permintaan tersebut.66* **Beralih dari model yang didukung**: saat Anda beralih ke model yang tidak mendukung fast mode, Claude Code mematikan fast mode. Ini termasuk Opus 4.7; sebelum v2.1.221, fast mode tetap aktif setelah beralih ke Opus 4.7 dan API menolak permintaan tersebut.

65* **Beralih kembali**: fast mode aktif kembali pada model Opus yang didukung jika preferensi tersimpan Anda aktif. Dengan [opt-in per sesi](#require-per-session-opt-in), jalankan `/fast` sebagai gantinya.67* **Beralih kembali**: fast mode aktif kembali pada model Opus yang didukung jika preferensi tersimpan Anda aktif. Dengan [opt-in per sesi](#require-per-session-opt-in), jalankan `/fast` sebagai gantinya.

66* **Beralih ke Fable 5.2**: fast mode dimatikan kecuali Anda mengaktifkannya saat menggunakan Fable 5.2. Untuk mengaktifkannya, jalankan `/fast` pada Fable 5.2. Kecuali Anda telah mengatur [opt-in per sesi](#require-per-session-opt-in), pengaturan itu tetap berlaku di seluruh sesi hingga Anda mematikannya atau mengaktifkannya dengan model lain.68* **Beralih ke Fable 5.2**: fast mode dimatikan kecuali Anda mengaktifkannya saat menggunakan Fable 5.2. Untuk mengaktifkannya, jalankan `/fast` pada Fable 5.2. Kecuali Anda telah mengatur [opt-in per sesi](#require-per-session-opt-in), pengaturan itu tetap berlaku di seluruh sesi di Anthropic API hingga Anda mematikan fast mode atau mengaktifkannya dengan model lain.

67 69 

68Setiap kali peralihan model mengaktifkan atau mematikan fast mode, Claude Code menampilkan konfirmasi `Fast mode ON` atau `Fast mode OFF`, dan ikon `↯` muncul selama fast mode aktif. Hal ini berlaku baik Anda beralih dengan `/model`, dengan [`/config model=<model>`](https://code.claude.com/docs/id/settings), maupun dari perangkat yang terhubung melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md).70Setiap kali peralihan model mengaktifkan atau mematikan fast mode, Claude Code menampilkan konfirmasi `Fast mode ON` atau `Fast mode OFF`, dan ikon `↯` muncul selama fast mode aktif. Hal ini berlaku baik Anda beralih dengan `/model`, dengan [`/config model=<model>`](https://code.claude.com/docs/id/settings), maupun dari perangkat yang terhubung melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md).

69 71 

70Claude Code mengirim ulang status fast mode sesi ke perangkat yang terhubung melalui Remote Control setelah peralihan model, penyambungan ulang, atau [pemeriksaan ketersediaan](#use-fast-mode-behind-proxies-and-llm-gateways) yang gagal.

71 

72### Menggunakan fast mode dalam sesi cloud72### Menggunakan fast mode dalam sesi cloud

73 73 

74Fast mode berfungsi dalam [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) jika tersedia di akun Anda, baik sesi berjalan di infrastruktur yang dikelola Anthropic maupun di [runner yang di-hosting sendiri](https://code.claude.com/docs/id/self-hosted-environments). Memerlukan Claude Code v2.1.271 atau yang lebih baru di lingkungan sesi.74Fast mode berfungsi dalam [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) jika tersedia di akun Anda, baik sesi berjalan di infrastruktur yang dikelola Anthropic maupun di [runner yang di-hosting sendiri](https://code.claude.com/docs/id/self-hosted-environments) di Anthropic API. Memerlukan Claude Code v2.1.271 atau yang lebih baru di lingkungan sesi.

75 75 

76Ketik `/fast on` di sesi untuk mengaktifkan fast mode. Fast mode tetap aktif hanya untuk sesi tersebut dan tidak disimpan sebagai default Anda. [Persyaratan](#requirements) juga berlaku dalam sesi cloud.76Ketik `/fast on` di sesi untuk mengaktifkan fast mode. Fast mode tetap aktif hanya untuk sesi tersebut dan tidak disimpan sebagai default Anda. [Persyaratan](#requirements) juga berlaku dalam sesi cloud.

77 77 


79 79 

80## Pahami pertukaran biaya80## Pahami pertukaran biaya

81 81 

82Fast mode memiliki harga per-token yang lebih tinggi daripada kecepatan standar:82Fast mode memiliki harga per-token yang lebih tinggi daripada kecepatan standar. Berikut adalah tarif Anthropic:

83 83 

84| Model | Input (MTok) | Output (MTok) |84| Model | Input (MTok) | Output (MTok) |

85| - | - | - |85| - | - | - |


129 129 

130Mode cepat memerlukan semua hal berikut:130Mode cepat memerlukan semua hal berikut:

131 131 

132* **Hanya API Anthropic atau langganan**: fast mode tersedia melalui API Anthropic Console dan untuk paket langganan Claude menggunakan kredit penggunaan. Fast mode tidak tersedia di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau Claude Platform di AWS. Organisasi Console juga harus memiliki [akses fast mode yang disediakan](#enable-fast-mode-for-your-organization) untuk menggunakannya dengan Opus 5 atau Opus 4.8.132* **Penyedia yang didukung**: fast mode tersedia melalui API Anthropic Console, untuk paket langganan Claude menggunakan kredit penggunaan, dan di Google Cloud's Agent Platform [dengan ketentuan](#use-fast-mode-on-agent-platform). Fast mode tidak tersedia di Amazon Bedrock, Microsoft Foundry, atau Claude Platform di AWS, di mana `/fast` menampilkan "Fast mode is not available on this provider". Organisasi Console juga harus memiliki [akses fast mode yang disediakan](#enable-fast-mode-for-your-organization) untuk menggunakannya dengan Opus 5 atau Opus 4.8.

133* **Kredit penggunaan diaktifkan untuk paket langganan**: pada paket Pro, Max, Ultra, Team, atau Enterprise, akun Anda harus memiliki [kredit penggunaan](https://code.claude.com/docs/id/costs.md#add-usage-credits-to-your-subscription) yang diaktifkan, yang memungkinkan penagihan di luar penggunaan yang disertakan dalam paket Anda. Sampai diaktifkan, `/fast` menampilkan "Fast mode requires usage credits". Untuk mengaktifkannya, ikuti langkah untuk paket Anda:133* **Kredit penggunaan diaktifkan untuk paket langganan**: pada paket Pro, Max, Ultra, Team, atau Enterprise, akun Anda harus memiliki [kredit penggunaan](https://code.claude.com/docs/id/costs.md#add-usage-credits-to-your-subscription) yang diaktifkan, yang memungkinkan penagihan di luar penggunaan yang disertakan dalam paket Anda. Sampai diaktifkan, `/fast` menampilkan "Fast mode requires usage credits". Untuk mengaktifkannya, ikuti langkah untuk paket Anda:

134 * Pada Pro, Max, dan Ultra, aktifkan di bagian **Usage credits** dari [**Settings > Usage**](https://claude.ai/settings/usage) di claude.ai, atau jalankan `/usage-credits` untuk membuka halaman tersebut.134 * Pada Pro, Max, dan Ultra, aktifkan di bagian **Usage credits** dari [**Settings > Usage**](https://claude.ai/settings/usage) di claude.ai, atau jalankan `/usage-credits` untuk membuka halaman tersebut.

135 * Pada Team dan Enterprise, anggota dengan akses penagihan mengaktifkannya untuk organisasi di [**Organization settings > Usage**](https://claude.ai/admin-settings/usage), dan anggota tanpa akses tersebut menjalankan `/usage-credits` untuk mengirim permintaan kepada admin organisasi.135 * Pada Team dan Enterprise, anggota dengan akses penagihan mengaktifkannya untuk organisasi di [**Organization settings > Usage**](https://claude.ai/admin-settings/usage), dan anggota tanpa akses tersebut menjalankan `/usage-credits` untuk mengirim permintaan kepada admin organisasi.


150> * **Mode cepat tidak diaktifkan**: jika mode cepat belum diaktifkan untuk organisasi Anda, mengaktifkan mode cepat dengan `/fast` menampilkan "Fast mode has been disabled by your organization."150> * **Mode cepat tidak diaktifkan**: jika mode cepat belum diaktifkan untuk organisasi Anda, mengaktifkan mode cepat dengan `/fast` menampilkan "Fast mode has been disabled by your organization."

151> * **Mode cepat dimatikan oleh pengaturan yang dikelola**: jika organisasi Anda menerapkan [pengaturan yang dikelola](https://code.claude.com/docs/id/managed-settings.md) yang menetapkan [`fastMode: false`](https://code.claude.com/docs/id/settings-reference#fastmode), mengaktifkan mode cepat dengan `/fast` menampilkan pesan "Fast mode has been disabled by your organization" yang sama.151> * **Mode cepat dimatikan oleh pengaturan yang dikelola**: jika organisasi Anda menerapkan [pengaturan yang dikelola](https://code.claude.com/docs/id/managed-settings.md) yang menetapkan [`fastMode: false`](https://code.claude.com/docs/id/settings-reference#fastmode), mengaktifkan mode cepat dengan `/fast` menampilkan pesan "Fast mode has been disabled by your organization" yang sama.

152> * **Opt-in per sesi diperlukan**: pengaturan yang dikelola yang menetapkan [`fastModePerSessionOptIn: true`](#require-per-session-opt-in) menolak `/fast on` dengan pesan yang sama di mana-mana kecuali sesi terminal interaktif.152> * **Opt-in per sesi diperlukan**: pengaturan yang dikelola yang menetapkan [`fastModePerSessionOptIn: true`](#require-per-session-opt-in) menolak `/fast on` dengan pesan yang sama di mana-mana kecuali sesi terminal interaktif.

153> * **Model fast mode tidak diizinkan**: jika allowlist [`availableModels`](https://code.claude.com/docs/id/model-config#restrict-model-selection) organisasi Anda mengecualikan model Opus fast mode, mengaktifkannya ditolak dengan "is not in your organization's allowed models". Dalam sesi yang sudah berjalan pada model yang diizinkan yang mendukung fast mode, `/fast` malah mengaktifkan fast mode pada model Anda saat ini tanpa beralih model.153> * **Model fast mode tidak diizinkan**: jika allowlist [`availableModels`](https://code.claude.com/docs/id/model-config#restrict-model-selection) organisasi Anda mengecualikan model yang menjadi tujuan peralihan `/fast`, mengaktifkannya ditolak dengan "is not in your organization's allowed models". Dalam sesi yang sudah berjalan pada model yang diizinkan yang mendukung fast mode, `/fast` malah mengaktifkan fast mode pada model Anda saat ini tanpa beralih model.

154 154 

155### Aktifkan mode cepat untuk organisasi Anda155### Aktifkan mode cepat untuk organisasi Anda

156 156 


163 163 

164Opsi lain untuk menonaktifkan mode cepat sepenuhnya adalah dengan menetapkan `CLAUDE_CODE_DISABLE_FAST_MODE=1`. Lihat [Variabel lingkungan](https://code.claude.com/docs/id/env-vars.md).164Opsi lain untuk menonaktifkan mode cepat sepenuhnya adalah dengan menetapkan `CLAUDE_CODE_DISABLE_FAST_MODE=1`. Lihat [Variabel lingkungan](https://code.claude.com/docs/id/env-vars.md).

165 165 

166### Gunakan fast mode di Agent Platform

167 

168Di [Google Cloud's Agent Platform](https://code.claude.com/docs/id/google-vertex-ai.md), Anda dapat mengaktifkan fast mode untuk Fable 5.2, dengan `/fast` dalam sesi interaktif atau dengan flag peluncuran dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md). Memerlukan Claude Code v2.1.322 atau lebih baru.

169 

170Fast mode memerlukan [region](https://code.claude.com/docs/id/google-vertex-ai.md#region-configuration) untuk Fable 5.2 berupa `global`, `us`, atau `eu`. Di region lain, `/fast` menampilkan `Fast mode needs Vertex region global, us or eu`, dan `claude -p` berjalan dengan kecepatan standar. Atur region di shell Anda sebelum memulai Claude Code, misalnya ke `global`:

171 

172```bash theme={null}

173export VERTEX_REGION_CLAUDE_FABLE_5_2=global

174```

175 

176Kemudian aktifkan fast mode:

177 

178* **Dalam sesi interaktif**: jalankan `/fast`. Perintah ini mengalihkan Anda ke Fable 5.2 dari model Opus atau model lain tanpa fast mode di Agent Platform. Fast mode tidak disimpan sebagai default Anda.

179* **Dalam mode non-interaktif**: berikan Fable 5.2 sebagai [`--model`](https://code.claude.com/docs/id/cli-reference#cli-flags) dan fast mode dalam [`--settings`](https://code.claude.com/docs/id/cli-reference#cli-flags), misalnya `claude -p "Summarize this project" --model claude-fable-5-2 --settings '{"fastMode": true}'`

180 

181Di Agent Platform, `"fastMode": true` dalam pengaturan pengguna, proyek, lokal, atau terkelola Anda tidak berpengaruh.

182 

183Jika Agent Platform menolak fast mode, Claude Code kembali ke kecepatan standar. Sesi interaktif kemudian menampilkan salah satu pesan terminal berikut:

184 

185* `Using standard speed on Fable 5.2 · fast mode wasn't available`: jalankan `/fast on` untuk mencoba fast mode lagi

186* `Fast mode was refused for this project · trying again in 30m`: Agent Platform menjawab permintaan fast mode dengan error 403 atau 404. Untuk mencoba lebih cepat, jalankan `/fast on`.

187 

166### Gunakan mode cepat di balik proxy dan gateway LLM188### Gunakan mode cepat di balik proxy dan gateway LLM

167 189 

168Sebelum menawarkan mode cepat, Claude Code memeriksa ketersediaan mode cepat organisasi Anda dengan permintaan langsung ke `api.anthropic.com`. Pemeriksaan tidak mengikuti [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/id/llm-gateway-connect#set-the-base-url-and-credential), jadi pada jaringan yang merutekan lalu lintas Claude melalui [gateway LLM](https://code.claude.com/docs/id/llm-gateway) dan memblokir egress langsung ke `api.anthropic.com`, pemeriksaan gagal meskipun permintaan inferensi berfungsi. Pemeriksaan menggunakan [proxy HTTP](https://code.claude.com/docs/id/network-config.md#proxy-configuration) yang dikonfigurasi, jadi blokir jaringan hanya gagal pemeriksaan di mana `api.anthropic.com` tidak dapat dijangkau bahkan melalui proxy.190Sebelum menawarkan fast mode di API Anthropic, Claude Code memeriksa ketersediaan fast mode organisasi Anda dengan permintaan langsung ke `api.anthropic.com`. Pemeriksaan tidak mengikuti [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/id/llm-gateway-connect#set-the-base-url-and-credential), jadi pada jaringan yang merutekan lalu lintas Claude melalui [gateway LLM](https://code.claude.com/docs/id/llm-gateway) dan memblokir egress langsung ke `api.anthropic.com`, pemeriksaan gagal meskipun permintaan inferensi berfungsi.

169 191 

170Jika organisasi Anda telah mengaktifkan fast mode tetapi `/fast` menyatakan sebaliknya, temukan pesan yang ditampilkannya di antara kasus-kasus berikut.192Pemeriksaan menggunakan [proxy HTTP](https://code.claude.com/docs/id/network-config.md#proxy-configuration) yang dikonfigurasi, jadi blokir jaringan hanya menggagalkan pemeriksaan di mana `api.anthropic.com` tidak dapat dijangkau bahkan melalui proxy. Jika organisasi Anda telah mengaktifkan fast mode tetapi `/fast` menyatakan sebaliknya, temukan pesan yang ditampilkannya di antara kasus-kasus berikut.

171 193 

172#### Fast mode unavailable due to network connectivity issues194#### Fast mode unavailable due to network connectivity issues

173 195 


199 221 

200### Require per-session opt-in222### Require per-session opt-in

201 223 

202Secara default, fast mode yang diaktifkan pengguna dalam sesi interaktif bertahan di seluruh sesi pada model yang didukung. Pada Fable 5.2, fast mode hanya bertahan jika pengguna [mengaktifkannya saat menggunakan Fable 5.2](#switch-models-while-fast-mode-is-on).224Secara default di API Anthropic, fast mode yang diaktifkan pengguna dalam sesi interaktif bertahan di seluruh sesi pada model yang didukung. Pada Fable 5.2, fast mode hanya bertahan jika pengguna [mengaktifkannya saat menggunakan Fable 5.2](#switch-models-while-fast-mode-is-on).

203 225 

204Agar setiap sesi dimulai dengan fast mode mati, atur `fastModePerSessionOptIn` ke `true` di [file pengaturan](https://code.claude.com/docs/id/settings.md#where-settings-live) apa pun. Pengguna kemudian mengaktifkannya dengan `/fast` di setiap sesi. Owner pada paket [Team](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_teams#team-&-enterprise) atau [Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_enterprise) dapat menerapkannya di seluruh organisasi melalui [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md).226Agar setiap sesi dimulai dengan fast mode mati, atur `fastModePerSessionOptIn` ke `true` di [file pengaturan](https://code.claude.com/docs/id/settings.md#where-settings-live) apa pun. Pengguna kemudian mengaktifkannya dengan `/fast` di setiap sesi. Owner pada paket [Team](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_teams#team-&-enterprise) atau [Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=fast_mode_enterprise) dapat menerapkannya di seluruh organisasi melalui [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md).

205 227 


227Jika Anda kehabisan kredit penggunaan di tengah sesi, Claude Code mencoba ulang setiap permintaan mode cepat yang ditolak dengan kecepatan dan harga standar, sehingga Anda terus bekerja, dan tidak ada cooldown. Cara Anda melihat penolakan tergantung pada jenis sesi:249Jika Anda kehabisan kredit penggunaan di tengah sesi, Claude Code mencoba ulang setiap permintaan mode cepat yang ditolak dengan kecepatan dan harga standar, sehingga Anda terus bekerja, dan tidak ada cooldown. Cara Anda melihat penolakan tergantung pada jenis sesi:

228 250 

229* Dalam sesi interaktif, Claude Code menampilkan notifikasi "Fast mode disabled · Out of usage credits" dan mematikan fast mode. Preferensi fast mode yang disimpan Anda tidak berubah; jalankan `/fast` untuk mengaktifkan fast mode kembali.251* Dalam sesi interaktif, Claude Code menampilkan notifikasi "Fast mode disabled · Out of usage credits" dan mematikan fast mode. Preferensi fast mode yang disimpan Anda tidak berubah; jalankan `/fast` untuk mengaktifkan fast mode kembali.

230* Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan `--output-format stream-json`, dan melalui Agent SDK, Claude Code memancarkan teks yang sama pada aliran pesan sebagai pesan `system` dengan subtipe `notification`, sekali per giliran saat Anda kehabisan kredit penggunaan. Mode cepat tetap aktif. Memerlukan Claude Code v2.1.221 atau lebih baru.252* Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan `--output-format stream-json`, dan melalui Agent SDK, Claude Code memancarkan teks yang sama pada aliran pesan sebagai pesan `system` dengan subtipe `notification`. Pesan tersebut muncul sekali per giliran selama Anda kehabisan kredit penggunaan. Fast mode tetap aktif.

231 253 

232## Pratinjau penelitian254## Pratinjau penelitian

233 255 

Details

93 <td>✓ (Opus 5 dan 4.8 memerlukan penyediaan akses)</td>93 <td>✓ (Opus 5 dan 4.8 memerlukan penyediaan akses)</td>

94 <td>✗</td>94 <td>✗</td>

95 <td>✗</td>95 <td>✗</td>

96 <td>✗</td>96 <td>✓ ([Fable 5.2, dengan syarat](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-on-agent-platform))</td>

97 <td>✗</td>97 <td>✗</td>

98 </tr>98 </tr>

99 99 


256 256 

257> [tab] Platform Agent Google Cloud257> [tab] Platform Agent Google Cloud

258>258>

259> **Tidak tersedia:** semua [fitur yang memerlukan langganan Claude](#features-that-require-a-claude-subscription), ditambah [fast mode](https://code.claude.com/docs/id/fast-mode.md), [Advisor](https://code.claude.com/docs/id/advisor.md), [Channels](https://code.claude.com/docs/id/channels.md), [dashboard analitik](https://code.claude.com/docs/id/analytics.md), [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md), dan [perintah `/design-sync` dan `/import`](https://code.claude.com/docs/id/commands#all-commands).259> **Tidak tersedia:** semua [fitur yang memerlukan langganan Claude](#features-that-require-a-claude-subscription), ditambah [Advisor](https://code.claude.com/docs/id/advisor.md), [Channels](https://code.claude.com/docs/id/channels.md), [dashboard analitik](https://code.claude.com/docs/id/analytics.md), [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md), dan [perintah `/design-sync` dan `/import`](https://code.claude.com/docs/id/commands#all-commands).

260>260>

261> **Dukungan parsial:**261> **Dukungan parsial:**

262>262>

263> * [Desktop](https://code.claude.com/docs/id/desktop.md): melalui [pengaturan terkelola](https://claude.com/docs/third-party/claude-desktop/configuration) atau [Claude Desktop pada 3P](https://claude.com/docs/third-party/claude-desktop/overview)263> * [Desktop](https://code.claude.com/docs/id/desktop.md): melalui [pengaturan terkelola](https://claude.com/docs/third-party/claude-desktop/configuration) atau [Claude Desktop pada 3P](https://claude.com/docs/third-party/claude-desktop/overview)

264> * [Web search](https://code.claude.com/docs/id/tools-reference.md#websearch-tool-behavior): Opus 4, Sonnet 4, Haiku 4.5, dan model yang lebih baru264> * [Web search](https://code.claude.com/docs/id/tools-reference.md#websearch-tool-behavior): Opus 4, Sonnet 4, Haiku 4.5, dan model yang lebih baru

265> * [Fast mode](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-on-agent-platform): Fable 5.2 di region `global`, `us`, dan `eu`, atau kecepatan standar jika Agent Platform menolak fast mode

265> * [Auto mode](https://code.claude.com/docs/id/auto-mode-config.md): Sonnet 5 atau yang lebih baru, Opus 4.7 atau yang lebih baru, Haiku 5.5, dan model Fable saja266> * [Auto mode](https://code.claude.com/docs/id/auto-mode-config.md): Sonnet 5 atau yang lebih baru, Opus 4.7 atau yang lebih baru, Haiku 5.5, dan model Fable saja

266> * [Pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md): antara sesi Anda di mesin ini saja <sup>[5](#fn5)</sup>267> * [Pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md): antara sesi Anda di mesin ini saja <sup>[5](#fn5)</sup>

267> * [Zero Data Retention](https://code.claude.com/docs/id/zero-data-retention.md): tunduk pada perjanjian Google Cloud Anda268> * [Zero Data Retention](https://code.claude.com/docs/id/zero-data-retention.md): tunduk pada perjanjian Google Cloud Anda

gateways.md +1 −1

Details

50 50 

51## Subscriptions and gateways51## Subscriptions and gateways

52 52 

53Ketika pengembang terhubung melalui gateway dengan kredensial gateway, penggunaan ditagihkan ke akun penyedia organisasi Anda dengan tarif API, dan langganan claude.ai mereka tidak digunakan atau ditagihkan. Menetapkan [`ANTHROPIC_AUTH_TOKEN`](https://code.claude.com/docs/id/env-vars) untuk gateway yang Anda jalankan, atau masuk ke Claude apps gateway dengan `/login`, mematikan masuk langganan untuk sesi itu. Setiap permintaan yang diteruskan di bawah kredensial itu ditagihkan ke akun di balik kredensial penyedia gateway.53Ketika pengembang terhubung melalui gateway dengan kredensial gateway, penggunaan ditagihkan ke akun penyedia organisasi Anda dengan tarif API, dan langganan claude.ai mereka tidak digunakan atau ditagihkan. Setiap permintaan yang diteruskan di bawah kredensial itu ditagihkan ke akun di balik kredensial penyedia gateway.

54 54 

55Pengecualiannya adalah menetapkan hanya `ANTHROPIC_BASE_URL`, tanpa kredensial gateway. Permintaan masih merutekan melalui gateway, tetapi login claude.ai yang disimpan tetap menjadi kredensial aktif, sehingga batas penggunaan dan penagihan langganan berlaku. [Other LLM gateways](https://code.claude.com/docs/id/llm-gateway#subscriptions-and-gateways) mencakup konfigurasi itu dan apa yang harus diteruskan gateway agar berfungsi.55Pengecualiannya adalah menetapkan hanya `ANTHROPIC_BASE_URL`, tanpa kredensial gateway. Permintaan masih merutekan melalui gateway, tetapi login claude.ai yang disimpan tetap menjadi kredensial aktif, sehingga batas penggunaan dan penagihan langganan berlaku. [Other LLM gateways](https://code.claude.com/docs/id/llm-gateway#subscriptions-and-gateways) mencakup konfigurasi itu dan apa yang harus diteruskan gateway agar berfungsi.

56 56 

Details

135| Merge queues | Baca |135| Merge queues | Baca |

136| Metadata | Baca |136| Metadata | Baca |

137| Pull requests | Baca dan tulis |137| Pull requests | Baca dan tulis |

138| Repository creation | Baca dan tulis |

138| Repository hooks | Baca dan tulis |139| Repository hooks | Baca dan tulis |

139| Statuses | Baca |140| Statuses | Baca |

140| Workflows | Baca dan tulis |141| Workflows | Baca dan tulis |

Details

190Beberapa fitur berperilaku berbeda di GHES daripada di github.com. [Tabel fitur](#what-works-with-github-enterprise-server) merangkum dukungan; bagian ini mencakup solusi.190Beberapa fitur berperilaku berbeda di GHES daripada di github.com. [Tabel fitur](#what-works-with-github-enterprise-server) merangkum dukungan; bagian ini mencakup solusi.

191 191 

192* **Perintah `/install-github-app`**: ikuti alur [pengaturan admin](#admin-setup) di claude.ai sebagai gantinya. Jika Anda juga menginginkan alur kerja GitHub Actions di GHES, sesuaikan [alur kerja contoh](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml) secara manual.192* **Perintah `/install-github-app`**: ikuti alur [pengaturan admin](#admin-setup) di claude.ai sebagai gantinya. Jika Anda juga menginginkan alur kerja GitHub Actions di GHES, sesuaikan [alur kerja contoh](https://github.com/anthropics/claude-code-action/blob/main/examples/claude.yml) secara manual.

193* **Server GitHub MCP**: gunakan CLI `gh` yang dikonfigurasi untuk host GHES Anda sebagai gantinya. Jalankan `gh auth login --hostname github.example.com` untuk autentikasi, kemudian Claude dapat menggunakan perintah `gh` dalam sesi.193* **Server GitHub MCP**: dalam sesi di mesin Anda sendiri, gunakan CLI `gh` yang dikonfigurasi untuk host GHES Anda sebagai gantinya. Jalankan `gh auth login --hostname github.example.com` untuk autentikasi, kemudian Claude dapat menggunakan perintah `gh` di sana.

194 194 

195## Troubleshooting195## Troubleshooting

196 196 

goal.md +3 −2

Details

131 131 

132#### Kesalahan yang harus Anda perbaiki menghapus tujuan132#### Kesalahan yang harus Anda perbaiki menghapus tujuan

133 133 

134Jika giliran gagal pada kesalahan yang tidak akan dihapus sampai Anda memperbaikinya, Claude Code menghapus tujuan dan mencetak peringatan yang menyebutkan penyebabnya. Peringatan dimulai dengan `Goal cleared after an unrecoverable error` dan diakhiri dengan `Run /goal again to continue`. Perbaiki penyebabnya, kemudian [tetapkan tujuan lagi](#set-a-goal) dengan `/goal <condition>`. Empat jenis kegagalan menghapus tujuan:134Jika giliran gagal pada kesalahan yang tidak akan dihapus sampai Anda memperbaikinya, Claude Code menghapus tujuan dan mencetak peringatan yang menyebutkan penyebabnya. Peringatan dimulai dengan `Goal cleared after an unrecoverable error` dan diakhiri dengan `Run /goal again to continue`. Perbaiki penyebabnya, kemudian [tetapkan tujuan lagi](#set-a-goal) dengan `/goal <condition>`. Kegagalan yang menghapus tujuan meliputi:

135 135 

136* Kegagalan autentikasi, ketika Claude Code mengelola kredensialnya sendiri. Ketika host mengelolanya untuk Anda, seperti aplikasi desktop atau [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), Claude Code membiarkan tujuan tetap aktif karena host memulihkan akses dengan sendirinya.136* Kegagalan autentikasi, ketika Claude Code mengelola kredensialnya sendiri. Ketika host mengelolanya untuk Anda, seperti aplikasi desktop atau [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), Claude Code membiarkan tujuan tetap aktif karena host memulihkan akses dengan sendirinya.

137* Disk yang terlalu penuh sehingga Claude Code tidak dapat memperbarui login claude.ai Anda, ketika Claude Code mengelola kredensialnya sendiri. Peringatan menampilkan `(disk full)`. [Kosongkan ruang pada disk yang menyimpan direktori konfigurasi Claude Code](https://code.claude.com/docs/id/errors.md#could-not-refresh-your-login-disk-full).

137* Saldo kredit yang habis138* Saldo kredit yang habis

138* Overflow konteks yang [auto-compaction](https://code.claude.com/docs/id/model-config.md#set-the-auto-compact-window) tidak dapat menghapus139* Overflow konteks yang [auto-compaction](https://code.claude.com/docs/id/model-config.md#set-the-auto-compact-window) tidak dapat menghapus

139* Model yang tidak tersedia140* Model yang tidak tersedia


178 179 

179## Persyaratan180## Persyaratan

180 181 

181Claude Code membuat `/goal` tersedia di bawah [aturan kepercayaan ruang kerja yang sama dengan hooks dalam file pengaturan](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder), karena evaluator adalah bagian dari sistem hooks. `/goal` juga tidak tersedia ketika [`disableAllHooks`](https://code.claude.com/docs/id/hooks#disable-or-remove-hooks) adalah `true` setelah penerapan prioritas pengaturan, atau ketika [`allowManagedHooksOnly`](https://code.claude.com/docs/id/settings-reference#allowmanagedhooksonly) diatur dalam pengaturan terkelola. Dalam setiap kasus, perintah memberi tahu Anda mengapa alih-alih diam-diam tidak melakukan apa pun.182Claude Code membuat `/goal` tersedia di bawah [aturan kepercayaan workspace yang sama dengan hook dalam file pengaturan](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder), karena evaluator adalah bagian dari sistem hook. `/goal` juga tidak tersedia ketika [`disableAllHooks`](https://code.claude.com/docs/id/hooks#disable-or-remove-hooks) adalah `true` setelah penerapan prioritas pengaturan, atau ketika [`allowManagedHooksOnly`](https://code.claude.com/docs/id/settings-reference#allowmanagedhooksonly) diatur dalam pengaturan terkelola.

182 183 

183## Lihat juga184## Lihat juga

184 185 

Details

134 134 

135Untuk menaikkan batas laju Anda, hubungi dukungan Google Cloud. Saat menggunakan Google Cloud's Agent Platform, perintah `/logout` tidak tersedia karena autentikasi ditangani melalui kredensial Google Cloud.135Untuk menaikkan batas laju Anda, hubungi dukungan Google Cloud. Saat menggunakan Google Cloud's Agent Platform, perintah `/logout` tidak tersedia karena autentikasi ditangani melalui kredensial Google Cloud.

136 136 

137Claude Code memutuskan antara [pencarian alat MCP](https://code.claude.com/docs/id/mcp.md#scale-with-mcp-tool-search) dan pemuatan di muka berdasarkan generasi model:137Claude Code memutuskan antara [pencarian tool MCP](https://code.claude.com/docs/id/mcp.md#scale-with-mcp-tool-search) dan pemuatan di muka berdasarkan generasi model:

138 138 

139* **Claude Opus 4.5, Sonnet 4.5, Haiku 4.5, dan yang lebih baru**: Claude Code mengaktifkan pencarian alat secara default.139* **Claude Opus 4.5, Sonnet 4.5, Haiku 4.5, dan yang lebih baru**: Claude Code mengaktifkan pencarian alat secara default.

140* **Model sebelumnya**: Claude Code memuat definisi tool MCP di muka, karena tumpukan penyajian Agent Platform mereka menolak header beta yang diperlukan. Mengatur `ENABLE_TOOL_SEARCH=true` tidak menimpa ini.140* **Model sebelumnya**: Claude Code memuat definisi tool MCP di muka, karena tumpukan penyajian Agent Platform mereka menolak header beta yang diperlukan. Mengatur `ENABLE_TOOL_SEARCH=true` tidak menimpa ini.

141 141 

142Atur `ENABLE_TOOL_SEARCH=false` untuk menonaktifkan pencarian alat pada setiap model. Sebelum v2.1.221, Claude Code menonaktifkan pencarian alat untuk semua model di Google Cloud's Agent Platform kecuali Anda mengatur `ENABLE_TOOL_SEARCH=true`.142Atur `ENABLE_TOOL_SEARCH=false` untuk menonaktifkan pencarian tool pada setiap model.

143 143 

144### Pin versi model144### Pin versi model

145 145 

hooks.md +199 −175

Details

222 222 

223## Konfigurasi223## Konfigurasi

224 224 

225Hooks didefinisikan dalam file pengaturan JSON. Konfigurasi memiliki tiga tingkat nesting:225Hook didefinisikan dalam file pengaturan JSON. Konfigurasi memiliki tiga tingkat penyarangan:

226 226 

2271. Pilih [hook event](#hook-events) untuk merespons, seperti `PreToolUse` atau `Stop`2271. Pilih [hook event](#hook-events) yang akan ditanggapi, seperti `PreToolUse` atau `Stop`

2282. Tambahkan [grup matcher](#matcher-patterns) untuk memfilter kapan hook dijalankan, seperti "untuk tool Bash"2282. Tambahkan [grup matcher](#matcher-patterns) untuk memfilter kapan hook dijalankan, seperti "untuk tool Bash"

2293. Tentukan satu atau lebih [hook handlers](#hook-handler-fields) untuk dijalankan saat cocok2293. Definisikan satu atau lebih [hook handler](#hook-handler-fields) yang akan dijalankan saat cocok

230 230 

231Lihat [Bagaimana hook diselesaikan](#how-a-hook-resolves) di atas untuk panduan lengkap dengan contoh beranotasi.231Lihat [Cara hook di-resolve](#how-a-hook-resolves) di atas untuk penelusuran lengkap dengan contoh beranotasi.

232 232 

233> [!NOTE]233> [!NOTE]

234>234>

235> Halaman ini menggunakan istilah spesifik untuk setiap tingkat: **hook event** untuk titik siklus hidup, **matcher group** untuk filter, dan **hook handler** untuk perintah shell, endpoint HTTP, tool MCP, prompt, atau agent yang dijalankan. "Hook" sendiri merujuk pada fitur umum.235> Halaman ini menggunakan istilah khusus untuk setiap tingkat: **hook event** untuk titik siklus hidup, **grup matcher** untuk filter, dan **hook handler** untuk perintah shell, endpoint HTTP, tool MCP, prompt, atau agent yang dijalankan. "Hook" saja merujuk pada fitur secara umum.

236 236 

237### Lokasi hook237### Lokasi hook

238 238 

239Tempat Anda mendefinisikan hook menentukan cakupannya:239Tempat Anda mendefinisikan hook menentukan cakupannya:

240 240 

241| Lokasi | Cakupan | Dapat Dibagikan |241| Lokasi | Cakupan | Dapat dibagikan |

242| :- | :- | :- |242| :- | :- | :- |

243| `~/.claude/settings.json` | Semua proyek Anda | Tidak, lokal ke mesin Anda |243| `~/.claude/settings.json` | Semua proyek Anda | Tidak, lokal di mesin Anda |

244| `.claude/settings.json` | Proyek tunggal | Ya, dapat dikomit ke repo |244| `.claude/settings.json` | Satu proyek | Ya, dapat di-commit ke repo |

245| `.claude/settings.local.json` | Proyek tunggal | Tidak, gitignored saat Claude Code menyimpan pengaturan ke dalamnya |245| `.claude/settings.local.json` | Satu proyek | Tidak, di-gitignore saat Claude Code menyimpan pengaturan ke file tersebut |

246| Pengaturan kebijakan terkelola | Seluruh organisasi | Ya, dikendalikan admin |246| Pengaturan kebijakan terkelola | Seluruh organisasi | Ya, dikendalikan admin |

247| [Plugin](https://code.claude.com/docs/id/plugins/overview.md) `hooks/hooks.json` | Ketika plugin diaktifkan | Ya, dibundel dengan plugin |247| `hooks/hooks.json` [Plugin](https://code.claude.com/docs/id/plugins/overview.md) | Saat plugin diaktifkan | Ya, dibundel dengan plugin |

248| [Skill](https://code.claude.com/docs/id/skills.md) frontmatter | Sisa sesi setelah skill dipanggil. Lihat [Hooks dalam skills dan agents](#hooks-in-skills-and-agents) | Ya, didefinisikan dalam file skill |248| Frontmatter [skill](https://code.claude.com/docs/id/skills.md) | Sisa sesi setelah skill dipanggil. Lihat [Hook dalam skill dan agent](#hooks-in-skills-and-agents) | Ya, didefinisikan dalam file skill |

249| [Subagent](https://code.claude.com/docs/id/sub-agents.md) frontmatter | Saat subagent itu berjalan | Ya, didefinisikan dalam file subagent |249| Frontmatter [subagent](https://code.claude.com/docs/id/sub-agents.md) | Selama subagent tersebut berjalan | Ya, didefinisikan dalam file subagent |

250 250 

251[Sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) tidak membaca `~/.claude/settings.json` lokal Anda. Dalam [lingkungan self-hosted](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#permissions-and-tool-approval), Claude Code juga menjalankan hooks yang operator semai dari `~/.claude/` host runner, dan menjalankan hooks dalam file pengaturan terkelola image runner saat file itu termasuk dalam [sumber terkelola yang Claude Code terapkan](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources), yang secara default berarti hanya ketika pengaturan yang dikelola server maupun kebijakan Claude Code yang dikirimkan MDM tidak menyediakan tingkat terkelola. Lihat [apa yang terbawa dari setup Anda](https://code.claude.com/docs/id/cloud-environments.md#what-carries-over-from-your-setup) untuk file pengaturan dan plugin mana, dan dengan demikian hooks mana, yang mencapai sesi cloud.251[Sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) tidak membaca `~/.claude/settings.json` lokal Anda. Dalam [lingkungan self-hosted](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#permissions-and-tool-approval), Claude Code juga menjalankan hook yang disiapkan operator dari `~/.claude/` milik host runner, dan menjalankan hook dalam file pengaturan terkelola milik image runner ketika file tersebut termasuk dalam [sumber terkelola yang diterapkan Claude Code](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources), yang secara default berarti hanya ketika baik pengaturan terkelola server maupun kebijakan Claude Code yang dikirim melalui MDM tidak menyediakan tingkat terkelola. Lihat [apa yang terbawa dari penyiapan Anda](https://code.claude.com/docs/id/cloud-environments.md#what-carries-over-from-your-setup) untuk mengetahui file pengaturan dan plugin mana, dan dengan demikian hook mana, yang mencapai sesi cloud.

252 252 

253Untuk detail tentang resolusi file pengaturan, lihat [settings](https://code.claude.com/docs/id/settings.md).253Untuk detail tentang resolusi file pengaturan, lihat [pengaturan](https://code.claude.com/docs/id/settings.md).

254 254 

255Hooks dari file pengaturan, pengaturan kebijakan terkelola, dan plugin juga berjalan di dalam [subagents](https://code.claude.com/docs/id/sub-agents.md). Ketika subagent memanggil tool, tool events seperti `PreToolUse` dan `PostToolUse` menjalankan hooks yang dikonfigurasi sama seperti dalam percakapan utama, dan input membawa [field input umum](#common-input-fields) `agent_id` dan `agent_type` yang mengidentifikasi subagent.255Hook dari file pengaturan, pengaturan kebijakan terkelola, dan plugin juga berjalan di dalam [subagent](https://code.claude.com/docs/id/sub-agents.md). Saat subagent memanggil tool, event tool seperti `PreToolUse` dan `PostToolUse` menjalankan hook terkonfigurasi yang sama seperti dalam percakapan utama, dan input membawa [field input umum](#common-input-fields) `agent_id` dan `agent_type` yang mengidentifikasi subagent tersebut.

256 256 

257Administrator dapat menggunakan [`allowManagedHooksOnly`](https://code.claude.com/docs/id/settings-reference#allowmanagedhooksonly) dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) untuk membatasi hooks mana yang berjalan:257Administrator dapat menggunakan [`allowManagedHooksOnly`](https://code.claude.com/docs/id/settings-reference#allowmanagedhooksonly) dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) untuk membatasi hook mana yang dijalankan:

258 258 

259* Hooks pengguna, proyek, lokal, dan plugin Anda diblokir. Hooks dari plugins yang dipaksa-aktifkan dalam pengaturan terkelola `enabledPlugins` dikecualikan259* Hook pengguna, proyek, lokal, dan plugin Anda diblokir. Hook dari plugin yang diaktifkan paksa dalam `enabledPlugins` pengaturan terkelola dikecualikan

260* Claude Code juga mempersempit pengaturan [`statusLine`](https://code.claude.com/docs/id/statusline), [`fileSuggestion`](https://code.claude.com/docs/id/settings-reference#filesuggestion), dan [`subagentStatusLine`](https://code.claude.com/docs/id/statusline#subagent-status-lines) Anda ke pengaturan terkelola260* Claude Code juga mempersempit pengaturan [`statusLine`](https://code.claude.com/docs/id/statusline), [`fileSuggestion`](https://code.claude.com/docs/id/settings-reference#filesuggestion), dan [`subagentStatusLine`](https://code.claude.com/docs/id/statusline#subagent-status-lines) Anda menjadi hanya dari pengaturan terkelola

261* Claude Code juga menonaktifkan plugins dengan [sumber `command`](https://code.claude.com/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugins yang dipaksa-aktifkan dalam pengaturan terkelola `enabledPlugins`, kecuali [`disableCommandPluginSources`](https://code.claude.com/docs/id/settings-reference#disablecommandpluginsources) secara eksplisit diatur ke `false`. Sumber `command` memerlukan Claude Code v2.1.229 atau lebih baru261* Claude Code juga menonaktifkan plugin dengan [sumber `command`](https://code.claude.com/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugin yang diaktifkan paksa dalam `enabledPlugins` pengaturan terkelola, kecuali jika [`disableCommandPluginSources`](https://code.claude.com/docs/id/settings-reference#disablecommandpluginsources) secara eksplisit diatur ke `false`. Sumber `command` memerlukan Claude Code v2.1.229 atau yang lebih baru

262* Claude Code juga memblokir perintah [`headersHelper`](https://code.claude.com/docs/id/plugins/host-marketplace#authenticate-archive-downloads) marketplace kecuali [`disableCommandPluginSources`](https://code.claude.com/docs/id/settings-reference#disablecommandpluginsources) secara eksplisit diatur ke `false`, kecuali untuk marketplace yang pengaturan terkelola sendiri deklarasikan262* Claude Code juga memblokir [perintah `headersHelper`](https://code.claude.com/docs/id/plugins/host-marketplace#authenticate-archive-downloads) marketplace kecuali jika [`disableCommandPluginSources`](https://code.claude.com/docs/id/settings-reference#disablecommandpluginsources) secara eksplisit diatur ke `false`, dengan pengecualian untuk marketplace yang dideklarasikan oleh pengaturan terkelola itu sendiri

263 263 

264Lihat [apa yang berjalan di bawah `allowManagedHooksOnly`](https://code.claude.com/docs/id/settings-reference#what-runs-under-allowmanagedhooksonly).264Lihat [apa yang berjalan di bawah `allowManagedHooksOnly`](https://code.claude.com/docs/id/settings-reference#what-runs-under-allowmanagedhooksonly).

265 265 

266Hook entries bergabung di seluruh tingkat pengaturan daripada menggantikan satu sama lain: pengaturan pengguna, proyek, dan lokal menambahkan hooks mereka sendiri tanpa menghapus yang terkelola, dan pengaturan [`disableAllHooks`](#disable-or-remove-hooks) tidak dapat menonaktifkan hooks terkelola dari luar pengaturan terkelola.266Entri hook digabungkan di seluruh tingkat pengaturan alih-alih saling menggantikan: pengaturan pengguna, proyek, dan lokal menambahkan hook mereka sendiri tanpa menghapus hook terkelola, dan pengaturan [`disableAllHooks`](#disable-or-remove-hooks) tidak dapat menonaktifkan hook terkelola dari luar pengaturan terkelola.

267 267 

268[HTTP hook allowlists](https://code.claude.com/docs/id/settings-reference.md#hook-and-skill-settings) berlaku untuk hooks dari setiap sumber, termasuk pengaturan kebijakan terkelola:268[Allowlist hook HTTP](https://code.claude.com/docs/id/settings-reference.md#hook-and-skill-settings) berlaku untuk hook dari setiap sumber, termasuk pengaturan kebijakan terkelola:

269 269 

270* `allowedHttpHookUrls`: ketika didefinisikan di tingkat pengaturan apa pun, Claude Code menjalankan HTTP hook handler hanya jika URL-nya cocok dengan allowlist yang digabungkan270* `allowedHttpHookUrls`: ketika didefinisikan di tingkat pengaturan mana pun, Claude Code menjalankan hook handler HTTP hanya jika URL-nya cocok dengan allowlist yang digabungkan

271* `httpHookAllowedEnvVars`: ketika didefinisikan, Claude Code menginterpolasi hanya variabel lingkungan pada daftar itu ke dalam header hook271* `httpHookAllowedEnvVars`: ketika didefinisikan, Claude Code hanya menginterpolasi environment variable yang ada dalam daftar tersebut ke dalam header hook

272 272 

273### Pola matcher273### Pola matcher

274 274 

275Bidang `matcher` memfilter kapan hooks dijalankan. Bagaimana matcher dievaluasi tergantung pada karakter yang dikandungnya:275Field `matcher` memfilter kapan hook dijalankan. Cara matcher dievaluasi bergantung pada karakter yang dikandungnya:

276 276 

277| Nilai matcher | Dievaluasi sebagai | Contoh |277| Nilai matcher | Dievaluasi sebagai | Contoh |

278| :- | :- | :- |278| :- | :- | :- |

279| `"*"`, `""`, atau dihilangkan | Cocokkan semua | dijalankan pada setiap kemunculan event |279| `"*"`, `""`, atau dihilangkan | Cocok dengan semua | dijalankan pada setiap kemunculan event |

280| Hanya huruf, digit, `_`, `-`, spasi, `,`, dan `\|` | String yang tepat, atau daftar string yang tepat dipisahkan `\|` atau `,` dengan whitespace opsional di sekitarnya | `Bash` cocok dengan tool Bash, dan pada `PreToolUse` serta `PermissionRequest` juga dengan [perintah Monitor](#match-monitor-commands); `Edit\|Write` dan `Edit, Write` masing-masing cocok dengan salah satu tool dengan tepat; `code-reviewer` cocok hanya dengan tipe agent itu |280| Hanya huruf, angka, `_`, `-`, spasi, `,`, dan `\|` | String persis, atau daftar string persis yang dipisahkan oleh `\|` atau `,` dengan spasi opsional di sekitarnya | `Bash` cocok dengan tool Bash, dan pada `PreToolUse` dan `PermissionRequest` juga [perintah Monitor](#match-monitor-commands); `Edit\|Write` dan `Edit, Write` masing-masing cocok persis dengan salah satu tool; `code-reviewer` hanya cocok dengan tipe agent tersebut |

281| Berisi karakter lain apa pun | Ekspresi reguler JavaScript, tidak berlabuh | `^Notebook` cocok dengan tool apa pun yang namanya dimulai dengan `Notebook`; `mcp__memory__.*` cocok dengan setiap tool dari server `memory` |281| Mengandung karakter lain | Ekspresi reguler JavaScript, tanpa jangkar | `^Notebook` cocok dengan tool apa pun yang namanya diawali `Notebook`; `mcp__memory__.*` cocok dengan setiap tool dari server `memory` |

282 282 

283Matcher pada jalur ekspresi reguler diuji dengan `RegExp.prototype.test` JavaScript, yang berhasil pada kecocokan di mana pun dalam nilai. `Edit.*` cocok dengan `Edit` dan `NotebookEdit`; bungkus pola dalam `^` dan `$`, seperti `^Edit$`, ketika Anda memerlukan kecocokan seluruh string.283Matcher pada jalur ekspresi reguler diuji dengan `RegExp.prototype.test` milik JavaScript, yang berhasil jika ada kecocokan di mana pun dalam nilai. `Edit.*` cocok dengan `Edit` maupun `NotebookEdit`; bungkus pola dengan `^` dan `$`, seperti pada `^Edit$`, jika Anda memerlukan kecocokan seluruh string.

284 284 

285`FileChanged` dan `StopFailure` menggunakan set exact-match yang lebih sempit dari huruf, digit, `_`, dan `|` saja. Tanda hubung, spasi, atau koma dalam matcher untuk dua event itu membuat tetap pada jalur ekspresi reguler, dan hanya `|` yang memisahkan alternatif. Setiap event lain dengan dukungan matcher dalam tabel yang mengikuti menerima `|` atau `,`.285`FileChanged` dan `StopFailure` menggunakan set pencocokan persis yang lebih sempit, yaitu hanya huruf, angka, `_`, dan `|`. Tanda hubung, spasi, atau koma dalam matcher untuk kedua event tersebut membuatnya tetap berada di jalur ekspresi reguler, dan hanya `|` yang memisahkan alternatif. Setiap event lain dengan dukungan matcher dalam tabel berikut menerima `|` atau `,`.

286 286 

287Event `FileChanged` tidak mengikuti aturan ini saat membangun daftar watch-nya. Lihat [FileChanged](#filechanged).287Event `FileChanged` tidak mengikuti aturan ini saat membangun daftar pantauannya. Lihat [FileChanged](#filechanged).

288 288 

289Setiap tipe event cocok pada bidang yang berbeda:289Setiap tipe event mencocokkan field yang berbeda:

290 290 

291| Event | Apa yang difilter matcher | Contoh nilai matcher |291| Event | Apa yang difilter matcher | Contoh nilai matcher |

292| :- | :- | :- |292| :- | :- | :- |


297| `Notification` | tipe notifikasi | `permission_prompt`, `idle_prompt`, `auth_success`, `auth_storage_failure`, `elicitation_dialog`, `elicitation_url_dialog`, `elicitation_complete`, `elicitation_response`, `agent_needs_input`, `agent_completed`, `quota_auto_resume_fired`, `quota_auto_resume_stale`, `quota_auto_resume_disabled`, `plugin_notification` |297| `Notification` | tipe notifikasi | `permission_prompt`, `idle_prompt`, `auth_success`, `auth_storage_failure`, `elicitation_dialog`, `elicitation_url_dialog`, `elicitation_complete`, `elicitation_response`, `agent_needs_input`, `agent_completed`, `quota_auto_resume_fired`, `quota_auto_resume_stale`, `quota_auto_resume_disabled`, `plugin_notification` |

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

299| `PreCompact`, `PostCompact` | apa yang memicu compaction | `manual`, `auto` |299| `PreCompact`, `PostCompact` | apa yang memicu compaction | `manual`, `auto` |

300| `PreModelSwitch`, `PostModelSwitch` | nama kanonik model yang sesi beralih ke, seperti dijelaskan di bawah [PreModelSwitch](#premodelswitch) | `claude-opus-5`, `claude-opus-4-6\|claude-opus-5`, `.*opus.*` |300| `PreModelSwitch`, `PostModelSwitch` | nama kanonis model yang menjadi tujuan peralihan sesi, seperti yang dijelaskan di bawah [PreModelSwitch](#premodelswitch) | `claude-opus-5`, `claude-opus-4-6\|claude-opus-5`, `.*opus.*` |

301| `SubagentStop` | tipe agent | nilai yang sama seperti `SubagentStart` |301| `SubagentStop` | tipe agent | nilai yang sama dengan `SubagentStart` |

302| `ConfigChange` | sumber konfigurasi | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |302| `ConfigChange` | sumber konfigurasi | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |

303| `CwdChanged` | tidak ada dukungan matcher | selalu dijalankan pada setiap kemunculan |303| `CwdChanged` | tidak ada dukungan matcher | selalu dijalankan pada setiap kemunculan |

304| `DirectoryAdded` | bagaimana direktori ditambahkan | `slash_command`, `register_repo_root` |304| `DirectoryAdded` | bagaimana direktori ditambahkan | `slash_command`, `register_repo_root` |

305| `FileChanged` | nama file literal untuk ditonton (lihat [FileChanged](#filechanged)) | `.envrc\|.env` |305| `FileChanged` | nama file literal yang dipantau (lihat [FileChanged](#filechanged)) | `.envrc\|.env` |

306| `StopFailure` | tipe kesalahan | `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, `unknown` |306| `StopFailure` | tipe error | `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, `unknown` |

307| `InstructionsLoaded` | alasan load | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |307| `InstructionsLoaded` | alasan pemuatan | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

308| `UserPromptExpansion` | nama command | nama skill atau command Anda |308| `UserPromptExpansion` | nama perintah | nama skill atau perintah Anda |

309| `Elicitation` | nama server MCP | nama server MCP yang dikonfigurasi Anda |309| `Elicitation` | nama server MCP | nama server MCP yang Anda konfigurasi |

310| `ElicitationResult` | nama server MCP | nilai yang sama seperti `Elicitation` |310| `ElicitationResult` | nama server MCP | nilai yang sama dengan `Elicitation` |

311| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `MessageDisplay` | tidak ada dukungan matcher | selalu dijalankan pada setiap kemunculan |311| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `MessageDisplay` | tidak ada dukungan matcher | selalu dijalankan pada setiap kemunculan |

312 312 

313Mencocokkan `StopFailure` pada `cloud_credential_error` memerlukan Claude Code v2.1.267 atau lebih baru, versi pertama yang melaporkan kegagalan pemuatan kredensial di bawah nilai itu daripada `server_error` atau `unknown`.313Mencocokkan `StopFailure` pada `cloud_credential_error` memerlukan Claude Code v2.1.267 atau yang lebih baru, versi pertama yang melaporkan kegagalan pemuatan kredensial di bawah nilai tersebut alih-alih `server_error` atau `unknown`.

314 314 

315Untuk sebagian besar events, Claude Code mengevaluasi matcher terhadap bidang dari [JSON input](#hook-input-and-output) yang dikirimkan ke hook Anda di stdin. Untuk tool events, bidang itu adalah `tool_name`. Untuk `PreModelSwitch` dan `PostModelSwitch`, Claude Code mengevaluasi matcher terhadap nama kanonik yang diturunkan dari `to_model`, seperti dijelaskan di bawah [PreModelSwitch](#premodelswitch). Setiap bagian [hook event](#hook-events) mencantumkan set lengkap nilai matcher dan skema input untuk event itu.315Untuk sebagian besar event, Claude Code mengevaluasi matcher terhadap sebuah field dari [input JSON](#hook-input-and-output) yang dikirimkannya ke hook Anda melalui stdin. Untuk event tool, field tersebut adalah `tool_name`. Untuk `PreModelSwitch` dan `PostModelSwitch`, Claude Code mengevaluasi matcher terhadap nama kanonis yang diturunkannya dari `to_model`, seperti yang dijelaskan di bawah [PreModelSwitch](#premodelswitch). Setiap bagian [hook event](#hook-events) mencantumkan set lengkap nilai matcher dan skema input untuk event tersebut.

316 316 

317Contoh ini menjalankan skrip linting hanya ketika Claude menulis atau mengedit file:317Contoh ini menjalankan skrip linting hanya saat Claude menulis atau mengedit file:

318 318 

319```json theme={null}319```json theme={null}

320{320{


334}334}

335```335```

336 336 

337Jika Anda menambahkan bidang `matcher` ke event tanpa dukungan matcher, itu diabaikan secara diam-diam.337Jika Anda menambahkan field `matcher` ke event tanpa dukungan matcher, field tersebut diabaikan tanpa pemberitahuan.

338 338 

339Untuk tool events, Anda dapat memfilter lebih sempit dengan menetapkan bidang [`if`](#common-fields) pada handler hook individual. `if` menggunakan [sintaks aturan izin](https://code.claude.com/docs/id/permissions.md) untuk mencocokkan terhadap nama tool dan argumen bersama-sama, jadi `"Bash(git *)"` dijalankan ketika subperintah apa pun dari input Bash cocok dengan `git *` dan `"Edit(*.ts)"` dijalankan hanya untuk file TypeScript.339Untuk event tool, Anda dapat memfilter lebih sempit dengan mengatur [field `if`](#common-fields) pada masing-masing hook handler. `if` menggunakan [sintaks aturan izin](https://code.claude.com/docs/id/permissions.md) untuk mencocokkan nama tool dan argumen secara bersamaan, sehingga `"Bash(git *)"` berjalan ketika subperintah apa pun dari input Bash cocok dengan `git *` dan `"Edit(*.ts)"` hanya berjalan untuk file TypeScript.

340 340 

341#### Cocokkan MCP tools341#### Mencocokkan tool MCP

342 342 

343Tool server [MCP](https://code.claude.com/docs/id/mcp.md) muncul sebagai tool reguler dalam tool events (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`), jadi Anda dapat mencocokkannya dengan cara yang sama seperti Anda mencocokkan nama tool lainnya.343Tool server [MCP](https://code.claude.com/docs/id/mcp.md) muncul sebagai tool biasa dalam event tool (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`), sehingga Anda dapat mencocokkannya dengan cara yang sama seperti mencocokkan nama tool lainnya.

344 344 

345MCP tools mengikuti pola penamaan `mcp__<server>__<tool>`, misalnya:345Tool MCP mengikuti pola penamaan `mcp__<server>__<tool>`, misalnya:

346 346 

347* `mcp__memory__create_entities`: tool create entities dari Memory server347* `mcp__memory__create_entities`: tool create entities milik server Memory

348* `mcp__filesystem__read_file`: tool read file dari Filesystem server348* `mcp__filesystem__read_file`: tool read file milik server Filesystem

349* `mcp__github__search_repositories`: tool search dari GitHub server349* `mcp__github__search_repositories`: tool pencarian milik server GitHub

350 350 

351Untuk mencocokkan setiap tool dari server, tambahkan `.*` ke awalan server. `.*` diperlukan: matcher seperti `mcp__memory` atau `mcp__brave-search` hanya berisi karakter exact-match, jadi dibandingkan sebagai string yang tepat dan tidak cocok dengan tool apa pun.351Untuk mencocokkan setiap tool dari sebuah server, tambahkan `.*` ke awalan server. `.*` wajib ada: matcher seperti `mcp__memory` atau `mcp__brave-search` hanya berisi karakter pencocokan persis, sehingga dibandingkan sebagai string persis dan tidak cocok dengan tool apa pun.

352 352 

353* `mcp__memory__.*` cocok dengan semua tools dari server `memory`353* `mcp__memory__.*` cocok dengan semua tool dari server `memory`

354* `mcp__brave-search__.*` cocok dengan semua tools dari server yang namanya berisi tanda hubung354* `mcp__brave-search__.*` cocok dengan semua tool dari server yang namanya mengandung tanda hubung

355* `mcp__.*__write.*` cocok dengan tool apa pun yang namanya dimulai dengan `write` dari server apa pun355* `mcp__.*__write.*` cocok dengan tool apa pun yang namanya diawali `write` dari server mana pun

356 356 

357Tools dari [plugin-bundled MCP server](https://code.claude.com/docs/id/mcp.md#plugin-provided-mcp-servers) menggunakan segmen server yang dibatasi yang mencakup nama plugin: `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Matcher yang ditulis terhadap kunci server bare tidak pernah dijalankan untuk tools ini. Untuk plugin bernama `my-plugin` yang membundel server di bawah kunci `db`, tool `query` muncul sebagai `mcp__plugin_my-plugin_db__query`, jadi matcher untuk setiap tool dari server itu adalah `mcp__plugin_my-plugin_db__.*`. Gunakan nama tool yang dibatasi yang sama dalam bidang [`if`](#common-fields) handler. Lihat [Plugin-provided MCP servers](https://code.claude.com/docs/id/mcp.md#plugin-provided-mcp-servers) untuk bagaimana nama yang dibatasi dibangun.357Tool dari [server MCP yang dibundel plugin](https://code.claude.com/docs/id/mcp.md#plugin-provided-mcp-servers) menggunakan segmen server bercakupan yang menyertakan nama plugin: `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Matcher yang ditulis terhadap kunci server polos tidak pernah dijalankan untuk tool ini. Untuk plugin bernama `my-plugin` yang membundel server di bawah kunci `db`, tool `query` muncul sebagai `mcp__plugin_my-plugin_db__query`, sehingga matcher untuk setiap tool dari server tersebut adalah `mcp__plugin_my-plugin_db__.*`. Gunakan nama tool bercakupan yang sama dalam [field `if`](#common-fields) handler. Lihat [Server MCP yang disediakan plugin](https://code.claude.com/docs/id/mcp.md#plugin-provided-mcp-servers) untuk cara nama bercakupan dibentuk.

358 358 

359Contoh ini mencatat semua operasi memory server dan memvalidasi operasi write dari server MCP apa pun:359Contoh ini mencatat semua operasi server memory dan memvalidasi operasi write dari server MCP mana pun:

360 360 

361```json theme={null}361```json theme={null}

362{362{


385}385}

386```386```

387 387 

388#### Cocokkan perintah Monitor388#### Mencocokkan perintah Monitor

389 389 

390Hook [`PreToolUse`](#pretooluse) atau [`PermissionRequest`](#permissionrequest) dengan matcher `Bash` juga berjalan pada perintah shell yang Claude mulai dengan [tool Monitor](https://code.claude.com/docs/id/tools-reference.md#monitor-tool), tetapi `allow` dan [`updatedInput`](#pretooluse-decision-control)-nya tidak berpengaruh pada perintah tersebut. Memerlukan Claude Code v2.1.314 atau lebih baru. Matcher seperti `Bash|PowerShell`, `^Bash$`, dan `Bash.*` juga merupakan matcher `Bash`. Hook dengan matcher `Bash` tidak berjalan untuk [WebSocket watch](https://code.claude.com/docs/id/tools-reference.md#websocket-source), dan hook `PostToolUse` dengan matcher tersebut tidak berjalan untuk Monitor.390Hook [`PreToolUse`](#pretooluse) atau [`PermissionRequest`](#permissionrequest) dengan matcher `Bash` juga berjalan pada perintah shell yang dimulai Claude dengan [tool Monitor](https://code.claude.com/docs/id/tools-reference.md#monitor-tool), tetapi `allow` dan [`updatedInput`](#pretooluse-decision-control) miliknya tidak berpengaruh pada perintah tersebut. Memerlukan Claude Code v2.1.314 atau yang lebih baru. Matcher seperti `Bash|PowerShell`, `^Bash$`, dan `Bash.*` juga merupakan matcher `Bash`. Hook dengan matcher `Bash` tidak berjalan untuk [pemantauan WebSocket](https://code.claude.com/docs/id/tools-reference.md#websocket-source), dan hook `PostToolUse` dengan matcher tersebut tidak berjalan untuk Monitor.

391 391 

392Hook yang berjalan untuk perintah Monitor dapat menolaknya atau membuat Claude Code menanyakannya kepada Anda. Untuk mengizinkan atau menulis ulang perintah tersebut, beralihlah dari matcher `Bash` ke matcher yang menyertakan Monitor:392Hook yang berjalan untuk perintah Monitor dapat menolaknya atau membuat Claude Code menanyakannya kepada Anda. Untuk mengizinkan atau menulis ulang perintah tersebut, beralihlah dari matcher `Bash` ke matcher yang menyertakan Monitor:

393 393 

394* **Matcher yang menyertakan Monitor**: dengan matcher seperti `Bash|Monitor` atau `.*`, atau tanpa matcher, hook mendapatkan input milik panggilan Monitor itu sendiri, dan `allow` serta `updatedInput` berlaku. Dalam [`if`](#common-fields), sebutkan Monitor, seperti `Monitor(tail *)`, yang mencocokkan berdasarkan [aturan yang diikuti `Bash(tail *)`](#bash-if-matching). Jika `if`-nya menyebutkan Bash, hook tetap mendapatkan input panggilan Monitor, tetapi `allow` dan `updatedInput` tidak berpengaruh394* **Matcher yang menyertakan Monitor**: dengan matcher seperti `Bash|Monitor` atau `.*`, atau tanpa matcher, hook mendapatkan input milik panggilan Monitor itu sendiri, dan `allow` serta `updatedInput` berlaku. Dalam [`if`](#common-fields), sebutkan Monitor, seperti pada `Monitor(tail *)`, yang mencocokkan berdasarkan [aturan yang diikuti `Bash(tail *)`](#bash-if-matching). Jika `if`-nya menyebutkan Bash, hook tetap mendapatkan input panggilan Monitor, tetapi `allow` dan `updatedInput` tidak berpengaruh

395* **Matcher `Bash`**: hook mendapatkan panggilan Bash. Dalam `if`, sebutkan Bash, seperti `Bash(tail *)`. Hook tidak berjalan jika `if`-nya menyebutkan Monitor395* **Matcher `Bash`**: hook mendapatkan panggilan Bash. Dalam `if`, sebutkan Bash, seperti pada `Bash(tail *)`. Hook tidak berjalan jika `if`-nya menyebutkan Monitor

396 396 

397### Bidang hook handler397### Field hook handler

398 398 

399Setiap objek dalam array `hooks` inner adalah hook handler: perintah shell, endpoint HTTP, tool MCP, prompt LLM, atau agent yang dijalankan saat matcher cocok. Ada lima tipe:399Setiap objek dalam array `hooks` bagian dalam adalah hook handler: perintah shell, endpoint HTTP, tool MCP, prompt LLM, atau agent yang dijalankan saat matcher cocok. Ada lima tipe:

400 400 

401* **[Command hooks](#command-hook-fields)** (`type: "command"`): jalankan perintah shell. Skrip Anda menerima [JSON input](#hook-input-and-output) event di stdin dan mengkomunikasikan hasil kembali melalui kode keluar dan stdout.401* **[Hook command](#command-hook-fields)** (`type: "command"`): menjalankan perintah shell. Skrip Anda menerima [input JSON](#hook-input-and-output) event melalui stdin dan mengomunikasikan hasil kembali melalui exit code dan stdout.

402* **[HTTP hooks](#http-hook-fields)** (`type: "http"`): kirimkan JSON input event sebagai permintaan HTTP POST ke URL. Endpoint mengkomunikasikan hasil kembali melalui badan respons menggunakan [format JSON output](#json-output) yang sama seperti command hooks.402* **[Hook HTTP](#http-hook-fields)** (`type: "http"`): mengirim input JSON event sebagai permintaan HTTP POST ke sebuah URL. Endpoint mengomunikasikan hasil kembali melalui body respons menggunakan [format output JSON](#json-output) yang sama seperti hook command.

403* **[MCP tool hooks](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): panggil tool pada [server MCP](https://code.claude.com/docs/id/mcp.md) yang dikonfigurasi. Output teks tool diperlakukan seperti command-hook stdout.403* **[Hook tool MCP](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): memanggil tool pada [server MCP](https://code.claude.com/docs/id/mcp.md) yang dikonfigurasi. Output teks tool diperlakukan seperti stdout hook command.

404* **[Prompt hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): kirimkan prompt ke model Claude untuk evaluasi single-turn. Model mengembalikan keputusannya sebagai JSON. Lihat [Prompt-based hooks](#prompt-based-hooks).404* **[Hook prompt](#prompt-and-agent-hook-fields)** (`type: "prompt"`): mengirim prompt ke model Claude untuk evaluasi satu giliran. Model mengembalikan keputusannya sebagai JSON. Lihat [Hook berbasis prompt](#prompt-based-hooks).

405* **[Agent hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): spawn subagent yang dapat menggunakan tools seperti Read, Grep, dan Glob untuk memverifikasi kondisi sebelum mengembalikan keputusan. Agent hooks adalah eksperimental dan mungkin berubah. Lihat [Agent-based hooks](#agent-based-hooks).405* **[Hook agent](#prompt-and-agent-hook-fields)** (`type: "agent"`): memunculkan subagent yang dapat menggunakan tool seperti Read, Grep, dan Glob untuk memverifikasi kondisi sebelum mengembalikan keputusan. Hook agent bersifat eksperimental dan dapat berubah. Lihat [Hook berbasis agent](#agent-based-hooks).

406 406 

407Ketika sebuah event dijalankan, hook yang cocok dengannya berjalan secara paralel. Jika lebih dari 12 di antaranya adalah prompt atau agent hook, 12 di antaranya berjalan sekaligus dan sisanya dimulai saat hook yang sedang berjalan selesai. [`timeout`](#common-fields) setiap hook yang menunggu mulai dihitung ketika hook tersebut dimulai.407Saat sebuah event dijalankan, hook yang cocok berjalan secara paralel. Jika lebih dari 12 di antaranya adalah hook prompt atau agent, 12 di antaranya berjalan sekaligus dan sisanya dimulai saat hook yang sedang berjalan selesai. [`timeout`](#common-fields) setiap hook yang menunggu mulai dihitung saat hook tersebut dimulai.

408 408 

409Jika Anda mendefinisikan handler yang sama di lebih dari satu file pengaturan, itu berjalan sekali. Salinan handler yang sama dari plugin atau skill tetap terpisah.409Jika Anda mendefinisikan handler yang sama di lebih dari satu file pengaturan, handler tersebut berjalan sekali. Salinan handler yang sama milik plugin atau skill tetap terpisah.

410 410 

411Handlers berjalan di direktori saat ini dengan lingkungan Claude Code. Jika direktori saat ini tidak lagi ada, misalnya worktree atau direktori temp yang shell lain hapus di tengah-sesi, Claude Code menjalankan command hooks dari yang pertama dari ini yang masih ada: direktori tempat sesi dimulai, akar proyek, direktori home Anda, atau direktori temp sistem. Claude Code mencatat warning yang menamai direktori fallback dalam [debug log](#debug-hooks). Untuk sesi worktree yang Anda mulai dari aplikasi desktop, lihat [Apa yang dibagikan worktree dengan checkout utama](https://code.claude.com/docs/id/worktrees.md#what-worktrees-share-with-the-main-checkout).411Handler berjalan di direktori saat ini dengan environment Claude Code. Jika direktori saat ini sudah tidak ada, misalnya worktree atau direktori sementara yang dihapus shell lain di tengah sesi, Claude Code menjalankan hook command dari yang pertama masih ada di antara berikut: direktori tempat sesi dimulai, root proyek, direktori home Anda, atau direktori sementara sistem. Claude Code mencatat peringatan yang menyebutkan direktori fallback tersebut dalam [log debug](#debug-hooks). Untuk sesi worktree yang Anda mulai dari aplikasi desktop, lihat [Apa yang dibagikan worktree dengan checkout utama](https://code.claude.com/docs/id/worktrees.md#what-worktrees-share-with-the-main-checkout).

412 412 

413Variabel lingkungan `$CLAUDE_CODE_REMOTE` adalah `"true"` di lingkungan web jarak jauh dan tidak diatur di CLI lokal. Claude Code v2.1.199 dan lebih baru menetapkan [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](https://code.claude.com/docs/id/env-vars) ke [Remote Control](https://code.claude.com/docs/id/remote-control.md) session ID saat sesi lokal memiliki koneksi Remote Control yang aktif.413Environment variable `$CLAUDE_CODE_REMOTE` bernilai `"true"` di lingkungan web jarak jauh dan tidak diatur di CLI lokal. Claude Code v2.1.199 dan yang lebih baru mengatur [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](https://code.claude.com/docs/id/env-vars) ke ID sesi [Remote Control](https://code.claude.com/docs/id/remote-control.md) selama sesi lokal memiliki koneksi Remote Control yang aktif.

414 414 

415#### Bidang umum415#### Field umum

416 416 

417Bidang-bidang ini berlaku untuk semua tipe hook:417Field berikut berlaku untuk semua tipe hook:

418 418 

419| Bidang | Diperlukan | Deskripsi |419| Field | Wajib | Deskripsi |

420| :- | :- | :- |420| :- | :- | :- |

421| `type` | ya | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"`, atau `"agent"` |421| `type` | ya | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"`, atau `"agent"` |

422| `if` | tidak | [Sintaks aturan izin](https://code.claude.com/docs/id/permissions.md#permission-rule-syntax) untuk memfilter kapan hook ini dijalankan, seperti `"Bash(git *)"` atau `"Edit(*.ts)"`. Hook command hanya dijalankan jika panggilan tool cocok dengan pola. Lihat [tabel pencocokan Bash](#bash-if-matching) untuk bagaimana pola Bash dievaluasi terhadap subperintah, `$()`, dan backticks. Hanya dievaluasi pada tool events: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, dan `PermissionDenied`. Pada event lain, hook dengan `if` yang ditetapkan tidak akan pernah dijalankan |422| `if` | tidak | [Sintaks aturan izin](https://code.claude.com/docs/id/permissions.md#permission-rule-syntax) untuk memfilter kapan hook ini berjalan, seperti `"Bash(git *)"` atau `"Edit(*.ts)"`. Perintah hook hanya berjalan jika panggilan tool cocok dengan pola. Lihat [tabel pencocokan Bash](#bash-if-matching) untuk cara pola Bash dievaluasi terhadap subperintah, `$()`, dan backtick. Hanya dievaluasi pada event tool: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, dan `PermissionDenied`. Pada event lain, hook dengan `if` yang diatur tidak pernah berjalan |

423| `timeout` | tidak | Detik sebelum membatalkan. Claude Code tidak memberlakukannya pada command hook yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background). Default: 600 untuk `command`, `http`, dan `mcp_tool`; 30 untuk `prompt`; 60 untuk `agent`. Claude Code menurunkan default `command`, `http`, dan `mcp_tool` menjadi 30 pada [`UserPromptSubmit`](#userpromptsubmit), [`PreModelSwitch`](#premodelswitch), dan [`PostModelSwitch`](#postmodelswitch), dan menjadi 10 pada [`MessageDisplay`](#messagedisplay). Hook [`SessionEnd`](#sessionend) berbagi anggaran 1,5 detik; jika pengaturan Anda menetapkan `timeout` per-hook yang lebih lama, Claude Code menaikkan anggaran untuk mencocokkan, hingga 60 detik |423| `timeout` | tidak | Detik sebelum pembatalan. Claude Code tidak memberlakukannya pada hook command yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background). Default: 600 untuk `command`, `http`, dan `mcp_tool`; 30 untuk `prompt`; 60 untuk `agent`. Claude Code menurunkan default `command`, `http`, dan `mcp_tool` menjadi 30 pada [`UserPromptSubmit`](#userpromptsubmit), [`PreModelSwitch`](#premodelswitch), dan [`PostModelSwitch`](#postmodelswitch), dan menjadi 10 pada [`MessageDisplay`](#messagedisplay). Hook [`SessionEnd`](#sessionend) berbagi anggaran 1,5 detik; jika pengaturan Anda menetapkan `timeout` per hook yang lebih lama, Claude Code menaikkan anggaran agar sesuai, hingga 60 detik |

424| `statusMessage` | tidak | Pesan spinner kustom ditampilkan saat hook dijalankan |424| `statusMessage` | tidak | Pesan spinner kustom yang ditampilkan saat hook berjalan |

425| `once` | tidak | Jika `true`, Claude Code menghapus hook setelah run pertamanya yang berhasil. Run yang gagal, memblokir dengan kode keluar 2, atau timeout meninggalkan hook di tempat, jadi berjalan lagi pada event yang cocok berikutnya. Hanya dihormati untuk hooks yang dideklarasikan dalam [skill frontmatter](#hooks-in-skills-and-agents); diabaikan dalam file pengaturan dan agent frontmatter |425| `once` | tidak | Jika `true`, Claude Code menghapus hook setelah eksekusi pertamanya yang berhasil. Eksekusi yang gagal, memblokir dengan exit code 2, atau mengalami timeout membiarkan hook tetap ada, sehingga hook berjalan lagi pada event berikutnya yang cocok. Hanya diterapkan untuk hook yang dideklarasikan dalam [frontmatter skill](#hooks-in-skills-and-agents); diabaikan dalam file pengaturan dan frontmatter agent |

426 426 

427Bidang `if` menyimpan tepat satu aturan izin. Tidak ada sintaks `&&`, `||`, atau list untuk menggabungkan aturan; untuk menerapkan beberapa kondisi, tentukan handler hook terpisah untuk masing-masing.427Field `if` berisi tepat satu aturan izin. Tidak ada sintaks `&&`, `||`, atau daftar untuk menggabungkan aturan; untuk menerapkan beberapa kondisi, definisikan hook handler terpisah untuk masing-masing.

428 428 

429Dalam kondisi `if` untuk file tool, pola direktori single-segment seperti `"Edit(src/**)"` cocok hanya dengan direktori `src` di direktori kerja dan file di bawahnya. Untuk mencocokkan direktori bernama `src` di kedalaman apa pun, tulis `"Edit(**/src/**)"`.429Dalam kondisi `if` untuk tool file, pola direktori satu segmen seperti `"Edit(src/**)"` hanya cocok dengan direktori `src` di direktori kerja dan file di bawahnya. Untuk mencocokkan direktori bernama `src` di kedalaman mana pun, tulis `"Edit(**/src/**)"`.

430 430 

431#### Bagaimana pola `if` mencocokkan perintah Bash431#### Cara pola `if` mencocokkan perintah Bash

432 432 

433Untuk pola Bash dalam [bidang `if`](#common-fields), apakah hook command Anda dijalankan tergantung pada bentuk pola dan perintah Bash yang Claude panggil. Penugasan `VAR=value` terkemuka dihapus sebelum pencocokan.433Untuk pola Bash dalam [field `if`](#common-fields), apakah perintah hook Anda berjalan bergantung pada bentuk pola dan perintah Bash yang sedang dipanggil Claude. Penugasan `VAR=value` di awal dihapus sebelum pencocokan.

434 434 

435| Pola `if` | Perintah Bash | Hook dijalankan? | Mengapa |435| Pola `if` | Perintah Bash | Hook berjalan? | Alasan |

436| :- | :- | :- | :- |436| :- | :- | :- | :- |

437| `Bash(git *)` | `FOO=bar git push` | ya | penugasan terkemuka dihapus; `git push` cocok |437| `Bash(git *)` | `FOO=bar git push` | ya | penugasan di awal dihapus; `git push` cocok |

438| `Bash(git *)` | `npm test && git push` | ya | setiap subperintah diperiksa; `git push` cocok |438| `Bash(git *)` | `npm test && git push` | ya | setiap subperintah diperiksa; `git push` cocok |

439| `Bash(rm *)` | `echo $(rm -rf /)` | ya | perintah di dalam `$()` dan backticks diperiksa; `rm -rf /` cocok |439| `Bash(rm *)` | `echo $(rm -rf /)` | ya | perintah di dalam `$()` dan backtick diperiksa; `rm -rf /` cocok |

440| `Bash(rm *)` | `echo $(date)` | tidak | tidak ada subperintah yang cocok dengan `rm *` |440| `Bash(rm *)` | `echo $(date)` | tidak | tidak ada subperintah yang cocok dengan `rm *` |

441| `Bash(git push *)` | `echo $(date)` | ya | pola yang menentukan lebih dari nama perintah menjalankan hook bagaimanapun pada `$()`, backticks, atau `$VAR` |441| `Bash(git push *)` | `echo $(date)` | ya | pola yang menentukan lebih dari nama perintah tetap menjalankan hook pada `$()`, backtick, atau `$VAR` |

442 442 

443Ketika Claude Code tidak dapat menentukan perintah mana yang dijalankan input Bash, itu menjalankan hook Anda terlepas dari pola. Karena filter `if` adalah best-effort, gunakan [sistem izin](https://code.claude.com/docs/id/permissions.md) daripada hook untuk memberlakukan allow atau deny yang keras.443Ketika Claude Code tidak dapat menentukan perintah mana yang dijalankan oleh input Bash, Claude Code menjalankan hook Anda terlepas dari polanya. Karena filter `if` bersifat upaya terbaik, gunakan [sistem izin](https://code.claude.com/docs/id/permissions.md) alih-alih hook untuk memberlakukan izin atau penolakan yang tegas.

444 444 

445#### Bidang command hook445#### Field hook command

446 446 

447Selain [bidang umum](#common-fields), command hooks menerima bidang-bidang ini:447Selain [field umum](#common-fields), hook command menerima field berikut:

448 448 

449| Bidang | Diperlukan | Deskripsi |449| Field | Wajib | Deskripsi |

450| :- | :- | :- |450| :- | :- | :- |

451| `command` | ya | Perintah shell untuk dijalankan. Dengan `args`, executable untuk spawn secara langsung. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |451| `command` | ya | Perintah shell yang akan dieksekusi. Dengan `args`, executable yang akan dimunculkan secara langsung. Lihat [Bentuk exec dan bentuk shell](#exec-form-and-shell-form) |

452| `args` | tidak | Daftar argumen. Ketika ada, `command` diselesaikan sebagai executable dan di-spawn secara langsung dengan `args` sebagai vektor argumen, tanpa shell yang terlibat. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |452| `args` | tidak | Daftar argumen. Jika ada, `command` di-resolve sebagai executable dan dimunculkan secara langsung dengan `args` sebagai vektor argumen, tanpa melibatkan shell. Lihat [Bentuk exec dan bentuk shell](#exec-form-and-shell-form) |

453| `async` | tidak | Jika `true`, dijalankan di latar belakang tanpa memblokir. Lihat [Run hooks in the background](#run-hooks-in-the-background) |453| `async` | tidak | Jika `true`, berjalan di latar belakang tanpa memblokir. Lihat [Menjalankan hook di latar belakang](#run-hooks-in-the-background) |

454| `asyncRewake` | tidak | Jika `true`, dijalankan di latar belakang dan membangunkan Claude pada kode keluar 2. Hook stderr, atau stdout jika stderr kosong, ditampilkan ke Claude sebagai [system reminder](https://code.claude.com/docs/id/glossary.md#system-reminder) sehingga dapat bereaksi terhadap kegagalan latar belakang yang berjalan lama |454| `asyncRewake` | tidak | Jika `true`, berjalan di latar belakang dan membangunkan Claude pada exit code 2. Stderr hook, atau stdout jika stderr kosong, ditampilkan kepada Claude sebagai [system reminder](https://code.claude.com/docs/id/glossary.md#system-reminder) sehingga Claude dapat bereaksi terhadap kegagalan latar belakang yang berjalan lama |

455| `shell` | tidak | Shell untuk digunakan untuk hook ini. Menerima `"bash"` atau `"powershell"`. Default ke `"bash"`, atau ke `"powershell"` di Windows ketika Git Bash tidak diinstal. Menetapkan `"powershell"` menjalankan perintah melalui PowerShell di Windows. Tidak memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL` karena hooks spawn PowerShell secara langsung. Diabaikan ketika `args` diatur |455| `shell` | tidak | Shell yang digunakan untuk hook ini. Menerima `"bash"` atau `"powershell"`. Default ke `"bash"`, atau ke `"powershell"` di Windows ketika Git Bash tidak terinstal. Mengatur `"powershell"` menjalankan perintah melalui PowerShell di Windows. Tidak memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL` karena hook memunculkan PowerShell secara langsung. Diabaikan ketika `args` diatur |

456| `onFailure` | tidak | Apakah tindakan yang memicu hook tetap dilanjutkan ketika hook gagal: `"continue"` atau `"block"`. Lihat [Blokir tindakan ketika hook gagal](#block-the-action-when-a-hook-fails) untuk `"block"` dan untuk membiarkan bidang ini tidak diatur. Memerlukan Claude Code v2.1.295 atau lebih baru |456| `onFailure` | tidak | Apakah tindakan yang memicu hook tetap dilanjutkan saat hook gagal: `"continue"` atau `"block"`. Lihat [Memblokir tindakan saat hook gagal](#block-the-action-when-a-hook-fails) untuk `"block"` dan untuk membiarkan field tidak diatur. Memerlukan Claude Code v2.1.295 atau yang lebih baru |

457 457 

458##### Exec form dan shell form458##### Bentuk exec dan bentuk shell

459 459 

460Hook command dijalankan sebagai exec form ketika `args` diatur, dan shell form ketika `args` dihilangkan. Atur `args` setiap kali hook mereferensikan [path placeholder](#reference-scripts-by-path), karena setiap elemen dilewatkan sebagai satu argumen tanpa quoting. Hilangkan `args` ketika Anda memerlukan fitur shell seperti pipes atau `&&`, atau ketika tidak ada kekhawatiran yang berlaku.460Hook command berjalan dalam bentuk exec ketika `args` diatur, dan dalam bentuk shell ketika `args` dihilangkan. Atur `args` setiap kali hook mereferensikan [placeholder path](#reference-scripts-by-path), karena setiap elemen diteruskan sebagai satu argumen tanpa quoting. Hilangkan `args` ketika Anda memerlukan fitur shell seperti pipe atau `&&`, atau ketika tidak ada kekhawatiran tersebut yang berlaku.

461 461 

462**Exec form** dijalankan ketika `args` ada. Claude Code menyelesaikan `command` sebagai executable di `PATH` dan spawn-nya secara langsung dengan `args` sebagai vektor argumen. Tidak ada shell, jadi setiap elemen `args` adalah satu argumen persis seperti yang ditulis, dan path placeholders seperti `${CLAUDE_PLUGIN_ROOT}` disubstitusi ke dalam `command` dan ke dalam setiap elemen `args` sebagai string biasa. Karakter khusus seperti apostrophe, `$`, dan backticks melewati verbatim karena tidak ada shell untuk menginterpretasinya. Tidak ada tokenisasi shell yang terjadi di platform apa pun.462**Bentuk exec** berjalan ketika `args` ada. Claude Code me-resolve `command` sebagai executable pada `PATH` dan memunculkannya secara langsung dengan `args` sebagai vektor argumen. Tidak ada shell, sehingga setiap elemen `args` adalah satu argumen persis seperti yang ditulis, dan placeholder path seperti `${CLAUDE_PLUGIN_ROOT}` disubstitusikan ke dalam `command` dan ke dalam setiap elemen `args` sebagai string biasa. Karakter khusus seperti apostrof, `$`, dan backtick diteruskan apa adanya karena tidak ada shell yang menginterpretasikannya. Tidak ada tokenisasi shell yang terjadi di platform mana pun.

463 463 

464**Shell form** dijalankan ketika `args` tidak ada. String `command` dilewatkan ke shell: `sh -c` di macOS dan Linux, Git Bash di Windows, atau PowerShell ketika Git Bash tidak diinstal. Atur bidang `shell` untuk memilih secara eksplisit. Shell melakukan tokenisasi string, memperluas variabel, dan menginterpretasi pipes, `&&`, redirects, dan globs.464**Bentuk shell** berjalan ketika `args` tidak ada. String `command` diteruskan ke shell: `sh -c` di macOS dan Linux, Git Bash di Windows, atau PowerShell ketika Git Bash tidak terinstal. Atur field `shell` untuk memilih secara eksplisit. Shell melakukan tokenisasi string, mengekspansi variabel, dan menginterpretasikan pipe, `&&`, pengalihan, dan glob.

465 465 

466> [!NOTE]466> [!NOTE]

467>467>

468> Di Windows, exec form memerlukan `command` untuk diselesaikan ke executable nyata seperti `.exe`. Shim `.cmd` dan `.bat` yang npm, npx, eslint, dan tools lainnya instal di `node_modules/.bin` bukan executables dan tidak dapat di-spawn tanpa shell. Untuk menjalankannya dalam exec form, panggil skrip yang mendasar dengan `node` secara langsung, misalnya `"command": "node", "args": ["${CLAUDE_PLUGIN_ROOT}/node_modules/eslint/bin/eslint.js"]`. Pola `node` plus script-path bekerja di setiap platform karena `node.exe` adalah binary nyata. Untuk menjalankan shim `.cmd` atau `.bat` berdasarkan nama, gunakan shell form.468> Di Windows, bentuk exec mengharuskan `command` di-resolve ke executable sungguhan seperti `.exe`. Shim `.cmd` dan `.bat` yang dipasang npm, npx, eslint, dan tool lain di `node_modules/.bin` bukan executable dan tidak dapat dimunculkan tanpa shell. Untuk menjalankannya dalam bentuk exec, panggil skrip dasarnya dengan `node` secara langsung, misalnya `"command": "node", "args": ["${CLAUDE_PLUGIN_ROOT}/node_modules/eslint/bin/eslint.js"]`. Pola `node` plus path skrip berfungsi di setiap platform karena `node.exe` adalah biner sungguhan. Untuk menjalankan shim `.cmd` atau `.bat` berdasarkan nama, gunakan bentuk shell.

469 469 

470Contoh ini menjalankan skrip Node yang dibundel dengan plugin. Exec form melewatkan path skrip yang diselesaikan sebagai satu argumen tanpa quoting:470Contoh ini menjalankan skrip Node yang dibundel dengan plugin. Bentuk exec meneruskan path skrip yang telah di-resolve sebagai satu argumen tanpa quoting:

471 471 

472```json theme={null}472```json theme={null}

473{473{


477}477}

478```478```

479 479 

480Shell form yang setara memerlukan quoting untuk menangani paths dengan spasi atau karakter khusus:480Bentuk shell yang setara memerlukan quoting untuk menangani path dengan spasi atau karakter khusus:

481 481 

482```json theme={null}482```json theme={null}

483{483{


486}486}

487```487```

488 488 

489Kedua form mendukung [path placeholders](#reference-scripts-by-path) yang sama, dan keduanya mengekspornya sebagai variabel lingkungan `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT`, dan `CLAUDE_PLUGIN_DATA` pada proses yang di-spawn, jadi skrip dapat membaca `process.env.CLAUDE_PLUGIN_ROOT` terlepas dari bagaimana itu diluncurkan.489Kedua bentuk mendukung [placeholder path](#reference-scripts-by-path) yang sama, dan keduanya mengekspornya sebagai environment variable `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT`, dan `CLAUDE_PLUGIN_DATA` pada proses yang dimunculkan, sehingga skrip dapat membaca `process.env.CLAUDE_PLUGIN_ROOT` terlepas dari cara skrip tersebut diluncurkan.

490 490 

491Plugin hooks juga mensubstitusi nilai [`${user_config.*}`](https://code.claude.com/docs/id/plugins/manifest-reference#user-configuration), dalam exec form saja: nilai disubstitusi ke dalam `command` dan ke dalam setiap elemen `args` sebagai string biasa, jadi tidak ada shell yang mem-parse ulangnya.491Hook plugin juga menyubstitusikan nilai [`${user_config.*}`](https://code.claude.com/docs/id/plugins/manifest-reference#user-configuration), hanya dalam bentuk exec: nilai disubstitusikan ke dalam `command` dan ke dalam setiap elemen `args` sebagai string biasa, sehingga tidak ada shell yang mengurainya ulang.

492 492 

493Hook plugin bentuk shell yang `command`-nya mereferensikan `${user_config.*}` gagal dengan [error](https://code.claude.com/docs/id/errors.md#plugin-command-references-user-config) daripada menjalankan. Untuk menggunakan nilai opsi dari hook bentuk shell, baca variabel lingkungan `$CLAUDE_PLUGIN_OPTION_<KEY>`, seperti `$CLAUDE_PLUGIN_OPTION_WEBHOOK_URL` untuk opsi `webhook_url`, atau atur `args` untuk beralih hook ke exec form. Sebelum v2.1.207, hook plugin bentuk shell juga mensubstitusi `${user_config.*}`.493Hook plugin bentuk shell yang `command`-nya mereferensikan `${user_config.*}` gagal dengan [error](https://code.claude.com/docs/id/errors.md#plugin-command-references-user-config) alih-alih berjalan. Untuk menggunakan nilai opsi dari hook bentuk shell, baca environment variable `$CLAUDE_PLUGIN_OPTION_<KEY>`, seperti `$CLAUDE_PLUGIN_OPTION_WEBHOOK_URL` untuk opsi `webhook_url`, atau atur `args` untuk mengalihkan hook ke bentuk exec. Sebelum v2.1.207, perintah hook plugin bentuk shell juga menyubstitusikan `${user_config.*}`.

494 494 

495> [!NOTE]495> [!NOTE]

496>496>

497> Dalam exec form, `command` adalah nama executable atau path saja. Jika `command` adalah nama bare tanpa path separator dan berisi whitespace bersama `args`, Claude Code mencatat warning karena spawn akan gagal: tidak ada executable bernama `node script.js`. Pindahkan token ekstra ke dalam `args`. Path absolut dengan spasi, seperti `C:\Program Files\nodejs\node.exe`, adalah executable tunggal yang valid dan tidak memicu warning.497> Dalam bentuk exec, `command` hanya berisi nama atau path executable. Jika `command` adalah nama polos tanpa pemisah path dan mengandung spasi bersama `args`, Claude Code mencatat peringatan karena pemunculan akan gagal: tidak ada executable bernama `node script.js`. Pindahkan token tambahan ke `args`. Path absolut dengan spasi, seperti `C:\Program Files\nodejs\node.exe`, adalah satu executable yang valid dan tidak memicu peringatan.

498 498 

499#### Bidang HTTP hook499#### Field hook HTTP

500 500 

501Selain [bidang umum](#common-fields), HTTP hooks menerima bidang-bidang ini:501Selain [field umum](#common-fields), hook HTTP menerima field berikut:

502 502 

503| Bidang | Diperlukan | Deskripsi |503| Field | Wajib | Deskripsi |

504| :- | :- | :- |504| :- | :- | :- |

505| `url` | ya | URL untuk mengirimkan permintaan POST ke |505| `url` | ya | URL tujuan pengiriman permintaan POST |

506| `headers` | tidak | Header HTTP tambahan sebagai pasangan kunci-nilai. Nilai mendukung interpolasi variabel lingkungan menggunakan sintaks `$VAR_NAME` atau `${VAR_NAME}`. Hanya variabel yang tercantum dalam `allowedEnvVars` yang diselesaikan |506| `headers` | tidak | Header HTTP tambahan sebagai pasangan kunci-nilai. Nilai mendukung interpolasi environment variable menggunakan sintaks `$VAR_NAME` atau `${VAR_NAME}`. Hanya variabel yang tercantum dalam `allowedEnvVars` yang di-resolve |

507| `allowedEnvVars` | tidak | Daftar nama variabel lingkungan yang dapat diinterpolasi ke nilai header. Referensi ke variabel yang tidak tercantum diganti dengan string kosong. Diperlukan untuk interpolasi variabel env apa pun untuk bekerja |507| `allowedEnvVars` | tidak | Daftar nama environment variable yang boleh diinterpolasi ke dalam nilai header. Referensi ke variabel yang tidak tercantum diganti dengan string kosong. Wajib agar interpolasi environment variable apa pun berfungsi |

508| `onFailure` | tidak | Apa yang terjadi pada tindakan ketika hook gagal: `"continue"`, yang merupakan default, atau `"block"`. Lihat [Blokir tindakan ketika hook gagal](#block-the-action-when-a-hook-fails). Memerlukan Claude Code v2.1.295 atau lebih baru |508| `onFailure` | tidak | Apa yang terjadi pada tindakan saat hook gagal: `"continue"`, yang merupakan default, atau `"block"`. Lihat [Memblokir tindakan saat hook gagal](#block-the-action-when-a-hook-fails). Memerlukan Claude Code v2.1.295 atau yang lebih baru |

509 509 

510Claude Code mengirimkan [JSON input](#hook-input-and-output) hook sebagai badan permintaan POST dengan `Content-Type: application/json`. Badan respons menggunakan [format JSON output](#json-output) yang sama seperti command hooks.510Claude Code mengirim [input JSON](#hook-input-and-output) hook sebagai body permintaan POST dengan `Content-Type: application/json`. Body respons menggunakan [format output JSON](#json-output) yang sama seperti hook command.

511 511 

512Penanganan kesalahan berbeda dari command hooks; lihat [HTTP response handling](#http-response-handling).512Penanganan error berbeda dari hook command; lihat [Penanganan respons HTTP](#http-response-handling).

513 513 

514Contoh ini mengirimkan event `PreToolUse` ke layanan validasi lokal, mengautentikasi dengan token dari variabel lingkungan `MY_TOKEN`:514Contoh ini mengirim event `PreToolUse` ke layanan validasi lokal, dengan autentikasi menggunakan token dari environment variable `MY_TOKEN`:

515 515 

516```json theme={null}516```json theme={null}

517{517{


536}536}

537```537```

538 538 

539#### Bidang MCP tool hook539#### Field hook tool MCP

540 540 

541Selain [bidang umum](#common-fields), MCP tool hooks menerima bidang-bidang ini:541Selain [field umum](#common-fields), hook tool MCP menerima field berikut:

542 542 

543| Bidang | Diperlukan | Deskripsi |543| Field | Wajib | Deskripsi |

544| :- | :- | :- |544| :- | :- | :- |

545| `server` | ya | Nama server MCP yang dikonfigurasi. Untuk [plugin-bundled server](https://code.claude.com/docs/id/mcp.md#plugin-provided-mcp-servers), ini adalah nama yang dibatasi `plugin:<plugin-name>:<server-name>`, seperti `plugin:my-plugin:db`, bukan kunci server bare |545| `server` | ya | Nama server MCP yang dikonfigurasi. Untuk [server yang dibundel plugin](https://code.claude.com/docs/id/mcp.md#plugin-provided-mcp-servers), ini adalah nama bercakupan `plugin:<plugin-name>:<server-name>`, seperti `plugin:my-plugin:db`, bukan kunci server polos |

546| `tool` | ya | Nama tool untuk dipanggil di server itu |546| `tool` | ya | Nama tool yang akan dipanggil pada server tersebut |

547| `input` | tidak | Argumen yang dilewatkan ke tool. Nilai string mendukung substitusi `${path}` dari [JSON input](#hook-input-and-output) hook, seperti `"${tool_input.file_path}"` |547| `input` | tidak | Argumen yang diteruskan ke tool. Nilai string mendukung substitusi `${path}` dari [input JSON](#hook-input-and-output) hook, seperti `"${tool_input.file_path}"` |

548 548 

549Contoh ini memanggil tool `security_scan` pada server MCP `my_server` setelah setiap `Write` atau `Edit`, melewatkan path file yang diedit:549Contoh ini memanggil tool `security_scan` pada server MCP `my_server` setelah setiap `Write` atau `Edit`, dengan meneruskan path file yang diedit:

550 550 

551```json theme={null}551```json theme={null}

552{552{


568}568}

569```569```

570 570 

571##### Bagaimana hasil tool dibaca571##### Cara hasil tool dibaca

572 

573Claude Code membaca konten teks tool dengan cara yang sama seperti membaca stdout hook command, mengikuti [aturan penguraian di bawah exit code 0](#exit-code-0). Jika tool mengembalikan `isError: true`, hook menghasilkan error yang tidak memblokir dan eksekusi berlanjut.

574 

575Jika error hook berisi salah satu pesan berikut, Claude Code tidak dapat membaca jawaban tool, sehingga hook tidak memberikan putusan:

576 

577```text theme={null}

578MCP tool "security_scan" on server "my_server" gave no answer that could be read, because a message from the server was too large, so this hook gave no verdict. If this keeps happening, the tool must send a smaller answer.

579MCP tool "security_scan" on server "my_server" answered without its text, which happens when a result is too large, so this hook gave no verdict. If this keeps happening, the tool must send a smaller answer.

580```

572 581 

573Claude Code membaca konten teks tool dengan cara yang sama seperti membaca command-hook stdout, mengikuti [aturan parsing di bawah exit code 0](#exit-code-0). Jika tool mengembalikan `isError: true`, hook menghasilkan kesalahan non-blocking dan eksekusi berlanjut.582Pada `PreToolUse`, Claude Code menolak panggilan tool yang sedang diperiksa hook. Pada event lain seperti `UserPromptSubmit`, `PostToolUse`, dan `Stop`, error tersebut tidak memblokir.

574 583 

575##### Ketika server masih dalam proses terhubung584Jika error terus muncul, kembalikan lebih sedikit data dari tool, atau ubah [`tool` atau `input`](#mcp-tool-hook-fields) milik hook agar jawabannya lebih kecil.

576 585 

577Pada event di mana hook dapat memblokir atau mengubah hasil, seperti `PreToolUse` atau `Stop`, Claude Code menunggu server yang sedang terhubung sebelum memanggil tool, paling lama [`MCP_TIMEOUT`](https://code.claude.com/docs/id/env-vars) dan dalam batas [`timeout`](#common-fields) milik hook itu sendiri. Pada event observasional, seperti `Notification` atau `SessionEnd`, Claude Code tidak menunggu.586##### Saat server masih terhubung

578 587 

579Server yang menampilkan [status `cached`](https://code.claude.com/docs/id/mcp#server-status-detail) terhubung ketika hook memanggil tool-nya. Jika server belum terhubung pada saat itu, hook menghasilkan kesalahan non-blocking dan eksekusi berlanjut. Hook tidak pernah memulai alur OAuth, jadi [autentikasi server dari `/mcp`](https://code.claude.com/docs/id/mcp#authenticate-with-remote-mcp-servers) terlebih dahulu.588Pada event di mana hook dapat memblokir atau mengubah hasil, seperti `PreToolUse` atau `Stop`, Claude Code menunggu server yang sedang terhubung sebelum memanggil tool, paling lama selama [`MCP_TIMEOUT`](https://code.claude.com/docs/id/env-vars) dan dalam batas [`timeout`](#common-fields) milik hook itu sendiri. Pada event observasional, seperti `Notification` atau `SessionEnd`, Claude Code tidak menunggu.

589 

590Server yang menampilkan [status `cached`](https://code.claude.com/docs/id/mcp#server-status-detail) terhubung saat hook memanggil tool-nya. Jika server tidak terhubung pada saat itu, hook menghasilkan error yang tidak memblokir dan eksekusi berlanjut. Hook tidak pernah memulai alur OAuth, jadi [autentikasi server dari `/mcp`](https://code.claude.com/docs/id/mcp#authenticate-with-remote-mcp-servers) terlebih dahulu.

580 591 

581##### Event yang dijalankan sebelum server MCP tersedia592##### Event yang dijalankan sebelum server MCP tersedia

582 593 

583`SessionStart` saat peluncuran, termasuk dengan `--continue` atau `--resume`, dan setiap event `Setup` dijalankan sebelum server MCP sesi tersedia untuk hook. Claude Code melewatkan hook `mcp_tool` mereka tanpa memanggil tool, dan [debug log](#debug-hooks) mencatat `mcp_tool hooks are not available for the 'SessionStart' hook event (no MCP client context)`, atau pesan yang sama yang menyebut `Setup`. Ketika `SessionStart` dijalankan lagi nanti dalam sesi, setelah `/clear` atau compaction, hook `mcp_tool`-nya berjalan. Untuk apa pun yang dibutuhkan sesi saat peluncuran, gunakan hook `type: "command"` pada `SessionStart` sebagai gantinya.594`SessionStart` saat peluncuran, termasuk dengan `--continue` atau `--resume`, dan setiap event `Setup` dijalankan sebelum server MCP sesi tersedia untuk hook. Claude Code melewati hook `mcp_tool` milik event tersebut tanpa memanggil tool, dan [log debug](#debug-hooks) mencatat `mcp_tool hooks are not available for the 'SessionStart' hook event (no MCP client context)`, atau pesan yang sama dengan menyebutkan `Setup`. Ketika `SessionStart` dijalankan lagi nanti dalam sesi, setelah `/clear` atau compaction, hook `mcp_tool`-nya berjalan. Untuk apa pun yang dibutuhkan sesi saat peluncuran, gunakan hook `type: "command"` pada `SessionStart` sebagai gantinya.

584 595 

585#### Bidang prompt dan agent hook596#### Field hook prompt dan agent

586 597 

587Selain [bidang umum](#common-fields), prompt dan agent hooks menerima bidang-bidang ini:598Selain [field umum](#common-fields), hook prompt dan agent menerima field berikut:

588 599 

589| Bidang | Diperlukan | Deskripsi |600| Field | Wajib | Deskripsi |

590| :- | :- | :- |601| :- | :- | :- |

591| `prompt` | ya | Teks prompt untuk dikirim ke model. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Escape dengan backslash untuk menyertakan teks literal: `\$1.00` dirender sebagai `$1.00` |602| `prompt` | ya | Teks prompt yang akan dikirim ke model. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Escape dengan backslash untuk menyertakan teks literal: `\$1.00` dirender sebagai `$1.00` |

592| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model yang digunakan Claude Code untuk [fungsionalitas latar belakang](https://code.claude.com/docs/id/model-config.md#environment-variables) |603| `model` | tidak | Model yang digunakan untuk evaluasi. Default ke model yang digunakan Claude Code untuk [fungsionalitas latar belakang](https://code.claude.com/docs/id/model-config.md#environment-variables) |

593 604 

594### Referensi skrip berdasarkan path605### Mereferensikan skrip berdasarkan path

595 606 

596Gunakan placeholders ini untuk mereferensikan skrip hook relatif terhadap akar proyek atau plugin, terlepas dari direktori kerja saat hook dijalankan:607Gunakan placeholder berikut untuk mereferensikan skrip hook relatif terhadap root proyek atau plugin, terlepas dari direktori kerja saat hook berjalan:

597 608 

598* `${CLAUDE_PROJECT_DIR}`: akar proyek tempat sesi dimulai. Claude Code juga menetapkan variabel ini dalam lingkungan [stdio MCP servers](https://code.claude.com/docs/id/mcp.md#option-3-add-a-local-stdio-server) dan plugin LSP servers.609* `${CLAUDE_PROJECT_DIR}`: root proyek tempat sesi dimulai. Claude Code juga mengatur variabel ini di environment [server MCP stdio](https://code.claude.com/docs/id/mcp.md#option-3-add-a-local-stdio-server) dan server LSP plugin.

599* `${CLAUDE_PLUGIN_ROOT}`: direktori instalasi plugin, untuk skrip yang dibundel dengan [plugin](https://code.claude.com/docs/id/plugins/overview.md). Lihat [plugin environment variables](https://code.claude.com/docs/id/plugins/manifest-reference.md#environment-variables) untuk bagaimana path berperilaku di seluruh pembaruan.610* `${CLAUDE_PLUGIN_ROOT}`: direktori instalasi plugin, untuk skrip yang dibundel dengan [plugin](https://code.claude.com/docs/id/plugins/overview.md). Lihat [environment variable plugin](https://code.claude.com/docs/id/plugins/manifest-reference.md#environment-variables) untuk perilaku path di seluruh pembaruan.

600* `${CLAUDE_PLUGIN_DATA}`: [direktori data persisten](https://code.claude.com/docs/id/plugins/components.md#path-variables-and-persistent-data) plugin, untuk dependensi dan status yang harus bertahan pembaruan plugin.611* `${CLAUDE_PLUGIN_DATA}`: [direktori data persisten](https://code.claude.com/docs/id/plugins/components.md#path-variables-and-persistent-data) plugin, untuk dependensi dan state yang harus bertahan setelah pembaruan plugin.

601 612 

602> [!NOTE]613> [!NOTE]

603>614>

604> **Worktrees berbeda.** Jika Claude memasuki [worktree](https://code.claude.com/docs/id/worktrees.md) selama sesi, Claude Code menyimpan `${CLAUDE_PROJECT_DIR}` di mana itu berada dan melewatkan path worktree ke hooks Anda dengan cara berbeda:615> **Worktree berbeda.** Jika Claude memasuki [worktree](https://code.claude.com/docs/id/worktrees.md) selama sesi, Claude Code mempertahankan `${CLAUDE_PROJECT_DIR}` di tempatnya semula dan meneruskan path worktree ke hook Anda dengan cara lain:

605>616>

606> * **`${CLAUDE_PROJECT_DIR}` tetap di tempat**: itu masih menunjuk ke akar proyek tempat sesi dimulai, jadi perintah seperti `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh` masih menjalankan skrip di checkout utama.617> * **`${CLAUDE_PROJECT_DIR}` tetap di tempatnya**: variabel ini tetap menunjuk ke root proyek tempat sesi dimulai, sehingga perintah seperti `${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh` tetap menjalankan skrip di checkout utama.

607> * **`cwd` mengikuti Claude**: bidang `cwd` dalam [input JSON](#common-input-fields) hook adalah akar worktree setelah Claude memasuki worktree, dan direktori baru setelah Claude menjalankan `cd`. Bacanya ketika hook perlu tahu direktori mana Claude sedang bekerja.618> * **`cwd` mengikuti Claude**: field `cwd` dalam [JSON input](#common-input-fields) hook adalah root worktree setelah Claude memasuki worktree, dan direktori baru setelah Claude menjalankan `cd`. Bacalah field ini ketika hook perlu mengetahui di direktori mana Claude sedang bekerja.

608>619>

609> Untuk sesi worktree yang Anda mulai dari aplikasi desktop, lihat [Apa yang dibagikan worktree dengan checkout utama](https://code.claude.com/docs/id/worktrees.md#what-worktrees-share-with-the-main-checkout) untuk mengetahui ke mana `${CLAUDE_PROJECT_DIR}` menunjuk.620> Untuk sesi worktree yang Anda mulai dari aplikasi desktop, lihat [Apa yang dibagikan worktree dengan checkout utama](https://code.claude.com/docs/id/worktrees.md#what-worktrees-share-with-the-main-checkout) untuk mengetahui ke mana `${CLAUDE_PROJECT_DIR}` menunjuk.

610 621 

611Lebih suka [exec form](#exec-form-and-shell-form) untuk hook apa pun yang mereferensikan path placeholder. Dalam shell form, bungkus setiap placeholder dalam tanda kutip ganda.622Utamakan [bentuk exec](#exec-form-and-shell-form) untuk hook apa pun yang mereferensikan placeholder path. Dalam bentuk shell, bungkus setiap placeholder dengan tanda kutip ganda.

612 623 

613> [tab] Skrip proyek624> [tab] Skrip proyek

614>625>

615> Contoh ini menggunakan `${CLAUDE_PROJECT_DIR}` untuk menjalankan pemeriksa gaya dari direktori `.claude/hooks/` proyek setelah pemanggilan tool `Write` atau `Edit` apa pun:626> Contoh ini menggunakan `${CLAUDE_PROJECT_DIR}` untuk menjalankan pemeriksa gaya dari direktori `.claude/hooks/` proyek setelah panggilan tool `Write` atau `Edit` apa pun:

616>627>

617> ```json theme={null}628> ```json theme={null}

618> {629> {


635 646 

636> [tab] Skrip plugin647> [tab] Skrip plugin

637>648>

638> Tentukan plugin hooks dalam `hooks/hooks.json` dengan bidang `description` tingkat atas opsional. Ketika plugin diaktifkan, hooks-nya bergabung dengan hooks pengguna dan proyek Anda.649> Definisikan hook plugin dalam `hooks/hooks.json` dengan field `description` tingkat atas opsional. Ketika plugin diaktifkan, hook-nya digabungkan dengan hook pengguna dan proyek Anda.

639>650>

640> Contoh ini menjalankan skrip pemformatan yang dibundel dengan plugin:651> Contoh ini menjalankan skrip pemformatan yang dibundel dengan plugin:

641>652>


660> }671> }

661> ```672> ```

662>673>

663> Lihat [plugin components reference](https://code.claude.com/docs/id/plugins/components.md#hooks) untuk detail tentang membuat plugin hooks.674> Lihat [referensi komponen plugin](https://code.claude.com/docs/id/plugins/components.md#hooks) untuk detail tentang pembuatan hook plugin.

664 675 

665### Hooks dalam skills dan agents676### Hook dalam skill dan agent

666 677 

667Selain file pengaturan dan plugin, hooks dapat didefinisikan langsung dalam [skills](https://code.claude.com/docs/id/skills.md) dan [subagents](https://code.claude.com/docs/id/sub-agents.md) menggunakan frontmatter, dalam format konfigurasi yang sama seperti hooks berbasis pengaturan. Berapa lama Claude Code menyimpannya terdaftar tergantung pada komponen:678Selain file pengaturan dan plugin, hook dapat didefinisikan langsung dalam [skill](https://code.claude.com/docs/id/skills.md) dan [subagent](https://code.claude.com/docs/id/sub-agents.md) menggunakan frontmatter, dalam format konfigurasi yang sama dengan hook berbasis pengaturan. Berapa lama Claude Code mempertahankan pendaftarannya bergantung pada komponennya:

668 679 

669* **Subagent hooks**: Claude Code menjalankannya hanya saat subagent itu berjalan dan menghapusnya saat selesai. Claude Code mengkonversi hook `Stop` di sini menjadi `SubagentStop`, event yang dijalankan saat subagent selesai.680* **Hook subagent**: Claude Code menjalankannya hanya selama subagent tersebut berjalan dan menghapusnya saat subagent selesai. Claude Code mengonversi hook `Stop` di sini menjadi `SubagentStop`, event yang dijalankannya saat subagent selesai.

670* **Skill hooks**: Claude Code mendaftarkannya ketika Anda atau Claude memanggil skill dan terus menjalankannya untuk sisa sesi, pada turns setelah turn skill sendiri juga. Untuk membuat Claude Code menghapus hook setelah run pertamanya yang berhasil, atur [`once: true`](#common-fields) padanya.681* **Hook skill**: Claude Code mendaftarkannya saat Anda atau Claude memanggil skill dan terus menjalankannya selama sisa sesi, termasuk pada giliran setelah giliran skill itu sendiri. Agar Claude Code menghapus hook setelah eksekusi pertamanya yang berhasil, atur [`once: true`](#common-fields) pada hook tersebut.

671 682 

672Skill ini mendefinisikan hook `PreToolUse` yang menjalankan skrip validasi keamanan sebelum setiap perintah `Bash`:683Skill ini mendefinisikan hook `PreToolUse` yang menjalankan skrip validasi keamanan sebelum setiap perintah `Bash`:

673 684 


684---695---

685```696```

686 697 

687Subagents menggunakan format yang sama dalam frontmatter YAML mereka.698Subagent menggunakan format yang sama dalam frontmatter YAML mereka.

688 699 

689Frontmatter hooks dalam skill proyek mengikuti [workspace trust rule yang sama seperti hooks dalam file pengaturan](#workspace-trust). Claude Code mendaftarkannya ketika Anda atau Claude memanggil skill, termasuk dalam run `-p` dalam folder yang belum Anda percayai.700Hook frontmatter dalam skill proyek mengikuti [aturan kepercayaan workspace yang sama seperti hook dalam file pengaturan](#workspace-trust). Claude Code mendaftarkannya saat Anda atau Claude memanggil skill, termasuk dalam eksekusi `-p` di folder yang belum Anda percayai.

690 701 

691Frontmatter hooks dalam subagent proyek berjalan hanya setelah Anda menerima [workspace trust dialog](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust) untuk folder asal file agent tersebut. Sesi `-p` tidak dihitung sebagai menerimanya. [Apa yang berjalan sebelum Anda mempercayai folder](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) membandingkan ini dengan rule file pengaturan, dan halaman subagents mencantumkan [cakupan mana yang dikecualikan](https://code.claude.com/docs/id/sub-agents.md#hooks-in-subagent-frontmatter).702Hook frontmatter dalam subagent proyek hanya berjalan setelah Anda menerima [dialog kepercayaan workspace](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust) untuk folder asal file agent tersebut. Sesi `-p` tidak dihitung sebagai menerimanya. [Apa yang berjalan sebelum Anda memercayai folder](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) membandingkan hal ini dengan aturan file pengaturan, dan halaman subagent mencantumkan [cakupan mana yang dikecualikan](https://code.claude.com/docs/id/sub-agents.md#hooks-in-subagent-frontmatter).

692 703 

693#### Batasan pada hook skill704#### Batasan pada hook skill

694 705 

695Ketika hook frontmatter sebuah skill tidak dijalankan setelah Anda atau Claude memanggil skill tersebut, jalankan [`/hooks`](#the-%2Fhooks-menu) dalam sesi itu. Jika menu itu mencantumkannya, lihat [Hook tidak dijalankan](https://code.claude.com/docs/id/hooks-guide.md#hook-not-firing). Jika tidak satu pun tercantum, skill tersebut mungkin berada di bawah penguncian khusus plugin atau telah melewati batas hook, dan berjalan tanpa satu pun hook frontmatter-nya. Periksa setiap kasus:706Ketika hook frontmatter suatu skill tidak dijalankan setelah Anda atau Claude memanggil skill tersebut, jalankan [`/hooks`](#the-%2Fhooks-menu) dalam sesi tersebut. Jika hook tersebut tercantum, lihat [Hook tidak dijalankan](https://code.claude.com/docs/id/hooks-guide.md#hook-not-firing). Jika tidak ada satu pun yang tercantum, skill tersebut mungkin berada di bawah penguncian khusus plugin atau melewati batas hook, dan berjalan tanpa hook frontmatter apa pun. Periksa setiap kasus:

696 707 

697* **Penguncian khusus plugin**: administrator organisasi Anda dapat mengunci hooks ke plugin dan pengaturan terkelola dengan pengaturan terkelola [`strictPluginOnlyCustomization`](https://code.claude.com/docs/id/settings-reference#strictpluginonlycustomization-hooks). Sebuah skill mempertahankan hook frontmatter-nya di bawah penguncian tersebut hanya jika skill itu adalah skill plugin, [skill bawaan](https://code.claude.com/docs/id/skills.md#bundled-skills), atau skill di [direktori pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md#delivery-mechanisms). Hook dalam file pengaturan Anda sendiri juga tidak berjalan.708* **Penguncian khusus plugin**: administrator organisasi Anda dapat mengunci hook ke plugin dan pengaturan terkelola dengan pengaturan terkelola [`strictPluginOnlyCustomization`](https://code.claude.com/docs/id/settings-reference#strictpluginonlycustomization-hooks). Sebuah skill mempertahankan hook frontmatter-nya di bawah penguncian tersebut hanya jika skill tersebut adalah skill plugin, [skill bawaan](https://code.claude.com/docs/id/skills.md#bundled-skills), atau skill dalam [direktori pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md#delivery-mechanisms). Hook dalam file pengaturan Anda sendiri juga tidak berjalan.

698 * **Periksa**: ketik `/status` dalam sesi Claude Code. Jika [baris `Setting sources`](https://code.claude.com/docs/id/settings#check-what-your-organization-enforces) mencakup `Enterprise managed settings`, tanyakan kepada administrator Anda apakah `strictPluginOnlyCustomization` mengunci hooks.709 * **Periksa**: ketik `/status` dalam sesi Claude Code. Jika [baris `Setting sources`](https://code.claude.com/docs/id/settings#check-what-your-organization-enforces) menyertakan `Enterprise managed settings`, tanyakan kepada administrator Anda apakah `strictPluginOnlyCustomization` mengunci hook.

699 * **Perbaiki**: pindahkan skill ke dalam [plugin](https://code.claude.com/docs/id/plugins/create.md#convert-an-existing-claude-setup), karena skill plugin mempertahankan hook frontmatter-nya. Cantumkan plugin tersebut di [marketplace](https://code.claude.com/docs/id/plugins/create-marketplace.md#create-a-marketplace), lalu instal dari sana. Jika Claude Code menolak marketplace dengan [`is blocked by enterprise policy`](https://code.claude.com/docs/id/plugins/troubleshooting#marketplace-source-is-blocked-by-enterprise-policy), minta administrator Anda untuk mengizinkan marketplace tersebut.710 * **Perbaikan**: pindahkan skill ke dalam [plugin](https://code.claude.com/docs/id/plugins/create.md#convert-an-existing-claude-setup), karena skill plugin mempertahankan hook frontmatter-nya. Cantumkan plugin dalam [marketplace](https://code.claude.com/docs/id/plugins/create-marketplace.md#create-a-marketplace), lalu instal dari sana. Jika Claude Code menolak marketplace dengan [`is blocked by enterprise policy`](https://code.claude.com/docs/id/plugins/troubleshooting#marketplace-source-is-blocked-by-enterprise-policy), minta administrator Anda untuk mengizinkan marketplace tersebut.

700* **Batas hook**: di Claude Code v2.1.304 atau lebih baru, setiap sumber skill memiliki batasnya sendiri per sesi. Proyek Anda, folder skill pribadi Anda, dan setiap plugin dihitung sebagai sumber terpisah. Skill dari satu sumber dapat mendaftarkan paling banyak 1.024 hook. Matcher dari hook-hook tersebut dapat berjumlah total paling banyak 16.384 karakter. Matcher dengan beberapa hook di bawahnya dihitung satu kali untuk setiap hook.711* **Batas hook**: di Claude Code v2.1.304 atau yang lebih baru, setiap sumber skill memiliki batasnya sendiri per sesi. Proyek Anda, folder skill pribadi Anda, dan setiap plugin dihitung sebagai sumber terpisah. Skill dari satu sumber dapat mendaftarkan paling banyak 1.024 hook. Matcher hook tersebut dapat berjumlah total paling banyak 16.384 karakter. Matcher dengan beberapa hook di bawahnya dihitung sekali untuk setiap hook.

701 * **Periksa**: ulangi sesi tempat hook tidak dijalankan, dengan debug logging aktif:712 * **Periksa**: ulangi sesi di mana hook tidak dijalankan, dengan logging debug aktif:

702 1. Mulai sesi baru dari shell Anda dengan `claude --debug`. Jika Anda tidak memulai sesi dari shell, ketik [`/debug`](https://code.claude.com/docs/id/commands#all-commands) terlebih dahulu di sesi baru sebagai gantinya.713 1. Mulai sesi baru dari shell Anda dengan `claude --debug`. Jika Anda tidak memulai sesi dari shell, ketik [`/debug`](https://code.claude.com/docs/id/commands#all-commands) terlebih dahulu di sesi baru sebagai gantinya.

703 2. Panggil skill yang sama dalam urutan yang sama, termasuk yang dipanggil Claude, karena kedua total bertambah skill demi skill. Minta Claude untuk memanggil skill apa pun yang tidak dapat Anda ketik sebagai perintah.714 2. Panggil skill yang sama dalam urutan yang sama, termasuk yang dipanggil Claude, karena kedua total bertambah skill demi skill. Minta Claude untuk memanggil skill apa pun yang tidak dapat Anda ketik sebagai perintah.

704 3. Cari `registers none of its hooks` di [debug log](#debug-hooks). Baris yang berisi teks tersebut menyebutkan skill yang melewati batas.715 3. Cari `registers none of its hooks` dalam [log debug](#debug-hooks). Baris yang berisi teks tersebut menyebutkan skill yang melewati batas.

705 * **Perbaiki**: deklarasikan lebih sedikit hook atau matcher yang lebih pendek di skill tersebut atau di skill lain dari sumbernya, lalu mulai sesi baru. Jika skill tersebut bukan milik Anda untuk diedit, minta pembuatnya untuk melakukan perubahan itu. Sampai saat itu, mulai sesi baru dan panggil skill yang Anda butuhkan sebelum skill lain dari sumbernya.716 * **Perbaikan**: deklarasikan lebih sedikit hook atau matcher yang lebih pendek dalam skill tersebut atau dalam skill lain dari sumbernya, lalu mulai sesi baru. Jika skill tersebut bukan milik Anda untuk diedit, minta penulisnya untuk melakukan perubahan tersebut. Sampai saat itu, mulai sesi baru dan panggil skill yang Anda butuhkan sebelum skill lain dari sumbernya.

706 717 

707Jika tidak ada kasus yang sesuai dengan situasi Anda, periksa [frontmatter yang tidak berhasil di-parse](https://code.claude.com/docs/id/skills.md#skill-not-triggering).718Jika tidak ada kasus yang sesuai dengan situasi Anda, periksa [frontmatter yang gagal diurai](https://code.claude.com/docs/id/skills.md#skill-not-triggering).

708 719 

709### Menu `/hooks`720### Menu `/hooks`

710 721 

711Ketik `/hooks` di Claude Code untuk membuka browser read-only untuk hooks yang telah Anda konfigurasi. Daftar memberi label pada setiap hook dengan asalnya, seperti pengaturan pengguna, pengaturan proyek, pengaturan lokal, plugin, atau sesi saat ini.722Ketik `/hooks` di Claude Code untuk membuka browser read-only untuk hook yang telah Anda konfigurasi. Daftar tersebut melabeli setiap hook dengan asalnya, seperti pengaturan pengguna, pengaturan proyek, pengaturan lokal, plugin, atau sesi saat ini.

712 723 

713Pilih hook untuk melihat teks lengkap dari apa yang dijalankannya dan di mana hook itu didefinisikan, seperti path file pengaturannya atau nama plugin-nya.724Pilih sebuah hook untuk melihat teks lengkap dari apa yang dijalankannya dan di mana hook tersebut didefinisikan, seperti path file pengaturannya atau nama plugin-nya.

714 725 

715Untuk menelusuri semua hook event, termasuk yang tidak memiliki hooks yang dikonfigurasi, pilih `All events` di akhir daftar.726Untuk menelusuri semua hook event, termasuk yang tidak memiliki hook terkonfigurasi, pilih `All events` di akhir daftar.

716 727 

717### Nonaktifkan atau hapus hooks728### Menonaktifkan atau menghapus hook

718 729 

719Untuk menghapus hook yang didefinisikan dalam file pengaturan, hapus entrinya dari file tersebut.730Untuk menghapus hook yang didefinisikan dalam file pengaturan, hapus entrinya dari file tersebut.

720 731 

721Untuk menonaktifkan semua hooks sementara tanpa menghapusnya, atur `"disableAllHooks": true` dalam file pengaturan Anda. Claude Code membaca nilai yang tersisa setelah [settings precedence](https://code.claude.com/docs/id/settings.md#settings-precedence) diterapkan, jadi `"disableAllHooks": false` dalam `.claude/settings.json` proyek menimpa `true` dalam pengaturan pengguna Anda. Untuk mematikan hooks untuk satu run apa pun yang dikatakan pengaturan proyek, lewatkan `--settings '{"disableAllHooks": true}'`, yang mengambil prioritas atas pengaturan proyek dan lokal. Tidak ada cara untuk menonaktifkan hook individual sambil menyimpannya dalam konfigurasi.732Untuk menonaktifkan sementara semua hook tanpa menghapusnya, atur `"disableAllHooks": true` dalam file pengaturan Anda. Claude Code membaca nilai yang tersisa setelah [prioritas pengaturan](https://code.claude.com/docs/id/settings.md#settings-precedence) diterapkan, sehingga `"disableAllHooks": false` dalam `.claude/settings.json` proyek menimpa `true` dalam pengaturan pengguna Anda. Untuk mematikan hook untuk satu eksekusi apa pun isi pengaturan proyek, teruskan `--settings '{"disableAllHooks": true}'`, yang diutamakan daripada pengaturan proyek dan lokal. Tidak ada cara untuk menonaktifkan hook individual sambil tetap mempertahankannya dalam konfigurasi.

722 733 

723Pengaturan `disableAllHooks` menghormati hierarki pengaturan terkelola. Jika administrator telah mengonfigurasi hooks melalui pengaturan kebijakan terkelola, `disableAllHooks` yang diatur dalam pengaturan pengguna, proyek, atau lokal tidak dapat menonaktifkan hooks terkelola tersebut. Hanya `disableAllHooks` yang diatur pada tingkat pengaturan terkelola yang dapat menonaktifkan hooks terkelola. Untuk jangkauan lengkap setiap tingkat, lihat [`disableAllHooks`](https://code.claude.com/docs/id/settings-reference#disableallhooks).734Pengaturan `disableAllHooks` mematuhi hierarki pengaturan terkelola. Jika administrator telah mengonfigurasi hook melalui pengaturan kebijakan terkelola, `disableAllHooks` yang diatur dalam pengaturan pengguna, proyek, atau lokal tidak dapat menonaktifkan hook terkelola tersebut. Hanya `disableAllHooks` yang diatur di tingkat pengaturan terkelola yang dapat menonaktifkan hook terkelola. Untuk jangkauan lengkap setiap tingkat, lihat [`disableAllHooks`](https://code.claude.com/docs/id/settings-reference#disableallhooks).

724 735 

725Pengeditan langsung ke hooks dalam file pengaturan biasanya diambil secara otomatis oleh file watcher.736Pengeditan langsung pada hook dalam file pengaturan biasanya terdeteksi secara otomatis oleh pemantau file.

726 737 

727## Input dan output hook738## Input dan output hook

728 739 


892 903 

893#### Hook yang memulai proses latar belakang904#### Hook yang memulai proses latar belakang

894 905 

906Hook dapat memulai program yang berjalan lama, seperti server dev, dan membiarkannya tetap berjalan selama sesi berlanjut. Dalam skrip hook atau perintah [bentuk shell](#exec-form-and-shell-form):

907 

908* Jalankan program di latar belakang

909* Alihkan stdout dan stderr-nya. Misalnya, perintah Bash `npm run dev > dev-server.log 2>&1 &` mengirim keduanya ke file. Jika Anda tidak mengalihkannya, hook yang tidak [async](#run-hooks-in-the-background) memerlukan waktu hingga 10 detik untuk selesai setelah prosesnya sendiri keluar.

910 

895Jika hook perintah Anda membuat keputusannya dalam proses latar belakang lalu keluar, penolakan yang dicetak proses tersebut setelah Claude Code berhenti membaca tidak memblokir panggilan tool. Untuk hook yang tidak [async](#run-hooks-in-the-background), Claude Code selesai membaca output hook sesaat setelah proses hook itu sendiri keluar.911Jika hook perintah Anda membuat keputusannya dalam proses latar belakang lalu keluar, penolakan yang dicetak proses tersebut setelah Claude Code berhenti membaca tidak memblokir panggilan tool. Untuk hook yang tidak [async](#run-hooks-in-the-background), Claude Code selesai membaca output hook sesaat setelah proses hook itu sendiri keluar.

896 912 

897Cetak keputusan sebelum Anda memulai proses latar belakang, dan alihkan stdout dan stderr proses tersebut. Jika skrip Anda mencetak allow, lalu memulai proses latar belakang tanpa mengalihkan stdout dan stderr proses tersebut, Claude Code memblokir panggilan tool. Error hook menyertakan `refusing to honor the suspect capture`.913Cetak keputusan sebelum Anda memulai proses latar belakang, dan alihkan stdout dan stderr proses tersebut. Jika skrip Anda mencetak allow, lalu memulai proses latar belakang tanpa mengalihkan stdout dan stderr proses tersebut, Claude Code memblokir panggilan tool. Error hook menyertakan `stdio went quiet` dan `refusing to honor the suspect capture`.

898 914 

899Skrip hook `PreToolUse` ini mencetak keputusan dengan `policy-check.sh`, lalu mengunggah metrik di latar belakang:915Skrip hook `PreToolUse` ini mencetak keputusan dengan `policy-check.sh`, lalu mengunggah metrik di latar belakang:

900 916 


1193 1209 

1194* `PreToolUse`: `updatedInput` langsung di bawah `hookSpecificOutput` menggantikan argumen tool sebelum tool berjalan. Lihat [Kontrol keputusan PreToolUse](#pretooluse-decision-control)1210* `PreToolUse`: `updatedInput` langsung di bawah `hookSpecificOutput` menggantikan argumen tool sebelum tool berjalan. Lihat [Kontrol keputusan PreToolUse](#pretooluse-decision-control)

1195* `PermissionRequest`: `updatedInput` di dalam objek `decision`. Lihat [Kontrol keputusan PermissionRequest](#permissionrequest-decision-control)1211* `PermissionRequest`: `updatedInput` di dalam objek `decision`. Lihat [Kontrol keputusan PermissionRequest](#permissionrequest-decision-control)

1196* `PostToolUse`: `updatedToolOutput` menggantikan hasil tool. Lihat [Kontrol keputusan PostToolUse](#posttooluse-decision-control)1212* `PostToolUse`: `updatedToolOutput` menggantikan hasil tool. Dalam sesi cloud [Cowork](https://claude.com/docs/cowork/overview), Claude Code mengabaikan `updatedToolOutput` ketika tool-nya adalah `AskUserQuestion` atau `ExitPlanMode`, dan Claude membaca jawaban atau rencana aslinya. Lihat [Kontrol keputusan PostToolUse](#posttooluse-decision-control)

1197* `UserPromptSubmit`: tidak dapat menggantikan prompt; hanya menyisipkan `additionalContext` bersamanya1213* `UserPromptSubmit`: tidak dapat menggantikan prompt; hanya menyisipkan `additionalContext` bersamanya

1198 1214 

1199Untuk kasus penggunaan redaksi atau transformasi, lakukan intersepsi di `PreToolUse` untuk input tool keluar dan di `PostToolUse` untuk hasil tool masuk.1215Untuk kasus penggunaan redaksi atau transformasi, lakukan intersepsi di `PreToolUse` untuk input tool keluar dan di `PostToolUse` untuk hasil tool masuk.


2210| `addDirectories` | `directories`, `destination` | Menambahkan direktori kerja. `directories` adalah array string path |2226| `addDirectories` | `directories`, `destination` | Menambahkan direktori kerja. `directories` adalah array string path |

2211| `removeDirectories` | `directories`, `destination` | Menghapus direktori kerja |2227| `removeDirectories` | `directories`, `destination` | Menghapus direktori kerja |

2212 2228 

2229Di `rules`, untuk [aturan izin](https://code.claude.com/docs/id/permissions.md#permission-rule-syntax) yang ditulis `Tool(specifier)`, `toolName` adalah nama tool dan `ruleContent` adalah specifier-nya:

2230 

2231* `Bash(npm test)`: `{ "toolName": "Bash", "ruleContent": "npm test" }`

2232* `Bash` atau `Bash(*)`: `{ "toolName": "Bash" }`, karena keduanya mencocokkan seluruh tool

2233* `mcp__github__get_issue`: `{ "toolName": "mcp__github__get_issue" }`

2234 

2235Jangan sertakan `ruleContent` dalam aturan allow untuk [tool MCP](https://code.claude.com/docs/id/permissions.md#mcp). Jika Anda menambahkannya, aturan tersebut tidak cocok dengan panggilan apa pun.

2236 

2213> [!NOTE]2237> [!NOTE]

2214>2238>

2215> `setMode` dengan `bypassPermissions` hanya berlaku jika Anda meluncurkan sesi dengan mode bypass yang sudah tersedia: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, atau `permissions.defaultMode: "bypassPermissions"` di [pengaturan pengguna, `--settings`, atau pengaturan terkelola](https://code.claude.com/docs/id/settings-reference#permissions-defaultmode). Jika tidak, pembaruan tersebut tidak berpengaruh. Pembaruan juga tidak berpengaruh ketika [`permissions.disableBypassPermissionsMode`](https://code.claude.com/docs/id/permissions#managed-settings) menonaktifkan mode tersebut, atau ketika sesi dimulai dalam [restricted mode](https://code.claude.com/docs/id/cli-reference.md#cli-flags).2239> `setMode` dengan `bypassPermissions` hanya berlaku jika Anda meluncurkan sesi dengan mode bypass yang sudah tersedia: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, atau `permissions.defaultMode: "bypassPermissions"` di [pengaturan pengguna, `--settings`, atau pengaturan terkelola](https://code.claude.com/docs/id/settings-reference#permissions-defaultmode). Jika tidak, pembaruan tersebut tidak berpengaruh. Pembaruan juga tidak berpengaruh ketika [`permissions.disableBypassPermissionsMode`](https://code.claude.com/docs/id/permissions#managed-settings) menonaktifkan mode tersebut, atau ketika sesi dimulai dalam [restricted mode](https://code.claude.com/docs/id/cli-reference.md#cli-flags).


2289| `reason` | Penjelasan yang ditampilkan kepada Claude ketika `decision` adalah `"block"` |2313| `reason` | Penjelasan yang ditampilkan kepada Claude ketika `decision` adalah `"block"` |

2290| `additionalContext` | String yang ditambahkan ke konteks Claude bersama hasil tool. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |2314| `additionalContext` | String yang ditambahkan ke konteks Claude bersama hasil tool. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

2291| `classifierContext` | Catatan singkat tentang hasil panggilan ini untuk pengklasifikasi [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode), bukan untuk Claude. Lihat [Menganotasi hasil untuk pengklasifikasi auto mode](#annotate-a-result-for-the-auto-mode-classifier). Memerlukan Claude Code v2.1.236 atau lebih baru |2315| `classifierContext` | Catatan singkat tentang hasil panggilan ini untuk pengklasifikasi [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode), bukan untuk Claude. Lihat [Menganotasi hasil untuk pengklasifikasi auto mode](#annotate-a-result-for-the-auto-mode-classifier). Memerlukan Claude Code v2.1.236 atau lebih baru |

2292| `updatedToolOutput` | Menggantikan output tool dengan nilai yang diberikan sebelum dikirim ke Claude. Nilai harus sesuai dengan bentuk output tool |2316| `updatedToolOutput` | Mengganti output tool dengan nilai yang diberikan sebelum dikirim ke Claude. Nilai harus cocok dengan bentuk output tool. Dalam sesi cloud [Cowork](https://claude.com/docs/cowork/overview), Claude Code mengabaikan field ini ketika tool-nya adalah `AskUserQuestion` atau `ExitPlanMode`, dan Claude membaca jawaban atau rencana asli |

2293| `updatedMCPToolOutput` | Menggantikan output hanya untuk [tool MCP](#match-mcp-tools). Utamakan `updatedToolOutput`, yang berfungsi untuk semua tool |2317| `updatedMCPToolOutput` | Mengganti output hanya untuk [tool MCP](#match-mcp-tools). Lebih baik gunakan `updatedToolOutput`, yang juga berfungsi untuk tool bawaan |

2294 2318 

2295Contoh di bawah ini menggantikan output dari panggilan `Bash`. Nilai pengganti sesuai dengan bentuk output tool `Bash`:2319Contoh di bawah ini menggantikan output dari panggilan `Bash`. Nilai pengganti sesuai dengan bentuk output tool `Bash`:

2296 2320 

hooks-guide.md +1 −1

Details

964 964 

965> [!NOTE]965> [!NOTE]

966>966>

967> Jika mesin Anda tidak memiliki [pengaturan terkelola](https://code.claude.com/docs/id/settings.md#check-what-your-organization-enforces) dan sesi Anda tidak menggunakan [kredensial `/login`](https://code.claude.com/docs/id/authentication#authentication-precedence) untuk paket Team atau Enterprise, sebuah [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) dapat menyetujui panggilan yang diblokir oleh hook `PreToolUse` Anda. Sesi yang berjalan dengan kunci API atau [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/id/authentication#generate-a-long-lived-token) berumur panjang tidak menggunakan login tersebut, bahkan ketika login itu tersimpan.967> Mesin Anda mungkin tidak memiliki [pengaturan terkelola](https://code.claude.com/docs/id/settings.md#check-what-your-organization-enforces) maupun [file `managed-mcp.json`](https://code.claude.com/docs/id/managed-mcp#deploy-managed-mcp-json), dan sesi Anda mungkin tidak menggunakan [kredensial `/login`](https://code.claude.com/docs/id/authentication#authentication-precedence) untuk paket Team atau Enterprise. Dalam penyiapan tersebut, sebuah [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) dapat menyetujui panggilan yang diblokir oleh hook `PreToolUse` Anda. Sesi yang berjalan dengan kunci API atau [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/id/authentication#generate-a-long-lived-token) berumur panjang tidak menggunakan login tersebut, bahkan ketika login itu tersimpan.

968>968>

969> Dalam plan mode, mod dapat menyetujui panggilan yang diblokir tersebut hanya jika bersifat read-only, jadi bukan pengeditan file. Untuk kasus di mana persetujuan mod tidak dapat melewati aturan dan hook Anda, lihat [Perluas izin dengan hooks](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods).969> Dalam plan mode, mod dapat menyetujui panggilan yang diblokir tersebut hanya jika bersifat read-only, jadi bukan pengeditan file. Untuk kasus di mana persetujuan mod tidak dapat melewati aturan dan hook Anda, lihat [Perluas izin dengan hooks](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods).

970 970 

Details

251| `d`/`x` | Hapus pemilihan |251| `d`/`x` | Hapus pemilihan |

252| `y` | Yank pemilihan |252| `y` | Yank pemilihan |

253| `c`/`s` | Ubah pemilihan |253| `c`/`s` | Ubah pemilihan |

254| `p` | Ganti pemilihan dengan isi register |254| `p`/`P` | Ganti pemilihan dengan isi register |

255| `r{char}` | Ganti setiap karakter yang dipilih dengan `{char}` |255| `r{char}` | Ganti setiap karakter yang dipilih dengan `{char}` |

256| `~`/`u`/`U` | Alihkan, huruf kecil, atau huruf besar pemilihan |256| `~`/`u`/`U` | Alihkan, huruf kecil, atau huruf besar pemilihan |

257| `>`/`<` | Indentasi atau kurangi indentasi baris yang dipilih |257| `>`/`<` | Indentasi atau kurangi indentasi baris yang dipilih |


275* Riwayat input disimpan per direktori kerja275* Riwayat input disimpan per direktori kerja

276* Menjalankan `/clear` memulai sesi baru: recall kemudian menampilkan prompt sesi baru terlebih dahulu, dengan prompt sesi sebelumnya setelahnya. Percakapan sesi sebelumnya disimpan dan dapat dilanjutkan.276* Menjalankan `/clear` memulai sesi baru: recall kemudian menampilkan prompt sesi baru terlebih dahulu, dengan prompt sesi sebelumnya setelahnya. Percakapan sesi sebelumnya disimpan dan dapat dilanjutkan.

277* Mengirimkan prompt yang sama dua kali berturut-turut mencatat satu entri riwayat, jadi menekan Up melangkah ke prompt yang berbeda sebelumnya277* Mengirimkan prompt yang sama dua kali berturut-turut mencatat satu entri riwayat, jadi menekan Up melangkah ke prompt yang berbeda sebelumnya

278* Ketika Anda mengingat kembali prompt yang menyertakan teks yang ditempel, Claude Code mengirimkan kembali konten yang ditempel penuh saat Anda mengirimkan ulang. Jika konten telah [dibersihkan](https://code.claude.com/docs/id/claude-directory.md#cleaned-up-automatically), Claude Code tidak mengirimkan string literal `[Pasted text #N]`; lihat [Paste large content](https://code.claude.com/docs/id/terminal-config.md#paste-large-content) untuk apa yang terjadi pada prompt278* Ketika Anda mengingat kembali prompt yang menyertakan teks yang ditempel, Claude Code mengirimkan kembali konten yang ditempel penuh saat Anda mengirimkan ulang. Jika konten telah [dibersihkan](https://code.claude.com/docs/id/claude-directory.md#cleaned-up-automatically), Claude Code tidak mengirimkan string literal `[Pasted text #N]`; lihat [Tempel konten besar](https://code.claude.com/docs/id/terminal-config.md#paste-large-content) untuk apa yang terjadi pada prompt

279* Ekspansi riwayat dengan `!` dinonaktifkan secara default279* Ekspansi riwayat dengan `!` dinonaktifkan secara default

280 280 

281### Mengembalikan draf yang telah dihapus281### Mengembalikan draf yang telah dihapus


304 304 

305Menerima kecocokan atau membatalkan pencarian berlaku segera, bahkan saat Claude Code masih memuat riwayat.305Menerima kecocokan atau membatalkan pencarian berlaku segera, bahkan saat Claude Code masih memuat riwayat.

306 306 

307Untuk menemukan prompt sebelumnya ketika yang Anda ingat hanyalah sesuatu yang panjang yang Anda tempelkan ke dalamnya, seperti log error, tekan `Ctrl+R` dan ketik sebuah kata dari tempelan tersebut. Memerlukan Claude Code v2.1.314 atau yang lebih baru.

308 

307## Perintah Bash latar belakang309## Perintah Bash latar belakang

308 310 

309Claude Code mendukung menjalankan perintah Bash di latar belakang, memungkinkan Anda untuk terus bekerja sementara proses yang berjalan lama dieksekusi.311Claude Code mendukung menjalankan perintah Bash di latar belakang, memungkinkan Anda untuk terus bekerja sementara proses yang berjalan lama dieksekusi.


793 795 

794Di `/config`, matikan **Continue automatically at usage limit**, atau atur [`autoContinueAtUsageLimit`](https://code.claude.com/docs/id/settings-reference#autocontinueatusagelimit) ke `false` dalam pengaturan pengguna Anda. `/config autoContinueAtUsageLimit=false` juga berfungsi, termasuk dengan `-p`, tetapi bentuk `key=value` tidak dapat mengaktifkannya kembali, karena pengaturan memberikan eksekusi tanpa pengawasan. File pengaturan mana yang Claude Code baca untuk kunci ini ada dalam [referensi pengaturan](https://code.claude.com/docs/id/settings-reference.md#autocontinueatusagelimit).796Di `/config`, matikan **Continue automatically at usage limit**, atau atur [`autoContinueAtUsageLimit`](https://code.claude.com/docs/id/settings-reference#autocontinueatusagelimit) ke `false` dalam pengaturan pengguna Anda. `/config autoContinueAtUsageLimit=false` juga berfungsi, termasuk dengan `-p`, tetapi bentuk `key=value` tidak dapat mengaktifkannya kembali, karena pengaturan memberikan eksekusi tanpa pengawasan. File pengaturan mana yang Claude Code baca untuk kunci ini ada dalam [referensi pengaturan](https://code.claude.com/docs/id/settings-reference.md#autocontinueatusagelimit).

795 797 

796## Status review PR798## Status tinjauan PR

797 799 

798Saat bekerja pada cabang dengan permintaan tarik terbuka, Claude Code menampilkan tautan PR yang dapat diklik di footer, seperti "PR #446". Tautan memiliki garis bawah berwarna yang menunjukkan status review:800Saat bekerja di branch yang memiliki pull request terbuka, Claude Code menampilkan tautan PR yang dapat diklik di footer, seperti "PR #446". Tautan tersebut memiliki garis bawah berwarna yang menunjukkan status tinjauan:

799 801 

800* Hijau: disetujui802* Hijau: disetujui

801* Kuning: menunggu review803* Kuning: menunggu tinjauan

802* Merah: perubahan diminta804* Merah: perubahan diminta

803* Abu-abu: draft805* Abu-abu: draf

804 806 

805Badge menghilang setelah permintaan tarik digabungkan atau ditutup.807Badge akan hilang setelah pull request di-merge atau ditutup.

806 808 

807`Cmd+click` (macOS) atau `Ctrl+click` (Windows/Linux) tautan untuk membuka permintaan tarik di browser Anda.809Lakukan `Cmd+click` (macOS) atau `Ctrl+click` (Windows/Linux) pada tautan untuk membuka pull request di browser Anda.

808 810 

809Status menyegarkan segera setelah `git push`, atau perintah `gh pr` yang mengubah permintaan tarik, seperti `gh pr create` atau `gh pr merge`, berhasil dalam sesi.811Status diperbarui segera setelah `git push`, atau perintah `gh pr` yang mengubah pull request, seperti `gh pr create` atau `gh pr merge`, berhasil dijalankan dalam sesi.

810 812 

811Claude Code merender badge sebagai hyperlink bahkan ketika tidak dapat mendeteksi dukungan hyperlink di terminal Anda, yang biasanya terjadi melalui SSH atau di tmux. Atur [`FORCE_HYPERLINK=0`](https://code.claude.com/docs/id/env-vars) untuk merender badge sebagai teks biasa.813Claude Code menampilkan badge sebagai hyperlink bahkan ketika tidak dapat mendeteksi dukungan hyperlink di terminal Anda, yang umumnya terjadi melalui SSH atau di tmux. Atur [`FORCE_HYPERLINK=0`](https://code.claude.com/docs/id/env-vars) untuk menampilkan badge sebagai teks biasa.

812 814 

813Ketika Anda mengatur [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/id/env-vars), Claude Code tidak memeriksa status permintaan tarik atau permintaan penggabungan.815Saat Anda mengatur [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/id/env-vars), Claude Code tidak memeriksa status pull request atau merge request.

814 816 

815> [!NOTE]817> [!NOTE]

816>818>

817> Status PR untuk repositori GitHub memerlukan token GitHub. Claude Code menemukan satu berdasarkan host remote:819> Status PR untuk repositori GitHub memerlukan token GitHub. Claude Code menemukannya berdasarkan host remote:

818>820>

819> * **github.com**: `GH_TOKEN` atau `GITHUB_TOKEN`, atau token yang disimpan oleh `gh auth login`. Tanpa satu, footer menampilkan `install gh for PR status` ketika CLI `gh` tidak diinstal, atau `gh auth login for PR status` ketika sudah diinstal821> * **github.com**: `GH_TOKEN` atau `GITHUB_TOKEN`, atau token yang disimpan oleh `gh auth login`. Tanpa token, footer menampilkan `install gh for PR status` ketika CLI `gh` tidak terinstal, atau `gh auth login for PR status` ketika CLI tersebut terinstal

820> * **Host GitHub Enterprise yang ditetapkan sebagai `GH_HOST`**: `GH_ENTERPRISE_TOKEN` atau `GITHUB_ENTERPRISE_TOKEN`, atau token yang disimpan oleh `gh auth login --hostname <host>`. Tanpa satu, footer menampilkan petunjuk yang sama822> * **Host GitHub Enterprise yang diatur sebagai `GH_HOST`**: `GH_ENTERPRISE_TOKEN` atau `GITHUB_ENTERPRISE_TOKEN`, atau token yang disimpan oleh `gh auth login --hostname <host>`. Tanpa token, footer menampilkan petunjuk yang sama

821> * **Host GitHub lainnya**: token yang disimpan oleh `gh auth login --hostname <host>`. Tanpa satu, Claude Code tidak menampilkan badge dan tidak ada petunjuk823> * **Host GitHub lainnya**: token yang disimpan oleh `gh auth login --hostname <host>`. Tanpa token, Claude Code tidak menampilkan badge maupun petunjuk

822 824 

823### Permintaan penggabungan GitLab825### Merge request GitLab

824 826 

825Ketika Anda bekerja pada cabang dengan permintaan penggabungan GitLab terbuka, Claude Code menampilkan badge `MR !N` yang dapat diklik di slot footer yang sebaliknya menampung tautan PR GitHub. `!N` adalah sintaks referensi GitLab sendiri untuk nomor permintaan penggabungan N. Garis bawah berwarna menunjukkan status permintaan penggabungan:827Saat Anda bekerja di branch yang memiliki merge request GitLab terbuka, Claude Code menampilkan badge `MR !N` yang dapat diklik di slot footer yang biasanya berisi tautan PR GitHub. `!N` adalah sintaks referensi GitLab sendiri untuk merge request nomor N. Garis bawah berwarna menunjukkan status merge request:

826 828 

827* Hijau: GitLab melaporkan permintaan penggabungan sebagai dapat digabungkan829* Hijau: GitLab melaporkan merge request sebagai dapat di-merge

828* Kuning: status terbuka lainnya830* Kuning: status terbuka lainnya

829* Abu-abu: draft831* Abu-abu: draf

830 832 

831Badge menghilang setelah permintaan penggabungan digabungkan atau ditutup.833Badge akan hilang setelah merge request di-merge atau ditutup.

832 834 

833Ini menyegarkan segera setelah `git push`, atau perintah `glab mr` yang mengubah permintaan penggabungan, seperti `glab mr create` atau `glab mr merge`, berhasil dalam sesi.835Badge diperbarui segera setelah `git push`, atau perintah `glab mr` yang mengubah merge request, seperti `glab mr create` atau `glab mr merge`, berhasil dijalankan dalam sesi.

834 836 

835Untuk mendapatkan badge, Anda memerlukan:837Untuk mendapatkan badge, Anda memerlukan:

836 838 

837* Claude Code v2.1.234 atau lebih baru839* Claude Code v2.1.234 atau lebih baru

838* Remote repositori yang menunjuk ke host GitLab Anda, baik gitlab.com atau instans yang dikelola sendiri840* Remote repositori yang mengarah ke host GitLab Anda, baik gitlab.com maupun instance self-managed

839* CLI [`glab`](https://gitlab.com/gitlab-org/cli) di `PATH` Anda, diautentikasi dengan `glab auth login`841* [CLI `glab`](https://gitlab.com/gitlab-org/cli) di `PATH` Anda, yang telah diautentikasi dengan `glab auth login`

840 842 

841Claude Code mengabaikan variabel lingkungan token `glab`, seperti `GITLAB_TOKEN`, ketika memeriksa status, jadi Anda tidak mendapatkan badge dari token yang diekspor saja. Claude Code juga mencari `glab` dan loginnya sekali per sesi, jadi restart Claude Code setelah Anda menginstal `glab` atau menjalankan `glab auth login`.843Claude Code mengabaikan environment variable token milik `glab`, seperti `GITLAB_TOKEN`, saat memeriksa status, sehingga Anda tidak akan mendapatkan badge hanya dari token yang diekspor. Claude Code juga mencari `glab` dan login-nya sekali per sesi, jadi mulai ulang Claude Code setelah Anda menginstal `glab` atau menjalankan `glab auth login`.

842 844 

843## Tautan referensi masalah845## Tautan referensi masalah

844 846 

keybindings.md +1 −1

Details

305 305 

306### Tindakan diff306### Tindakan diff

307 307 

308Tindakan ini hanya menjangkau penampil diff Claude Code yang lebih lama, yang dibuka oleh `/diff` di luar [rendering fullscreen](https://code.claude.com/docs/id/fullscreen.md) setelah Anda menonaktifkan [mod `cc-plugin-diff`](https://code.claude.com/docs/id/plugins/mods/overview#mods-built-into-claude-code) di `/plugin`. Selama mod tersebut diaktifkan, `/diff` membuka [dialog diff](https://code.claude.com/docs/id/interactive-mode.md#diff-dialog) sebagai gantinya. `keybindings.json` yang menyebutkan tindakan-tindakan ini tetap dimuat tanpa kesalahan dalam kedua kasus.308Tindakan ini hanya menjangkau penampil diff Claude Code yang lebih lama, yang dibuka oleh `/diff` di luar [rendering fullscreen](https://code.claude.com/docs/id/fullscreen.md) setelah Anda menonaktifkan [mod `cc-plugin-diff`](https://code.claude.com/docs/id/plugins/mods/overview#mods-built-into-claude-code) di `/plugin`. Selama mod tersebut diaktifkan, `/diff` membuka [dialog diff](https://code.claude.com/docs/id/interactive-mode.md#diff-dialog) sebagai gantinya.

309 309 

310Tindakan yang tersedia dalam konteks `DiffDialog`:310Tindakan yang tersedia dalam konteks `DiffDialog`:

311 311 

Details

197* `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba ulang instalasi.197* `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba ulang instalasi.

198* `Plugin "<name>" not found in marketplace "claude-plugins-official"`: salinan lokal katalog marketplace Anda mungkin sudah usang. Perbarui dengan `/plugin marketplace update claude-plugins-official`, kemudian coba ulang instalasi. Jika retry mencetak pesan yang sama, lihat [Plugin not found in marketplace](https://code.claude.com/docs/id/plugins/troubleshooting.md#plugin-not-found-in-marketplace).198* `Plugin "<name>" not found in marketplace "claude-plugins-official"`: salinan lokal katalog marketplace Anda mungkin sudah usang. Perbarui dengan `/plugin marketplace update claude-plugins-official`, kemudian coba ulang instalasi. Jika retry mencetak pesan yang sama, lihat [Plugin not found in marketplace](https://code.claude.com/docs/id/plugins/troubleshooting.md#plugin-not-found-in-marketplace).

199 199 

200Untuk mengaktifkan plugin untuk semua orang di repository daripada menginstalnya sendiri, tambahkan ke pengaturan proyek [`enabledPlugins`](https://code.claude.com/docs/id/settings-reference#plugin-settings).200Untuk mengaktifkan plugin bagi semua orang di repositori, tambahkan ke [pengaturan proyek `enabledPlugins`](https://code.claude.com/docs/id/settings-reference#plugin-settings). Setiap orang tetap perlu [menginstalnya](https://code.claude.com/docs/id/plugins/loading.md#enabled-in-project-settings-but-not-installed).

201 201 

202Plugin code intelligence memerlukan biner language server bahasa di setiap mesin pengembang. Lihat [biner mana yang diperlukan setiap bahasa](https://code.claude.com/docs/id/plugins/code-intelligence.md). Menginstal dari marketplace resmi memerlukan akses jaringan ke GitHub, di mana marketplace dihosting. Di jaringan terbatas, [tambahkan marketplace dari host Git internal atau jalur lokal](https://code.claude.com/docs/id/plugins/install.md#add-a-marketplace) sebagai gantinya.202Plugin code intelligence memerlukan biner language server bahasa di setiap mesin pengembang. Lihat [biner mana yang diperlukan setiap bahasa](https://code.claude.com/docs/id/plugins/code-intelligence.md). Menginstal dari marketplace resmi memerlukan akses jaringan ke GitHub, di mana marketplace dihosting. Di jaringan terbatas, [tambahkan marketplace dari host Git internal atau jalur lokal](https://code.claude.com/docs/id/plugins/install.md#add-a-marketplace) sebagai gantinya.

203 203 


235 235 

236Daftarkan direktori di `sparsePaths`, bukan file individual. File level-root seperti `package.json`, `tsconfig.base.json`, dan file lock selalu diperiksa bersama direktori yang Anda daftarkan. Direktori level-root tidak, jadi sertakan `.claude` dalam daftar jika Anda menginginkan repository root's `.claude/settings.json` atau `.claude/rules/` tersedia di dalam worktree. Untuk project skills, agents, dan commands, lihat [What worktrees share with the main checkout](https://code.claude.com/docs/id/worktrees.md#what-worktrees-share-with-the-main-checkout).236Daftarkan direktori di `sparsePaths`, bukan file individual. File level-root seperti `package.json`, `tsconfig.base.json`, dan file lock selalu diperiksa bersama direktori yang Anda daftarkan. Direktori level-root tidak, jadi sertakan `.claude` dalam daftar jika Anda menginginkan repository root's `.claude/settings.json` atau `.claude/rules/` tersedia di dalam worktree. Untuk project skills, agents, dan commands, lihat [What worktrees share with the main checkout](https://code.claude.com/docs/id/worktrees.md#what-worktrees-share-with-the-main-checkout).

237 237 

238Sparse checkout memerlukan git untuk mengaktifkan `extensions.worktreeConfig` di `.git/config` bersama repositori selama worktree sparse ada. Claude Code menghapus entri itu setelah worktree terakhir dihapus, tetapi hanya jika Claude Code yang menambahkannya. Claude Code tidak pernah menghapus nilai yang Anda atur sendiri.238> [!NOTE]

239>

240> Sparse checkout memerlukan git untuk mengaktifkan `extensions.worktreeConfig` di `.git/config` bersama repositori selama worktree sparse ada. Claude Code menghapus entri itu setelah worktree terakhir dihapus, tetapi hanya jika Claude Code yang menambahkannya.

239 241 

240Untuk menghindari duplikasi direktori besar seperti `node_modules` di seluruh worktrees, pasangkan `sparsePaths` dengan `symlinkDirectories` di `.claude/settings.json` yang sama:242Untuk menghindari duplikasi direktori besar seperti `node_modules` di seluruh worktrees, pasangkan `sparsePaths` dengan `symlinkDirectories` di `.claude/settings.json` yang sama:

241 243 

Details

156 156 

157### Konflik dengan login yang ada157### Konflik dengan login yang ada

158 158 

159Variabel kredensial gateway mengambil alih login claude.ai yang disimpan atau kunci Console. Login claude.ai Anda tetap disimpan dan tidak digunakan sementara variabel diatur; batalkan pengaturan variabel dan Claude Code kembali ke itu. Dengan `ANTHROPIC_AUTH_TOKEN`, variabel mengambil alih segera. Dengan `ANTHROPIC_API_KEY`, Anda diminta sekali dalam mode interaktif untuk menyetujui kunci sebelum mengambil alih.159Variabel kredensial gateway diutamakan daripada login claude.ai yang disimpan atau kunci Console. Dengan `ANTHROPIC_AUTH_TOKEN`, variabel langsung diutamakan. Dengan `ANTHROPIC_API_KEY`, Anda diminta sekali dalam mode interaktif untuk menyetujui kunci sebelum kunci tersebut diutamakan.

160 160 

161Jalankan `/status` untuk mengonfirmasi sumber kredensial mana yang aktif. Jika startup menampilkan peringatan konflik auth yang menamai dua sumber, lihat baris pertama [tabel pemecahan masalah](#troubleshoot-gateway-errors) untuk mengetahui mana yang harus dihapus. Untuk menghapus login yang disimpan sehingga hanya kredensial gateway yang tersisa, jalankan `/logout`.161Jalankan `/status` untuk mengonfirmasi sumber kredensial mana yang aktif. Jika startup menampilkan peringatan konflik auth yang menamai dua sumber, lihat baris pertama [tabel pemecahan masalah](#troubleshoot-gateway-errors) untuk mengetahui mana yang harus dihapus. Untuk menghapus login yang disimpan sehingga hanya kredensial gateway yang tersisa, jalankan `/logout`.

162 162 


378Mengatur variabel memiliki efek dan batasan ini:378Mengatur variabel memiliki efek dan batasan ini:

379 379 

380* Ini menonaktifkan pembaruan otomatis, jadi rencanakan jalur pembaruan lain, seperti pengelola paket Anda atau distribusi terkelola.380* Ini menonaktifkan pembaruan otomatis, jadi rencanakan jalur pembaruan lain, seperti pengelola paket Anda atau distribusi terkelola.

381* Ini menekan pemeriksaan ketersediaan [mode cepat](https://code.claude.com/docs/id/fast-mode.md). Kecuali pemeriksaan sebelumnya telah mengaktifkan mode cepat di mesin, `/fast` melaporkan bahwa mode cepat tidak tersedia.381* Ini menekan pemeriksaan ketersediaan [fast mode](https://code.claude.com/docs/id/fast-mode.md). Pada Anthropic API, jika `/fast` kemudian melaporkan bahwa fast mode tidak tersedia, lihat [menggunakan fast mode di balik proxy dan LLM gateway](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) untuk memulihkan fast mode.

382* Ini tidak mempengaruhi [penemuan model gateway](#add-gateway-models-to-the-model-picker), yang menanyakan hanya gateway Anda. Sebelum v2.1.257, variabel juga menghentikan penemuan dari penyegaran, jadi pemilih menyimpan daftar yang sebelumnya di-cache.382* Ini tidak mempengaruhi [penemuan model gateway](#add-gateway-models-to-the-model-picker), yang menanyakan hanya gateway Anda. Sebelum v2.1.257, variabel juga menghentikan penemuan dari penyegaran, jadi pemilih menyimpan daftar yang sebelumnya di-cache.

383* [Pemeriksaan keamanan domain](https://code.claude.com/docs/id/data-usage.md#webfetch-domain-safety-check) alat WebFetch tidak terpengaruh dan masih memanggil `api.anthropic.com`. Matikan secara terpisah dengan `skipWebFetchPreflight: true` di [pengaturan](https://code.claude.com/docs/id/settings.md) jika jaringan Anda memblokir host itu.383* [Pemeriksaan keamanan domain](https://code.claude.com/docs/id/data-usage.md#webfetch-domain-safety-check) alat WebFetch tidak terpengaruh dan masih memanggil `api.anthropic.com`. Matikan secara terpisah dengan `skipWebFetchPreflight: true` di [pengaturan](https://code.claude.com/docs/id/settings.md) jika jaringan Anda memblokir host itu.

384* Untuk setiap aliran telemetri dan variabel yang mengontrolnya, lihat [layanan telemetri](https://code.claude.com/docs/id/data-usage.md#telemetry-services).384* Untuk setiap aliran telemetri dan variabel yang mengontrolnya, lihat [layanan telemetri](https://code.claude.com/docs/id/data-usage.md#telemetry-services).

Details

251 251 

252* Prompt login berarti celah kredensial. Jalankan `/status` dan buka tab **Status**: ketika baris `Setting sources` tidak mencakup pengaturan terkelola, distribusi tidak mencapai mesin; ketika itu terjadi, kredensial pengembang tidak dikirimkan, jadi atur `ANTHROPIC_AUTH_TOKEN` atau `apiKeyHelper`252* Prompt login berarti celah kredensial. Jalankan `/status` dan buka tab **Status**: ketika baris `Setting sources` tidak mencakup pengaturan terkelola, distribusi tidak mencapai mesin; ketika itu terjadi, kredensial pengembang tidak dikirimkan, jadi atur `ANTHROPIC_AUTH_TOKEN` atau `apiKeyHelper`

253* Kesalahan `Failed to authenticate` berarti gateway menolak permintaan; lognya mengatakan kredensial mana yang gagal. Penolakan yang dicatat gateway sendiri menyebutkan kunci pengembang, sementara `401` dari `api.anthropic.com` atau endpoint penyedia Anda berarti kredensial penyedia yang dipegang gateway ditolak253* Kesalahan `Failed to authenticate` berarti gateway menolak permintaan; lognya mengatakan kredensial mana yang gagal. Penolakan yang dicatat gateway sendiri menyebutkan kunci pengembang, sementara `401` dari `api.anthropic.com` atau endpoint penyedia Anda berarti kredensial penyedia yang dipegang gateway ditolak

254* Prompt persetujuan satu kali untuk kunci diharapkan pada penggunaan pertama ketika gateway mengharapkan kunci di header `x-api-key`, ditetapkan sebagai `ANTHROPIC_API_KEY`. Dengan `ANTHROPIC_AUTH_TOKEN`, tidak ada prompt yang muncul dan variabel mengambil alih secara diam-diam; login claude.ai yang sebelumnya disimpan tidak aktif untuk sesi itu254* Prompt persetujuan satu kali untuk kunci diharapkan pada penggunaan pertama ketika gateway mengharapkan kunci di header `x-api-key`, ditetapkan sebagai `ANTHROPIC_API_KEY`

255 255 

256Jika organisasi Anda menggunakan [fast mode](https://code.claude.com/docs/id/fast-mode.md), jalankan `/fast` di sini juga: pemeriksaan ketersediaan memanggil `api.anthropic.com` secara langsung daripada mengikuti URL dasar gateway, sehingga sesi yang dirutekan gateway dapat melaporkan fast mode sebagai tidak tersedia atau dinonaktifkan meskipun inferensi berfungsi. [Gunakan fast mode di belakang proxy dan gateway LLM](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) memetakan setiap pesan ke variabel yang mengembalikannya, didistribusikan dengan [sisa konfigurasi](#distribute-the-configuration).256Jika organisasi Anda menggunakan [fast mode](https://code.claude.com/docs/id/fast-mode.md), jalankan `/fast` di sini juga: pemeriksaan ketersediaan memanggil `api.anthropic.com` secara langsung daripada mengikuti URL dasar gateway, sehingga sesi yang dirutekan gateway dapat melaporkan fast mode sebagai tidak tersedia atau dinonaktifkan meskipun inferensi berfungsi. [Gunakan fast mode di belakang proxy dan gateway LLM](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) memetakan setiap pesan ke variabel yang mengembalikannya, didistribusikan dengan [sisa konfigurasi](#distribute-the-configuration).

257 257 

managed-mcp.md +1 −1

Details

187 187 

188* `type` adalah `http` atau `sse`. Seperti dalam `.mcp.json`, `streamable-http` diterima sebagai alias untuk `http`.188* `type` adalah `http` atau `sse`. Seperti dalam `.mcp.json`, `streamable-http` diterima sebagai alias untuk `http`.

189* `url` adalah URL `https://`. Claude Code menolak URL `http://` biasa, termasuk yang menunjuk ke `localhost`.189* `url` adalah URL `https://`. Claude Code menolak URL `http://` biasa, termasuk yang menunjuk ke `localhost`.

190* Entri tidak memiliki anggota `command`, `args`, `env`, atau `headersHelper`, jadi dokumen pengaturan terkelola tidak pernah menyebutkan program untuk dijalankan di mesin pengguna.190* Entri tidak memiliki anggota `command`, `args`, `env`, atau `headersHelper`.

191* Tidak ada nilai yang berisi referensi `${VAR}`. Claude Code tidak memperluas variabel lingkungan dalam entri ini, jadi tulis nilai literal.191* Tidak ada nilai yang berisi referensi `${VAR}`. Claude Code tidak memperluas variabel lingkungan dalam entri ini, jadi tulis nilai literal.

192* Nama server hanya berisi huruf, angka, tanda hubung, dan garis bawah, dan tidak ada kunci atau nilai yang berisi karakter kontrol atau pemformatan yang tidak terlihat.192* Nama server hanya berisi huruf, angka, tanda hubung, dan garis bawah, dan tidak ada kunci atau nilai yang berisi karakter kontrol atau pemformatan yang tidak terlihat.

193 193 

mcp.md +167 −169

Details

60 60 

61## Menginstal server MCP61## Menginstal server MCP

62 62 

63Server MCP dapat dikonfigurasi dengan beberapa cara sesuai kebutuhan Anda:63Server MCP dapat dikonfigurasi dengan beberapa cara tergantung pada kebutuhan Anda:

64 64 

65### Opsi 1: Menambahkan server HTTP jarak jauh65### Opsi 1: Tambahkan server HTTP remote

66 66 

67Server HTTP adalah opsi yang direkomendasikan untuk terhubung ke server MCP jarak jauh. Ini adalah transport yang paling luas didukung untuk layanan berbasis cloud.67Server HTTP adalah opsi yang direkomendasikan untuk terhubung ke server MCP remote. Ini adalah transport yang paling luas didukung untuk layanan berbasis cloud.

68 68 

69```bash theme={null}69```bash theme={null}

70# Basic syntax70# Basic syntax


88>88>

89> Dalam eksekusi `--output-format stream-json`, Claude Code juga melaporkan entri `--mcp-config` yang dilewati di [field `mcp_server_errors`](https://code.claude.com/docs/id/headless#stream-responses) pada event `system/init`, sehingga skrip dapat mendeteksi bahwa server tersebut tidak pernah dimuat.89> Dalam eksekusi `--output-format stream-json`, Claude Code juga melaporkan entri `--mcp-config` yang dilewati di [field `mcp_server_errors`](https://code.claude.com/docs/id/headless#stream-responses) pada event `system/init`, sehingga skrip dapat mendeteksi bahwa server tersebut tidak pernah dimuat.

90 90 

91### Opsi 2: Menambahkan server SSE jarak jauh91### Opsi 2: Tambahkan server SSE remote

92 92 

93> [!WARNING]93> [!WARNING]

94>94>


96 96 

97Beberapa layanan masih hanya menyediakan endpoint SSE. Tambahkan layanan tersebut dengan perintah `claude mcp add --transport http <name> <url>` yang sama seperti [server HTTP](#option-1-add-a-remote-http-server). Claude Code mencoba transport HTTP terlebih dahulu dan beralih ke SSE ketika server tidak menerimanya. Peralihan otomatis ini memerlukan Claude Code v2.1.265 atau yang lebih baru.97Beberapa layanan masih hanya menyediakan endpoint SSE. Tambahkan layanan tersebut dengan perintah `claude mcp add --transport http <name> <url>` yang sama seperti [server HTTP](#option-1-add-a-remote-http-server). Claude Code mencoba transport HTTP terlebih dahulu dan beralih ke SSE ketika server tidak menerimanya. Peralihan otomatis ini memerlukan Claude Code v2.1.265 atau yang lebih baru.

98 98 

99Pada versi sebelumnya, atau untuk terhubung melalui SSE secara langsung, berikan `--transport sse` sebagai gantinya:99Pada versi yang lebih lama, atau untuk terhubung melalui SSE secara langsung, berikan `--transport sse` sebagai gantinya:

100 100 

101```bash theme={null}101```bash theme={null}

102# Basic syntax102# Basic syntax


110 --header "X-API-Key: your-key-here"110 --header "X-API-Key: your-key-here"

111```111```

112 112 

113### Opsi 3: Menambahkan server stdio lokal113### Opsi 3: Tambahkan server stdio lokal

114 114 

115Server stdio berjalan sebagai proses lokal di mesin Anda. Server ini ideal untuk tool yang memerlukan akses sistem langsung atau skrip kustom.115Server stdio berjalan sebagai proses lokal di mesin Anda. Server ini ideal untuk tool yang memerlukan akses sistem langsung atau skrip kustom.

116 116 

117Claude Code menetapkan `CLAUDE_PROJECT_DIR` di lingkungan server yang dijalankan ke root proyek, sehingga server Anda dapat me-resolve path relatif proyek tanpa bergantung pada direktori kerja. Ini adalah direktori yang sama yang diterima hook dalam variabel `CLAUDE_PROJECT_DIR` mereka. Bacalah dari dalam proses server Anda, misalnya `process.env.CLAUDE_PROJECT_DIR` di Node atau `os.environ["CLAUDE_PROJECT_DIR"]` di Python.117Claude Code menetapkan `CLAUDE_PROJECT_DIR` di environment server yang dijalankan ke root proyek, sehingga server Anda dapat me-resolve path relatif proyek tanpa bergantung pada direktori kerja. Ini adalah direktori yang sama yang diterima hook dalam variabel `CLAUDE_PROJECT_DIR` mereka. Baca dari dalam proses server Anda, misalnya `process.env.CLAUDE_PROJECT_DIR` di Node atau `os.environ["CLAUDE_PROJECT_DIR"]` di Python.

118 118 

119`CLAUDE_PROJECT_DIR` adalah root proyek yang stabil dan tidak berubah ketika Anda menambahkan atau menghapus direktori kerja di tengah sesi. Server yang membatasi akses filesystem-nya sendiri ke sekumpulan direktori yang diizinkan sebaiknya mengimplementasikan permintaan MCP `roots/list` sebagai gantinya. Claude Code menjawab `roots/list` dengan direktori peluncuran sesi ditambah setiap [direktori kerja tambahan](https://code.claude.com/docs/id/permissions.md#working-directories) yang telah Anda berikan dengan `--add-dir`, `/add-dir`, atau pengaturan `additionalDirectories`. Claude Code mengirim `notifications/roots/list_changed` ketika kumpulan tersebut berubah.119`CLAUDE_PROJECT_DIR` adalah root proyek yang stabil dan tidak berubah saat Anda menambahkan atau menghapus direktori kerja di tengah sesi. Server yang membatasi akses sistem filenya sendiri ke sekumpulan direktori yang diizinkan sebaiknya mengimplementasikan permintaan MCP `roots/list` sebagai gantinya. Claude Code menjawab `roots/list` dengan direktori peluncuran sesi ditambah setiap [direktori kerja tambahan](https://code.claude.com/docs/id/permissions.md#working-directories) yang telah Anda berikan dengan `--add-dir`, `/add-dir`, atau pengaturan `additionalDirectories`. Claude Code mengirim `notifications/roots/list_changed` ketika kumpulan tersebut berubah.

120 120 

121Variabel ini ditetapkan di lingkungan server, bukan di lingkungan Claude Code sendiri, sehingga mereferensikannya melalui ekspansi `${VAR}` di `command` atau `args` pada entri `.mcp.json` bercakupan proyek atau entri server bercakupan lokal atau pengguna di `~/.claude.json` memerlukan nilai default seperti `${CLAUDE_PROJECT_DIR:-.}`. Konfigurasi MCP yang disediakan plugin mensubstitusi `${CLAUDE_PROJECT_DIR}` secara langsung dan tidak memerlukan nilai default.121Variabel ini ditetapkan di environment server, bukan di environment Claude Code sendiri, sehingga mereferensikannya melalui ekspansi `${VAR}` dalam `command` atau `args` dari entri `.mcp.json` bercakupan proyek atau entri server bercakupan lokal atau pengguna di `~/.claude.json` memerlukan nilai default seperti `${CLAUDE_PROJECT_DIR:-.}`. Konfigurasi MCP yang disediakan plugin mensubstitusi `${CLAUDE_PROJECT_DIR}` secara langsung dan tidak memerlukan nilai default.

122 122 

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

124# Basic syntax124# Basic syntax


131 131 

132> [!NOTE]132> [!NOTE]

133>133>

134> Untuk server stdio, `--` (tanda hubung ganda) memisahkan opsi milik Claude sendiri, seperti `--transport`, `--env`, dan `--scope`, dari perintah dan argumen yang menjalankan server. Semua yang berada setelah `--` diteruskan ke server tanpa diubah.134> Untuk server stdio, `--` (tanda hubung ganda) memisahkan opsi Claude sendiri, seperti `--transport`, `--env`, dan `--scope`, dari perintah dan argumen yang menjalankan server. Semua yang berada setelah `--` diteruskan ke server tanpa diubah.

135>135>

136> Contoh:136> Sebagai contoh:

137>137>

138> * `claude mcp add --transport stdio myserver -- npx server` → menjalankan `npx server`138> * `claude mcp add --transport stdio myserver -- npx server` → menjalankan `npx server`

139> * `claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080` → menjalankan `python server.py --port 8080` dengan `KEY=value` di lingkungan139> * `claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080` → menjalankan `python server.py --port 8080` dengan `KEY=value` di environment

140>140>

141> Tanpa `--`, Claude Code akan mencoba mem-parsing flag server, seperti `--port` di atas, sebagai opsinya sendiri.141> Tanpa `--`, Claude Code akan mencoba mem-parse flag server, seperti `--port` di atas, sebagai opsinya sendiri.

142>142>

143> `--env` menerima beberapa pasangan `KEY=value`. Jika nama server muncul langsung setelah `--env`, CLI membaca nama tersebut sebagai pasangan lain dan menolaknya, jadi letakkan setidaknya satu opsi lain, seperti `--transport stdio`, di antara `--env` dan nama server.143> `--env` menerima beberapa pasangan `KEY=value`. Jika nama server muncul langsung setelah `--env`, CLI membaca nama tersebut sebagai pasangan lain dan menolaknya, jadi tempatkan setidaknya satu opsi lain, seperti `--transport stdio`, di antara `--env` dan nama server.

144 144 

145#### Cara Claude Code menghentikan server stdio145#### Cara Claude Code menghentikan server stdio

146 146 

147Ketika Claude Code memutuskan koneksi server stdio, misalnya ketika sesi Anda berakhir, Claude Code mengirim sinyal ke proses server dan menunggu sebentar hingga proses tersebut keluar sebelum memaksanya berhenti. Jika server Anda menyimpan state atau menghapus file lock saat dimatikan, tangani sinyal untuk platform Anda dan selesaikan dalam batas waktu tersebut:147Ketika Claude Code memutuskan koneksi server stdio, misalnya saat sesi Anda berakhir, Claude Code mengirim sinyal ke proses server dan menunggu sebentar agar proses keluar sebelum memaksanya berhenti. Jika server Anda menyimpan state atau menghapus file lock saat shutdown, tangani sinyal untuk platform Anda dan selesaikan dalam waktu tersebut:

148 148 

149* **Di macOS dan Linux**: Claude Code mengirim `SIGINT`, lalu `SIGTERM` jika proses masih berjalan 100 milidetik kemudian, lalu `SIGKILL` setelah 400 milidetik berikutnya.149* **Di macOS dan Linux**: Claude Code mengirim `SIGINT`, lalu `SIGTERM` jika proses masih berjalan 100 milidetik kemudian, lalu `SIGKILL` setelah 400 milidetik berikutnya.

150* **Di Windows**: Claude Code menutup stdin server, lalu mengakhiri pohon proses server jika proses masih berjalan 300 milidetik kemudian.150* **Di Windows**: Claude Code menutup stdin server, lalu mengakhiri pohon proses server jika proses masih berjalan 300 milidetik kemudian.

151 151 

152Sebelum v2.1.296, Claude Code di Windows langsung mengakhiri pohon proses server, tanpa menutup stdin terlebih dahulu atau menunggu.152Sebelum v2.1.296, Claude Code di Windows langsung mengakhiri pohon proses server, tanpa menutup stdin terlebih dahulu atau menunggu.

153 153 

154### Opsi 4: Menambahkan server WebSocket jarak jauh154### Opsi 4: Tambahkan server WebSocket remote

155 155 

156Server WebSocket mempertahankan koneksi dua arah yang persisten, yang cocok untuk server MCP jarak jauh yang mendorong event ke Claude tanpa diminta. Gunakan HTTP sebagai gantinya ketika server Anda hanya merespons permintaan, karena HTTP mendukung OAuth dan flag `claude mcp add --transport`, sedangkan WebSocket tidak mendukung keduanya.156Server WebSocket mempertahankan koneksi dua arah yang persisten, yang cocok untuk server MCP remote yang mengirimkan event ke Claude tanpa diminta. Gunakan HTTP sebagai gantinya jika server Anda hanya merespons permintaan, karena HTTP mendukung OAuth dan flag `claude mcp add --transport`, sedangkan WebSocket tidak mendukung keduanya.

157 157 

158Konfigurasikan server WebSocket di `.mcp.json` atau dengan `claude mcp add-json`:158Konfigurasikan server WebSocket di `.mcp.json` atau dengan `claude mcp add-json`:

159 159 


162 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'162 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'

163```163```

164 164 

165Entri `type: "ws"` menerima field `url`, `headers`, `headersHelper`, `timeout`, dan `alwaysLoad` yang sama seperti `http`. Autentikasi hanya melalui header, jadi berikan token statis di `headers` atau buat token saat koneksi dengan [`headersHelper`](#use-dynamic-headers-for-custom-authentication). Flag `claude mcp add --transport` tidak menerima `ws`.165Entri `type: "ws"` menerima field `url`, `headers`, `headersHelper`, `timeout`, dan `alwaysLoad` yang sama seperti `http`. Autentikasi hanya melalui header, jadi berikan token statis di `headers` atau buat token saat terhubung dengan [`headersHelper`](#use-dynamic-headers-for-custom-authentication). Flag `claude mcp add --transport` tidak menerima `ws`.

166 166 

167### Menambahkan server dari instruksi penyiapan yang ditulis untuk klien lain167### Tambahkan server dari instruksi penyiapan yang ditulis untuk klien lain

168 168 

169Server MCP tidak khusus untuk Claude Code, sehingga instruksi penyiapan server mungkin ditulis untuk Claude Desktop, Cursor, atau klien MCP lain dan tidak memberikan perintah `claude mcp add`. Untuk tetap menambahkan server tersebut, cari URL, perintah peluncuran, atau blok JSON dalam instruksi tersebut:169Server MCP tidak khusus untuk Claude Code, sehingga instruksi penyiapan server mungkin ditulis untuk Claude Desktop, Cursor, atau klien MCP lain dan tidak menyertakan perintah `claude mcp add`. Untuk tetap menambahkan server tersebut, cari URL, perintah peluncuran, atau blok JSON dalam instruksi tersebut:

170 170 

171* **URL** seperti `https://mcp.example.com/mcp`: server tersebut adalah server jarak jauh.171* **URL** seperti `https://mcp.example.com/mcp`: server tersebut remote.

172* **Perintah peluncuran** seperti `npx -y @example/mcp-server`: server berjalan di mesin Anda.172* **Perintah peluncuran** seperti `npx -y @example/mcp-server`: server berjalan di mesin Anda.

173* **Blok JSON `mcpServers`**: konfigurasi yang ditulis untuk file pengaturan klien lain.173* **Blok JSON `mcpServers`**: konfigurasi yang ditulis untuk file pengaturan klien lain.

174 174 

175Masing-masing merupakan salah satu input yang diterima keempat opsi di [Menginstal server MCP](#installing-mcp-servers). Temukan bentuk yang Anda miliki di bawah ini untuk mengubahnya menjadi perintah yang diterima Claude Code. Setiap perintah menulis ke [cakupan lokal](#local-scope) kecuali Anda menambahkan `--scope project` atau `--scope user`.175Masing-masing merupakan salah satu input yang diterima oleh empat opsi di [Menginstal server MCP](#installing-mcp-servers). Temukan bentuk yang Anda miliki di bawah ini untuk mengubahnya menjadi perintah yang diterima Claude Code. Setiap perintah menulis ke [cakupan lokal](#local-scope) kecuali Anda menambahkan `--scope project` atau `--scope user`.

176 176 

177#### Menambahkan server dari URL177#### Tambahkan server dari URL

178 178 

179URL berarti server tersebut adalah server jarak jauh. Untuk endpoint `https://`, tambahkan dengan `--transport http`, atau ikuti [Opsi 2](#option-2-add-a-remote-sse-server) ketika instruksi menyebutkan bahwa endpoint menggunakan SSE. Untuk endpoint `wss://`, gunakan [Opsi 4](#option-4-add-a-remote-websocket-server) sebagai gantinya, karena `--transport` tidak menerima `ws`:179URL berarti server tersebut remote. Untuk endpoint `https://`, tambahkan dengan `--transport http`, atau ikuti [Opsi 2](#option-2-add-a-remote-sse-server) jika instruksi menyebutkan bahwa endpoint menggunakan SSE. Untuk endpoint `wss://`, gunakan [Opsi 4](#option-4-add-a-remote-websocket-server) sebagai gantinya, karena `--transport` tidak menerima `ws`:

180 180 

181```bash theme={null}181```bash theme={null}

182claude mcp add --transport http example https://mcp.example.com/mcp182claude mcp add --transport http example https://mcp.example.com/mcp

183```183```

184 184 

185Jika instruksi juga memberikan kunci API atau header token, berikan dengan `--header` seperti yang ditunjukkan di [Opsi 1](#option-1-add-a-remote-http-server).185Jika instruksi juga menyediakan kunci API atau header token, berikan dengan `--header` seperti yang ditunjukkan di [Opsi 1](#option-1-add-a-remote-http-server).

186 186 

187#### Menambahkan server dari perintah `npx`, `uvx`, atau biner187#### Tambahkan server dari perintah `npx`, `uvx`, atau biner

188 188 

189Perintah peluncuran berarti server berjalan sebagai proses stdio lokal. Letakkan seluruh perintah setelah `--`, sehingga Claude Code meneruskan flag seperti `-y` ke perintah yang memulai server alih-alih membacanya sebagai opsinya sendiri. Berikan environment variable apa pun yang diminta instruksi dengan `--env`, setelah nama server dan sebelum `--`:189Perintah peluncuran berarti server berjalan sebagai proses stdio lokal. Letakkan seluruh perintah setelah `--`, sehingga Claude Code meneruskan flag seperti `-y` ke perintah yang memulai server alih-alih membacanya sebagai opsinya sendiri. Berikan environment variable apa pun yang diminta instruksi dengan `--env`, setelah nama server dan sebelum `--`:

190 190 


194 194 

195[Opsi 3](#option-3-add-a-local-stdio-server) membahas pemisah `--` secara lengkap.195[Opsi 3](#option-3-add-a-local-stdio-server) membahas pemisah `--` secara lengkap.

196 196 

197#### Menambahkan server dari blok JSON `mcpServers`197#### Tambahkan server dari blok JSON `mcpServers`

198 198 

199Blok `mcpServers` yang ditulis untuk klien MCP lain, seperti Claude Desktop, menggunakan kunci pembungkus dan bentuk entri yang dibaca Claude Code. Berikan kepada `claude mcp add-json` objek di dalam `mcpServers`, bukan pembungkusnya. Dua jenis entri perlu diperbaiki terlebih dahulu:199Blok `mcpServers` yang ditulis untuk klien MCP lain, seperti Claude Desktop, menggunakan kunci pembungkus dan bentuk entri yang dibaca Claude Code. Berikan ke `claude mcp add-json` objek di dalam `mcpServers`, bukan pembungkusnya. Dua jenis entri perlu diperbaiki terlebih dahulu:

200 200 

201* **`url` tanpa `type`**: tambahkan `"type": "http"`, `"type": "sse"`, atau `"type": "ws"` sesuai endpoint. Claude Code membaca entri tanpa `type` sebagai server stdio, sehingga entri `url` tanpa `type` akan gagal.201* **`url` tanpa `type`**: tambahkan `"type": "http"`, `"type": "sse"`, atau `"type": "ws"` sesuai endpoint. Claude Code membaca entri tanpa `type` sebagai server stdio, sehingga entri `url` tanpa `type` akan gagal.

202* **Kunci dengan karakter selain huruf, angka, tanda hubung, dan garis bawah**: pilih nama server yang hanya menggunakan karakter tersebut. Jika tidak, kunci tersebut adalah nama server.202* **Kunci dengan karakter selain huruf, angka, tanda hubung, dan garis bawah**: pilih nama server yang hanya menggunakan karakter tersebut. Jika tidak, kunci tersebut adalah nama server.

203 203 

204Misalnya, blok ini:204Sebagai contoh, blok ini:

205 205 

206```json theme={null}206```json theme={null}

207{207{


220claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'220claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'

221```221```

222 222 

223[Menambahkan server MCP dari konfigurasi JSON](#add-mcp-servers-from-json-configuration) membahas escaping shell dan flag `--scope` untuk `add-json`. Untuk berbagi server dengan tim Anda, tambahkan `--scope project`, atau tambahkan entri di bawah `mcpServers` di `.mcp.json` pada root proyek Anda dan lakukan commit. [Cakupan proyek](#project-scope) membahas cara Claude Code memuat dan menyetujui file tersebut.223[Tambahkan server MCP dari konfigurasi JSON](#add-mcp-servers-from-json-configuration) membahas escaping shell dan flag `--scope` untuk `add-json`. Untuk membagikan server dengan tim Anda, tambahkan `--scope project`, atau tambahkan entri di bawah `mcpServers` di `.mcp.json` pada root proyek Anda dan lakukan commit. [Cakupan proyek](#project-scope) membahas cara Claude Code memuat dan menyetujui file tersebut.

224 224 

225Setiap perintah `claude mcp add` dan `claude mcp add-json` mencetak baris `Added ...` jika berhasil. Untuk memeriksa apakah Claude Code sudah terhubung, jalankan `claude mcp get <name>`; [Status server](#server-status) membahas status yang ditampilkannya dan langkah persetujuan untuk server `.mcp.json`.225Setiap perintah `claude mcp add` dan `claude mcp add-json` mencetak baris `Added ...` jika berhasil. Untuk memeriksa bahwa Claude Code telah terhubung, jalankan `claude mcp get <name>`; [Status server](#server-status) membahas status yang ditampilkannya dan langkah persetujuan untuk server `.mcp.json`.

226 226 

227### Mengelola server Anda227### Mengelola server Anda

228 228 


242/mcp242/mcp

243```243```

244 244 

245Saat Anda menghapus server jarak jauh, Claude Code juga menghapus token OAuth dan registrasi klien yang disimpannya untuk server tersebut. Claude Code tidak mencabut token di server otorisasi yang menerbitkannya. Untuk mencabut token jika server otorisasi mendukung pencabutan, jalankan [`claude mcp logout <name>`](#authenticate-from-the-command-line) di shell Anda sebelum `claude mcp remove <name>`.245Ketika Anda menghapus server remote, Claude Code juga menghapus token OAuth dan registrasi klien yang disimpannya untuk server tersebut. Claude Code tidak mencabut token di server otorisasi yang menerbitkannya. Untuk mencabut token jika server otorisasi mendukung pencabutan, jalankan [`claude mcp logout <name>`](#authenticate-from-the-command-line) di shell Anda sebelum `claude mcp remove <name>`.

246 246 

247#### Status server247#### Status server

248 248 

249`claude mcp add` mengonfirmasi penambahan yang berhasil dengan mencetak baris `Added ...`, yang berarti konfigurasi telah ditulis. Jika perintah mencetak pesan `was not saved` sebagai gantinya, lihat [MCP server was not saved or removed](https://code.claude.com/docs/id/errors.md#mcp-server-was-not-saved-or-removed); untuk pesan `may not have been saved`, lihat [MCP server may not have been saved or removed](https://code.claude.com/docs/id/errors.md#mcp-server-may-not-have-been-saved-or-removed).249`claude mcp add` mengonfirmasi penambahan yang berhasil dengan mencetak baris `Added ...`, yang berarti konfigurasi telah ditulis. Jika perintah mencetak pesan `was not saved` sebagai gantinya, lihat [Server MCP tidak disimpan atau dihapus](https://code.claude.com/docs/id/errors.md#mcp-server-was-not-saved-or-removed); untuk pesan `may not have been saved`, lihat [Server MCP mungkin tidak disimpan atau dihapus](https://code.claude.com/docs/id/errors.md#mcp-server-may-not-have-been-saved-or-removed).

250 250 

251`claude mcp list` menampilkan status kesehatan di samping setiap server yang dicantumkannya, seperti `✔ Connected`, `! Needs authentication`, atau `✘ Failed to connect`. Status kegagalan berarti Claude Code tidak dapat terhubung ke server tersebut, bukan berarti perintah list gagal.251`claude mcp list` menampilkan status kesehatan di samping setiap server yang dicantumkannya, seperti `✔ Connected`, `! Needs authentication`, atau `✘ Failed to connect`. Status kegagalan berarti Claude Code tidak dapat terhubung ke server tersebut, bukan berarti perintah list gagal.

252 252 

253Status dalam daftar berikut melaporkan keputusan konfigurasi, bukan upaya koneksi, sehingga Claude Code mencetaknya tanpa terhubung ke server:253Status dalam daftar ini melaporkan keputusan konfigurasi alih-alih upaya koneksi, sehingga Claude Code mencetaknya tanpa terhubung ke server:

254 254 

255* ``⏸ Pending approval (run `claude` to approve)``: server dengan cakupan proyek dari `.mcp.json` yang belum Anda setujui. Claude Code menampilkannya di `claude mcp list` dan `claude mcp get <name>`. Jalankan `claude` secara interaktif untuk meninjau dan menyetujuinya.255* ``⏸ Pending approval (run `claude` to approve)``: server bercakupan proyek dari `.mcp.json` yang belum Anda setujui. Claude Code menampilkannya di `claude mcp list` maupun `claude mcp get <name>`. Jalankan `claude` secara interaktif untuk meninjau dan menyetujuinya.

256* `✘ Rejected (see disabledMcpjsonServers in settings)`: server `.mcp.json` yang ditolak oleh entri [`disabledMcpjsonServers`](https://code.claude.com/docs/id/settings-reference#disabledmcpjsonservers). Claude Code hanya menampilkannya di `claude mcp get <name>`.256* `✘ Rejected (see disabledMcpjsonServers in settings)`: server `.mcp.json` yang ditolak oleh entri [`disabledMcpjsonServers`](https://code.claude.com/docs/id/settings-reference#disabledmcpjsonservers). Claude Code hanya menampilkannya di `claude mcp get <name>`.

257* `⊘ Disabled for this project (re-enable via /mcp)`: server yang disebutkan dalam daftar [`disabledMcpServers`](#disable-a-server-without-removing-it) proyek. Claude Code menampilkannya di `claude mcp list` maupun `claude mcp get <name>`. Aktifkan kembali server dari panel `/mcp`.257* `⊘ Disabled for this project (re-enable via /mcp)`: server yang disebutkan dalam daftar [`disabledMcpServers`](#disable-a-server-without-removing-it) proyek. Claude Code menampilkannya di `claude mcp list` maupun `claude mcp get <name>`. Aktifkan kembali server dari panel `/mcp`.

258* `✘ Blocked by enterprise managed policy`: server yang ditolak oleh salah satu kebijakan organisasi Anda. Claude Code menampilkannya di `claude mcp list` dan `claude mcp get <name>`. Server yang diblokir oleh allowlist, denylist, atau pembatasan lain dalam [konfigurasi MCP terkelola](https://code.claude.com/docs/id/managed-mcp.md#how-restrictions-appear-to-users) disembunyikan dari kedua perintah alih-alih ditampilkan dengan status ini. Tanyakan kepada administrator Anda kebijakan mana yang memblokir server tersebut.258* `✘ Blocked by enterprise managed policy`: server yang ditolak oleh salah satu kebijakan organisasi Anda. Claude Code menampilkannya di `claude mcp list` maupun `claude mcp get <name>`. Server yang diblokir oleh allowlist, denylist, atau pembatasan lain dalam [konfigurasi MCP terkelola](https://code.claude.com/docs/id/managed-mcp.md#how-restrictions-appear-to-users) disembunyikan dari kedua perintah alih-alih ditampilkan dengan status ini. Tanyakan kepada administrator Anda kebijakan mana yang memblokir server tersebut.

259 259 

260#### Persetujuan server proyek dan kepercayaan workspace260#### Persetujuan server proyek dan kepercayaan workspace

261 261 

262`claude mcp list` dan `claude mcp get` hanya membaca persetujuan `.mcp.json` dari file pengaturan yang tidak di-commit ke repositori hingga Anda memercayai workspace dengan menjalankan `claude` di dalamnya dan menerima dialog kepercayaan workspace. Repositori yang di-clone tidak dapat menyetujui servernya sendiri: [`enableAllProjectMcpServers`](https://code.claude.com/docs/id/settings-reference#enableallprojectmcpservers) atau [`enabledMcpjsonServers`](https://code.claude.com/docs/id/settings-reference#enabledmcpjsonservers) yang di-commit ke `.claude/settings.json` proyek diabaikan di folder yang tidak dipercaya, dan server tetap berstatus `⏸ Pending approval` alih-alih terhubung dan diperiksa kesehatannya.262`claude mcp list` dan `claude mcp get` hanya membaca persetujuan `.mcp.json` dari file pengaturan yang tidak di-commit ke repositori sampai Anda memercayai workspace dengan menjalankan `claude` di dalamnya dan menerima dialog kepercayaan workspace. Repositori yang di-clone tidak dapat menyetujui servernya sendiri: [`enableAllProjectMcpServers`](https://code.claude.com/docs/id/settings-reference#enableallprojectmcpservers) atau [`enabledMcpjsonServers`](https://code.claude.com/docs/id/settings-reference#enabledmcpjsonservers) yang di-commit ke `.claude/settings.json` proyek diabaikan di folder yang tidak dipercaya, dan server tetap berstatus `⏸ Pending approval` alih-alih terhubung dan diperiksa kesehatannya.

263 263 

264Persetujuan dari sumber berikut tetap berlaku di folder yang tidak dipercaya:264Persetujuan dari sumber berikut tetap berlaku di folder yang tidak dipercaya:

265 265 


267* pengaturan terkelola267* pengaturan terkelola

268* pengaturan yang diberikan dengan `--settings`268* pengaturan yang diberikan dengan `--settings`

269 269 

270Claude Code juga menerapkan persetujuan dari `.claude/settings.local.json` yang tidak dilacak, tetapi Claude Code menjalankan git untuk memeriksa apakah file tersebut dilacak, dan hanya menjalankan pemeriksaan tersebut di [folder yang dipercaya](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust). Di folder yang belum pernah Anda percayai, Claude Code menunggu dialog kepercayaan sebelum menerapkan persetujuan file tersebut, kecuali folder tersebut adalah direktori konfigurasi Anda sendiri: direktori home Anda, atau direktori yang `.claude`-nya telah Anda tetapkan sebagai [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars). Sebelum v2.1.207, Claude Code menerapkan persetujuan dari `.claude/settings.local.json` yang tidak dilacak bahkan di folder yang belum pernah Anda percayai.270Claude Code juga menerapkan persetujuan dari `.claude/settings.local.json` yang tidak dilacak, tetapi Claude Code menjalankan git untuk memeriksa apakah file tersebut dilacak, dan hanya menjalankan pemeriksaan itu di [folder tepercaya](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust). Di folder yang belum pernah Anda percayai, Claude Code menunggu dialog kepercayaan sebelum menerapkan persetujuan file tersebut, kecuali folder tersebut adalah home konfigurasi Anda sendiri: direktori home Anda, atau direktori yang `.claude`-nya telah Anda tetapkan sebagai [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars). Sebelum v2.1.207, Claude Code menerapkan persetujuan dari `.claude/settings.local.json` yang tidak dilacak bahkan di folder yang belum pernah Anda percayai.

271 271 

272Entri `disabledMcpjsonServers` di file pengaturan mana pun tetap menolak server tersebut.272Entri `disabledMcpjsonServers` di file pengaturan mana pun tetap menolak server tersebut.

273 273 

274#### Detail status server274#### Detail status server

275 275 

276Di `/mcp`, termasuk di menu server di sana, dan di manajer [`/plugin`](https://code.claude.com/docs/id/plugins/install), server HTTP atau SSE jarak jauh yang pernah Anda gunakan dapat menampilkan status `cached` seperti `cached 2h ago · connects on first use · 5 tools`. Claude Code memuat daftar tool server dari cache penemuannya, yang disimpan di sesi sebelumnya, alih-alih terhubung saat startup, dan Claude Code menghubungkan server saat pertama kali Claude memanggil salah satu tool server tersebut. Tool tersedia sejak pesan pertama Anda, sehingga Anda tidak perlu melakukan apa pun. Cache penemuan dan status `cached`-nya memerlukan Claude Code v2.1.221 atau yang lebih baru.276Di `/mcp`, termasuk menu server di sana, dan di pengelola [`/plugin`](https://code.claude.com/docs/id/plugins/install), server HTTP atau SSE remote yang pernah Anda gunakan sebelumnya dapat menampilkan status `cached` seperti `cached 2h ago · connects on first use · 5 tools`. Claude Code memuat daftar tool server dari cache penemuannya, yang disimpan di sesi sebelumnya, alih-alih terhubung saat startup, dan Claude Code menghubungkan server saat pertama kali Claude memanggil salah satu tool server tersebut. Tool tersedia sejak pesan pertama Anda, jadi Anda tidak perlu melakukan apa pun. Cache penemuan dan status `cached`-nya memerlukan Claude Code v2.1.221 atau yang lebih baru.

277 277 

278Cache penemuan dinonaktifkan secara default kecuali peluncuran bertahap telah mengaktifkannya untuk akun Anda. Tetapkan [`MCP_DISCOVERY_CACHE=1`](https://code.claude.com/docs/id/env-vars) untuk mengaktifkannya, atau `0` untuk tetap menonaktifkannya meskipun peluncuran bertahap telah mengaktifkannya. Sebelum v2.1.238, cache aktif secara default.278Cache penemuan nonaktif secara default kecuali rollout bertahap telah mengaktifkannya untuk akun Anda. Tetapkan [`MCP_DISCOVERY_CACHE=1`](https://code.claude.com/docs/id/env-vars) untuk mengaktifkannya, atau `0` untuk tetap menonaktifkannya bahkan ketika rollout telah mengaktifkannya. Sebelum v2.1.238, cache aktif secara default.

279 279 

280Ketika Anda memilih **Disable** atau **Clear authentication** dari menu server di `/mcp`, Claude Code juga membuang entri cache server tersebut. **Reconnect** juga membuangnya pada server yang terhubung atau gagal; pada server `cached`, **Reconnect** langsung menghubungkan server dan mempertahankan entri tersebut. Saat berikutnya Claude Code terhubung ke server setelah membuang entri, Claude Code mengambil daftar tool dari server alih-alih dari cache.280Ketika Anda memilih **Disable** atau **Clear authentication** dari menu server di `/mcp`, Claude Code juga membuang entri cache server tersebut. **Reconnect** juga membuangnya pada server yang terhubung atau gagal; pada server `cached`, **Reconnect** menghubungkan server sekarang dan mempertahankan entrinya. Saat berikutnya Claude Code terhubung ke server setelah membuang entri, Claude Code mengambil daftar tool dari server alih-alih dari cache.

281 281 

282##### Kegagalan koneksi dan server yang tidak dikonfigurasi282##### Kegagalan koneksi dan server yang belum dikonfigurasi

283 283 

284Ketika status server adalah `✘ Failed to connect`, `claude mcp list` menambahkan detail kegagalan ke baris status tersebut, dan `claude mcp get <name>` menampilkannya pada baris `Issue:`. Detailnya adalah status HTTP atau kode kesalahan, ditambah teks kesalahan apa pun yang dikembalikan server. Tampilan detail server di `/mcp` menyertakan teks yang sama yang dilaporkan server di baris `Issue:`-nya.284Ketika status server adalah `✘ Failed to connect`, `claude mcp list` menambahkan detail kegagalan ke baris status tersebut, dan `claude mcp get <name>` menampilkannya di baris `Issue:`. Detailnya adalah status HTTP atau kode kesalahan, ditambah teks kesalahan apa pun yang dikembalikan server. Tampilan detail server di `/mcp` menyertakan teks yang sama yang dilaporkan server di baris `Issue:`-nya.

285 285 

286Claude Code menyamarkan teks yang menyerupai kredensial dari detail ini dan tidak pernah menyertakan URL server yang telah diekspansi, yang dapat membawa rahasia. Claude Code tidak menambahkan detail ke status `✘ Connection error`, karena teks exception yang akan dicetaknya di sana dapat menyertakan URL tersebut.286Claude Code menyamarkan teks yang menyerupai kredensial dari detail ini dan tidak pernah menyertakan URL server yang telah diekspansi, yang dapat membawa rahasia. Claude Code tidak menambahkan detail ke status `✘ Connection error`, karena teks exception yang akan dicetak di sana dapat menyematkan URL tersebut.

287 287 

288Ketika Anda menyelesaikan autentikasi dari `/mcp` dan koneksi masih gagal dengan status HTTP atau kode kesalahan transport, Claude Code menambahkan kode tersebut dan origin URL server ke pesan yang dicetaknya setelah upaya tersebut. Origin adalah skema dan host, ditambah port jika URL menyebutkannya, seperti `https://mcp.example.com`.288Ketika Anda menyelesaikan autentikasi dari `/mcp` dan koneksi masih gagal dengan status HTTP atau kode kesalahan transport, Claude Code menambahkan kode tersebut dan origin URL server ke pesan yang dicetaknya setelah upaya tersebut. Origin adalah skema dan host, ditambah port jika URL menyebutkannya, seperti `https://mcp.example.com`.

289 289 

290* Path dan query tidak pernah muncul dalam pesan tersebut.290* Path dan query tidak pernah muncul dalam pesan tersebut.

291* Untuk server di [cakupan](#mcp-installation-scopes) lokal, proyek, atau pengguna, atau dalam konfigurasi MCP terkelola, origin menampilkan host sebagaimana ditulis dalam konfigurasi tersebut, sehingga referensi `${VAR}` di host tidak diekspansi dalam pesan.291* Untuk server di [cakupan](#mcp-installation-scopes) lokal, proyek, atau pengguna atau di konfigurasi MCP terkelola, origin menampilkan host sebagaimana ditulis dalam konfigurasi tersebut, sehingga referensi `${VAR}` di host tidak diekspansi dalam pesan.

292* Untuk kegagalan tanpa status atau kode kesalahan, Claude Code menampilkan teks kesalahan tanpa origin.292* Untuk kegagalan tanpa status atau kode kesalahan, Claude Code menampilkan teks kesalahan tanpa origin.

293 293 

294Server jarak jauh yang konfigurasinya memiliki `url` kosong ditampilkan sebagai `not configured` di `/mcp`, di `claude mcp list`, dan di manajer [`/plugin`](https://code.claude.com/docs/id/plugins/install), dan Claude Code tidak mencoba terhubung ke server tersebut. Plugin dapat menyertakan entri placeholder seperti ini untuk konektor yang Anda konfigurasikan nanti, sehingga Claude Code tidak melaporkannya sebagai kesalahan atau masalah penyiapan. Tampilan detail server di `/mcp` berbunyi `No URL configured for this server`; tetapkan `url` entri tersebut untuk menghubungkannya.294Server remote yang konfigurasinya memiliki `url` kosong ditampilkan sebagai `not configured` di `/mcp`, di `claude mcp list`, dan di pengelola [`/plugin`](https://code.claude.com/docs/id/plugins/install), dan Claude Code tidak mencoba terhubung ke server tersebut. Plugin dapat menyertakan entri placeholder seperti ini untuk konektor yang Anda konfigurasi nanti, sehingga Claude Code tidak melaporkannya sebagai kesalahan atau masalah penyiapan. Tampilan detail server di `/mcp` menampilkan `No URL configured for this server`; tetapkan `url` entri untuk menghubungkannya.

295 295 

296#### Peringatan konfigurasi296#### Peringatan konfigurasi

297 297 

298Claude Code memberikan peringatan tentang masalah konfigurasi di bawah ini. Setiap entri menjelaskan apa yang diperiksa Claude Code dan cara menghilangkan peringatan tersebut:298Claude Code memberikan peringatan tentang masalah konfigurasi di bawah ini. Setiap entri menjelaskan apa yang diperiksa Claude Code dan cara menghilangkan peringatan:

299 299 

300* **Spasi tersembunyi**: Claude Code memberikan peringatan ketika nilai konfigurasi MCP membawa spasi tersembunyi di awal atau akhir, yang sering berasal dari menempelkan token dengan baris baru di akhir. Claude Code memeriksa `command`, `url`, setiap entri `args`, serta nilai dan nama kunci di bawah `env` dan `headers`. Claude Code menampilkan peringatan di output `claude mcp list` dan di `/mcp`, dengan menyebutkan field yang terpengaruh tanpa menampilkan nilainya, misalnya `Leading or trailing whitespace in: headers.Authorization`. Claude Code tidak memangkas spasi tersebut dan menggunakan nilai persis seperti yang ditulis, jadi edit konfigurasi untuk menghapusnya.300* **Whitespace tersembunyi**: Claude Code memberikan peringatan ketika nilai konfigurasi MCP membawa whitespace tersembunyi di awal atau akhir, yang sering berasal dari menempelkan token dengan baris baru di akhir. Claude Code memeriksa `command`, `url`, setiap entri `args`, serta nilai dan nama kunci di bawah `env` dan `headers`. Claude Code menampilkan peringatan di output `claude mcp list` dan di `/mcp`, dengan menyebutkan field yang terpengaruh tanpa menampilkan nilainya, misalnya `Leading or trailing whitespace in: headers.Authorization`. Claude Code tidak memangkas whitespace dan menggunakan nilai persis seperti yang ditulis, jadi edit konfigurasi untuk menghapusnya.

301* **Nama yang sama di lebih dari satu cakupan**: jika Anda mendefinisikan nama server yang sama di lebih dari satu [cakupan](#mcp-installation-scopes) dengan endpoint yang berbeda, Claude Code memberikan peringatan tentang konflik tersebut di output `claude mcp list` dan di `/mcp`. Claude Code menyimpan login OAuth per endpoint, sehingga ketika Anda mengautentikasi definisi yang dimuat di satu proyek, Anda tetap perlu login secara terpisah di proyek tempat definisi lain dimuat. Pertahankan endpoint yang Anda inginkan dan hapus yang lainnya dengan `claude mcp remove <name> --scope <scope>`. Dalam peringatan tersebut, Claude Code mengutip endpoint setiap cakupan sebagaimana ditulis dalam konfigurasi Anda, dengan [referensi `${VAR}`](#environment-variable-expansion-in-mcp-json) yang tidak diekspansi, sehingga tidak pernah menampilkan nilai yang sudah di-resolve seperti kunci API.301* **Nama yang sama di lebih dari satu cakupan**: jika Anda mendefinisikan nama server yang sama di lebih dari satu [cakupan](#mcp-installation-scopes) dengan endpoint yang berbeda, Claude Code memberikan peringatan tentang konflik tersebut di output `claude mcp list` dan di `/mcp`. Claude Code menyimpan sign-in OAuth per endpoint, sehingga ketika Anda mengautentikasi definisi yang dimuat di satu proyek, Anda tetap perlu masuk secara terpisah di proyek tempat definisi berbeda dimuat. Pertahankan endpoint yang Anda inginkan dan hapus yang lain dengan `claude mcp remove <name> --scope <scope>`. Dalam peringatan, Claude Code mengutip endpoint setiap cakupan sebagaimana ditulis dalam konfigurasi Anda, dengan [referensi `${VAR}`](#environment-variable-expansion-in-mcp-json) yang tidak diekspansi, sehingga tidak pernah menampilkan nilai yang telah di-resolve seperti kunci API.

302* **Nama yang dicadangkan**: Claude Code mencadangkan nama-nama server bawaannya, termasuk `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview`, dan `Claude Browser`. Jika konfigurasi Anda mendefinisikan server dengan nama yang dicadangkan, Claude Code melewatinya saat pemuatan dan menampilkan peringatan yang meminta Anda mengganti namanya. `claude mcp add` menolak nama yang dicadangkan dengan kesalahan. `Claude Preview` dan `Claude Browser` keduanya menamai server bawaan yang digunakan oleh [panel pratinjau aplikasi desktop Claude Code](https://code.claude.com/docs/id/desktop.md#preview-your-app).302* **Nama yang dicadangkan**: Claude Code mencadangkan nama server bawaannya, termasuk `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview`, dan `Claude Browser`. Jika konfigurasi Anda mendefinisikan server dengan nama yang dicadangkan, Claude Code melewatinya saat pemuatan dan menampilkan peringatan yang meminta Anda untuk mengganti namanya. `claude mcp add` menolak nama yang dicadangkan dengan kesalahan. `Claude Preview` dan `Claude Browser` keduanya menamai server bawaan yang digunakan oleh [panel pratinjau aplikasi desktop Claude Code](https://code.claude.com/docs/id/desktop.md#preview-your-app).

303* **Environment variable yang hilang**: jika [referensi `${VAR}`](#environment-variable-expansion-in-mcp-json) dalam konfigurasi server menyebutkan variabel yang tidak ditetapkan dan tidak memiliki `:-default`, Claude Code memberikan peringatan di output `claude mcp list` dan di `/mcp`, dengan menyebutkan variabel tersebut, dan tetap memuat server dengan teks `${VAR}` yang tidak diekspansi. Tetapkan variabel tersebut atau tambahkan fallback `${VAR:-default}`. Di `url` dan `headers` server jarak jauh, beberapa variabel kredensial [dibaca sebagai kosong](#credential-variables-that-read-as-empty) sebagai gantinya, tanpa peringatan.303* **Environment variable yang hilang**: jika [referensi `${VAR}`](#environment-variable-expansion-in-mcp-json) dalam konfigurasi server menyebutkan variabel yang tidak ditetapkan dan tidak memiliki `:-default`, Claude Code memberikan peringatan di output `claude mcp list` dan di `/mcp`, dengan menyebutkan variabel tersebut, dan tetap memuat server dengan teks `${VAR}` yang tidak diekspansi. Tetapkan variabel tersebut atau tambahkan fallback `${VAR:-default}`. Di `url` dan `headers` server remote, beberapa variabel kredensial [dibaca sebagai kosong](#credential-variables-that-read-as-empty) sebagai gantinya, tanpa peringatan.

304 304 

305#### Ketersediaan tool305#### Ketersediaan tool

306 306 


308 308 

309##### Jumlah tool dalam sesi cloud309##### Jumlah tool dalam sesi cloud

310 310 

311Dalam [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), jumlah seperti `3 of 13 tools available` berarti Claude tidak dapat menggunakan 10 lainnya. Periksa penyebab-penyebab berikut, di antaranya:311Dalam [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), jumlah seperti `3 of 13 tools available` berarti Claude tidak dapat menggunakan 10 sisanya. Periksa penyebab berikut, di antara penyebab lainnya:

312 312 

313* **Aturan deny di `.claude/settings.json` repositori Anda menyebutkan tool tersebut atau seluruh servernya**: hapus [aturan](https://code.claude.com/docs/id/permissions.md#mcp) tersebut, jika [sesi Anda membaca file itu](https://code.claude.com/docs/id/settings.md#settings-in-cloud-sessions)313* **Aturan deny di `.claude/settings.json` repositori Anda menyebutkan tool tersebut atau seluruh servernya**: hapus [aturan tersebut](https://code.claude.com/docs/id/permissions.md#mcp), jika [sesi Anda membaca file tersebut](https://code.claude.com/docs/id/settings.md#settings-in-cloud-sessions)

314* **Nama lengkap tool lebih dari 128 karakter**: ikuti [langkah-langkah untuk nama yang terlalu panjang](https://code.claude.com/docs/id/errors.md#mcp-tool-name-over-128-characters)314* **Nama lengkap tool lebih dari 128 karakter**: ikuti [langkah-langkah untuk nama yang terlalu panjang](https://code.claude.com/docs/id/errors.md#mcp-tool-name-over-128-characters)

315* **Server mencantumkan tool untuk antarmukanya sendiri dan bukan untuk Claude**: jika Anda memelihara server tersebut, tambahkan `model` ke `_meta.ui.visibility` tool untuk memberikan tool tersebut kepada Claude. Jika tidak, tidak ada yang perlu diperbaiki.315* **Server mencantumkan tool untuk antarmukanya sendiri dan bukan untuk Claude**: jika Anda memelihara server tersebut, tambahkan `model` ke `_meta.ui.visibility` tool untuk memberikan tool tersebut kepada Claude. Jika tidak, tidak ada yang perlu diperbaiki.

316 316 

317##### Tool dari server yang masih terhubung317##### Tool dari server yang masih terhubung

318 318 

319Jika permintaan Anda memerlukan tool dari server yang masih dalam proses terhubung di latar belakang, Claude menunggu server tersebut sebelum melanjutkan. Cara penungguan terjadi bergantung pada konfigurasi Anda:319Jika permintaan Anda memerlukan tool dari server yang masih dalam proses terhubung di latar belakang, Claude menunggu server tersebut sebelum melanjutkan. Cara penantian terjadi bergantung pada konfigurasi Anda:

320 320 

321* **Dengan [tool search](#scale-with-mcp-tool-search), yang merupakan default**: penungguan terjadi di dalam panggilan `ToolSearch`.321* **Dengan [tool search](#scale-with-mcp-tool-search), default**: penantian terjadi di dalam panggilan `ToolSearch`.

322* **Tanpa tool search**: Claude menggunakan tool `WaitForMcpServers` sebagai gantinya. Konfigurasi tanpa tool search mencakup `ENABLE_TOOL_SEARCH=false` dan model yang lebih lama dari Claude Opus 4.5, Claude Sonnet 4.5, dan Claude Haiku 4.5 di Agent Platform Google Cloud. Untuk gateway `ANTHROPIC_BASE_URL`, lihat [Tool search melalui LLM gateway](#tool-search-through-a-gateway).322* **Tanpa tool search**: Claude menggunakan tool `WaitForMcpServers` sebagai gantinya. Konfigurasi tanpa tool search mencakup `ENABLE_TOOL_SEARCH=false` dan model yang lebih lama dari Claude Opus 4.5, Claude Sonnet 4.5, dan Claude Haiku 4.5 di Agent Platform Google Cloud. Untuk gateway `ANTHROPIC_BASE_URL`, lihat [Tool search melalui LLM gateway](#tool-search-through-a-gateway).

323* **Pada [deployment yang di-host di Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) Microsoft Foundry**: Claude memulai pada jalur tool search alih-alih dengan `WaitForMcpServers`, karena Claude Code hanya mengetahui penolakan sisi server deployment tersebut dari API. Setelah Claude Code mengalihkan deployment tersebut ke [pemuatan di awal](#scale-with-mcp-tool-search), tool dari server yang selesai terhubung menjadi tersedia pada permintaan Claude berikutnya.323* **Pada [deployment yang di-host di Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options) Microsoft Foundry**: Claude memulai di jalur tool search alih-alih dengan `WaitForMcpServers`, karena Claude Code hanya mengetahui penolakan sisi server dari deployment melalui API. Setelah Claude Code mengalihkan deployment tersebut ke [pemuatan di awal](#scale-with-mcp-tool-search), tool dari server yang selesai terhubung menjadi tersedia pada permintaan Claude berikutnya.

324 324 

325Dengan tool search diaktifkan, ketika server selesai terhubung saat Claude sedang bekerja, Claude Code mencantumkan nama-nama tool server tersebut kepada Claude pada permintaan berikutnya dalam giliran yang sama. Claude kemudian dapat mencari dan memanggil tool tersebut tanpa menunggu pesan Anda berikutnya.325Dengan tool search diaktifkan, ketika server selesai terhubung saat Claude sedang bekerja, Claude Code mencantumkan nama tool server tersebut kepada Claude pada permintaan berikutnya dalam giliran yang sama. Claude kemudian dapat mencari dan memanggil tool tersebut tanpa menunggu pesan Anda berikutnya.

326 326 

327Setelah Anda melanjutkan sesi, Claude dapat memanggil tool dari percakapan yang tersimpan saat server MCP tool tersebut masih dalam proses terhubung. Selama server berada pada upaya koneksi pertamanya, Claude Code menahan panggilan tersebut hingga 10 detik dan menjalankannya begitu tool tersedia. Jika server tidak terhubung tepat waktu, atau server tersebut sudah [mencoba ulang setelah upaya yang gagal](#automatic-reconnection), panggilan gagal dengan [kesalahan tool](https://code.claude.com/docs/id/errors.md#no-such-tool-available) `No such tool available`.327Setelah Anda melanjutkan sesi, Claude dapat memanggil tool dari percakapan yang disimpan saat server MCP tool tersebut masih dalam proses terhubung. Selama server berada pada upaya koneksi pertamanya, Claude Code menahan panggilan hingga 10 detik dan menjalankannya setelah tool tersedia. Jika server tidak terhubung tepat waktu, atau sudah [mencoba ulang setelah upaya yang gagal](#automatic-reconnection), panggilan gagal dengan [kesalahan tool](https://code.claude.com/docs/id/errors.md#no-such-tool-available) `No such tool available`.

328 328 

329### Menonaktifkan server tanpa menghapusnya329### Menonaktifkan server tanpa menghapusnya

330 330 

331Nonaktifkan server di panel `/mcp` untuk menghentikan Claude Code terhubung ke server tersebut tanpa kehilangan konfigurasinya. Claude Code tetap mencantumkan server di `/mcp`, dengan tanda dinonaktifkan.331Matikan server di panel `/mcp` untuk menghentikan Claude Code agar tidak terhubung ke server tersebut tanpa kehilangan konfigurasinya. Claude Code tetap mencantumkan server di `/mcp`, ditandai sebagai nonaktif.

332 332 

333Ketika Anda mengubah status server, Claude Code mencatat pilihan Anda per proyek di `~/.claude.json`, di salah satu dari dua daftar yang mencakup kumpulan server yang saling terpisah:333Ketika Anda mengubah status server, Claude Code mencatat pilihan Anda per proyek di `~/.claude.json`, dalam salah satu dari dua daftar yang mencakup kumpulan server yang terpisah:

334 334 

335* `disabledMcpServers`: daftar opt-out untuk server yang dikonfigurasi pengguna, server plugin, server yang [disediakan organisasi Anda melalui pengaturan terkelola](https://code.claude.com/docs/id/managed-mcp.md#provide-servers-through-managed-settings), konektor claude.ai yang [diambil Claude Code sendiri](#how-connectors-reach-claude-code), dan server bawaan yang aktif secara default. Claude Code tidak terhubung ke server yang Anda cantumkan di sini. Ketika Anda menonaktifkan konektor claude.ai dengan toggle `/mcp` per proyek yang dijelaskan di [Menonaktifkan konektor claude.ai](#disable-claude-ai-connectors), Claude Code menuliskannya ke daftar ini dengan nama tampilannya, misalnya `claude.ai Slack`.335* `disabledMcpServers`: daftar opt-out untuk server yang dikonfigurasi pengguna, server plugin, server yang [disediakan organisasi Anda melalui pengaturan terkelola](https://code.claude.com/docs/id/managed-mcp.md#provide-servers-through-managed-settings), konektor claude.ai yang [diambil sendiri oleh Claude Code](#how-connectors-reach-claude-code), dan server bawaan yang aktif secara default. Claude Code tidak terhubung ke server yang Anda cantumkan di sini. Ketika Anda menonaktifkan konektor claude.ai dengan toggle `/mcp` per proyek yang dijelaskan di [Menonaktifkan konektor claude.ai](#disable-claude-ai-connectors), Claude Code menuliskannya ke daftar ini dengan nama tampilannya, misalnya `claude.ai Slack`.

336* `enabledMcpServers`: daftar opt-in untuk server bawaan yang nonaktif secara default, seperti `computer-use`. Claude Code hanya terhubung ke server yang nonaktif secara default ketika Anda mencantumkannya di sini.336* `enabledMcpServers`: daftar opt-in untuk server bawaan yang nonaktif secara default, seperti `computer-use`. Claude Code terhubung ke server yang nonaktif secara default hanya ketika Anda mencantumkannya di sini.

337 337 

338Claude Code hanya merujuk tepat satu dari kedua daftar untuk setiap server, sehingga tidak ada daftar yang menimpa daftar lainnya. Jika Anda menambahkan server biasa ke `enabledMcpServers`, atau server bawaan yang nonaktif secara default ke `disabledMcpServers`, Claude Code mengabaikan entri tersebut.338Claude Code memeriksa tepat satu dari dua daftar tersebut untuk setiap server, sehingga tidak ada daftar yang menimpa daftar lainnya. Jika Anda menambahkan server biasa ke `enabledMcpServers`, atau server bawaan yang nonaktif secara default ke `disabledMcpServers`, Claude Code mengabaikan entri tersebut.

339 339 

340`disabledMcpServers` dan `enabledMcpServers` tidak berkaitan dengan [`enabledMcpjsonServers`](https://code.claude.com/docs/id/settings-reference#enabledmcpjsonservers) dan [`disabledMcpjsonServers`](https://code.claude.com/docs/id/settings-reference#disabledmcpjsonservers), yang mengontrol persetujuan server yang didefinisikan di file `.mcp.json` proyek.340`disabledMcpServers` dan `enabledMcpServers` tidak berkaitan dengan [`enabledMcpjsonServers`](https://code.claude.com/docs/id/settings-reference#enabledmcpjsonservers) dan [`disabledMcpjsonServers`](https://code.claude.com/docs/id/settings-reference#disabledmcpjsonservers), yang mengontrol persetujuan server yang didefinisikan dalam file `.mcp.json` proyek.

341 341 

342### Runtime klien MCP342### Runtime klien MCP

343 343 

344Claude Code terhubung ke server MCP melalui salah satu dari dua runtime klien. Runtime v1 dibangun di atas MCP TypeScript SDK 1.x. Runtime v2 adalah kode yang sama di atas [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/), yang menambahkan revisi protokol MCP 2026-07-28. Bagian lain halaman ini berlaku untuk kedua runtime, kecuali jika suatu bagian menyebutkan runtime v2.344Claude Code terhubung ke server MCP melalui salah satu dari dua runtime klien. Runtime v1 dibangun di atas MCP TypeScript SDK 1.x. Runtime v2 adalah kode yang sama di atas [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/), yang menambahkan revisi protokol MCP 2026-07-28. Bagian lain dari halaman ini berlaku untuk kedua runtime, kecuali jika suatu bagian menyebutkan runtime v2.

345 345 

346Claude Code memilih runtime setiap kali Anda memulainya dan mempertahankannya hingga Anda keluar. Dalam sesi di mana Claude Code [mengambil feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), Claude Code menggunakan runtime v2 pada Claude Code v2.1.232 atau yang lebih baru.346Claude Code memilih runtime setiap kali Anda memulainya dan mempertahankannya sampai Anda keluar. Dalam sesi tempat Claude Code [mengambil feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), Claude Code menggunakan runtime v2 pada Claude Code v2.1.232 atau yang lebih baru.

347 347 

348Dalam sesi di mana Claude Code tidak mengambil feature flag, Claude Code menggunakan runtime v2 secara default pada Claude Code v2.1.274 atau yang lebih baru:348Dalam sesi tempat Claude Code tidak mengambil feature flag, Claude Code menggunakan runtime v2 secara default pada Claude Code v2.1.274 atau yang lebih baru:

349 349 

350* Sesi di Amazon Bedrock, Claude Platform di AWS, Agent Platform Google Cloud, atau Microsoft Foundry, kecuali platform host yang menyematkan Claude Code menetapkan [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/id/env-vars)350* Sesi di Amazon Bedrock, Claude Platform di AWS, Agent Platform Google Cloud, atau Microsoft Foundry, kecuali platform host yang menyematkan Claude Code menetapkan [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/id/env-vars)

351* Sesi yang login melalui [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway)351* Sesi yang masuk melalui [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway)

352* Sesi di mana Anda mematikan telemetri atau pengambilan feature flag, misalnya dengan `DISABLE_TELEMETRY`352* Sesi tempat Anda mematikan telemetri atau pengambilan feature flag, misalnya dengan `DISABLE_TELEMETRY`

353 353 

354Pada v2, Claude Code juga:354Pada v2, Claude Code juga:

355 355 

356* Menanyakan kepada server HTTP, stdio, dan konektor claude.ai apakah mereka mendukung revisi yang lebih baru, dan menggunakannya dengan server yang mendukung. Ini mencakup konektor dari sesi cloud dan sesi [Remote Control](https://code.claude.com/docs/id/remote-control.md). Claude Code terhubung ke setiap server lainnya seperti yang dilakukan v1.356* Menanyakan kepada server HTTP, stdio, dan konektor claude.ai apakah mereka mendukung revisi yang lebih baru dan menggunakannya dengan server yang mendukung. Ini termasuk konektor dari sesi cloud dan [Remote Control](https://code.claude.com/docs/id/remote-control.md). Claude Code terhubung ke semua server lain seperti yang dilakukan v1.

357* Menerima notifikasi `list_changed` dari server pada revisi yang lebih baru melalui [stream yang dibiarkan terbuka](#notification-streams-on-the-v2-runtime).357* Menerima notifikasi `list_changed` dari server pada revisi yang lebih baru melalui [stream yang dibiarkannya tetap terbuka](#notification-streams-on-the-v2-runtime).

358* Tidak mendaftarkan server [channel](#push-messages-with-channels) yang terhubung pada revisi yang lebih baru, karena revisi tersebut tidak dapat membawa pesan channel.358* Tidak mendaftarkan server [channel](#push-messages-with-channels) yang terhubung pada revisi yang lebih baru, karena revisi tersebut tidak dapat membawa pesan channel.

359* Menggagalkan [login MCP OAuth](#authenticate-with-remote-mcp-servers) yang respons otorisasinya menyebutkan issuer yang tidak terduga.359* Menggagalkan [sign-in OAuth MCP](#authenticate-with-remote-mcp-servers) yang respons otorisasinya menyebutkan issuer yang tidak terduga.

360* Mengirim kredensial [MCP OAuth](#authenticate-with-remote-mcp-servers) hanya ke token endpoint yang dilayani melalui HTTPS atau di `localhost`, `127.0.0.1`, atau `::1`. Login gagal untuk server yang token endpoint-nya adalah `http://` biasa di tempat lain, seperti perangkat di jaringan lokal Anda. Lihat [Refusing to send credentials to non-https token endpoint](https://code.claude.com/docs/id/errors.md#refusing-to-send-credentials-to-non-https-token-endpoint).360* Mengirim kredensial [OAuth MCP](#authenticate-with-remote-mcp-servers) hanya ke token endpoint yang dilayani melalui HTTPS atau di `localhost`, `127.0.0.1`, atau `::1`. Sign-in gagal untuk server yang token endpoint-nya berupa `http://` biasa di tempat lain, seperti perangkat di jaringan lokal Anda. Lihat [Refusing to send credentials to non-https token endpoint](https://code.claude.com/docs/id/errors.md#refusing-to-send-credentials-to-non-https-token-endpoint).

361 361 

362Anthropic dapat mempertahankan server tertentu pada protokol sebelumnya, atau di luar stream tersebut, dengan feature flag yang diambil Claude Code. Untuk memilih runtime sendiri, tetapkan [`MCP_SDK_GENERATION`](https://code.claude.com/docs/id/env-vars) ke `v1` atau `v2`.362Anthropic dapat mempertahankan server tertentu pada protokol yang lebih lama, atau di luar stream tersebut, dengan feature flag yang diambil Claude Code. Untuk memilih runtime sendiri, tetapkan [`MCP_SDK_GENERATION`](https://code.claude.com/docs/id/env-vars) ke `v1` atau `v2`.

363 363 

364Untuk menentukan apakah Claude Code menanyakan server tentang revisi yang lebih baru, tetapkan [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/id/env-vars) ke `auto` atau `legacy`. Dengan variabel tersebut tidak ditetapkan, Claude Code dapat melewatkan pertanyaan ke server stdio selama 7 hari, misalnya setelah server keluar ketika ditanya. Agar server yang telah diperbarui ditanya lebih cepat, tetapkan `auto`.364Untuk menentukan apakah Claude Code menanyakan revisi yang lebih baru kepada server, tetapkan [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/id/env-vars) ke `auto` atau `legacy`. Jika variabel tersebut tidak ditetapkan, Claude Code dapat melewatkan pertanyaan kepada server stdio selama 7 hari, misalnya setelah server keluar saat ditanya. Agar server yang telah di-upgrade ditanya lebih cepat, tetapkan `auto`.

365 365 

366### Pembaruan tool dinamis366### Pembaruan tool dinamis

367 367 

368Server MCP dapat mengubah tool, prompt, atau resource yang ditawarkannya saat terhubung dan mengirim notifikasi `list_changed`. Ketika notifikasi tersebut tiba:368Server MCP dapat mengubah tool, prompt, atau resource yang ditawarkannya saat terhubung dan mengirim notifikasi `list_changed`. Ketika notifikasi tersebut tiba:

369 369 

370* **Dalam sesi terminal interaktif**, Claude Code mengambil daftar yang diperbarui dari server tersebut, sehingga Anda tidak perlu menghubungkannya ulang.370* **Dalam sesi terminal interaktif**, Claude Code mengambil daftar yang diperbarui dari server tersebut, sehingga Anda tidak perlu menghubungkannya kembali.

371* **Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan flag `-p` dan di [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md)**, Claude Code hanya memperbarui daftar tool pada notifikasi ini.371* **Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan flag `-p` dan di [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md)**, Claude Code hanya memperbarui daftar tool pada notifikasi ini.

372 372 

373Jika permintaan pembaruan gagal, Claude Code mempertahankan tool, prompt, dan resource server yang ditemukan sebelumnya hingga pembaruan berikutnya berhasil.373Jika permintaan pembaruan gagal, Claude Code mempertahankan tool, prompt, dan resource server yang ditemukan sebelumnya sampai pembaruan berikutnya berhasil.

374 374 

375#### Stream notifikasi pada runtime v2375#### Stream notifikasi pada runtime v2

376 376 

377Pada [runtime v2](#mcp-client-runtimes), Claude Code menerima notifikasi `list_changed` dari server pada revisi protokol yang lebih baru melalui stream yang dibiarkan terbuka. Ketika stream ditutup, Claude Code membukanya kembali, dengan dua batasan:377Pada [runtime v2](#mcp-client-runtimes), Claude Code menerima notifikasi `list_changed` dari server pada revisi protokol yang lebih baru melalui stream yang dibiarkannya tetap terbuka. Ketika stream tertutup, Claude Code membukanya kembali, dengan dua batasan:

378 378 

379* **Stream ditutup lagi dalam 10 detik**: Claude Code membukanya kembali hingga tiga kali, lalu berhenti untuk koneksi tersebut.379* **Stream tertutup lagi dalam 10 detik**: Claude Code membukanya kembali hingga tiga kali, lalu berhenti untuk koneksi tersebut.

380* **Stream tetap terbuka lebih dari 10 detik, lalu ditutup**, seperti yang umum terjadi pada stream ke host serverless: setelah lima kali dibuka kembali dalam satu jam, Claude Code menunggu sekitar enam jam sebelum pembukaan berikutnya.380* **Stream tetap terbuka lebih dari 10 detik, lalu tertutup**, seperti yang umum terjadi pada stream ke host serverless: setelah lima kali dibuka kembali dalam satu jam, Claude Code menunggu sekitar enam jam sebelum pembukaan berikutnya.

381 381 

382Hingga stream dibuka kembali, Anda tetap memiliki tool, prompt, dan resource server yang terakhir diambil. Untuk mendapatkan perubahannya lebih cepat, hubungkan ulang server dari `/mcp`.382Sampai stream dibuka kembali, Anda mempertahankan tool, prompt, dan resource terakhir yang diambil dari server. Untuk mendapatkan perubahannya lebih cepat, hubungkan kembali server dari `/mcp`.

383 383 

384### Koneksi ulang otomatis384### Koneksi ulang otomatis

385 385 

386Claude Code menghubungkan ulang server jarak jauh yang terputus di tengah sesi dan mencoba ulang koneksi pertama server HTTP atau SSE setelah kesalahan sementara. Untuk server stdio, lihat [Server stdio yang keluar atau gagal dimulai](#stdio-servers-that-exit-or-fail-to-start).386Claude Code menghubungkan kembali server remote yang terputus di tengah sesi dan mencoba ulang koneksi pertama server HTTP atau SSE setelah kesalahan sementara. Untuk server stdio, lihat [Server stdio yang keluar atau gagal dimulai](#stdio-servers-that-exit-or-fail-to-start).

387 387 

388#### Server jarak jauh yang terputus di tengah sesi388#### Server remote yang terputus di tengah sesi

389 389 

390Claude Code pertama-tama mencoba menghubungkan ulang server jarak jauh yang terputus hingga lima kali dengan exponential backoff, dimulai dengan jeda satu detik dan menggandakannya setiap kali:390Claude Code pertama-tama mencoba menghubungkan kembali server remote yang terputus hingga lima kali dengan exponential backoff, dimulai dengan jeda satu detik dan menggandakannya setiap kali:

391 391 

392* **Dalam sesi interaktif**: `/mcp` menampilkan server sebagai tertunda selama Claude Code menghubungkan ulang. Setelah lima upaya gagal, Claude Code menandai server sebagai gagal, atau sebagai memerlukan autentikasi ketika server perlu diotorisasi lagi. Ketika Claude Code menandai server sebagai gagal, Anda melihat notifikasi `MCP server "<name>" disconnected · open /mcp to reconnect`. Anda dapat mencoba ulang secara manual dari `/mcp`.392* **Dalam sesi interaktif**: `/mcp` menampilkan server sebagai pending selama Claude Code menghubungkan kembali. Setelah lima upaya gagal, Claude Code menandai server sebagai gagal, atau sebagai memerlukan autentikasi ketika server perlu diotorisasi lagi. Ketika Claude Code menandai server sebagai gagal, Anda melihat notifikasi `MCP server "<name>" disconnected · open /mcp to reconnect`. Anda dapat mencoba ulang secara manual dari `/mcp`.

393* **Dalam eksekusi [`claude -p`](https://code.claude.com/docs/id/headless) dan sesi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md)**: Claude Code melakukan lima upaya yang sama, tanpa panel `/mcp` untuk menampilkannya. Jika kelimanya gagal, eksekusi berlanjut tanpa tool server tersebut:393* **Dalam eksekusi [`claude -p`](https://code.claude.com/docs/id/headless) dan sesi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md)**: Claude Code melakukan lima upaya yang sama, tanpa panel `/mcp` untuk menampilkannya. Jika kelimanya gagal, eksekusi berlanjut tanpa tool server tersebut:

394 * **Setelah kesalahan sementara, seperti respons 5xx atau timeout**: Claude Code terus mencoba ulang server HTTP atau SSE di latar belakang. Retry berlangsung hingga sekitar setengah jam, dan tool server menjadi tersedia kembali ketika salah satunya berhasil terhubung. Hingga saat itu, sesi Agent SDK melaporkan [status](https://code.claude.com/docs/id/agent-sdk/mcp.md#error-handling) `failed`, dan kode Anda dapat [menghubungkan ulang server](https://code.claude.com/docs/id/agent-sdk/mcp.md#error-handling). Untuk menghubungkannya ulang di `claude -p`, mulai eksekusi lagi.394 * **Setelah kesalahan sementara, seperti respons 5xx atau timeout**: Claude Code terus mencoba ulang server HTTP atau SSE di latar belakang. Retry berlangsung hingga sekitar setengah jam, dan tool server menjadi tersedia lagi ketika salah satunya berhasil terhubung. Sampai saat itu, sesi Agent SDK melaporkan [status](https://code.claude.com/docs/id/agent-sdk/mcp.md#error-handling) `failed`, dan kode Anda dapat [menghubungkan kembali server](https://code.claude.com/docs/id/agent-sdk/mcp.md#error-handling). Untuk menghubungkannya kembali di `claude -p`, mulai eksekusi lagi.

395 * **Ketika server [mengharuskan Anda login lagi](#authenticate-with-remote-mcp-servers)**: Claude Code berhenti mencoba ulang, dan sesi Agent SDK melaporkan status server sebagai `needs-auth`. Login dengan [`claude mcp login <name>`](#authenticate-from-the-command-line) di shell Anda. Kemudian mulai eksekusi lagi atau, dalam sesi Agent SDK, [hubungkan ulang server](https://code.claude.com/docs/id/agent-sdk/mcp.md#error-handling) sebagai gantinya.395 * **Ketika server [memerlukan Anda untuk masuk lagi](#authenticate-with-remote-mcp-servers)**: Claude Code berhenti mencoba ulang, dan sesi Agent SDK melaporkan status server sebagai `needs-auth`. Masuk dengan [`claude mcp login <name>`](#authenticate-from-the-command-line) di shell Anda. Kemudian mulai eksekusi lagi atau, dalam sesi Agent SDK, [hubungkan kembali server](https://code.claude.com/docs/id/agent-sdk/mcp.md#error-handling) sebagai gantinya.

396 396 

397#### Koneksi pertama yang gagal397#### Koneksi pertama yang gagal

398 398 


402 402 

403* Koneksi pertama server stdio. Untuk mencobanya lagi, lihat [Server stdio yang keluar atau gagal dimulai](#stdio-servers-that-exit-or-fail-to-start)403* Koneksi pertama server stdio. Untuk mencobanya lagi, lihat [Server stdio yang keluar atau gagal dimulai](#stdio-servers-that-exit-or-fail-to-start)

404* Koneksi pertama server WebSocket. Untuk mencobanya lagi dalam sesi terminal interaktif, pilih **Reconnect** dari menu server di `/mcp`404* Koneksi pertama server WebSocket. Untuk mencobanya lagi dalam sesi terminal interaktif, pilih **Reconnect** dari menu server di `/mcp`

405* Kesalahan autentikasi atau not-found, karena memerlukan perubahan konfigurasi untuk menyelesaikannya. Ketika [`headersHelper`](#use-dynamic-headers-for-custom-authentication) adalah satu-satunya sumber header `Authorization` server, Claude Code tetap mencoba ulang kesalahan autentikasi, karena Claude Code menjalankan ulang helper pada setiap upaya dan dapat memperoleh kredensial baru405* Kesalahan autentikasi atau not-found, karena memerlukan perubahan konfigurasi untuk diselesaikan. Ketika [`headersHelper`](#use-dynamic-headers-for-custom-authentication) adalah satu-satunya sumber header `Authorization` server, Claude Code tetap mencoba ulang kesalahan autentikasi, karena Claude Code menjalankan ulang helper pada setiap upaya dan dapat memperoleh kredensial baru

406 406 

407#### Server stdio yang keluar atau gagal dimulai407#### Server stdio yang keluar atau gagal dimulai

408 408 


411| Cara Anda menjalankan Claude Code | Proses server keluar di tengah sesi | Koneksi pertama server gagal |411| Cara Anda menjalankan Claude Code | Proses server keluar di tengah sesi | Koneksi pertama server gagal |

412| - | - | - |412| - | - | - |

413| Sesi interaktif | Claude Code menandai server sebagai gagal. Untuk memulainya lagi, pilih **Reconnect** dari menu server di `/mcp` | Claude Code menandai server sebagai gagal. Untuk memulainya lagi, pilih **Reconnect** dari menu server di `/mcp` |413| Sesi interaktif | Claude Code menandai server sebagai gagal. Untuk memulainya lagi, pilih **Reconnect** dari menu server di `/mcp` | Claude Code menandai server sebagai gagal. Untuk memulainya lagi, pilih **Reconnect** dari menu server di `/mcp` |

414| Eksekusi `claude -p` | Claude Code memulai server lagi saat berikutnya Claude memanggil salah satu tool server tersebut, dan panggilan dijalankan begitu server terhubung | Eksekusi berlanjut tanpa tool server tersebut. Agar Claude Code mencoba koneksi lagi, mulai eksekusi lagi. Ketika plugin menyediakan server tersebut, eksekusi baru melewati koneksi selama 15 menit setelah kegagalan, jadi tunggu selama itu terlebih dahulu atau [coba ulang lebih cepat](https://code.claude.com/docs/id/errors.md#skipping-connection-recent-failure-cached) |414| Eksekusi `claude -p` | Claude Code memulai server lagi saat berikutnya Claude memanggil salah satu tool server, dan panggilan berjalan setelah server terhubung | Eksekusi berlanjut tanpa tool server. Agar Claude Code mencoba koneksi lagi, mulai eksekusi lagi. Ketika plugin menyediakan server, eksekusi baru melewatkan koneksi selama 15 menit setelah kegagalan, jadi tunggu selama itu terlebih dahulu atau [coba ulang lebih cepat](https://code.claude.com/docs/id/errors.md#skipping-connection-recent-failure-cached) |

415| Sesi Agent SDK | Claude Code memulai server lagi saat berikutnya Claude memanggil salah satu tool server tersebut, dan panggilan dijalankan begitu server terhubung | Sesi berlanjut tanpa tool server tersebut. Kode Anda dapat [menghubungkan ulang server](https://code.claude.com/docs/id/agent-sdk/mcp.md#error-handling) |415| Sesi Agent SDK | Claude Code memulai server lagi saat berikutnya Claude memanggil salah satu tool server, dan panggilan berjalan setelah server terhubung | Sesi berlanjut tanpa tool server. Kode Anda dapat [menghubungkan kembali server](https://code.claude.com/docs/id/agent-sdk/mcp.md#error-handling) |

416 416 

417#### Permintaan penemuan yang gagal417#### Permintaan penemuan yang gagal

418 418 

419Setelah server terhubung, Claude Code mengirimkan permintaan penemuan kapabilitas seperti `tools/list`, `prompts/list`, dan `resources/list`. Claude Code mencoba ulang permintaan tersebut hingga tiga kali dengan backoff singkat setelah kesalahan jaringan atau server yang bersifat sementara. Claude Code tidak mencoba ulang kesalahan autentikasi, respons 4xx, atau timeout permintaan.419Setelah server terhubung, Claude Code mengirimkan permintaan penemuan kapabilitas seperti `tools/list`, `prompts/list`, dan `resources/list`. Claude Code mencoba ulang permintaan tersebut hingga tiga kali dengan backoff singkat setelah kesalahan jaringan atau server sementara. Claude Code tidak mencoba ulang kesalahan autentikasi, respons 4xx, atau timeout permintaan.

420 420 

421#### Mencoba ulang server yang gagal sendiri421#### Mencoba ulang server yang gagal sendiri

422 422 


424 424 

425#### Cara Claude mengetahui bahwa server gagal425#### Cara Claude mengetahui bahwa server gagal

426 426 

427Apakah Claude Code memberi tahu Claude tentang server yang dikonfigurasi yang gagal terhubung bergantung pada [tool search](#scale-with-mcp-tool-search), yang aktif secara default:427Apakah Claude Code memberi tahu Claude tentang server terkonfigurasi yang gagal terhubung bergantung pada [tool search](#scale-with-mcp-tool-search), yang aktif secara default:

428 428 

429* Dengan tool search, Claude Code memberi tahu Claude server mana yang gagal beserta kesalahan koneksinya, sehingga Claude melaporkan kegagalan koneksi dalam responsnya. Claude Code menyertakan informasi yang sama dalam hasil `ToolSearch` yang tidak menemukan tool yang cocok.429* Dengan tool search, Claude Code memberi tahu Claude server mana yang gagal dan kesalahan koneksinya, sehingga Claude melaporkan kegagalan koneksi dalam responsnya. Claude Code menyertakan informasi yang sama dalam hasil `ToolSearch` yang tidak menemukan tool yang cocok.

430* Dalam [konfigurasi apa pun tanpa tool search](#configure-tool-search), Claude Code tidak melaporkan koneksi server yang gagal kepada Claude.430* Dalam [konfigurasi apa pun tanpa tool search](#configure-tool-search), Claude Code tidak melaporkan koneksi server yang gagal kepada Claude.

431 431 

432### Mendorong pesan dengan channel432### Mengirim pesan dengan channel

433 433 

434Server MCP juga dapat mendorong pesan langsung ke sesi Anda sehingga Claude dapat bereaksi terhadap event eksternal seperti hasil CI, peringatan pemantauan, atau pesan chat. Untuk mengaktifkannya, server Anda mendeklarasikan kapabilitas `claude/channel` dan Anda mengikutsertakannya dengan flag `--channels` saat startup. Lihat [Channels](https://code.claude.com/docs/id/channels.md) untuk menggunakan channel yang didukung secara resmi, atau [Referensi channels](https://code.claude.com/docs/id/channels-reference.md) untuk membuat channel Anda sendiri.434Server MCP juga dapat mengirim pesan langsung ke sesi Anda sehingga Claude dapat bereaksi terhadap event eksternal seperti hasil CI, peringatan pemantauan, atau pesan chat. Untuk mengaktifkan ini, server Anda mendeklarasikan kapabilitas `claude/channel` dan Anda mengikutsertakannya dengan flag `--channels` saat startup. Lihat [Channels](https://code.claude.com/docs/id/channels.md) untuk menggunakan channel yang didukung secara resmi, atau [Referensi Channels](https://code.claude.com/docs/id/channels-reference.md) untuk membangun channel Anda sendiri.

435 435 

436Pada [runtime v2](#mcp-client-runtimes), server channel yang menegosiasikan revisi protokol MCP 2026-07-28 tidak dapat mengirimkan pesan channel, sehingga Claude Code tidak mendaftarkannya sebagai channel. Server channel yang tidak mendukung revisi tersebut terhubung pada handshake sebelumnya dan terdaftar seperti sebelumnya.436Pada [runtime v2](#mcp-client-runtimes), server channel yang menegosiasikan revisi protokol MCP 2026-07-28 tidak dapat mengirimkan pesan channel, sehingga Claude Code tidak mendaftarkannya sebagai channel. Server channel yang tidak mendukung revisi tersebut terhubung dengan handshake yang lebih lama dan terdaftar seperti sebelumnya.

437 437 

438Claude Code menanyakan revisi tersebut kepada server stdio secara default. Untuk mempertahankan server channel stdio pada handshake sebelumnya, tetapkan [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/id/env-vars) ke `legacy`, yang mempertahankan setiap server pada handshake tersebut.438Claude Code menanyakan revisi tersebut kepada server stdio secara default. Untuk mempertahankan server channel stdio pada handshake yang lebih lama, tetapkan [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/id/env-vars) ke `legacy`, yang mempertahankan setiap server pada handshake tersebut.

439 439 

440> [!TIP]440> [!TIP]

441>441>


449> * Flag `--transport` dan `--header` juga menerima bentuk singkat `-t` dan `-H`449> * Flag `--transport` dan `--header` juga menerima bentuk singkat `-t` dan `-H`

450> * Konfigurasikan timeout startup server MCP menggunakan environment variable `MCP_TIMEOUT` (misalnya, `MCP_TIMEOUT=10000 claude` menetapkan timeout 10 detik)450> * Konfigurasikan timeout startup server MCP menggunakan environment variable `MCP_TIMEOUT` (misalnya, `MCP_TIMEOUT=10000 claude` menetapkan timeout 10 detik)

451> * Tetapkan timeout eksekusi tool per server dengan menambahkan field `timeout` dalam milidetik ke entri `.mcp.json` server tersebut, misalnya `"timeout": 600000` untuk sepuluh menit. Ini menimpa environment variable `MCP_TOOL_TIMEOUT` hanya untuk server tersebut451> * Tetapkan timeout eksekusi tool per server dengan menambahkan field `timeout` dalam milidetik ke entri `.mcp.json` server tersebut, misalnya `"timeout": 600000` untuk sepuluh menit. Ini menimpa environment variable `MCP_TOOL_TIMEOUT` hanya untuk server tersebut

452> * Claude Code menampilkan peringatan ketika output tool MCP melebihi 10.000 token dan membatasi output hingga 25.000 token secara default. Untuk mengubah batas token, tetapkan environment variable `MAX_MCP_OUTPUT_TOKENS`, misalnya `MAX_MCP_OUTPUT_TOKENS=50000`. Ambang peringatan bersifat tetap. Kecuali server menaikkan batas milik tool itu sendiri, hasil teks yang berhasil dan lebih panjang dari 50.000 karakter disimpan ke file terlepas dari variabel ini. Lihat [Batas output dan peringatan MCP](#mcp-output-limits-and-warnings)452> * Claude Code menampilkan peringatan ketika output tool MCP melebihi 10.000 token dan membatasi output hingga 25.000 token secara default. Untuk mengubah batas token, tetapkan environment variable `MAX_MCP_OUTPUT_TOKENS`, misalnya `MAX_MCP_OUTPUT_TOKENS=50000`. Ambang batas peringatan bersifat tetap. Kecuali server menaikkan batas milik tool itu sendiri, hasil teks yang berhasil dan lebih panjang dari 50.000 karakter disimpan ke file terlepas dari variabel ini. Lihat [Batas dan peringatan output MCP](#mcp-output-limits-and-warnings)

453> * Gunakan `/mcp` untuk mengautentikasi dengan server jarak jauh yang memerlukan autentikasi OAuth 2.0453> * Gunakan `/mcp` untuk mengautentikasi dengan server remote yang memerlukan autentikasi OAuth 2.0

454 454 

455### Batas waktu pada panggilan tool MCP455### Batas waktu pada panggilan tool MCP

456 456 

457Untuk membatasi berapa lama panggilan tool MCP dapat berjalan:457Untuk membatasi berapa lama panggilan tool MCP dapat berjalan:

458 458 

459* **Per server**: tambahkan field `timeout` dalam milidetik ke entri konfigurasi server tersebut459* **Per server**: tambahkan field `timeout` dalam milidetik ke entri konfigurasi server tersebut

460* **Lintas server**: tetapkan [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/id/env-vars)460* **Di semua server**: tetapkan [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/id/env-vars)

461 461 

462`timeout` per server adalah batas waktu wall-clock yang ketat per panggilan tool, dan notifikasi progres dari server tidak memperpanjangnya. Nilai di bawah 1000 diabaikan dan beralih ke `MCP_TOOL_TIMEOUT`, atau ke default-nya sekitar 28 jam ketika variabel tersebut tidak ditetapkan. Untuk server HTTP, SSE, atau [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai), ada juga timer kedua per permintaan yang mencakup setiap permintaan hingga byte respons pertama server. Claude Code menetapkan timer tersebut ke nilai terbesar dari tiga nilai: 60 detik, timeout tool yang berlaku untuk server, dan `MCP_TIMEOUT`. Default 28 jam dari `MCP_TOOL_TIMEOUT` yang tidak ditetapkan tidak ikut dalam perbandingan tersebut, dan nilai di bawah 60 detik tidak memperpendek timer. Server stdio dan WebSocket tidak memiliki timer per permintaan.462`timeout` per server adalah batas waktu wall-clock yang ketat per panggilan tool, dan notifikasi progres dari server tidak memperpanjangnya. Nilai di bawah 1000 diabaikan dan beralih ke `MCP_TOOL_TIMEOUT`, atau ke nilai default-nya sekitar 28 jam jika variabel tersebut tidak ditetapkan. Untuk server HTTP, SSE, atau [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai) juga ada timer kedua per permintaan yang mencakup setiap permintaan hingga byte respons pertama dari server. Claude Code menetapkan timer tersebut ke nilai terbesar dari tiga nilai: 60 detik, timeout tool yang berlaku untuk server, dan `MCP_TIMEOUT`. Default 28 jam dari `MCP_TOOL_TIMEOUT` yang tidak ditetapkan tidak masuk dalam perbandingan tersebut, dan nilai di bawah 60 detik tidak memperpendek timer. Server stdio dan WebSocket tidak memiliki timer per permintaan.

463 463 

464`timeout` per server yang bernilai setidaknya 1000 juga berfungsi sebagai batas bawah untuk idle timeout yang dijelaskan di bawah: Claude Code tidak pernah membatalkan panggilan tool server tersebut karena idle lebih cepat dari `timeout` per server.464`timeout` per server minimal 1000 juga berfungsi sebagai batas bawah untuk idle timeout yang dijelaskan di bawah: Claude Code tidak pernah membatalkan panggilan tool server tersebut karena idle lebih cepat daripada `timeout` per server.

465 465 

466Panggilan tool ke server MCP yang tidak mengirim respons dan tidak mengirim notifikasi progres selama jendela idle akan dibatalkan dengan kesalahan alih-alih menunggu batas waktu wall-clock. Idle timeout berlaku untuk setiap jenis server kecuali server IDE dan server in-process SDK. Jendela idle secara default lima menit untuk server HTTP, SSE, WebSocket, dan [konektor claude.ai](#use-mcp-servers-from-claude-ai), dan 30 menit untuk server stdio.466Panggilan tool ke server MCP yang tidak mengirimkan respons maupun notifikasi progres selama jendela idle dibatalkan dengan kesalahan alih-alih menunggu batas wall-clock. Idle timeout berlaku untuk setiap jenis server kecuali server IDE dan server in-process SDK. Jendela idle default-nya lima menit untuk server HTTP, SSE, WebSocket, dan [konektor claude.ai](#use-mcp-servers-from-claude-ai), dan 30 menit untuk server stdio.

467 467 

468Tetapkan environment variable [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/id/env-vars) dalam milidetik untuk mengubah jendela idle, atau tetapkan ke `0` untuk menonaktifkan pemeriksaan.468Tetapkan environment variable [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/id/env-vars) dalam milidetik untuk mengubah jendela idle, atau tetapkan ke `0` untuk menonaktifkan pemeriksaan.

469 469 

470Timeout ini membatasi berapa lama panggilan dapat berjalan, tidak selalu berapa lama panggilan memblokir sesi: panggilan di percakapan utama yang berjalan lebih dari dua menit akan dipindahkan ke tugas latar belakang terlebih dahulu. Lihat [Pemindahan otomatis panggilan tool yang panjang ke latar belakang](#automatic-backgrounding-of-long-tool-calls).470Timeout ini membatasi berapa lama panggilan dapat berjalan, tidak selalu berapa lama panggilan tersebut memblokir sesi: panggilan di percakapan utama yang berjalan lebih dari dua menit dipindahkan ke tugas latar belakang terlebih dahulu. Lihat [Pemindahan otomatis panggilan tool yang panjang ke latar belakang](#automatic-backgrounding-of-long-tool-calls).

471 471 

472### Pemindahan otomatis panggilan tool yang panjang ke latar belakang472### Pemindahan otomatis panggilan tool yang panjang ke latar belakang

473 473 


475 475 

476Panggilan tool MCP di percakapan utama yang masih berjalan setelah dua menit dipindahkan ke tugas latar belakang alih-alih memblokir sesi. Claude langsung menerima ID tugas dan terus bekerja, dan hasilnya tiba sebagai notifikasi tugas ketika panggilan selesai.476Panggilan tool MCP di percakapan utama yang masih berjalan setelah dua menit dipindahkan ke tugas latar belakang alih-alih memblokir sesi. Claude langsung menerima ID tugas dan terus bekerja, dan hasilnya tiba sebagai notifikasi tugas ketika panggilan selesai.

477 477 

478Tugas tersebut muncul di [`/tasks`](https://code.claude.com/docs/id/commands#all-commands), tempat Anda juga dapat menghentikannya, dan tugas tersebut tidak bertahan setelah keluar dari sesi. Entri tugas menampilkan progres terbaru yang dilaporkan server. Jika Anda menghentikan tugas, Claude Code membatalkan panggilan dan memberi tahu Claude bahwa tidak ada hasil yang akan datang. Menghentikan tugas tidak menjamin server berhenti: server mungkin sudah melakukan sebagian pekerjaan, atau mungkin tetap menyelesaikannya.478Tugas muncul di [`/tasks`](https://code.claude.com/docs/id/commands#all-commands), tempat Anda juga dapat menghentikannya, dan tugas tersebut tidak bertahan setelah keluar dari sesi. Entri tugas menampilkan progres terbaru yang dilaporkan server. Jika Anda menghentikan tugas, Claude Code membatalkan panggilan dan memberi tahu Claude bahwa tidak ada hasil yang akan datang. Menghentikan tugas tidak menjamin server berhenti: server mungkin sudah melakukan sebagian pekerjaan, atau mungkin masih menyelesaikannya.

479 479 

480Batas per panggilan tetap berlaku saat panggilan berjalan di latar belakang: batas waktu wall-clock yang ditetapkan oleh `timeout` per server atau [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/id/env-vars), dan idle timeout yang ditetapkan oleh [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/id/env-vars).480Batas per panggilan tetap berlaku saat panggilan berjalan di latar belakang: batas wall-clock yang ditetapkan oleh `timeout` per server atau [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/id/env-vars), dan idle timeout yang ditetapkan oleh [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/id/env-vars).

481 481 

482Untuk mengubah atau mematikan pemindahan otomatis ke latar belakang:482Untuk mengubah atau mematikan pemindahan otomatis ke latar belakang:

483 483 

484* Tetapkan environment variable [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/id/env-vars) dalam milidetik untuk mengubah ambang, atau tetapkan ke `0` untuk mematikan pemindahan otomatis ke latar belakang. Dengan `0`, Claude juga [menunggu tugas MCP](#make-claude-wait-for-the-result-of-an-mcp-task) dalam sesi interaktif484* Tetapkan environment variable [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/id/env-vars) dalam milidetik untuk mengubah ambang batas, atau tetapkan ke `0` untuk mematikan pemindahan otomatis ke latar belakang. Dengan `0`, Claude juga [menunggu tugas MCP](#make-claude-wait-for-the-result-of-an-mcp-task) dalam sesi interaktif

485* Atur [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/id/env-vars) ke `1` untuk mematikan pemindahan otomatis ke latar belakang dan [perintah latar belakang](https://code.claude.com/docs/id/tools-reference.md#background-commands)485* Tetapkan [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/id/env-vars) ke `1` untuk mematikan pemindahan otomatis ke latar belakang dan [perintah latar belakang](https://code.claude.com/docs/id/tools-reference.md#background-commands)

486 486 

487Beberapa panggilan tidak pernah dipindahkan ke latar belakang:487Beberapa panggilan tidak pernah dipindahkan ke latar belakang:

488 488 


490* Panggilan ke server IDE490* Panggilan ke server IDE

491* Panggilan dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), kecuali `CLAUDE_AUTO_BACKGROUND_TASKS` ditetapkan ke `1`, karena eksekusi sekali jalan dapat berakhir sebelum hasilnya tiba491* Panggilan dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), kecuali `CLAUDE_AUTO_BACKGROUND_TASKS` ditetapkan ke `1`, karena eksekusi sekali jalan dapat berakhir sebelum hasilnya tiba

492 492 

493Panggilan yang menunggu [dialog elisitasi](#respond-to-mcp-elicitation-requests) yang terbuka tidak dipindahkan ke latar belakang selama dialog terbuka; server terblokir menunggu input Anda, bukan lambat, sehingga Claude Code menunda pemindahan hingga dialog ditutup.493Panggilan yang menunggu [dialog elicitation](#respond-to-mcp-elicitation-requests) yang terbuka tidak dipindahkan ke latar belakang selama dialog terbuka; server terblokir oleh input Anda, bukan lambat, sehingga Claude Code menunda pemindahan sampai dialog ditutup.

494 494 

495### Tugas MCP yang berjalan di server495### Tugas MCP yang berjalan di server

496 496 

497Tugas MCP adalah pekerjaan panjang, seperti ekspor laporan atau build, yang dijalankan sendiri oleh server MCP menggunakan [ekstensi tugas MCP](https://modelcontextprotocol.io/extensions/tasks/overview). Panggilan tool Claude kembali setelah server menerima pekerjaan tersebut, sehingga Claude terus bekerja kecuali Anda [membuat Claude menunggu](#make-claude-wait-for-the-result-of-an-mcp-task). Ketika pekerjaan selesai, transkrip memberitahukannya dan Claude mendapatkan hasilnya. Mintalah hasilnya kepada Claude.497Tugas MCP adalah pekerjaan panjang, seperti ekspor laporan atau build, yang dijalankan server MCP sendiri menggunakan [ekstensi tugas MCP](https://modelcontextprotocol.io/extensions/tasks/overview). Panggilan tool Claude kembali segera setelah server menerima pekerjaan tersebut, sehingga Claude terus bekerja kecuali Anda [membuat Claude menunggu](#make-claude-wait-for-the-result-of-an-mcp-task). Ketika pekerjaan selesai, transkrip menyatakannya dan Claude mendapatkan hasilnya. Mintalah hasilnya kepada Claude.

498 498 

499Sementara itu, footer menampilkan hitungan seperti `1 MCP task`, dan Claude Code mengikuti tugas dengan memeriksa statusnya ke server. Tugas di server jarak jauh tetap berjalan setelah Anda keluar. Untuk mengikutinya lagi, [lanjutkan sesi yang sama](#exit-clear-or-resume-while-an-mcp-task-runs).499Sementara itu, footer menampilkan jumlah seperti `1 MCP task`, dan Claude Code mengikuti tugas dengan memeriksa statusnya ke server. Tugas di server remote tetap berjalan setelah Anda keluar. Untuk mengikutinya lagi, [lanjutkan sesi yang sama](#exit-clear-or-resume-while-an-mcp-task-runs).

500 500 

501> [!NOTE]501> [!NOTE]

502>502>

503> Tugas MCP berada dalam beta publik di Claude Code CLI dan memerlukan Claude Code v2.1.304 atau yang lebih baru. [Yang diperlukan agar panggilan menjadi tugas MCP](#requirements-for-mcp-tasks) mencantumkan sesi dan server yang mendapatkannya.503> Tugas MCP berada dalam beta publik di CLI Claude Code dan memerlukan Claude Code v2.1.304 atau yang lebih baru. [Yang diperlukan agar panggilan menjadi tugas MCP](#requirements-for-mcp-tasks) mencantumkan sesi dan server yang mendapatkannya.

504 504 

505#### Menghentikan tugas MCP atau mendapatkan hasilnya505#### Menghentikan tugas MCP atau mendapatkan hasilnya

506 506 

507Untuk menghentikan tugas yang sedang berjalan, pilih tugas tersebut di [`/tasks`](https://code.claude.com/docs/id/commands#all-commands) dan tekan `x`, atau minta Claude untuk melakukannya. Claude Code berhenti mengikuti tugas dan meminta server untuk membatalkannya, meskipun server mungkin tetap menyelesaikannya. Hubungkan kembali server yang terputus dari `/mcp` terlebih dahulu, atau tidak ada permintaan pembatalan yang terkirim dan Claude Code melupakan tugas tersebut serta tidak dapat mengikutinya lagi. Menekan `Esc` tidak menghentikan tugas latar belakang.507Untuk menghentikan tugas yang sedang berjalan, pilih tugas tersebut di [`/tasks`](https://code.claude.com/docs/id/commands#all-commands) dan tekan `x`, atau minta Claude untuk melakukannya. Claude Code berhenti mengikuti tugas dan meminta server untuk membatalkannya, meskipun server mungkin tetap menyelesaikannya. Hubungkan kembali server yang terputus dari `/mcp` terlebih dahulu, atau tidak ada permintaan pembatalan yang dikirim dan Claude Code melupakan tugas tersebut dan tidak dapat mengikutinya lagi. Menekan `Esc` tidak menghentikan tugas latar belakang.

508 508 

509Ketika tugas selesai, baris seperti ini muncul di transkrip:509Ketika tugas selesai, baris seperti ini muncul di transkrip:

510 510 


512MCP task <server task id> (<server>/<tool>) completed.512MCP task <server task id> (<server>/<tool>) completed.

513```513```

514 514 

515Hasilnya dikirim ke Claude, bukan ke transkrip, jadi mintalah hasilnya kepada Claude. Jika Claude sedang idle saat hasil tiba, Claude mulai mengerjakannya tanpa diminta.515Hasilnya dikirim ke Claude, bukan ke transkrip, jadi mintalah hasilnya kepada Claude. Jika Claude sedang idle ketika hasil tiba, Claude mulai mengerjakannya tanpa diminta.

516 516 

517#### Menjawab pertanyaan dari tugas MCP517#### Menjawab pertanyaan dari tugas MCP

518 518 

519Tugas yang sedang berjalan dapat membuka [dialog elisitasi](#respond-to-mcp-elicitation-requests) untuk meminta input dari Anda. Selama `/tasks` terbuka, dialog tetap tersembunyi, jadi tutup `/tasks` untuk menjawab. Menolak atau menekan `Esc` merupakan jawaban kepada server, yang kemudian memutuskan apakah tugas berlanjut.519Tugas yang sedang berjalan dapat membuka [dialog elicitation](#respond-to-mcp-elicitation-requests) untuk meminta input dari Anda. Selama `/tasks` terbuka, dialog tetap tersembunyi, jadi tutup `/tasks` untuk menjawab. Menolak atau menekan `Esc` merupakan jawaban kepada server, yang kemudian memutuskan apakah tugas dilanjutkan.

520 520 

521Dalam sesi [non-interaktif](https://code.claude.com/docs/id/headless.md), Claude Code meminta server untuk membatalkan tugas yang meminta input, tanpa menjalankan [hook `Elicitation`](https://code.claude.com/docs/id/hooks#elicitation) Anda atau memanggil callback `onElicitation` Agent SDK.521Dalam sesi [non-interaktif](https://code.claude.com/docs/id/headless.md), Claude Code meminta server untuk membatalkan tugas yang meminta input, tanpa menjalankan [hook `Elicitation`](https://code.claude.com/docs/id/hooks#elicitation) Anda atau memanggil callback `onElicitation` milik Agent SDK.

522 522 

523#### Keluar, membersihkan, atau melanjutkan saat tugas MCP berjalan523#### Keluar, membersihkan, atau melanjutkan saat tugas MCP berjalan

524 524 

525Tugas di server jarak jauh tetap berjalan setelah Anda keluar. Proses server stdio berhenti ketika Claude Code keluar, meskipun tugasnya menampilkan `runs on the server; survives exiting this session` di `/tasks`. Kecuali dokumentasi server tersebut menyatakan bahwa pekerjaannya bertahan lebih lama dari prosesnya, biarkan tugas tersebut selesai atau hentikan di `/tasks` terlebih dahulu.525Tugas di server remote tetap berjalan setelah Anda keluar. Proses server stdio berhenti ketika Claude Code keluar, meskipun tugasnya menampilkan `runs on the server; survives exiting this session` di `/tasks`. Kecuali dokumentasi server tersebut menyatakan bahwa pekerjaannya bertahan lebih lama dari prosesnya, biarkan tugas tersebut selesai atau hentikan di `/tasks` terlebih dahulu.

526 526 

527| Situasi | Apa yang terjadi pada tugas | Apa yang dapat Anda lakukan |527| Situasi | Apa yang terjadi pada tugas | Apa yang dapat Anda lakukan |

528| - | - | - |528| - | - | - |

529| Anda menjalankan `/clear` atau `/branch`, atau `/resume` sesi lain | Selama Claude Code tetap terbuka, hasilnya tiba di percakapan Anda saat ini | Setelah keluar, jalankan `claude --resume` pada sesi tempat tugas dimulai |529| Anda menjalankan `/clear` atau `/branch`, atau `/resume` sesi lain | Selama Claude Code tetap terbuka, hasilnya tiba di percakapan Anda saat ini | Setelah keluar, `claude --resume` sesi tempat tugas dimulai |

530| Anda keluar dari Claude Code | Tidak ada opsi keluar yang membatalkan tugas server jarak jauh, bahkan ketika dialog keluar mencantumkannya di bawah `The following will stop when you exit:` | Hentikan di `/tasks` terlebih dahulu, atau lanjutkan sesi yang sama nanti |530| Anda keluar dari Claude Code | Tidak ada opsi keluar yang membatalkan tugas server remote, bahkan ketika dialog keluar mencantumkannya di bawah `The following will stop when you exit:` | Hentikan di `/tasks` terlebih dahulu, atau lanjutkan sesi yang sama nanti |

531| Anda kembali ke sesi tugas secara interaktif: `claude --resume`, `claude --continue`, atau `/resume` | Setelah server terhubung, Claude Code mengikuti tugas lagi, dan Claude mendapatkan hasilnya jika tugas selesai sementara itu dan server masih mengetahuinya | Pertahankan nama server dan pengaturan koneksinya tanpa perubahan |531| Anda kembali ke sesi tugas secara interaktif: `claude --resume`, `claude --continue`, atau `/resume` | Setelah server terhubung, Claude Code mengikuti tugas lagi, dan Claude mendapatkan hasilnya jika tugas selesai sementara itu dan server masih mengetahuinya | Pertahankan nama dan pengaturan koneksi server tanpa perubahan |

532| Anda melanjutkan sesi tugas dengan `--resume` atau `--continue` dalam eksekusi sekali jalan `claude -p "<prompt>"` | Eksekusi tersebut tidak mengikuti tugas | Lanjutkan secara interaktif, atau dengan `--input-format stream-json` |532| Anda melanjutkan sesi tugas dengan `--resume` atau `--continue` dalam eksekusi sekali jalan `claude -p "<prompt>"` | Eksekusi tersebut tidak mengikuti tugas | Lanjutkan secara interaktif, atau dengan `--input-format stream-json` |

533| Anda memulai sesi baru atau menggunakan `--fork-session` | Sesi baru tidak mengikuti tugas | Lanjutkan sesi yang memulainya |533| Anda memulai sesi baru atau menggunakan `--fork-session` | Sesi baru tidak mengikuti tugas | Lanjutkan sesi yang memulainya |

534 534 


537Panggilan tool menjadi tugas MCP hanya ketika semua kondisi berikut terpenuhi:537Panggilan tool menjadi tugas MCP hanya ketika semua kondisi berikut terpenuhi:

538 538 

539* Server mendukung tugas539* Server mendukung tugas

540* Server adalah server HTTP, stdio, atau konektor claude.ai yang terhubung pada [revisi protokol 2026-07-28](#mcp-client-runtimes). Menetapkan [`MCP_SDK_GENERATION=v1` atau `MCP_PROTOCOL_NEGOTIATION=legacy`](https://code.claude.com/docs/id/env-vars) mengecualikan hal tersebut540* Server adalah server HTTP, stdio, atau konektor claude.ai yang terhubung pada [revisi protokol 2026-07-28](#mcp-client-runtimes). Menetapkan [`MCP_SDK_GENERATION=v1` atau `MCP_PROTOCOL_NEGOTIATION=legacy`](https://code.claude.com/docs/id/env-vars) mengesampingkan hal tersebut

541* Sesi [mengambil feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), jadi tidak pada penyedia pihak ketiga seperti Amazon Bedrock, dan tidak dengan telemetri atau pengambilan flag dimatikan541* Sesi [mengambil feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), jadi bukan di penyedia pihak ketiga seperti Amazon Bedrock, dan bukan dengan telemetri atau pengambilan flag dimatikan

542* Anthropic telah mengaktifkan tugas MCP untuk jenis sesi Anda. Pada v2.1.304 atau yang lebih baru, ini mencakup sesi CLI terminal, sesi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), dan eksekusi [GitHub Actions](https://code.claude.com/docs/id/github-actions.md). Surface lain, seperti [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) dan [aplikasi desktop](https://code.claude.com/docs/id/desktop.md), tidak memiliki tugas MCP542* Anthropic telah mengaktifkan tugas MCP untuk jenis sesi Anda. Pada v2.1.304 atau yang lebih baru, ini mencakup sesi CLI terminal, sesi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), dan eksekusi [GitHub Actions](https://code.claude.com/docs/id/github-actions.md). Surface lain, seperti [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) dan [aplikasi desktop](https://code.claude.com/docs/id/desktop.md), tidak memiliki tugas MCP

543* Panggilan berasal dari percakapan utama, bukan dari [subagent](https://code.claude.com/docs/id/sub-agents.md)543* Panggilan berasal dari percakapan utama, bukan dari [subagent](https://code.claude.com/docs/id/sub-agents.md)

544* Sesi bersifat interaktif, atau sesi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md) atau eksekusi `claude -p` yang membaca `--input-format stream-json` memiliki:544* Sesi bersifat interaktif, atau sesi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md) atau eksekusi `claude -p` yang membaca `--input-format stream-json` memiliki:

545 * [`CLAUDE_AUTO_BACKGROUND_TASKS`](https://code.claude.com/docs/id/env-vars) bernilai `1`545 * [`CLAUDE_AUTO_BACKGROUND_TASKS`](https://code.claude.com/docs/id/env-vars) pada `1`

546 * `CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND` tidak bernilai `1`546 * `CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND` bukan `1`

547 * `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` tidak bernilai `0`547 * `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` bukan `0`

548 548 

549Panggilan lainnya adalah panggilan tool biasa, dan [Pemindahan otomatis panggilan tool yang panjang ke latar belakang](#automatic-backgrounding-of-long-tool-calls) menjelaskan panggilan mana yang dipindahkan ke latar belakang.549Panggilan lain merupakan panggilan tool biasa, dan [Pemindahan otomatis panggilan tool yang panjang ke latar belakang](#automatic-backgrounding-of-long-tool-calls) menjelaskan mana di antaranya yang dipindahkan ke latar belakang.

550 550 

551Biarkan input sesi Agent SDK atau stream-json tetap terbuka, karena eksekusi [tidak menunggu tugas MCP](https://code.claude.com/docs/id/headless.md#mcp-work-when-a-non-interactive-run-ends) setelah input ditutup. Eksekusi sekali jalan `claude -p "<prompt>"` tidak mendapatkan tugas MCP.551Biarkan input sesi Agent SDK atau stream-json tetap terbuka, karena eksekusi [tidak menunggu tugas MCP](https://code.claude.com/docs/id/headless.md#mcp-work-when-a-non-interactive-run-ends) setelah input ditutup. Eksekusi sekali jalan `claude -p "<prompt>"` tidak mendapatkan tugas MCP.

552 552 

553#### Pesan status pada tugas MCP553#### Pesan status pada tugas MCP

554 554 

555Pesan-pesan ini, di entri `/tasks` suatu tugas atau di baris penutup transkripnya, berarti Claude Code tidak dapat menjangkau server atau tugas tersebut. Selama salah satunya tampil di `/tasks`, pekerjaan mungkin masih berjalan: Claude Code membiarkannya dan terus memeriksa. Pesan `300s` dan pesan konfigurasi tetap ada di entri bahkan setelah kontak pulih.555Pesan-pesan ini, di entri `/tasks` tugas atau baris penutup transkripnya, berarti Claude Code tidak dapat menjangkau server atau tugas. Selama salah satunya ditampilkan di `/tasks`, pekerjaan mungkin masih berjalan: Claude Code membiarkannya dan terus memeriksa. Pesan `300s` dan pesan konfigurasi tetap ada di entri bahkan setelah kontak kembali.

556 556 

557| Pesan | Apa yang terjadi | Apa yang dapat Anda lakukan |557| Pesan | Apa yang terjadi | Apa yang dapat Anda lakukan |

558| - | - | - |558| - | - | - |

559| `reconnecting…` | Server belum menjawab sejak sesi dilanjutkan, atau pemeriksaan status tidak mendapat jawaban | Jika tetap berlanjut, hubungkan kembali dari `/mcp` |559| `reconnecting…` | Server belum menjawab sejak sesi dilanjutkan, atau pemeriksaan status tidak mendapat jawaban | Jika tetap muncul, hubungkan kembali dari `/mcp` |

560| `needs a sign-in to <server>` | Server menolak pemeriksaan status | Sign in dari `/mcp` |560| `needs a sign-in to <server>` | Server menolak pemeriksaan status | Masuk dari `/mcp` |

561| `status requests come back with errors; retrying…` | Server, atau proxy di depannya, menjawab pemeriksaan status dengan kesalahan | Tunggu selagi Claude Code mencoba ulang |561| `status requests come back with errors; retrying…` | Server, atau proxy di depannya, menjawab pemeriksaan status dengan kesalahan | Tunggu selagi Claude Code mencoba ulang |

562| `server '<name>' did not reconnect within 300s` | Tidak ada pemeriksaan yang dijawab selama lima menit, misalnya karena koneksi terputus atau server dinonaktifkan | Hubungkan kembali dari `/mcp` |562| `server '<name>' did not reconnect within 300s` | Tidak ada pemeriksaan yang terjawab selama lima menit, misalnya dengan koneksi terputus atau server dinonaktifkan | Hubungkan kembali dari `/mcp` |

563| `server '<name>' asked for a sign-in, and none was accepted within 300s` | Setelah lima menit, server masih meminta sign-in | Sign in dari `/mcp` |563| `server '<name>' asked for a sign-in, and none was accepted within 300s` | Setelah lima menit server masih menginginkan sign-in | Masuk dari `/mcp` |

564| `status requests to server '<name>' came back with errors, and none succeeded in 300s` | Lima menit jawaban berupa kesalahan | Periksa kesehatan atau log server itu sendiri |564| `status requests to server '<name>' came back with errors, and none succeeded in 300s` | Lima menit jawaban berupa kesalahan | Periksa kesehatan atau log server itu sendiri |

565| `server '<name>' is not configured in this session; the task may still be running on it` | Sesi tidak memiliki server dengan nama tersebut, misalnya server dihapus, diganti namanya, atau tidak disertakan dalam `--mcp-config`, atau konektor claude.ai masih dimuat | Pulihkan server dengan nama yang sama, lalu lanjutkan sesi lagi. Untuk konektor yang sedang dimuat, tidak perlu apa-apa: Claude Code mengikuti tugas setelah konektor muncul |565| `server '<name>' is not configured in this session; the task may still be running on it` | Sesi tidak memiliki server dengan nama tersebut, misalnya server telah dihapus, diganti namanya, atau tidak disertakan dalam `--mcp-config`, atau konektor claude.ai masih dimuat | Pulihkan server dengan nama yang sama, lalu lanjutkan sesi lagi. Untuk konektor yang sedang dimuat, tidak ada: Claude Code mengikuti tugas setelah konektor muncul |

566| Pesan yang diawali `server '<name>' was reconfigured to a different transport since this task was created` | Server dengan nama tersebut ada dengan pengaturan koneksi yang berubah sejak tugas dimulai, seperti URL, command, args, env, headers, atau timeout-nya | Pulihkan pengaturan sebelumnya, lalu lanjutkan sesi lagi |566| Pesan yang diawali `server '<name>' was reconfigured to a different transport since this task was created` | Server dengan nama tersebut ada dengan pengaturan koneksi yang berubah sejak tugas dimulai, seperti URL, command, args, env, headers, atau timeout-nya | Pulihkan pengaturan sebelumnya, lalu lanjutkan sesi lagi |

567| `the server rejected this task's id; asking again…` | Server menyatakan tidak mengenal ID tugas. Claude Code terus bertanya hingga lima menit | Tunggu: pesan hilang jika server mengenali ID lagi, atau baris `outcome unknown.` menyusul |567| `the server rejected this task's id; asking again…` | Server menyatakan tidak mengenal ID tugas. Claude Code terus bertanya hingga lima menit | Tunggu: pesan hilang jika server mengenali ID lagi, atau baris `outcome unknown.` menyusul |

568| Baris transkrip yang diakhiri `outcome unknown.`, dalam satu bentuk `expired on the server: outcome unknown.` | Server menolak ID atau menolak dengan kesalahan permanen lain, dan Claude Code berhenti mengikuti tugas | Panggilan kedua dapat mengulangi pekerjaan. Sebelum memanggil tool lagi, cari tahu dari server apa yang telah dilakukan, misalnya dengan meminta Claude menggunakan tool lain dari server tersebut |568| Baris transkrip yang diakhiri `outcome unknown.`, dalam satu bentuk `expired on the server: outcome unknown.` | Server menolak ID atau menolak dengan kesalahan permanen lain, dan Claude Code berhenti mengikuti tugas | Panggilan kedua dapat mengulangi pekerjaan. Sebelum memanggil tool lagi, cari tahu dari server apa yang telah dilakukan, misalnya dengan meminta Claude menggunakan tool lain dari server tersebut |

569 569 

570#### Batas waktu pada tugas MCP570#### Batas waktu pada tugas MCP

571 571 

572Secara default, tugas di latar belakang tidak memiliki batas waktu dari Claude Code. [Batas waktu panggilan tool](#time-limits-on-mcp-tool-calls), termasuk batas waktu nyata dan timeout idle, berlaku sampai server menjawab panggilan dengan tugas. Jika Anda [membuat Claude menunggu](#make-claude-wait-for-the-result-of-an-mcp-task), batas tersebut berlaku untuk seluruh tugas. Pemeriksaan status yang dijawab dihitung sebagai aktivitas untuk timeout idle.572Secara default, tugas di latar belakang tidak memiliki batas waktu Claude Code. [Batas waktu panggilan tool](#time-limits-on-mcp-tool-calls), termasuk batas wall-clock dan idle timeout, berlaku sampai server menjawab panggilan dengan tugas. Jika Anda [membuat Claude menunggu](#make-claude-wait-for-the-result-of-an-mcp-task), batas tersebut berlaku untuk seluruh tugas. Pemeriksaan status yang terjawab dihitung sebagai aktivitas untuk idle timeout.

573 573 

574#### Membuat Claude menunggu hasil tugas MCP574#### Membuat Claude menunggu hasil tugas MCP

575 575 

576Untuk membuat Claude menunggu hasil tugas dalam sesi interaktif, tetapkan salah satu dari dua environment variable, misalnya di blok `env` pada [`settings.json`](https://code.claude.com/docs/id/settings):576Untuk membuat Claude menunggu hasil tugas dalam sesi interaktif, tetapkan salah satu dari dua environment variable, misalnya di blok `env` pada [`settings.json`](https://code.claude.com/docs/id/settings):

577 577 

578* **[`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/id/env-vars) ditetapkan ke `0`**: Claude menunggu setiap panggilan tool MCP sampai panggilan selesai578* **[`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/id/env-vars) ditetapkan ke `0`**: Claude menunggu setiap panggilan tool MCP sampai panggilan selesai

579* **[`CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND`](https://code.claude.com/docs/id/env-vars) ditetapkan ke `1`**: Claude menunggu hasil tugas. Selama [pemindahan otomatis ke latar belakang](#automatic-backgrounding-of-long-tool-calls) aktif, panggilan dipindahkan setelah dua menit secara default, sehingga tugas singkat selesai di tempat dan tugas panjang tidak memblokir Anda. Panggilan yang dipindahkan adalah panggilan latar belakang biasa, bukan tugas MCP. Panggilan tersebut tidak bertahan setelah keluar dari sesi579* **[`CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND`](https://code.claude.com/docs/id/env-vars) ditetapkan ke `1`**: Claude menunggu hasil tugas. Selama [pemindahan otomatis ke latar belakang](#automatic-backgrounding-of-long-tool-calls) aktif, panggilan dipindahkan setelah dua menit secara default, sehingga tugas singkat selesai di tempat dan tugas panjang tidak memblokir Anda. Panggilan yang dipindahkan merupakan panggilan latar belakang biasa alih-alih tugas MCP. Panggilan tersebut tidak bertahan setelah keluar dari sesi

580 580 

581Saat Claude menunggu, menekan `Esc` atau mencapai [batas waktu nyata atau timeout idle](#time-limits-on-mcp-tasks) mengakhiri panggilan, dan Claude Code meminta server untuk membatalkan tugas.581Selama Claude menunggu, menekan `Esc` atau mencapai [batas wall-clock atau idle timeout](#time-limits-on-mcp-tasks) mengakhiri panggilan, dan Claude Code meminta server untuk membatalkan tugas.

582 582 

583Jika Anda menetapkan `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` ke `1` atau memulai dalam [bare mode](https://code.claude.com/docs/id/headless.md#start-faster-with-bare-mode), hal itu saja tidak membuat Claude menunggu tugas MCP. Contoh ini menetapkan `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` ke `0`, sehingga Claude menunggu setiap panggilan tool MCP:583Jika Anda menetapkan `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` ke `1` atau memulai dalam [bare mode](https://code.claude.com/docs/id/headless.md#start-faster-with-bare-mode), hal itu saja tidak membuat Claude menunggu tugas MCP. Contoh ini menetapkan `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` ke `0`, sehingga Claude menunggu setiap panggilan tool MCP:

584 584 


596 596 

597#### Menjawab panggilan dengan tugas597#### Menjawab panggilan dengan tugas

598 598 

599Jawab dengan tugas hanya ketika permintaan membawa ekstensi tersebut, atau panggilan gagal dengan error tool `Unsupported result type 'task' for tools/call`. Panggilan gagal dengan cara yang sama jika jawaban Anda tidak memiliki `taskId` atau tidak memiliki `status` yang valid. Objek tugas adalah `result` JSON-RPC dari respons `tools/call` Anda, tidak memerlukan array `content`, dan di sini menyertakan `statusMessage` dan `pollIntervalMs` yang opsional:599Jawab dengan tugas hanya ketika permintaan membawa ekstensi tersebut, jika tidak panggilan gagal dengan kesalahan tool `Unsupported result type 'task' for tools/call`. Panggilan gagal dengan cara yang sama jika jawaban Anda tidak memiliki `taskId` atau tidak memiliki `status` yang valid. Objek tugas adalah `result` JSON-RPC dari respons `tools/call` Anda, tidak memerlukan array `content`, dan di sini menyertakan `statusMessage` dan `pollIntervalMs` yang opsional:

600 600 

601```json theme={null}601```json theme={null}

602{602{


614| Field | Cara Claude Code menanganinya |614| Field | Cara Claude Code menanganinya |

615| - | - |615| - | - |

616| `resultType` | Tetapkan ke `"task"` untuk menandai balasan sebagai tugas. Tanpanya, Claude Code membaca balasan sebagai hasil biasa |616| `resultType` | Tetapkan ke `"task"` untuk menandai balasan sebagai tugas. Tanpanya, Claude Code membaca balasan sebagai hasil biasa |

617| `taskId` | Wajib. Paling banyak 128 karakter ASCII yang dapat dicetak tanpa spasi, atau Claude mendapatkan kesalahan tool yang diawali `MCP server "<name>" returned a malformed task handle for tool "<tool>"`. Pastikan ID tetap dapat dijawab lintas koneksi, karena setelah sesi dilanjutkan Claude Code menanyakannya melalui koneksi baru |617| `taskId` | Wajib. Maksimal 128 karakter ASCII yang dapat dicetak tanpa spasi, jika tidak Claude mendapatkan kesalahan tool yang diawali `MCP server "<name>" returned a malformed task handle for tool "<tool>"`. Pastikan ID tetap dapat dijawab di berbagai koneksi, karena setelah sesi dilanjutkan Claude Code menanyakannya pada koneksi baru |

618| `status` | Wajib. Salah satu dari `working`, `input_required`, `completed`, `failed`, atau `cancelled`. Nilai lain menghasilkan kesalahan `Unsupported result type` |618| `status` | Wajib. Salah satu dari `working`, `input_required`, `completed`, `failed`, atau `cancelled`. Nilai lain menghasilkan kesalahan `Unsupported result type` |

619| `createdAt`, `lastUpdatedAt`, `ttlMs` | Diwajibkan oleh ekstensi tugas, dan `ttlMs` boleh bernilai `null`. Claude Code tidak membuang tugas karena `ttlMs`-nya telah terlewati |619| `createdAt`, `lastUpdatedAt`, `ttlMs` | Diwajibkan oleh ekstensi tugas, dan `ttlMs` boleh `null`. Claude Code tidak membuang tugas karena `ttlMs`-nya telah lewat |

620| `pollIntervalMs` | Opsional. Milidetik di antara permintaan `tasks/get`, dibatasi antara 250 dan 30000. Claude Code menggunakan 2000 ketika field tidak ada atau bernilai `null`, dan membaca nilainya lagi dari setiap respons `tasks/get` |620| `pollIntervalMs` | Opsional. Milidetik di antara permintaan `tasks/get`, dibatasi antara 250 dan 30000. Claude Code menggunakan 2000 jika field tidak ada atau `null`, dan membaca nilainya lagi dari setiap respons `tasks/get` |

621| `statusMessage` | Opsional. `/tasks` menampilkan nilai dari respons `tasks/get` terbaru Anda, bukan dari respons pertama ini, dan respons yang tidak menyertakan field tersebut akan menghapusnya. [Pesan status dari Claude Code](#status-messages-on-an-mcp-task) dapat menggantikannya |621| `statusMessage` | Opsional. `/tasks` menampilkan nilai dari respons `tasks/get` terbaru Anda, bukan yang pertama ini, dan respons yang tidak menyertakan field ini menghapusnya. [Pesan status dari Claude Code](#status-messages-on-an-mcp-task) dapat menggantikannya |

622 622 

623Claude Code menerima jawaban tugas yang tidak menyertakan `createdAt`, `lastUpdatedAt`, atau `ttlMs`, atau yang menetapkan `pollIntervalMs` ke `null`. Sebelum v2.1.317, panggilan gagal dengan error `Unsupported result type`. Agar juga berfungsi dengan versi tersebut, kirim ketiga field yang diwajibkan ekstensi tugas, dan kirim `pollIntervalMs` sebagai angka atau tidak sama sekali.623Claude Code menerima jawaban tugas yang tidak menyertakan `createdAt`, `lastUpdatedAt`, atau `ttlMs`, atau yang menetapkan `pollIntervalMs` ke `null`. Sebelum v2.1.317, panggilan gagal dengan kesalahan `Unsupported result type` sebagai gantinya. Agar juga berfungsi dengan versi tersebut, kirim ketiga field yang diwajibkan ekstensi tugas, dan kirim `pollIntervalMs` sebagai angka atau tidak sama sekali.

624 624 

625Pada server HTTP atau konektor claude.ai, jawaban tugas harus dimulai dalam [timer per permintaan](#time-limits-on-mcp-tool-calls), jadi terima pekerjaan dan jawab terlebih dahulu, lalu lakukan pekerjaannya.625Pada server HTTP atau konektor claude.ai, jawaban tugas harus dimulai dalam [timer per permintaan](#time-limits-on-mcp-tool-calls), jadi terima pekerjaan dan jawab terlebih dahulu, lalu kerjakan pekerjaannya.

626 626 

627#### Melaporkan status, hasil, dan pertanyaan627#### Melaporkan status, hasil, dan pertanyaan

628 628 

629Tepat setelah jawaban tugas, Claude Code mengirim `tasks/get` dengan `{ "taskId": ... }`, lalu mengulanginya sekali per interval polling. Ekstensi tugas mengharuskan respons Anda membawa `"resultType": "complete"` beserta `taskId`, `status`, `createdAt`, `lastUpdatedAt`, dan `ttlMs`. `ttlMs` boleh bernilai `null`, dan `statusMessage` serta `pollIntervalMs` bersifat opsional. Contoh ini melaporkan build sebagai selesai:629Tepat setelah jawaban tugas, Claude Code mengirim `tasks/get` dengan `{ "taskId": ... }`, lalu mengulanginya sekali per interval polling. Ekstensi tugas mewajibkan respons Anda membawa `"resultType": "complete"` bersama `taskId`, `status`, `createdAt`, `lastUpdatedAt`, dan `ttlMs`. `ttlMs` boleh `null`, dan `statusMessage` serta `pollIntervalMs` bersifat opsional. Contoh ini melaporkan build sebagai selesai:

630 630 

631```json theme={null}631```json theme={null}

632{632{


649| `failed` | Memberi tahu Claude `message` dari objek `error` tingkat atas `{ code, message, data }`, yang diwajibkan ekstensi tugas pada tugas yang gagal. Tanpa `message` tersebut, Claude mendapatkan `statusMessage` sebagai gantinya, atau jika tidak ada, `Task failed` |649| `failed` | Memberi tahu Claude `message` dari objek `error` tingkat atas `{ code, message, data }`, yang diwajibkan ekstensi tugas pada tugas yang gagal. Tanpa `message` tersebut, Claude mendapatkan `statusMessage` sebagai gantinya, atau jika tidak ada, `Task failed` |

650| `cancelled` | Memberi tahu Claude `statusMessage`, atau jika tidak ada, `Task was cancelled by the server` |650| `cancelled` | Memberi tahu Claude `statusMessage`, atau jika tidak ada, `Task was cancelled by the server` |

651| `input_required` | Membaca `inputRequests`, objek yang memetakan kunci pilihan Anda ke `{ method, params }`. Claude Code menjawab setiap kunci sekali melalui `tasks/update` dengan `{ taskId, inputResponses }`, di mana `inputResponses` memetakan kunci yang sama ke hasil permintaan tersebut. Kunci di atas 16 per tugas diabaikan |651| `input_required` | Membaca `inputRequests`, objek yang memetakan kunci pilihan Anda ke `{ method, params }`. Claude Code menjawab setiap kunci sekali melalui `tasks/update` dengan `{ taskId, inputResponses }`, di mana `inputResponses` memetakan kunci yang sama ke hasil permintaan tersebut. Kunci di atas 16 per tugas diabaikan |

652| Metode dalam `inputRequests` | `elicitation/create` hanya dilayani dalam sesi terminal interaktif, dan `roots/list` di mana saja. Ketika Claude Code tidak dapat melayani permintaan, Claude Code meminta server untuk membatalkan tugas |652| Metode di `inputRequests` | `elicitation/create` hanya dilayani dalam sesi terminal interaktif, dan `roots/list` di mana saja. Ketika Claude Code tidak dapat melayani permintaan, Claude Code meminta server untuk membatalkan tugas |

653| Nilai `status` lain | Claude Code meminta server untuk membatalkan tugas dan melaporkannya kepada Claude sebagai gagal |653| Nilai `status` lain | Claude Code meminta server untuk membatalkan tugas dan melaporkannya kepada Claude sebagai gagal |

654| Kesalahan JSON-RPC `-32602` | Dibaca sebagai ID tugas yang tidak dikenal. Untuk tugas di latar belakang, Claude Code terus bertanya hingga lima menit, lalu melaporkan hasilnya kepada Claude sebagai tidak diketahui |654| Kesalahan JSON-RPC `-32602` | Dibaca sebagai ID tugas yang tidak dikenal. Untuk tugas di latar belakang, Claude Code terus bertanya hingga lima menit, lalu melaporkan hasilnya kepada Claude sebagai tidak diketahui |

655| `tasks/cancel` | Dikirim, misalnya, ketika Claude atau pengguna menghentikan tugas saat server terhubung. Tidak dikirim saat keluar |655| `tasks/cancel` | Dikirim, misalnya, ketika Claude atau pengguna menghentikan tugas selagi server terhubung. Tidak dikirim saat keluar |

656| `tasks/result`, `tasks/list`, `notifications/tasks` | Tidak digunakan, jadi letakkan hasilnya dalam respons `tasks/get` Anda |656| `tasks/result`, `tasks/list`, `notifications/tasks` | Tidak digunakan, jadi letakkan hasilnya di respons `tasks/get` Anda |

657 657 

658### Server MCP yang disediakan plugin658### Server MCP yang disediakan plugin

659 659 

660[Plugin](https://code.claude.com/docs/id/plugins/overview.md) dapat menyertakan server MCP yang menyediakan tool dan integrasi ketika Anda mengaktifkan plugin.660[Plugin](https://code.claude.com/docs/id/plugins/overview.md) dapat menyertakan server MCP yang menyediakan tool dan integrasi ketika Anda mengaktifkan plugin tersebut.

661 661 

662**Cara kerja server MCP plugin**:662**Cara kerja server MCP plugin**:

663 663 

664* Plugin mendefinisikan server MCP di `.mcp.json` pada root plugin atau secara inline di `plugin.json`664* Plugin mendefinisikan server MCP dalam `.mcp.json` di root plugin atau secara inline dalam `plugin.json`

665* Ketika Anda mengaktifkan plugin, Claude Code memulai server MCP-nya secara otomatis665* Ketika Anda mengaktifkan plugin, Claude Code memulai server MCP-nya secara otomatis

666* Claude Code menawarkan tool MCP plugin bersama dengan tool MCP yang dikonfigurasi secara manual666* Claude Code menawarkan tool MCP plugin berdampingan dengan tool MCP yang dikonfigurasi secara manual

667* Anda menambahkan dan menghapus server plugin dengan menginstal atau menghapus instalasi plugin, bukan dengan perintah `/mcp`. Anda tetap dapat [menonaktifkan server plugin yang terinstal](#disable-a-server-without-removing-it) di `/mcp`, yang menghentikan Claude Code terhubung ke server tersebut tanpa menghapus plugin667* Anda menambahkan dan menghapus server plugin dengan menginstal atau menghapus instalasi plugin, bukan dengan perintah `/mcp`. Anda tetap dapat [menonaktifkan server plugin yang terinstal](#disable-a-server-without-removing-it) di `/mcp`, yang membuat Claude Code berhenti terhubung ke server tersebut tanpa menghapus plugin

668 668 

669**Contoh konfigurasi MCP plugin**:669**Contoh konfigurasi MCP plugin**:

670 670 

671Di `.mcp.json` pada root plugin:671Dalam `.mcp.json` di root plugin:

672 672 

673```json theme={null}673```json theme={null}

674{674{


684}684}

685```685```

686 686 

687Atau secara inline di `plugin.json`:687Atau secara inline dalam `plugin.json`:

688 688 

689```json theme={null}689```json theme={null}

690{690{


701**Fitur MCP plugin**:701**Fitur MCP plugin**:

702 702 

703* **Siklus hidup otomatis**: server terhubung dan terputus pada titik-titik berikut:703* **Siklus hidup otomatis**: server terhubung dan terputus pada titik-titik berikut:

704 * Saat startup sesi, Claude Code menghubungkan server untuk plugin yang diaktifkan secara otomatis. Di `/mcp`, server plugin jarak jauh (HTTP atau SSE) yang pernah Anda gunakan dapat menampilkan [status `cached`](#server-status-detail) sebagai gantinya; Claude Code menghubungkannya ketika Claude pertama kali memanggil salah satu tool-nya. Ketika koneksi server plugin stdio gagal kurang dari 15 menit sebelumnya, Claude Code [melewati koneksi tersebut](https://code.claude.com/docs/id/errors.md#skipping-connection-recent-failure-cached)704 * Saat sesi dimulai, Claude Code menghubungkan server untuk plugin yang diaktifkan secara otomatis. Di `/mcp`, server plugin jarak jauh (HTTP atau SSE) yang pernah Anda gunakan sebelumnya dapat menampilkan [status `cached`](#server-status-detail) sebagai gantinya; Claude Code menghubungkannya ketika Claude pertama kali memanggil salah satu tool-nya. Ketika koneksi server plugin stdio gagal kurang dari 15 menit sebelumnya, Claude Code [melewati koneksi tersebut](https://code.claude.com/docs/id/errors.md#skipping-connection-recent-failure-cached)

705 * Jika Anda mengaktifkan atau menonaktifkan plugin selama sesi, Claude Code menghubungkan atau memutuskan server MCP-nya ketika perubahan diterapkan. [Menerapkan perubahan plugin tanpa memulai ulang](https://code.claude.com/docs/id/plugins/cli-reference.md#reload-plugins) menjelaskan kapan hal itu terjadi. Dalam sesi tanpa terminal interaktif, `/reload-plugins` tidak menghubungkan atau memutuskan server MCP plugin; perubahan tersebut berlaku di sesi berikutnya705 * Jika Anda mengaktifkan atau menonaktifkan plugin selama sesi, Claude Code menghubungkan atau memutuskan server MCP-nya ketika perubahan tersebut diterapkan. [Menerapkan perubahan plugin tanpa memulai ulang](https://code.claude.com/docs/id/plugins/cli-reference.md#reload-plugins) menjelaskan kapan hal itu terjadi. Dalam sesi tanpa terminal interaktif, `/reload-plugins` tidak menghubungkan atau memutuskan server MCP plugin; perubahan tersebut berlaku pada sesi Anda berikutnya

706 * Saat Anda memuat ulang, Claude Code mempertahankan koneksi aktif server plugin yang konfigurasinya tidak berubah, dan melakukan hal yang sama ketika Anda [mengganti daftar server MCP sesi](https://code.claude.com/docs/id/agent-sdk/typescript.md#mcpsetserversresult) dari Agent SDK tanpa menyebutkan server tersebut706 * Saat Anda memuat ulang, Claude Code mempertahankan koneksi aktif server plugin yang konfigurasinya tidak berubah, dan melakukan hal yang sama ketika Anda [mengganti daftar server MCP sesi](https://code.claude.com/docs/id/agent-sdk/typescript.md#mcpsetserversresult) dari Agent SDK tanpa menyebutkan nama server tersebut

707 * Ketika Anda [memindahkan sesi dengan `/cd`](https://code.claude.com/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau yang lebih baru, Claude Code menghubungkan server plugin yang diaktifkan oleh pengaturan direktori baru dan memutuskan server plugin yang tidak lagi diaktifkan, sehingga Anda tidak perlu menjalankan `/reload-plugins` setelah pemindahan707 * Ketika Anda [memindahkan sesi dengan `/cd`](https://code.claude.com/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru, Claude Code menghubungkan server dari plugin yang diaktifkan oleh pengaturan direktori baru dan memutuskan server dari plugin yang tidak lagi diaktifkan, sehingga Anda tidak perlu menjalankan `/reload-plugins` setelah pemindahan

708 * Dalam [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), panggilan MCP ke server plugin yang belum terhubung, seperti tepat setelah sesi idle aktif kembali, memulai server sesuai permintaan dan menunggunya terhubung708 * Dalam [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), panggilan MCP ke server plugin yang belum terhubung, seperti tepat setelah sesi yang menganggur aktif kembali, memulai server sesuai permintaan dan menunggu hingga server tersebut terhubung

709* **Placeholder path**: `${CLAUDE_PLUGIN_ROOT}` di-resolve ke direktori instalasi plugin, `${CLAUDE_PLUGIN_DATA}` ke direktori [state persisten](https://code.claude.com/docs/id/plugins/components.md#path-variables-and-persistent-data)-nya, dan `${CLAUDE_PROJECT_DIR}` ke root proyek yang stabil. Substitusi berlaku untuk:709* **Placeholder path**: `${CLAUDE_PLUGIN_ROOT}` diselesaikan ke direktori instalasi plugin, `${CLAUDE_PLUGIN_DATA}` ke direktori [state persisten](https://code.claude.com/docs/id/plugins/components.md#path-variables-and-persistent-data)-nya, dan `${CLAUDE_PROJECT_DIR}` ke root proyek yang stabil. Substitusi berlaku untuk:

710 * Server `stdio`: `command`, `args`, `env`710 * Server `stdio`: `command`, `args`, `env`

711 * Server `http`, `sse`, dan `ws`: `url`, `headers`, dan `headersHelper`711 * Server `http`, `sse`, dan `ws`: `url`, `headers`, dan `headersHelper`

712* **Akses lingkungan pengguna**: akses ke environment variable yang sama seperti server yang dikonfigurasi secara manual712* **Akses lingkungan pengguna**: akses ke environment variable yang sama dengan server yang dikonfigurasi secara manual

713* **Beberapa jenis transport**: dukungan untuk transport stdio, SSE, HTTP, dan WebSocket, meskipun dukungan transport dapat bervariasi menurut server713* **Beberapa jenis transport**: dukungan untuk transport stdio, SSE, HTTP, dan WebSocket, meskipun dukungan transport dapat bervariasi tergantung server

714 714 

715Server plugin muncul di `/mcp` dengan indikator yang menunjukkan bahwa server tersebut berasal dari plugin.715Server plugin muncul di `/mcp` dengan indikator yang menunjukkan bahwa server tersebut berasal dari plugin.

716 716 

717`claude mcp get` menyembunyikan nilai yang dikonfigurasi untuk server stdio atau WebSocket plugin, karena nilai tersebut dapat membawa kredensial:717`claude mcp get` menyembunyikan nilai yang dikonfigurasi untuk server stdio atau WebSocket milik plugin, karena nilai tersebut dapat memuat kredensial:

718 718 

719* **Server stdio**: mencetak `Command: stdio`, baris `Args:` kosong, dan setiap environment variable sebagai `NAME=[REDACTED]`719* **Server stdio**: menampilkan `Command: stdio`, baris `Args:` yang kosong, dan setiap environment variable sebagai `NAME=[REDACTED]`

720* **Server WebSocket**: mencetak `URL: ws` dan setiap header sebagai `<name>: [REDACTED]`, dan `claude mcp list` menampilkan `ws` sebagai pengganti URL720* **Server WebSocket**: menampilkan `URL: ws` dan setiap header sebagai `<name>: [REDACTED]`, dan `claude mcp list` menampilkan `ws` sebagai pengganti URL

721 721 

722Untuk melihat apa yang dikonfigurasi plugin, [temukan plugin di disk](https://code.claude.com/docs/id/plugins/loading.md#find-plugins-on-disk) dan baca `.mcp.json` atau `plugin.json`-nya.722Untuk melihat apa yang dikonfigurasi plugin, [temukan plugin di disk](https://code.claude.com/docs/id/plugins/loading.md#find-plugins-on-disk) dan baca `.mcp.json` atau `plugin.json`-nya.

723 723 

724**Nama tool MCP plugin**:724**Nama tool MCP plugin**:

725 725 

726Tool dari server MCP yang disertakan dalam plugin menyertakan nama plugin dan kunci server dalam nama yang dapat dipanggil. Bentuk lengkapnya adalah `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, di mana setiap karakter di luar `A-Z`, `a-z`, `0-9`, `_`, dan `-` diganti dengan `_`. Untuk server `database-tools` yang disertakan dalam plugin bernama `my-plugin`, tool `query` dapat dipanggil sebagai:726Tool dari server MCP yang disertakan dalam plugin mencakup nama plugin dan kunci server dalam nama yang dapat dipanggil. Bentuk lengkapnya adalah `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, di mana setiap karakter di luar `A-Z`, `a-z`, `0-9`, `_`, dan `-` diganti dengan `_`. Untuk server `database-tools` yang disertakan dalam plugin bernama `my-plugin`, tool `query` dapat dipanggil sebagai:

727 727 

728```728```

729mcp__plugin_my-plugin_database-tools__query729mcp__plugin_my-plugin_database-tools__query

730```730```

731 731 

732Gunakan nama lengkap ini saat mereferensikan tool dalam [aturan izin](https://code.claude.com/docs/id/permissions.md), daftar `allowed-tools` milik skill, [field `tools` subagent](https://code.claude.com/docs/id/sub-agents#available-tools), atau [hook matcher](https://code.claude.com/docs/id/hooks.md#match-mcp-tools). Hook matcher yang ditulis berdasarkan kunci server saja, seperti `mcp__database-tools__.*`, tidak pernah terpicu untuk server yang disertakan dalam plugin.732Gunakan nama lengkap ini saat mereferensikan tool dalam [aturan izin](https://code.claude.com/docs/id/permissions.md), daftar `allowed-tools` milik skill, [field `tools` milik subagent](https://code.claude.com/docs/id/sub-agents#available-tools), atau [matcher hook](https://code.claude.com/docs/id/hooks.md#match-mcp-tools). Matcher hook yang ditulis terhadap kunci server saja, seperti `mcp__database-tools__.*`, tidak pernah terpicu untuk server yang disertakan dalam plugin.

733 733 

734Server itu sendiri terdaftar dengan nama bercakupan `plugin:<plugin-name>:<server-name>`, seperti `plugin:my-plugin:database-tools`. Gunakan nama tersebut di tempat yang mengharapkan nama server yang dikonfigurasi, seperti [field `server` pada hook `mcp_tool`](https://code.claude.com/docs/id/hooks#mcp-tool-hook-fields).734Server itu sendiri terdaftar dengan nama tercakup `plugin:<plugin-name>:<server-name>`, seperti `plugin:my-plugin:database-tools`. Gunakan nama tersebut di tempat yang mengharapkan nama server yang dikonfigurasi, seperti [field `server` pada hook `mcp_tool`](https://code.claude.com/docs/id/hooks#mcp-tool-hook-fields).

735 735 

736Lihat [referensi komponen plugin](https://code.claude.com/docs/id/plugins/components.md#mcp-servers) untuk detail tentang menyertakan server MCP dengan plugin.736Lihat [referensi komponen plugin](https://code.claude.com/docs/id/plugins/components.md#mcp-servers) untuk detail tentang menyertakan server MCP dalam plugin.

737 737 

738## Cakupan instalasi MCP738## Cakupan instalasi MCP

739 739 


1800* **Claude Opus 4.5, Sonnet 4.5, Haiku 4.5, dan yang lebih baru**: pencarian tool aktif secara default, sama seperti di Anthropic API.1800* **Claude Opus 4.5, Sonnet 4.5, Haiku 4.5, dan yang lebih baru**: pencarian tool aktif secara default, sama seperti di Anthropic API.

1801* **Model Agent Platform sebelumnya**: Claude Code memuat semua tool MCP di awal, karena stack penyajian mereka menolak header beta yang diperlukan. `ENABLE_TOOL_SEARCH=true` tidak menimpa ini.1801* **Model Agent Platform sebelumnya**: Claude Code memuat semua tool MCP di awal, karena stack penyajian mereka menolak header beta yang diperlukan. `ENABLE_TOOL_SEARCH=true` tidak menimpa ini.

1802 1802 

1803Sebelum v2.1.221, Claude Code menonaktifkan pencarian tool untuk semua model di Agent Platform Google Cloud kecuali Anda mengatur `ENABLE_TOOL_SEARCH=true`.

1804 

1805Kontrol perilaku pencarian tool dengan environment variable `ENABLE_TOOL_SEARCH`:1803Kontrol perilaku pencarian tool dengan environment variable `ENABLE_TOOL_SEARCH`:

1806 1804 

1807| Nilai | Perilaku |1805| Nilai | Perilaku |

model-config.md +92 −92

Details

10 10 

11Untuk pengaturan `model` di Claude Code, Anda dapat mengonfigurasi salah satu dari:11Untuk pengaturan `model` di Claude Code, Anda dapat mengonfigurasi salah satu dari:

12 12 

13* **alias model**13* Sebuah **alias model**

14* **nama model**14* Sebuah **nama model**

15 * Anthropic API: **[nama model](https://platform.claude.com/docs/en/about-claude/models/overview)** lengkap15 * Anthropic API: **[nama model](https://platform.claude.com/docs/en/about-claude/models/overview)** lengkap

16 * Amazon Bedrock: ARN profil inferensi16 * Amazon Bedrock: ARN inference profile

17 * Microsoft Foundry: nama deployment17 * Microsoft Foundry: nama deployment

18 * Google Cloud's Agent Platform: nama versi18 * Google Cloud's Agent Platform: nama versi

19 19 

20Untuk panduan tentang model dan tingkat effort mana yang sesuai untuk berbagai jenis pekerjaan, lihat [Memilih model Claude dan tingkat effort di Claude Code](https://claude.com/blog/claude-model-and-effort-level-in-claude-code) di blog.20Untuk panduan tentang model dan tingkat effort mana yang cocok untuk berbagai jenis pekerjaan, lihat [Choosing a Claude model and effort level in Claude Code](https://claude.com/blog/claude-model-and-effort-level-in-claude-code) di blog.

21 21 

22> [!NOTE]22> [!NOTE]

23>23>

24> `ANTHROPIC_BASE_URL` mengubah tempat permintaan dikirim, bukan model mana yang menjawabnya. Untuk merutekan Claude melalui gateway LLM, lihat [LLM gateways](https://code.claude.com/docs/id/llm-gateway).24> `ANTHROPIC_BASE_URL` mengubah ke mana permintaan dikirim, bukan model mana yang menjawabnya. Untuk merutekan Claude melalui LLM gateway, lihat [LLM gateway](https://code.claude.com/docs/id/llm-gateway).

25 25 

26### Alias model26### Alias model

27 27 

28Gunakan alias model untuk memilih pengaturan model tanpa perlu mengingat nomor versi yang tepat:28Gunakan alias model untuk memilih pengaturan model tanpa harus mengingat nomor versi yang tepat:

29 29 

30| Alias model | Perilaku |30| Alias model | Perilaku |

31| - | - |31| - | - |

32| **`default`** | Nilai khusus yang menghapus override model apa pun dan kembali ke [default runtime untuk akun Anda](#default-model-setting). Bukan sendiri alias model |32| **`default`** | Nilai khusus yang menghapus override model apa pun dan kembali ke [default runtime untuk akun Anda](#default-model-setting). Bukan alias model itu sendiri |

33| **`best`** | Menggunakan model yang sama dengan `opus` |33| **`best`** | Menggunakan model yang sama dengan `opus` |

34| **`fable`** | Menggunakan [model Fable untuk penyedia Anda](#fable-alias-resolution) untuk tugas-tugas tersulit dan paling lama |34| **`fable`** | Menggunakan [model Fable untuk penyedia Anda](#fable-alias-resolution) untuk tugas-tugas tersulit dan paling lama berjalan |

35| **`sonnet`** | Menggunakan model Sonnet terbaru untuk tugas-tugas pengkodean sehari-hari |35| **`sonnet`** | Menggunakan model Sonnet terbaru untuk tugas coding sehari-hari |

36| **`opus`** | Menggunakan model Opus terbaru untuk tugas-tugas penalaran kompleks |36| **`opus`** | Menggunakan model Opus terbaru untuk tugas penalaran kompleks |

37| **`haiku`** | Menggunakan model Haiku yang cepat dan efisien untuk tugas-tugas sederhana |37| **`haiku`** | Menggunakan model Haiku yang cepat dan efisien untuk tugas sederhana |

38| **`sonnet[1m]`** | Menggunakan Sonnet dengan [context window 1 juta token](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) untuk sesi panjang. Tidak berpengaruh ketika `sonnet` sudah menyelesaikan ke Sonnet 5.5 atau Sonnet 5 dengan window 1M aslinya |38| **`sonnet[1m]`** | Menggunakan Sonnet dengan [context window 1 juta token](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) untuk sesi panjang. Tidak berpengaruh ketika `sonnet` sudah mengarah ke Sonnet 5.5 atau Sonnet 5 dengan window 1M bawaannya |

39| **`opus[1m]`** | Menggunakan Opus dengan [context window 1 juta token](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) untuk sesi panjang. Tidak berpengaruh ketika `opus` sudah menyelesaikan ke Opus 4.7 atau lebih baru dengan window 1M aslinya |39| **`opus[1m]`** | Menggunakan Opus dengan [context window 1 juta token](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) untuk sesi panjang. Tidak berpengaruh ketika `opus` sudah mengarah ke Opus 4.7 atau lebih baru dengan window 1M bawaannya |

40| **`opusplan`** | Mode khusus yang menggunakan `opus` selama plan mode, kemudian beralih ke `sonnet` untuk eksekusi |40| **`opusplan`** | Mode khusus yang menggunakan `opus` selama plan mode, lalu beralih ke `sonnet` untuk eksekusi |

41 41 

42Alias `opus`, `sonnet`, dan `haiku` diselesaikan ke versi terbaru di Anthropic API dan ke versi yang lebih awal di beberapa penyedia lain:42Alias `opus`, `sonnet`, dan `haiku` mengarah ke versi terbaru di Anthropic API dan ke versi yang lebih lama di beberapa penyedia lain:

43 43 

44| Penyedia | `opus` | `sonnet` | `haiku` |44| Penyedia | `opus` | `sonnet` | `haiku` |

45| :- | :- | :- | :- |45| :- | :- | :- | :- |


48| Amazon Bedrock, Google Cloud's Agent Platform | Opus 5.5 | Sonnet 4.5 | Haiku 4.5 |48| Amazon Bedrock, Google Cloud's Agent Platform | Opus 5.5 | Sonnet 4.5 | Haiku 4.5 |

49| Microsoft Foundry | Opus 4.6 | Sonnet 4.5 | Haiku 4.5 |49| Microsoft Foundry | Opus 4.6 | Sonnet 4.5 | Haiku 4.5 |

50 50 

51Kecuali Anda menetapkan `ANTHROPIC_DEFAULT_FABLE_MODEL`, alias `fable` diselesaikan ke Fable 5 dalam sesi [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway) dan ke Fable 5.2 di tempat lain.51Kecuali Anda mengatur `ANTHROPIC_DEFAULT_FABLE_MODEL`, alias `fable` mengarah ke Fable 5 dalam sesi [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway) dan ke Fable 5.2 di tempat lain.

52 52 

53Gateway yang tidak dikonfigurasi untuk melayani `claude-fable-5-2` menolak permintaan untuk model itu. Untuk menggunakan Fable 5.2 melalui gateway yang melayaninya, pilih dengan `/model claude-fable-5-2`.53Gateway yang tidak dikonfigurasi untuk menyajikan `claude-fable-5-2` akan menolak permintaan untuk model tersebut. Untuk menggunakan Fable 5.2 melalui gateway yang menyajikannya, pilih dengan `/model claude-fable-5-2`.

54 54 

55Di mana `opus` atau `sonnet` diselesaikan ke model yang lebih lama, model yang lebih baru tersedia dengan memilih nama model lengkap secara eksplisit atau menetapkan `ANTHROPIC_DEFAULT_OPUS_MODEL` atau `ANTHROPIC_DEFAULT_SONNET_MODEL`.55Jika `opus` atau `sonnet` mengarah ke model yang lebih lama, model yang lebih baru tersedia dengan memilih nama model lengkap secara eksplisit atau mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` atau `ANTHROPIC_DEFAULT_SONNET_MODEL`.

56 56 

57Versi sebelumnya menyelesaikan alias ini ke model yang lebih lama. Untuk versi di mana setiap alias berubah, lihat [Riwayat versi](#version-history).57Versi sebelumnya mengarahkan alias ini ke model yang lebih lama. Untuk versi saat setiap alias berubah, lihat [Riwayat versi](#version-history).

58 58 

59Alias menunjuk ke versi yang direkomendasikan untuk penyedia Anda dan diperbarui seiring waktu. Untuk menyematkan ke versi tertentu, gunakan nama model lengkap, misalnya `claude-opus-5-5`, atau atur environment variable yang sesuai seperti `ANTHROPIC_DEFAULT_OPUS_MODEL`.59Alias menunjuk ke versi yang direkomendasikan untuk penyedia Anda dan diperbarui seiring waktu. Untuk mengunci ke versi tertentu, gunakan nama model lengkap, misalnya `claude-opus-5-5`, atau atur environment variable yang sesuai seperti `ANTHROPIC_DEFAULT_OPUS_MODEL`.

60 60 

61> [!NOTE]61> [!NOTE]

62>62>

63> Sonnet 5.5 memerlukan Claude Code v2.1.284 atau lebih baru, dan Opus 5.5 memerlukan v2.1.280 atau lebih baru. Jika permintaan untuk salah satunya dari versi yang lebih lama gagal, lihat [Claude Code tidak mendukung model ini](https://code.claude.com/docs/id/errors.md#claude-code-does-not-support-this-model). Gunakan v2.1.293 atau lebih baru dengan Haiku 5.5. Jalankan `claude update` untuk upgrade.63> Sonnet 5.5 memerlukan Claude Code v2.1.284 atau lebih baru, dan Opus 5.5 memerlukan v2.1.280 atau lebih baru. Jika permintaan untuk salah satunya dari versi yang lebih lama gagal, lihat [Claude Code does not support this model](https://code.claude.com/docs/id/errors.md#claude-code-does-not-support-this-model). Gunakan v2.1.293 atau lebih baru dengan Haiku 5.5. Jalankan `claude update` untuk memperbarui.

64 64 

65### Bekerja dengan Fable65### Bekerja dengan Fable

66 66 

67[Model Claude Fable](https://platform.claude.com/docs/en/about-claude/models/overview) adalah model paling mampu di Claude Code, cocok untuk tugas-tugas yang lebih besar dari satu sesi. Mereka mempertahankan sesi otonomi yang panjang, menyelidiki sebelum bertindak, dan memverifikasi pekerjaan mereka lebih sering daripada model yang lebih kecil.67[Model Claude Fable](https://platform.claude.com/docs/en/about-claude/models/overview) adalah model paling mumpuni di Claude Code, cocok untuk tugas yang lebih besar dari satu kali duduk. Model ini mampu mempertahankan sesi otonom yang panjang, menyelidiki sebelum bertindak, dan memverifikasi pekerjaannya lebih sering daripada model yang lebih kecil.

68 68 

69Tidak ada model Fable yang merupakan default tipe akun di paket atau penyedia apa pun. Pilih satu secara eksplisit:69Tidak ada model Fable yang menjadi default tipe akun di paket atau penyedia mana pun. Pilih salah satunya secara eksplisit:

70 70 

71* **Fable 5.2**: jalankan `/model fable`, atau luncurkan dengan `claude --model fable`. Dalam sesi [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway), jalankan `/model claude-fable-5-2` sebagai gantinya.71* **Fable 5.2**: jalankan `/model fable`, atau luncurkan dengan `claude --model fable`. Dalam sesi [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway), jalankan `/model claude-fable-5-2` sebagai gantinya.

72* **Fable 5.1 atau Fable 5**: pilih berdasarkan ID model. Di Anthropic API, jalankan `/model claude-fable-5-1` atau `/model claude-fable-5`, atau luncurkan dengan `claude --model claude-fable-5-1`. Di penyedia lain, gunakan ID model penyedia Anda atau [sematkan](#pin-models-for-third-party-deployments) dengan `ANTHROPIC_DEFAULT_FABLE_MODEL`.72* **Fable 5.1 atau Fable 5**: pilih berdasarkan ID model. Di Anthropic API, jalankan `/model claude-fable-5-1` atau `/model claude-fable-5`, atau luncurkan dengan `claude --model claude-fable-5-1`. Di penyedia lain, gunakan ID model penyedia Anda atau [kunci](#pin-models-for-third-party-deployments) dengan `ANTHROPIC_DEFAULT_FABLE_MODEL`.

73 73 

74Di paket Pro, Max, Team, dan Enterprise, model `claude-fable-5-1` yang disimpan dalam pengaturan pengguna Anda dipindahkan ke alias `fable`:74Pada paket Pro, Max, Ultra, Team, dan Enterprise, model `claude-fable-5-1` yang disimpan di pengaturan pengguna Anda dipindahkan ke alias `fable`:

75 75 

76* **Paket Pro atau Max**: pemindahan terjadi pertama kali Anda menjalankan v2.1.321 atau lebih baru. Di terminal, baris model startup dapat menampilkan `(auto-updated)` sekali.76* **Paket Pro, Max, atau Ultra**: pemindahan terjadi saat pertama kali Anda menjalankan v2.1.321 atau lebih baru. Di terminal, baris model saat startup dapat menampilkan `(auto-updated)` satu kali.

77* **Paket Team atau Enterprise**: pemindahan menunggu pengaturan organisasi Anda, sehingga dapat terjadi pada startup yang lebih belakangan, atau tidak sama sekali. Pemindahan berlaku mulai sesi berikutnya, tanpa baris `(auto-updated)`. Untuk memeriksa model Anda, jalankan `/model`.77* **Paket Team atau Enterprise**: pemindahan menunggu pengaturan organisasi Anda, sehingga dapat terjadi pada startup berikutnya, atau tidak sama sekali. Pemindahan berlaku mulai sesi berikutnya, tanpa baris `(auto-updated)`. Untuk memeriksa model Anda, jalankan `/model`.

78 78 

79Setelah pemindahan, sesi dimulai pada effort default Fable 5.2 kecuali Anda telah [menetapkan tingkat](#adjust-effort-level) untuknya. Akun Console, penyedia pihak ketiga, serta pengaturan proyek, lokal, atau terkelola tetap menggunakan `claude-fable-5-1`.79Setelah pemindahan, sesi dimulai pada effort default Fable 5.2 kecuali Anda telah [mengatur tingkat](#adjust-effort-level) untuknya. Akun Console, penyedia pihak ketiga, serta pengaturan proyek, lokal, atau terkelola tetap menggunakan `claude-fable-5-1`.

80 80 

81Permintaan yang pengklasifikasi keamanan model Fable tandai, paling sering di domain keamanan siber dan biologi, memicu [fallback model otomatis](#automatic-model-fallback).81Permintaan yang ditandai oleh pengklasifikasi keamanan model Fable, paling sering di domain keamanan siber dan biologi, memicu [fallback model otomatis](#automatic-model-fallback).

82 82 

83Untuk mendapatkan hasil maksimal dari Fable:83Untuk mendapatkan hasil maksimal dari Fable:

84 84 

85* **Jelaskan hasilnya, bukan langkah-langkahnya**: berikan hasil yang Anda inginkan dan biarkan merencanakan jalurnya. Untuk membuatnya terus bekerja menuju hasil itu, [tetapkan tujuan](https://code.claude.com/docs/id/goal.md).85* **Jelaskan hasilnya, bukan langkah-langkahnya**: berikan hasil yang Anda inginkan dan biarkan model merencanakan jalannya. Agar model tetap bekerja menuju hasil tersebut, [tetapkan tujuan](https://code.claude.com/docs/id/goal.md).

86* **Berikan masalah yang ambigu**: investigasi akar penyebab, debugging pemadaman, dan keputusan arsitektur adalah tempat investigasi dan verifikasi tambahan membayar.86* **Berikan masalah yang ambigu**: investigasi akar masalah, debugging gangguan layanan, dan keputusan arsitektur adalah area di mana investigasi dan verifikasi tambahan memberikan hasil.

87* **Lewati pengingat verifikasi**: ia memverifikasi pekerjaan sendiri dengan prompting yang lebih sedikit, jadi pengingat untuk menguji atau memeriksa biasanya tidak perlu.87* **Lewati pengingat verifikasi**: model memverifikasi pekerjaannya sendiri dengan lebih sedikit arahan, sehingga pengingat untuk menguji atau memeriksa biasanya tidak diperlukan.

88* **Ukur tugas yang lebih besar**: berikan pekerjaan yang biasanya akan Anda pecah menjadi beberapa bagian. Ia mempertahankan sesi panjang tanpa kehilangan benang merah.88* **Perbesar ukuran tugas**: berikan pekerjaan yang biasanya Anda pecah menjadi beberapa bagian. Model ini dapat mempertahankan sesi panjang tanpa kehilangan alur.

89 89 

90> [!NOTE]90> [!NOTE]

91>91>

92> Fable 5.2 memerlukan Claude Code v2.1.321 atau lebih baru, dan Fable 5.1 memerlukan v2.1.257 atau lebih baru. Jika permintaan untuk salah satunya dari versi yang lebih lama gagal, lihat [Claude Code tidak mendukung model ini](https://code.claude.com/docs/id/errors.md#claude-code-does-not-support-this-model). Jalankan `claude update` untuk upgrade. Untuk ketersediaan di bawah zero data retention, lihat [Ketersediaan model di bawah ZDR](https://code.claude.com/docs/id/zero-data-retention.md#model-availability-under-zdr).92> Fable 5.2 memerlukan Claude Code v2.1.321 atau lebih baru, dan Fable 5.1 memerlukan v2.1.257 atau lebih baru. Jika permintaan untuk salah satunya dari versi yang lebih lama gagal, lihat [Claude Code does not support this model](https://code.claude.com/docs/id/errors.md#claude-code-does-not-support-this-model). Jalankan `claude update` untuk memperbarui. Untuk ketersediaan di bawah zero data retention, lihat [Ketersediaan model di bawah ZDR](https://code.claude.com/docs/id/zero-data-retention.md#model-availability-under-zdr).

93 93 

94Di Anthropic API, model Fable muncul di pemilih `/model` kecuali [`availableModels`](#restrict-model-selection) atau [pembatasan model organisasi](#organization-model-restrictions) mengecualikannya. Ketika organisasi Anda tidak dapat menggunakan Fable sama sekali, misalnya di bawah [zero data retention](https://code.claude.com/docs/id/zero-data-retention.md#model-availability-under-zdr), baris tetap di pemilih berwarna abu-abu, dengan catatan tentang alasannya.94Di Anthropic API, model Fable muncul di pemilih `/model` kecuali [`availableModels`](#restrict-model-selection) atau [pembatasan model organisasi](#organization-model-restrictions) mengecualikannya. Ketika organisasi Anda sama sekali tidak dapat menggunakan Fable, misalnya di bawah [zero data retention](https://code.claude.com/docs/id/zero-data-retention.md#model-availability-under-zdr), barisnya tetap ada di pemilih dalam keadaan berwarna abu-abu, dengan catatan mengenai alasannya.

95 95 

96#### Fable dan kredit penggunaan96#### Fable dan kredit penggunaan

97 97 

98Tergantung pada paket dan tingkat kursi Anda, penggunaan Fable dapat ditagih ke [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) alih-alih mengambil dari batas yang disertakan paket Anda. Ketika itu terjadi, pemilih `/model` menunjukkan "Requires usage credits" di baris Fable. Untuk mengelola kredit penggunaan, lihat [Tambahkan kredit penggunaan ke langganan Anda](https://code.claude.com/docs/id/costs.md#add-usage-credits-to-your-subscription).98Tergantung pada paket dan tingkat seat Anda, penggunaan Fable dapat ditagihkan ke [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) alih-alih menggunakan batas yang disertakan dalam paket Anda. Jika demikian, pemilih `/model` menampilkan "Requires usage credits" pada baris Fable. Untuk mengelola kredit penggunaan, lihat [Menambahkan kredit penggunaan ke langganan Anda](https://code.claude.com/docs/id/costs.md#add-usage-credits-to-your-subscription).

99 99 

100Dalam sesi interaktif, Claude Code dapat menampilkan prompt persetujuan kredit penggunaan Fable. Anggota paket Enterprise dengan penagihan organisasi tidak melihat prompt. Anda dapat melanjutkan di Fable menggunakan kredit penggunaan atau beralih ke model default Anda. Anda juga dapat menutup prompt:100Dalam sesi interaktif, Claude Code dapat menampilkan dialog persetujuan kredit penggunaan Fable. Anda dapat melanjutkan di Fable menggunakan kredit penggunaan atau beralih ke model default Anda. Anda juga dapat menutup dialog tersebut:

101 101 

102* Ketika Anda memilih model Fable dengan `/model`, Anda menyimpan model saat ini.102* Ketika Anda memilih model Fable dengan `/model`, Anda tetap menggunakan model Anda saat ini.

103* Pertengahan sesi, Claude Code melanjutkan giliran di model default Anda.103* Di tengah sesi, Claude Code melanjutkan giliran dengan model default Anda.

104 104 

105Setelah Anda memilih untuk melanjutkan di Fable menggunakan kredit penggunaan, Claude Code tidak menampilkan prompt lagi.105Setelah Anda memilih untuk melanjutkan di Fable menggunakan kredit penggunaan, Claude Code tidak menampilkan dialog tersebut lagi.

106 106 

107Dalam sesi dengan [Remote Control](https://code.claude.com/docs/id/remote-control.md) terhubung, [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), atau sesi rekan tim dari [tim agent](https://code.claude.com/docs/id/agent-teams.md), mungkin tidak ada yang berada di terminal, jadi Claude Code menahan prompt persetujuan pertengahan sesi untuk batas waktu [`dialogExpiry`](https://code.claude.com/docs/id/settings-reference#dialogexpiry), lima menit secara default. Jika tidak ada yang menjawab pada batas waktu, Claude Code mengakhiri giliran tanpa mengirim permintaan dan menambahkan pemberitahuan ke transkrip, yang juga ditampilkan klien Remote Control. Pilihan model Anda tidak berubah, dan Claude Code meminta persetujuan lagi pada pesan berikutnya Anda.107Dalam sesi dengan [Remote Control](https://code.claude.com/docs/id/remote-control.md) terhubung, [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), atau sesi rekan [tim agent](https://code.claude.com/docs/id/agent-teams.md), mungkin tidak ada orang di terminal, sehingga Claude Code menahan dialog persetujuan di tengah sesi hingga batas waktu [`dialogExpiry`](https://code.claude.com/docs/id/settings-reference#dialogexpiry), lima menit secara default. Jika tidak ada yang menjawab hingga batas waktu tersebut, Claude Code mengakhiri giliran tanpa mengirim permintaan dan menambahkan pemberitahuan ke transkrip, yang juga ditampilkan oleh klien Remote Control. Pilihan model Anda tidak berubah, dan Claude Code meminta persetujuan lagi pada pesan Anda berikutnya.

108 108 

109Apa yang dapat Anda lakukan saat prompt menunggu tergantung pada sesi:109Apa yang dapat Anda lakukan saat dialog menunggu tergantung pada sesinya:

110 110 

111* Dengan Remote Control terhubung atau dalam sesi rekan tim, tekan tombol apa pun di terminal untuk membatalkan batas waktu, dan Claude Code menunggu jawaban Anda.111* Dengan Remote Control terhubung atau dalam sesi rekan tim, tekan tombol apa pun di terminal untuk membatalkan batas waktu, dan Claude Code akan menunggu jawaban Anda.

112* Dalam sesi latar belakang, jawab sebelum batas waktu.112* Dalam sesi latar belakang, jawab sebelum batas waktu.

113* Jika Anda mengirim pesan baru dari klien jarak jauh sebelum ada yang mengetik di terminal, Claude Code mengakhiri giliran dengan cara yang sama, dan pesan baru Anda memulai giliran berikutnya. Setelah seseorang mengetik di terminal, Claude Code terus menunggu jawaban dan mengantrekan pesan baru Anda di belakangnya.113* Jika Anda mengirim pesan baru dari klien jarak jauh sebelum ada yang mengetik di terminal, Claude Code mengakhiri giliran dengan cara yang sama, dan pesan baru Anda memulai giliran berikutnya. Setelah seseorang mengetik di terminal, Claude Code tetap menunggu jawaban dan mengantrekan pesan baru Anda di belakangnya.

114 114 

115Dalam sesi aplikasi lain yang dihosting melalui [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), apakah prompt muncul tergantung pada aplikasi itu. Jika muncul dan tidak ada yang menjawab sebelum batas waktu [`dialogExpiry`](https://code.claude.com/docs/id/settings-reference#dialogexpiry) yang sama, Claude Code mengakhiri giliran tanpa mengirim permintaan.115Dalam sesi yang di-host oleh aplikasi lain melalui [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), apakah dialog muncul atau tidak tergantung pada aplikasi tersebut. Jika dialog muncul dan tidak ada yang menjawab sebelum batas waktu [`dialogExpiry`](https://code.claude.com/docs/id/settings-reference#dialogexpiry) yang sama, Claude Code mengakhiri giliran tanpa mengirim permintaan.

116 116 

117Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan flag `-p`, dan dalam aplikasi Agent SDK yang tidak menampilkan prompt, Claude Code tidak pernah meminta persetujuan. Ketika permintaan Fable di sana akan ditagih ke kredit penggunaan, Claude Code menagihnya tanpa bertanya.117Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan flag `-p`, dan dalam aplikasi Agent SDK yang tidak menampilkan dialog, Claude Code tidak pernah meminta persetujuan. Ketika permintaan Fable di sana akan ditagihkan ke kredit penggunaan, Claude Code menagihkannya tanpa bertanya.

118 118 

119### Mengatur model Anda119### Mengatur model Anda

120 120 

121Anda dapat mengonfigurasi model Anda dengan beberapa cara, tercantum dalam urutan prioritas:121Anda dapat mengonfigurasi model dengan beberapa cara, yang diurutkan berdasarkan prioritas:

122 122 

1231. **Selama sesi**: gunakan `/model <alias|name>` untuk beralih segera, atau jalankan `/model` tanpa argumen untuk membuka pemilih. Lihat [ketika Claude Code meminta Anda untuk mengonfirmasi peralihan](https://code.claude.com/docs/id/prompt-caching.md#switching-models)1231. **Selama sesi**: gunakan `/model <alias|name>` untuk beralih segera, atau jalankan `/model` tanpa argumen untuk membuka pemilih. Lihat [kapan Claude Code meminta Anda mengonfirmasi peralihan](https://code.claude.com/docs/id/prompt-caching.md#switching-models)

1242. **Saat startup**: luncurkan dengan `claude --model <alias|name>`1242. **Saat startup**: luncurkan dengan `claude --model <alias|name>`

1253. **Environment variable**: atur `ANTHROPIC_MODEL=<alias|name>`1253. **Environment variable**: atur `ANTHROPIC_MODEL=<alias|name>`

1264. **Pengaturan**: konfigurasi secara permanen di file pengaturan Anda menggunakan bidang `model`1264. **Pengaturan**: konfigurasikan secara permanen di file pengaturan Anda menggunakan field `model`

1275. **[Default untuk sesi baru](#set-a-default-model-for-new-sessions)**: atur `ANTHROPIC_DEFAULT_MODEL=<alias|name>`1275. **[Default untuk sesi baru](#set-a-default-model-for-new-sessions)**: atur `ANTHROPIC_DEFAULT_MODEL=<alias|name>`

128 128 

129`/model` menyimpan pilihan Anda sebagai default untuk sesi baru dengan menulis bidang `model` di pengaturan pengguna Anda. Di pemilih:129`/model` menyimpan pilihan Anda sebagai default untuk sesi baru dengan menulis field `model` di pengaturan pengguna Anda. Di pemilih:

130 130 

131* `Enter`: alihkan model dan simpan sebagai default Anda131* `Enter`: beralih model dan simpan sebagai default Anda

132* `s`: alihkan model hanya untuk sesi ini dan biarkan default Anda tidak berubah. Untuk menggunakan tombol yang berbeda, ikat ulang [`modelPicker:thisSessionOnly`](https://code.claude.com/docs/id/keybindings#model-picker-actions)132* `s`: beralih model hanya untuk sesi ini dan biarkan default Anda tidak berubah. Untuk menggunakan tombol lain, ubah pintasan keyboard [`modelPicker:thisSessionOnly`](https://code.claude.com/docs/id/keybindings#model-picker-actions)

133 133 

134Mengetik `/model <name>` langsung berperilaku seperti `Enter`. Untuk beralih hanya untuk sesi ini, buka pemilih dengan `/model` dan tekan `s` di baris model.134Mengetik `/model <name>` secara langsung berperilaku seperti `Enter`. Untuk beralih hanya untuk sesi ini, buka pemilih dengan `/model` dan tekan `s` pada baris model tersebut.

135 135 

136Di paket Enterprise, ketika Anda masuk dengan akun claude.ai Anda dan menyimpan default dengan `/model`, Claude Code juga mencatat pilihan di akun itu. Ini memerlukan Claude Code v2.1.280 atau lebih baru.136Pada paket Enterprise, ketika Anda masuk dengan akun claude.ai Anda dan menyimpan default dengan `/model`, Claude Code juga mencatat pilihan tersebut di akun itu. Ini memerlukan Claude Code v2.1.280 atau lebih baru.

137 137 

138* Ketika admin Anda belum menetapkan [model default organisasi](#organization-default-model), opsi [Default](#default-model-setting) dapat diselesaikan ke model yang dicatat, dan ketika itu terjadi, baris Default di pemilih `/model` menampilkan nama model itu.138* Ketika admin Anda belum mengatur [model default organisasi](#organization-default-model), [opsi Default](#default-model-setting) dapat mengarah ke model yang tercatat, dan jika demikian, baris Default di pemilih menampilkan nama model tersebut.

139* Jika [pembatasan model](#restrict-model-selection) mengecualikan model yang dicatat atau tidak tersedia untuk akun Anda, dan admin Anda belum menetapkan model default organisasi, opsi Default diselesaikan seolah-olah tidak ada yang dicatat.139* Jika [pembatasan model](#restrict-model-selection) mengecualikan model yang tercatat atau model tersebut tidak tersedia untuk akun Anda, dan admin Anda belum mengatur model default organisasi, opsi Default diselesaikan seolah-olah tidak ada yang tercatat.

140* Jika Anda memilih Default atau `opusplan` di `/model`, pilihan yang dicatat tidak berubah.140* Jika Anda memilih Default atau `opusplan` di `/model`, pilihan yang tercatat tidak berubah.

141 141 

142Jika Anda beralih model dengan `/model`, peralihan juga mencapai [subagent yang mewarisi model percakapan utama](https://code.claude.com/docs/id/sub-agents.md#choose-a-model), karena Claude Code menyelesaikan model mereka dari yang digunakan sesi Anda ketika Claude memulainya. Beralih ke Opus sebelum Claude mendelegasikan penelitian atau test run ke salah satunya, dan pekerjaan itu berjalan di Opus juga. Untuk menjaga subagent kustom di model yang lebih kecil, atur `model` dalam definisinya.142Jika Anda beralih model dengan `/model`, peralihan tersebut juga berlaku untuk [subagent yang mewarisi model percakapan utama](https://code.claude.com/docs/id/sub-agents.md#choose-a-model), karena Claude Code menentukan model mereka dari model yang digunakan sesi Anda saat Claude memulainya. Beralihlah ke Opus sebelum Claude mendelegasikan riset atau menjalankan tes ke salah satunya, dan pekerjaan itu juga berjalan di Opus. Untuk mempertahankan subagent kustom pada model yang lebih kecil, atur `model` dalam definisinya.

143 143 

144Jika Anda menetapkan model dengan `/model` dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), dengan flag `-p`, pilihan Anda berlaku hanya untuk sesi saat ini dan tidak disimpan sebagai default Anda; `/model` dalam mode itu memerlukan Claude Code v2.1.205 atau lebih baru. Pengaturan proyek dan terkelola tetap diutamakan dan diterapkan kembali pada peluncuran berikutnya. [Model default organisasi](#organization-default-model) yang telah dikonfigurasi admin Anda untuk menimpa pilihan pengguna juga diterapkan kembali pada peluncuran berikutnya.144Jika Anda mengatur model dengan `/model` dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md), dengan flag `-p`, pilihan Anda hanya berlaku untuk sesi saat ini dan tidak disimpan sebagai default Anda; `/model` dalam mode tersebut memerlukan Claude Code v2.1.205 atau lebih baru. Pengaturan proyek dan terkelola tetap diutamakan dan diterapkan kembali pada peluncuran berikutnya. [Model default organisasi](#organization-default-model) yang dikonfigurasi admin Anda untuk menimpa pilihan pengguna juga diterapkan kembali pada peluncuran berikutnya.

145 145 

146Dalam v2.1.144 hingga v2.1.152, `/model` berlaku hanya untuk sesi saat ini dan `d` di pemilih menyimpan default.146Di v2.1.144 hingga v2.1.152, `/model` hanya berlaku untuk sesi saat ini dan `d` di pemilih menyimpan default.

147 147 

148Flag `--model` dan environment variable `ANTHROPIC_MODEL` hanya berlaku untuk sesi yang Anda luncurkan dengannya. Untuk menjalankan model berbeda di terminal berbeda pada waktu yang sama, luncurkan masing-masing dengan flag `--model` sendiri daripada beralih dengan `/model`.148Flag `--model` dan environment variable `ANTHROPIC_MODEL` hanya berlaku untuk sesi yang Anda luncurkan dengannya. Untuk menjalankan model yang berbeda di terminal yang berbeda secara bersamaan, luncurkan masing-masing dengan flag `--model` sendiri alih-alih beralih dengan `/model`.

149 149 

150Harga di pemilih `/model` muncul ketika Claude Code berbicara dengan Anthropic API, secara langsung atau melalui [gateway LLM](https://code.claude.com/docs/id/llm-gateway) yang mem-proxy-nya, dan harga di baris adalah harga model yang dipilih baris itu. Di [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md) seperti Amazon Bedrock dan di [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway), penyedia atau gateway Anda menentukan apa yang Anda bayar, jadi baris pemilih tidak menampilkan harga. Harga adalah label tampilan saja; itu tidak memengaruhi model mana yang dipilih baris atau apa yang ditagih penyedia Anda. Sebelum v2.1.206, [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md) dan sesi gateway menampilkan harga daftar Anthropic, dan baris dapat menampilkan harga model yang berbeda dari yang dipilihnya.150Harga di pemilih `/model` muncul ketika Claude Code berkomunikasi dengan Anthropic API, secara langsung atau melalui [LLM gateway](https://code.claude.com/docs/id/llm-gateway) yang mem-proxy-nya, dan harga pada sebuah baris adalah harga model yang dipilih oleh baris tersebut. Pada [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md) seperti Amazon Bedrock dan pada [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway), penyedia atau gateway Anda menentukan berapa yang Anda bayar, sehingga baris pemilih tidak menampilkan harga. Harga hanyalah label tampilan; harga tidak memengaruhi model mana yang dipilih sebuah baris atau apa yang ditagihkan penyedia Anda. Sebelum v2.1.206, sesi [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md) dan gateway menampilkan harga daftar Anthropic, dan sebuah baris dapat menampilkan harga model yang berbeda dari model yang dipilihnya.

151 151 

152Sesi yang dilanjutkan dimulai dengan `claude --resume`, `--continue`, atau pemilih `/resume` menyimpan model yang mereka gunakan ketika transkrip disimpan. Jika model yang dipulihkan telah pensiun atau dikecualikan oleh [`availableModels`](#restrict-model-selection), sesi jatuh melalui urutan prioritas normal. Di penyedia yang menggunakan ID deployment khusus penyedia daripada ID model Anthropic, seperti Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry, model transkrip tidak dipulihkan sama sekali dan sesi menyelesaikan modelnya melalui urutan prioritas normal.152Sesi yang dilanjutkan dengan `claude --resume`, `--continue`, atau pemilih `/resume` mempertahankan model yang digunakan saat transkrip disimpan. Jika model yang dipulihkan telah dihentikan atau dikecualikan oleh [`availableModels`](#restrict-model-selection), sesi beralih ke urutan prioritas normal. Pada penyedia yang menggunakan ID deployment khusus penyedia alih-alih ID model Anthropic, seperti Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry, model transkrip tidak dipulihkan sama sekali dan sesi menentukan modelnya melalui urutan prioritas normal.

153 153 

154Jika pengaturan `model` Anda adalah `haiku`, sesi yang disimpan pada model Haiku dilanjutkan pada model yang saat ini diselesaikan oleh `haiku`. Misalnya, setelah `haiku` diselesaikan ke Haiku 5.5, sesi yang disimpan pada Haiku 4.5 dilanjutkan pada Haiku 5.5.154Jika pengaturan `model` Anda adalah `haiku`, sesi yang disimpan pada model Haiku dilanjutkan pada model yang sekarang dituju oleh `haiku`. Misalnya, setelah `haiku` mengarah ke Haiku 5.5, sesi yang disimpan pada Haiku 4.5 dilanjutkan pada Haiku 5.5.

155 155 

156Model yang Anda pilih untuk peluncuran baru dengan `--model` atau `ANTHROPIC_MODEL` tetap diutamakan daripada model yang dipulihkan. Sejak v2.1.195, demikian juga variabel keluarga [`ANTHROPIC_DEFAULT_OPUS_MODEL`](#environment-variables). [`ANTHROPIC_DEFAULT_MODEL`](#set-a-default-model-for-new-sessions) juga bisa, di bawah kondisi yang tercantum di bagiannya.156Model yang Anda pilih untuk peluncuran baru dengan `--model` atau `ANTHROPIC_MODEL` tetap diutamakan daripada model yang dipulihkan. Mulai v2.1.195, hal yang sama berlaku untuk variabel keluarga [`ANTHROPIC_DEFAULT_OPUS_MODEL`](#environment-variables). [`ANTHROPIC_DEFAULT_MODEL`](#set-a-default-model-for-new-sessions) juga dapat diutamakan, dengan kondisi yang tercantum di bagiannya.

157 157 

158Ketika model aktif saat startup berasal dari pengaturan proyek atau terkelola daripada pilihan Anda sendiri, header startup menunjukkan file pengaturan mana yang menetapkannya. Jalankan `/model` untuk menimpa; pengaturan proyek atau terkelola diterapkan kembali pada peluncuran berikutnya. Di platform yang menyematkan Claude Code dan menetapkan [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/id/env-vars), konfigurasi model host diutamakan daripada pengaturan model terkelola, sementara allowlist `availableModels` terkelola tetap berlaku kecuali host menyediakan miliknya sendiri; [Pengecualian untuk prioritas pengaturan terkelola](https://code.claude.com/docs/id/settings.md#exceptions-to-managed-settings-precedence) menjelaskan kunci dan variabel mana yang ditimpa host.158Ketika model aktif saat startup berasal dari pengaturan proyek atau terkelola alih-alih pilihan Anda sendiri, header startup menampilkan file pengaturan mana yang mengaturnya. Jalankan `/model` untuk menimpanya; pengaturan proyek atau terkelola diterapkan kembali pada peluncuran berikutnya. Pada platform yang menyematkan Claude Code dan mengatur [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/id/env-vars), konfigurasi model host diutamakan daripada pengaturan model terkelola, sementara allowlist `availableModels` terkelola tetap berlaku kecuali host menyediakan allowlist sendiri; [Pengecualian terhadap prioritas pengaturan terkelola](https://code.claude.com/docs/id/settings.md#exceptions-to-managed-settings-precedence) menjelaskan key dan variabel mana yang ditimpa oleh host.

159 159 

160Jika Anda atau organisasi Anda mengonfigurasi [PreModelSwitch hooks](https://code.claude.com/docs/id/hooks.md#premodelswitch), mereka berjalan sebelum peralihan yang diminta diterapkan dan dapat memblokirnya atau meminta Anda untuk mengonfirmasi.160Jika Anda atau organisasi Anda mengonfigurasi [hook PreModelSwitch](https://code.claude.com/docs/id/hooks.md#premodelswitch), hook tersebut berjalan sebelum peralihan yang diminta diterapkan dan dapat memblokirnya atau meminta Anda untuk mengonfirmasi.

161 161 

162Ketika Claude Code tidak dapat mengetahui hook PreModelSwitch mana yang dikirimkan [plugin terkelola](https://code.claude.com/docs/id/settings-reference.md#enabledplugins) organisasi Anda, misalnya karena plugin terkelola gagal dimuat, itu menolak peralihan daripada menerapkannya tanpa diperiksa, dan itu memeriksa lagi pada setiap upaya baru. Lihat [Model switch was blocked by a PreModelSwitch hook](https://code.claude.com/docs/id/errors.md#model-switch-was-blocked-by-a-premodelswitch-hook) untuk pesan dan pemulihan.162Ketika Claude Code tidak dapat mengetahui hook PreModelSwitch mana yang disediakan oleh [plugin terkelola](https://code.claude.com/docs/id/settings-reference.md#enabledplugins) organisasi Anda, misalnya karena plugin terkelola gagal dimuat, Claude Code menolak peralihan alih-alih menerapkannya tanpa pemeriksaan, dan memeriksa lagi pada setiap upaya baru. Lihat [Model switch was blocked by a PreModelSwitch hook](https://code.claude.com/docs/id/errors.md#model-switch-was-blocked-by-a-premodelswitch-hook) untuk pesan dan cara pemulihannya.

163 163 

164Ketika Anda beralih model melalui metode `setModel()` [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), melalui aplikasi seperti [Desktop app](https://code.claude.com/docs/id/desktop.md), atau dari perangkat yang terhubung melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md), Claude Code memeriksa nilai pada saat peralihan:164Ketika Anda beralih model melalui metode `setModel()` [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), melalui aplikasi seperti [aplikasi Desktop](https://code.claude.com/docs/id/desktop.md), atau dari perangkat yang terhubung melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md), Claude Code memeriksa nilainya saat peralihan:

165 165 

166* **Agent SDK atau aplikasi**: dengan Claude Code v2.1.268 atau lebih baru, kecuali Claude Code menerima ID model secara lokal, seperti yang dilakukannya untuk [opsi model kustom](#add-a-custom-model-option) Anda, itu mengonfirmasi ID dengan penyedia Anda pertama kali sesi beralih ke sana. Konfirmasi berjalan di setiap penyedia, dan ID yang tidak ditawarkan penyedia Anda ditolak pada saat peralihan daripada gagal pada permintaan berikutnya Anda.166* **Agent SDK atau aplikasi**: dengan Claude Code v2.1.268 atau lebih baru, kecuali Claude Code menerima ID model secara lokal, seperti untuk [opsi model kustom](#add-a-custom-model-option) Anda, Claude Code mengonfirmasi ID tersebut dengan penyedia Anda saat pertama kali sesi beralih ke ID tersebut. Konfirmasi berjalan di setiap penyedia, dan ID yang tidak ditawarkan penyedia Anda ditolak saat peralihan alih-alih gagal pada permintaan Anda berikutnya.

167* **Remote Control**: di Anthropic API, Claude Code memeriksa nilai secara lokal dan tidak mengirim permintaan.167* **Remote Control**: di Anthropic API, Claude Code memeriksa nilai secara lokal dan tidak mengirim permintaan.

168 168 

169Lihat [Model is not a recognized model id](https://code.claude.com/docs/id/errors.md#model-is-not-a-recognized-model-id) dan [Model not found](https://code.claude.com/docs/id/errors.md#model-not-found) untuk pesannya.169Lihat [Model is not a recognized model id](https://code.claude.com/docs/id/errors.md#model-is-not-a-recognized-model-id) dan [Model not found](https://code.claude.com/docs/id/errors.md#model-not-found) untuk pesannya.

170 170 

171Jika Anda menetapkan model dengan flag `--model`, environment variable `ANTHROPIC_MODEL`, atau pengaturan `model`, Claude Code tidak menolak nilai yang salah ketik di muka. Sesi dimulai, dan permintaan pertama menghasilkan [There's an issue with the selected model](https://code.claude.com/docs/id/errors.md#theres-an-issue-with-the-selected-model). Di Anthropic API, nilai yang tidak diawali dengan `claude-` dan ejaannya hampir sama dengan nama model atau alias juga dapat menghasilkan [peringatan startup yang menyarankannya](#fix-a-mistyped-model-name).171Jika Anda mengatur model dengan flag `--model`, environment variable `ANTHROPIC_MODEL`, atau pengaturan `model`, Claude Code tidak menolak nilai yang salah ketik sejak awal. Sesi dimulai, dan permintaan pertama menghasilkan [There's an issue with the selected model](https://code.claude.com/docs/id/errors.md#theres-an-issue-with-the-selected-model). Di Anthropic API, nilai yang tidak diawali dengan `claude-` dan hampir sama dengan nama model atau alias juga dapat menghasilkan [peringatan startup yang menyarankannya](#fix-a-mistyped-model-name).

172 172 

173Ketika model yang diminta memiliki tanggal pensiun terjadwal atau secara otomatis dipetakan ulang ke versi yang lebih baru, Claude Code menampilkan peringatan yang menyebutkan model yang diminta. Sesi interaktif menampilkannya sebagai pemberitahuan startup. Dari v2.1.182, peringatan yang sama ditulis ke stderr dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) ketika menggunakan format output teks default. Pemeriksaan juga mencakup `model` yang ditetapkan dalam [frontmatter subagent](https://code.claude.com/docs/id/sub-agents.md). Peringatan stderr ditekan untuk `--output-format json` dan `stream-json`; baca model aktual dari bidang `modelUsage` dari [pesan hasil](https://code.claude.com/docs/id/headless.md#get-structured-output) sebagai gantinya.173Ketika model yang diminta memiliki tanggal penghentian terjadwal atau secara otomatis dipetakan ulang ke versi yang lebih baru, Claude Code menampilkan peringatan yang menyebutkan nama model yang diminta. Sesi interaktif menampilkannya sebagai pemberitahuan startup. Mulai v2.1.182, peringatan yang sama ditulis ke stderr dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) saat menggunakan format output teks default. Pemeriksaan ini juga mencakup `model` yang diatur di [frontmatter subagent](https://code.claude.com/docs/id/sub-agents.md). Peringatan stderr disembunyikan untuk `--output-format json` dan `stream-json`; baca model yang sebenarnya dari field `modelUsage` pada [pesan hasil](https://code.claude.com/docs/id/headless.md#get-structured-output) sebagai gantinya.

174 174 

175Misalnya, mulai sesi di Opus:175Misalnya, mulai sesi di Opus:

176 176 


178claude --model opus178claude --model opus

179```179```

180 180 

181Kemudian alihkan model dari dalam sesi:181Lalu beralih model dari dalam sesi:

182 182 

183```text theme={null}183```text theme={null}

184/model sonnet184/model sonnet

185```185```

186 186 

187File pengaturan contoh:187Contoh file pengaturan:

188 188 

189```json theme={null}189```json theme={null}

190{190{


195}195}

196```196```

197 197 

198#### Tetapkan model default untuk sesi baru198#### Mengatur model default untuk sesi baru

199 199 

200Atur `ANTHROPIC_DEFAULT_MODEL=<alias|name>` untuk memilih model yang dimulai sesi Anda secara default. Memerlukan Claude Code v2.1.236 atau lebih baru.200Atur `ANTHROPIC_DEFAULT_MODEL=<alias|name>` untuk memilih model yang digunakan sesi Anda secara default saat dimulai. Memerlukan Claude Code v2.1.236 atau lebih baru.

201 201 

202Claude Code memulai sesi baru di model variabel hanya ketika tidak ada dari hal-hal berikut yang memilih model:202Claude Code memulai sesi baru pada model variabel tersebut hanya ketika tidak ada satu pun dari berikut ini yang memilih model:

203 203 

204* Flag `--model`204* Flag `--model`

205* `ANTHROPIC_MODEL`205* `ANTHROPIC_MODEL`

206* Nilai `model` dalam file pengaturan apa pun, termasuk pilihan yang Anda simpan dengan `/model`206* Nilai `model` di file pengaturan mana pun, termasuk pilihan yang Anda simpan dengan `/model`

207* [Model default organisasi](#organization-default-model)207* [Model default organisasi](#organization-default-model)

208 208 

209Pilihan yang Anda simpan dengan `/model` diutamakan daripada variabel pada peluncuran berikutnya juga. Dengan `ANTHROPIC_MODEL` yang ditetapkan sebagai gantinya, Claude Code kembali ke model variabel itu pada peluncuran berikutnya, apa pun yang Anda simpan dengan `/model`.209Pilihan yang Anda simpan dengan `/model` juga diutamakan daripada variabel tersebut pada peluncuran berikutnya. Jika `ANTHROPIC_MODEL` yang diatur, Claude Code kembali ke model variabel tersebut pada peluncuran berikutnya, apa pun yang Anda simpan dengan `/model`.

210 210 

211Claude Code juga menyelesaikan opsi Default ke model variabel, kecuali model default organisasi berlaku. Ketika opsi Default diselesaikan ke model variabel, baris Default di pemilih `/model` menampilkan label Set by ANTHROPIC\_DEFAULT\_MODEL.211Claude Code juga mengarahkan opsi Default ke model variabel tersebut, kecuali model default organisasi berlaku. Ketika opsi Default mengarah ke model variabel tersebut, baris Default di pemilih `/model` menampilkan label Set by ANTHROPIC\_DEFAULT\_MODEL.

212 212 

213Claude Code mengabaikan variabel dalam kasus-kasus ini, dan opsi Default diselesaikan seolah-olah Anda belum menetapkannya:213Claude Code mengabaikan variabel tersebut dalam kasus berikut, dan opsi Default diselesaikan seolah-olah Anda tidak mengaturnya:

214 214 

215* Anda menetapkannya ke `default`, `inherit`, `opusplan`, atau `haiku`215* Anda mengaturnya ke `default`, `inherit`, `opusplan`, atau `haiku`

216* [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) aktif216* [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) aktif

217* [Pembatasan model](#restrict-model-selection) organisasi Anda mengecualikan model217* [Pembatasan model](#restrict-model-selection) organisasi Anda mengecualikan model tersebut

218* Model tidak tersedia untuk akun Anda218* Model tersebut tidak tersedia untuk akun Anda

219 219 

220Ketika sesi baru akan dimulai di model variabel, sesi yang Anda lanjutkan dengan `claude --resume`, `--continue`, atau pemilih `/resume` dimulai di sana juga. Claude Code tidak memulihkan model yang disimpan dalam transkrip sesi itu. Jika tidak, Claude Code tidak menggunakan variabel ketika Anda [melanjutkan sesi](#setting-your-model).220Ketika sesi baru akan dimulai pada model variabel tersebut, sesi yang Anda lanjutkan dengan `claude --resume`, `--continue`, atau pemilih `/resume` juga dimulai pada model tersebut. Claude Code tidak memulihkan model yang disimpan di transkrip sesi tersebut. Selain itu, Claude Code tidak menggunakan variabel tersebut saat Anda [melanjutkan sesi](#setting-your-model).

221 221 

222#### Sesi baru dimulai di model yang berbeda dari yang Anda pilih222#### Sesi baru dimulai pada model yang berbeda dari yang Anda pilih

223 223 

224Ketika Anda memilih model dengan `/model` dan sesi berikutnya Anda dimulai di sesuatu yang lain, ini adalah penyebab biasanya:224Ketika Anda memilih model dengan `/model` dan sesi berikutnya dimulai pada model lain, berikut adalah penyebab umumnya:

225 225 

226* **Anda memilihnya untuk satu sesi.** Menekan `s` di pemilih, meluncurkan dengan `--model`, dan menjalankan `/model` dalam mode non-interaktif semuanya berlaku untuk sesi saat ini dan membiarkan default yang disimpan tidak berubah.226* **Anda memilihnya untuk satu sesi.** Menekan `s` di pemilih, meluncurkan dengan `--model`, dan menjalankan `/model` dalam mode non-interaktif semuanya berlaku untuk sesi saat ini dan tidak mengubah default yang Anda simpan.

227* **Sesuatu dengan prioritas lebih tinggi menetapkan model.** Nilai `model` dalam pengaturan proyek atau terkelola, `ANTHROPIC_MODEL` di shell Anda, atau [default organisasi](#organization-default-model) yang admin Anda tetapkan untuk menimpa pilihan pengguna berlaku lagi di setiap peluncuran. Pilihan `/model` Anda masih disimpan; itu dikalahkan oleh prioritas yang lebih tinggi. Ketika pengaturan proyek atau terkelola menetapkan model, header startup menyebutkan file tersebut.227* **Sesuatu dengan prioritas lebih tinggi mengatur model.** Nilai `model` di pengaturan proyek atau terkelola, `ANTHROPIC_MODEL` di shell Anda, atau [default organisasi](#organization-default-model) yang diatur admin Anda untuk menimpa pilihan pengguna diterapkan lagi pada setiap peluncuran. Pilihan `/model` Anda tetap tersimpan; hanya saja kalah prioritas. Ketika pengaturan proyek atau terkelola mengatur model, header startup menyebutkan nama filenya.

228* **Claude Code tidak dapat menyimpan pilihan Anda.** `/model` menulis `model` ke `~/.claude/settings.json`. Jika Anda tidak dapat menulis ke file itu, misalnya karena alat lain menghasilkannya atau menautkannya ke salinan read-only, model yang Anda pilih berlangsung untuk sesi dan peluncuran berikutnya membaca nilai lama. Atur `model` dalam alat yang menghasilkan file, atau buat file dapat ditulis. Lihat [Perubahan yang Anda buat di Claude Code hilang di sesi baru](https://code.claude.com/docs/id/settings.md#a-change-you-made-in-claude-code-is-lost-in-new-sessions).228* **Claude Code tidak dapat menyimpan pilihan Anda.** `/model` menulis `model` ke `~/.claude/settings.json`. Jika Anda tidak dapat menulis ke file tersebut, misalnya karena tool lain membuatnya atau menautkannya ke salinan read-only, model yang Anda pilih hanya berlaku selama sesi dan peluncuran berikutnya membaca nilai lama. Atur `model` di tool yang membuat file tersebut, atau buat file tersebut dapat ditulis. Lihat [Perubahan yang Anda buat di Claude Code hilang di sesi baru](https://code.claude.com/docs/id/settings.md#a-change-you-made-in-claude-code-is-lost-in-new-sessions).

229* **Anda melanjutkan sesi.** Sesi yang Anda lanjutkan dengan `claude --resume` atau `--continue` biasanya [mempertahankan model yang digunakannya](#setting-your-model) daripada default Anda saat ini.229* **Anda melanjutkan sesi.** Sesi yang Anda lanjutkan dengan `claude --resume` atau `--continue` biasanya [mempertahankan model yang digunakannya](#setting-your-model) alih-alih default Anda saat ini.

230 230 

231## Batasi pemilihan model231## Batasi pemilihan model

232 232 


478 478 

479> [!NOTE]479> [!NOTE]

480>480>

481> Model Fable bukan default jenis akun pada paket atau penyedia apa pun. Memilih salah satu dengan `/model` menyimpannya sebagai model yang dipilih dalam pengaturan pengguna Anda, sehingga sesi berikutnya dimulai padanya, terlepas dari [perubahan satu kali pada pilihan Fable 5.1 yang disimpan](#work-with-fable).481> Model Fable bukan default jenis akun pada paket atau penyedia apa pun. Memilih salah satu dengan `/model` menyimpannya sebagai model yang dipilih dalam pengaturan pengguna Anda, sehingga sesi berikutnya dimulai padanya, kecuali [perubahan satu kali pada pilihan Fable 5.1 yang disimpan](#work-with-fable).

482 482 

483### Pengaturan model `opusplan`483### Pengaturan model `opusplan`

484 484 

monitoring-usage.md +290 −282

Details

146 146 

147### Kontrol kardinalitas metrik147### Kontrol kardinalitas metrik

148 148 

149Variabel lingkungan berikut mengontrol atribut mana yang disertakan dalam metrik untuk mengelola kardinalitas:149Environment variable berikut mengontrol atribut mana yang disertakan dalam metrik dan event untuk mengelola kardinalitas:

150 150 

151| Variabel Lingkungan | Deskripsi | Nilai Default | Contoh untuk Menonaktifkan |151| Variabel Lingkungan | Deskripsi | Nilai Default | Contoh untuk Menonaktifkan |

152| - | - | - | - |152| - | - | - | - |

153| `OTEL_METRICS_INCLUDE_SESSION_ID` | Sertakan atribut session.id dan, pada sesi cloud, ccr.session.id dalam metrik | `true` | `false` |153| `OTEL_METRICS_INCLUDE_SESSION_ID` | Sertakan atribut session.id dan, pada sesi cloud, ccr.session.id dalam metrik dan event | `true` | `false` |

154| `OTEL_METRICS_INCLUDE_VERSION` | Sertakan atribut app.version dalam metrik | `false` | `true` |154| `OTEL_METRICS_INCLUDE_VERSION` | Sertakan atribut app.version dalam metrik dan event | `false` | `true` |

155| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Sertakan atribut user.account\_uuid dan user.account\_id dalam metrik | `true` | `false` |155| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Sertakan atribut user.account\_uuid dan user.account\_id dalam metrik dan event | `true` | `false` |

156| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Sertakan atribut app.entrypoint dalam metrik | `false` | `true` |156| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Sertakan atribut app.entrypoint dalam metrik dan event | `false` | `true` |

157| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Sertakan kunci dari `OTEL_RESOURCE_ATTRIBUTES` sebagai atribut pada titik data metrik | `true` | `false` |157| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Sertakan kunci dari `OTEL_RESOURCE_ATTRIBUTES` sebagai atribut pada titik data metrik dan event | `true` | `false` |

158| `OTEL_METRICS_INCLUDE_REPOSITORY` | Sertakan atribut identitas repositori `vcs.*` [repository identity attributes](#repository-attributes) pada metrik dan event. Memerlukan Claude Code v2.1.269 atau lebih baru | `false` | `true` |158| `OTEL_METRICS_INCLUDE_REPOSITORY` | Sertakan atribut identitas repositori `vcs.*` [repository identity attributes](#repository-attributes) pada metrik dan event. Memerlukan Claude Code v2.1.269 atau lebih baru | `false` | `true` |

159 159 

160Kardinalitas yang lebih rendah umumnya berarti kinerja yang lebih baik dan biaya penyimpanan yang lebih rendah tetapi data yang kurang granular untuk analisis.160Kardinalitas yang lebih rendah umumnya berarti kinerja yang lebih baik dan biaya penyimpanan yang lebih rendah tetapi data yang kurang granular untuk analisis.


523export OTEL_METRICS_EXPORTER=otlp523export OTEL_METRICS_EXPORTER=otlp

524export OTEL_LOGS_EXPORTER=otlp524export OTEL_LOGS_EXPORTER=otlp

525export OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=http/protobuf525export OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=http/protobuf

526export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://metrics.example.com:4318526export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://metrics.example.com:4318/v1/metrics

527export OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=grpc527export OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=grpc

528export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.example.com:4317528export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.example.com:4317

529```529```


571 571 

572Untuk mengatribusikan telemetri secara lebih detail, gunakan opsi berikut:572Untuk mengatribusikan telemetri secara lebih detail, gunakan opsi berikut:

573 573 

574* **Identifikasi sesi Claude Tag**: atur `OTEL_METRICS_INCLUDE_ENTRYPOINT=true`, seperti yang dijelaskan di bawah [Kontrol kardinalitas metrik](#metrics-cardinality-control). Metrik kemudian membawa `app.entrypoint`, yang nilainya adalah `claude-in-slack` untuk sesi Claude Tag.574* **Identifikasi sesi Claude Tag**: atur `OTEL_METRICS_INCLUDE_ENTRYPOINT=true`, seperti yang dijelaskan di bawah [Kontrol kardinalitas metrik](#metrics-cardinality-control). Metrik dan acara kemudian membawa `app.entrypoint`, yang nilainya adalah `claude-in-slack` untuk sesi Claude Tag.

575* **Tambahkan atribut kustom**: atur [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) di tempat yang sama di mana Anda menetapkan variabel `OTEL_*` lainnya untuk sesi tersebut. Jika Anda `export` di [skrip setup](https://code.claude.com/docs/id/cloud-environments.md#setup-scripts) lingkungan sebagai gantinya, nilainya tidak mencapai Claude Code: skrip setup adalah skrip Bash terpisah yang berjalan sebelum Claude Code diluncurkan, dan variabel yang diekspor berakhir dengannya.575* **Tambahkan atribut kustom**: atur [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) di tempat yang sama di mana Anda menetapkan variabel `OTEL_*` lainnya untuk sesi tersebut. Jika Anda `export` di [skrip setup](https://code.claude.com/docs/id/cloud-environments.md#setup-scripts) lingkungan sebagai gantinya, nilainya tidak mencapai Claude Code: skrip setup adalah skrip Bash terpisah yang berjalan sebelum Claude Code diluncurkan, dan variabel yang diekspor berakhir dengannya.

576 576 

577Dalam sesi saluran Claude Tag, Claude bekerja sebagai [identitas bersama](https://code.claude.com/docs/id/cloud-environments.md#set-the-environment-a-claude-tag-channel-uses) organisasi Anda daripada sebagai anggota apa pun, jadi jangan andalkan atribut `user.*` untuk mengidentifikasi siapa yang menandai Claude.577Dalam sesi saluran Claude Tag, Claude bekerja sebagai [identitas bersama](https://code.claude.com/docs/id/cloud-environments.md#set-the-environment-a-claude-tag-channel-uses) organisasi Anda daripada sebagai anggota apa pun, jadi jangan andalkan atribut `user.*` untuk mengidentifikasi siapa yang menandai Claude.


587| `session.id` | ID sesi milik Claude Code sendiri, yang diganti oleh `/clear` | `OTEL_METRICS_INCLUDE_SESSION_ID` (default: true) |587| `session.id` | ID sesi milik Claude Code sendiri, yang diganti oleh `/clear` | `OTEL_METRICS_INCLUDE_SESSION_ID` (default: true) |

588| `ccr.session.id` | Pengidentifikasi sesi cloud, yaitu nilai `CLAUDE_CODE_REMOTE_SESSION_ID`, pada sesi yang berjalan di [lingkungan cloud](https://code.claude.com/docs/id/cloud-environments.md) | `OTEL_METRICS_INCLUDE_SESSION_ID` (default: true) |588| `ccr.session.id` | Pengidentifikasi sesi cloud, yaitu nilai `CLAUDE_CODE_REMOTE_SESSION_ID`, pada sesi yang berjalan di [lingkungan cloud](https://code.claude.com/docs/id/cloud-environments.md) | `OTEL_METRICS_INCLUDE_SESSION_ID` (default: true) |

589| `app.version` | Versi Claude Code saat ini | `OTEL_METRICS_INCLUDE_VERSION` (default: false) |589| `app.version` | Versi Claude Code saat ini | `OTEL_METRICS_INCLUDE_VERSION` (default: false) |

590| `app.entrypoint` | Cara sesi diluncurkan, seperti `cli`, `sdk-cli`, `sdk-ts`, `sdk-py`, `claude-vscode`, atau `claude-in-slack` untuk sesi Claude Tag | `OTEL_METRICS_INCLUDE_ENTRYPOINT` (default: false) |590| `app.entrypoint` | Cara sesi diluncurkan, seperti `cli`, `sdk-cli`, `sdk-ts`, `sdk-py`, `claude-vscode`, `claude-desktop` untuk sesi tab Code Claude Desktop di luar cloud, `claude-desktop-3p` untuk sesi yang sama pada [deployment pihak ketiga](https://claude.com/docs/third-party/claude-desktop/overview), atau `claude-in-slack` untuk sesi Claude Tag. Nilai sesi cloud mencakup `remote`, serta `remote_desktop` dan `remote_mobile` untuk sesi yang Anda mulai dari Claude Desktop atau aplikasi seluler | `OTEL_METRICS_INCLUDE_ENTRYPOINT` (default: false) |

591| `organization.id` | UUID organisasi (saat terautentikasi) | Selalu disertakan jika tersedia |591| `organization.id` | UUID organisasi (saat terautentikasi) | Selalu disertakan jika tersedia |

592| `user.account_uuid` | UUID akun (saat terautentikasi) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (default: true) |592| `user.account_uuid` | UUID akun (saat terautentikasi) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (default: true) |

593| `user.account_id` | ID akun dalam format bertag yang sesuai dengan API admin Anthropic (saat terautentikasi), seperti `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (default: true) |593| `user.account_id` | ID akun dalam format bertag yang sesuai dengan API admin Anthropic (saat terautentikasi), seperti `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (default: true) |

594| `user.id` | Pengidentifikasi anonim acak yang dibuat pada saat pertama kali dijalankan dan disimpan di `~/.claude.json`. Pengidentifikasi ini tidak berisi informasi pribadi dan tidak diturunkan dari akun Claude Anda. Menghapus file tersebut akan menghasilkan nilai baru yang tidak terkait pada saat dijalankan berikutnya. | Selalu disertakan |594| `user.id` | Pengidentifikasi anonim acak yang dibuat saat pertama kali dijalankan dan disimpan di `~/.claude.json`. Pengidentifikasi ini tidak berisi informasi pribadi dan tidak diturunkan dari akun Claude Anda. Menghapus file tersebut akan menghasilkan nilai baru yang tidak terkait pada eksekusi berikutnya. | Selalu disertakan |

595| `user.email` | Alamat email pengguna, dari proses masuk Anda atau, dalam [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), dari kredensial milik sesi itu sendiri | Selalu disertakan jika tersedia |595| `user.email` | Alamat email pengguna, dari proses masuk Anda atau, dalam [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), dari kredensial milik sesi itu sendiri | Selalu disertakan jika tersedia |

596| `terminal.type` | Jenis terminal, seperti `iTerm.app`, `vscode`, `cursor`, atau `tmux` | Selalu disertakan jika terdeteksi |596| `terminal.type` | Jenis terminal, seperti `iTerm.app`, `vscode`, `cursor`, atau `tmux` | Selalu disertakan jika terdeteksi |

597| Kunci dari `OTEL_RESOURCE_ATTRIBUTES` | Atribut kustom yang Anda tetapkan, seperti `department` atau `team.id`. Lihat [Dukungan organisasi multi-tim](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (default: true) |597| Kunci dari `OTEL_RESOURCE_ATTRIBUTES` | Atribut kustom yang Anda atur, seperti `department` atau `team.id`. Lihat [Dukungan organisasi multi-tim](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (default: true) |

598| `vcs.repository.url.full`, `vcs.owner.name`, `vcs.repository.name`, `vcs.provider.name` | Identitas repositori sesi, diturunkan dari remote `origin`-nya. Lihat [Atribut repositori](#repository-attributes) | `OTEL_METRICS_INCLUDE_REPOSITORY` (default: false). Memerlukan Claude Code v2.1.269 atau lebih baru |598| `vcs.repository.url.full`, `vcs.owner.name`, `vcs.repository.name`, `vcs.provider.name` | Identitas repositori sesi, yang diturunkan dari remote `origin`-nya. Lihat [Atribut repositori](#repository-attributes) | `OTEL_METRICS_INCLUDE_REPOSITORY` (default: false). Memerlukan Claude Code v2.1.269 atau yang lebih baru |

599 599 

600Dalam sesi yang masuk ke [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway) melalui `/login`, CLI membubuhkan identitas yang terautentikasi pada ekspor: `user.id` adalah subjek IdP, `user.email` adalah email yang digunakan untuk masuk, dan `user.groups` membawa keanggotaan grup IdP sebagai string yang dipisahkan koma. Setiap ekspor juga membawa `identity.source: gateway-oidc`. Identitas gateway diterapkan terakhir, sehingga kunci `user.*` dan `identity.*` yang ditetapkan melalui `OTEL_RESOURCE_ATTRIBUTES` diabaikan pada sesi tersebut.600Dalam sesi yang masuk ke [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway) melalui `/login`, CLI menandai ekspor dengan identitas yang terautentikasi: `user.id` adalah subjek IdP, `user.email` adalah email yang digunakan untuk masuk, dan `user.groups` membawa keanggotaan grup IdP sebagai string yang dipisahkan koma. Setiap ekspor juga membawa `identity.source: gateway-oidc`. Identitas gateway diterapkan terakhir, sehingga kunci `user.*` dan `identity.*` yang diatur melalui `OTEL_RESOURCE_ATTRIBUTES` diabaikan pada sesi tersebut.

601 601 

602> [!NOTE]602> [!NOTE]

603>603>

604> Event yang dicatat Claude Code sebelum developer masuk tidak membawa identitas gateway. Saat Claude Code membuka sesi dalam keadaan keluar dari gateway, misalnya setelah [gateway mengakhiri proses masuk](https://code.claude.com/docs/id/errors.md#cloud-gateway-session-expired), event startup yang dicatat sebelum masuk membawa `user.id` anonim dan tidak ada `identity.source`. Event ini mencakup [`managed_settings_resolved`](#managed-settings-resolved-event), [`plugin_loaded`](#plugin-loaded-event), dan [`mcp_server_connection`](#mcp-server-connection-event).604> Event yang dicatat Claude Code sebelum developer masuk tidak membawa identitas gateway. Saat Claude Code membuka sesi dalam keadaan keluar dari gateway, misalnya setelah [gateway mengakhiri proses masuk](https://code.claude.com/docs/id/errors.md#cloud-gateway-session-expired), event startup yang dicatat sebelum masuk membawa `user.id` anonim dan tidak membawa `identity.source`. Event ini mencakup [`managed_settings_resolved`](#managed-settings-resolved-event), [`plugin_loaded`](#plugin-loaded-event), dan [`mcp_server_connection`](#mcp-server-connection-event).

605 605 

606Untuk atribut identitas pada sesi Claude Desktop dan Cowork yang terhubung melalui gateway, lihat [referensi `telemetry` gateway](https://code.claude.com/docs/id/claude-apps-gateway-config#telemetry).606Untuk atribut identitas pada sesi Claude Desktop dan Cowork yang terhubung melalui gateway, lihat [referensi `telemetry` gateway](https://code.claude.com/docs/id/claude-apps-gateway-config#telemetry).

607 607 

608Event juga menyertakan atribut berikut. Atribut ini tidak pernah dilampirkan ke metrik karena akan menyebabkan kardinalitas yang tidak terbatas:608Event juga menyertakan atribut berikut. Atribut ini tidak pernah dilampirkan ke metrik karena akan menyebabkan kardinalitas yang tidak terbatas:

609 609 

610* `prompt.id`: UUID yang menghubungkan prompt pengguna dengan semua event berikutnya hingga prompt selanjutnya. Lihat [Atribut korelasi event](#event-correlation-attributes).610* `prompt.id`: UUID yang mengorelasikan prompt pengguna dengan semua event berikutnya hingga prompt selanjutnya. Lihat [Atribut korelasi event](#event-correlation-attributes).

611* `workspace.host_paths`: direktori workspace host yang dipilih di aplikasi desktop, sebagai array string611* `workspace.host_paths`: direktori workspace host yang dipilih di aplikasi desktop, sebagai array string

612* `workflow.run_id`: pengidentifikasi run, berawalan `wf_`, pada event API dan tool yang dipancarkan oleh agent yang termasuk dalam run tool [Workflow](https://code.claude.com/docs/id/workflows.md). Memfilter event berdasarkan satu `workflow.run_id` akan merekonstruksi permintaan API dan hasil tool dari run tersebut. Pengidentifikasi ini mencakup agent yang dibuat oleh skrip workflow dan agent apa pun yang pada gilirannya dibuat oleh agent tersebut, seperti pemanggilan skill. Nilainya cocok dengan pengidentifikasi run yang dilaporkan dalam hasil tool Workflow.612* `workflow.run_id`: pengidentifikasi eksekusi, berawalan `wf_`, pada event API dan tool yang dipancarkan oleh agent yang termasuk dalam eksekusi tool [Workflow](https://code.claude.com/docs/id/workflows.md). Memfilter event berdasarkan satu `workflow.run_id` akan merekonstruksi permintaan API dan hasil tool dari eksekusi tersebut. Pengidentifikasi ini mencakup agent yang dimunculkan oleh skrip workflow dan agent apa pun yang pada gilirannya dimunculkan oleh agent tersebut, seperti pemanggilan skill. Nilainya cocok dengan pengidentifikasi eksekusi yang dilaporkan dalam hasil tool Workflow.

613* `workflow.name`: nama workflow, yaitu `meta.name` dari skripnya, dipancarkan bersama `workflow.run_id`. Nama workflow bawaan muncul apa adanya ketika run menjalankan skrip bawaan yang tidak dimodifikasi. Nama yang dibuat pengguna, termasuk salinan skrip bawaan yang telah diedit, diganti dengan `custom` kecuali `OTEL_LOG_TOOL_DETAILS=1` ditetapkan.613* `workflow.name`: nama workflow, yaitu `meta.name` skripnya, dipancarkan bersama `workflow.run_id`. Nama workflow bawaan muncul apa adanya saat eksekusi menjalankan skrip bawaan yang tidak dimodifikasi. Nama yang dibuat pengguna, termasuk salinan skrip bawaan yang telah diedit, diganti dengan `custom` kecuali jika `OTEL_LOG_TOOL_DETAILS=1` diatur.

614* `agent_id`: pengidentifikasi [subagent](https://code.claude.com/docs/id/sub-agents.md) yang memunculkan event, seperti `a3f2c1b4d5e6f7a80`. Event yang membawanya mencakup event API dan tool milik subagent, event [`assistant_response`](#assistant-response-event) miliknya, dan [`subagent_completed`](#subagent-completed-event) untuk subagent yang telah selesai. Tidak ada pada event sesi utama dan event [rekan tim dalam proses](https://code.claude.com/docs/id/agent-teams.md#choose-a-display-mode). [`agent_id` span](#span-attributes) milik subagent memiliki nilai yang sama, atau menambahkan label setelah `a` di awal seperti pada `acompact-3f2c1b4d5e6f7a80`. Memerlukan Claude Code v2.1.310 atau yang lebih baru614* `agent_id`: pengidentifikasi [subagent](https://code.claude.com/docs/id/sub-agents.md) yang memunculkan event, seperti `a3f2c1b4d5e6f7a80`. Event yang membawanya mencakup event API dan tool milik subagent, event [`assistant_response`](#assistant-response-event) miliknya, dan [`subagent_completed`](#subagent-completed-event) untuk subagent yang telah selesai. Tidak ada pada event sesi utama dan event [rekan tim dalam proses](https://code.claude.com/docs/id/agent-teams.md#choose-a-display-mode). [`agent_id` span](#span-attributes) milik subagent memiliki nilai yang sama, atau menambahkan label setelah `a` di awal seperti pada `acompact-3f2c1b4d5e6f7a80`. Memerlukan Claude Code v2.1.310 atau yang lebih baru

615* `parent_agent_id`: `agent_id` dari agent yang membuat atau terakhir melanjutkan subagent yang memunculkan event. Tidak ada ketika agent tersebut adalah sesi utama. Memerlukan Claude Code v2.1.310 atau yang lebih baru615* `parent_agent_id`: `agent_id` dari agent yang memunculkan atau terakhir melanjutkan subagent yang memunculkan event. Tidak ada jika agent tersebut adalah sesi utama. Memerlukan Claude Code v2.1.310 atau yang lebih baru

616 616 

617#### Atribut repositori617#### Atribut repositori

618 618 

619Tetapkan `OTEL_METRICS_INCLUDE_REPOSITORY=true` untuk menandai metrik dan event dengan identitas repositori sesi, sehingga collector bersama dapat mengatribusikan penggunaan per repositori. Memerlukan Claude Code v2.1.269 atau lebih baru.619Atur `OTEL_METRICS_INCLUDE_REPOSITORY=true` untuk menandai metrik dan event dengan identitas repositori sesi, sehingga collector bersama dapat mengatribusikan penggunaan per repositori. Memerlukan Claude Code v2.1.269 atau yang lebih baru.

620 620 

621Claude Code menurunkan atribut ini sekali per sesi dari remote `origin` repositori. Ketika remote HTTPS dan SSH dari suatu repositori menyebutkan host dan path yang sama, seperti pada GitHub, GitLab, dan Bitbucket Cloud, keduanya menghasilkan nilai yang identik:621Claude Code menurunkan atribut ini sekali per sesi dari remote `origin` repositori. Saat remote HTTPS dan SSH dari sebuah repositori menyebutkan host yang sama dan path yang sama, seperti di GitHub, GitLab, dan Bitbucket Cloud, keduanya menghasilkan nilai yang identik:

622 622 

623| Atribut | Nilai |623| Atribut | Nilai |

624| - | - |624| - | - |

625| `vcs.repository.url.full` | URL browser repositori tanpa `.git`, seperti `https://github.com/example-org/example-repo` |625| `vcs.repository.url.full` | URL browser repositori tanpa `.git`, seperti `https://github.com/example-org/example-repo` |

626| `vcs.owner.name` | Path pemilik atau grup, seperti `example-org`; dihilangkan ketika path remote hanya memiliki satu segmen |626| `vcs.owner.name` | Path pemilik atau grup, seperti `example-org`; dihilangkan jika path remote hanya memiliki satu segmen |

627| `vcs.repository.name` | Nama repositori saja, seperti `example-repo` |627| `vcs.repository.name` | Nama repositori saja, seperti `example-repo` |

628| `vcs.provider.name` | `github`, `gitlab`, `bitbucket`, atau `gitea` ketika Claude Code mengenali host atau bentuk URL remote sebagai salah satu penyedia tersebut; dihilangkan jika tidak |628| `vcs.provider.name` | `github`, `gitlab`, `bitbucket`, atau `gitea` saat Claude Code mengenali host atau bentuk URL remote sebagai salah satu penyedia tersebut; dihilangkan jika tidak |

629 629 

630Nilai diubah menjadi huruf kecil, dan kredensial, query string, serta fragmen dari URL remote tidak pernah muncul di dalamnya. Atribut dihilangkan ketika sesi tidak memiliki remote `origin`, ketika remote tidak berbentuk URL, atau ketika satu-satunya repositori yang melingkupinya adalah direktori home Anda.630Nilai-nilai ini diubah menjadi huruf kecil, dan kredensial, query string, serta fragmen dari URL remote tidak pernah muncul di dalamnya. Atribut ini dihilangkan jika sesi tidak memiliki remote `origin`, jika remote tidak berbentuk URL, atau jika satu-satunya repositori yang melingkupinya adalah direktori home Anda.

631 631 

632Untuk mendapatkan atribut ini dari [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), tetapkan variabel telemetri, termasuk `OTEL_METRICS_INCLUDE_REPOSITORY`, pada [lingkungan cloud](https://code.claude.com/docs/id/cloud-environments.md#set-environment-variables)-nya. Izinkan juga domain collector Anda dalam [akses jaringan](https://code.claude.com/docs/id/cloud-environments.md#network-access) lingkungan tersebut.632Untuk mendapatkan atribut ini dari [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), atur variabel telemetri, termasuk `OTEL_METRICS_INCLUDE_REPOSITORY`, pada [lingkungan cloud](https://code.claude.com/docs/id/cloud-environments.md#set-environment-variables)-nya. Izinkan juga domain collector Anda dalam [akses jaringan](https://code.claude.com/docs/id/cloud-environments.md#network-access) lingkungan tersebut.

633 633 

634Kunci `vcs.*` yang Anda deklarasikan di [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) menggantikan nilai turunan untuk kunci tersebut. Jika Anda mendeklarasikan `vcs.repository.url.full`, Claude Code tidak pernah membaca remote dan hanya melaporkan kunci yang Anda deklarasikan.634Kunci `vcs.*` yang Anda deklarasikan dalam [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) menggantikan nilai turunan untuk kunci tersebut. Jika Anda mendeklarasikan `vcs.repository.url.full`, Claude Code tidak pernah membaca remote dan hanya melaporkan kunci yang Anda deklarasikan.

635 635 

636Jika clone HTTPS dan SSH dari satu repositori melaporkan nilai yang berbeda, seperti pada instalasi self-hosted yang URL clone HTTPS-nya membawa awalan path yang tidak dimiliki URL SSH, deklarasikan `vcs.repository.url.full` di `OTEL_RESOURCE_ATTRIBUTES` bersama setiap kunci `vcs.*` lain yang ingin Anda laporkan. Setiap clone kemudian melaporkan identitas yang Anda deklarasikan.636Jika clone HTTPS dan SSH dari satu repositori melaporkan nilai yang berbeda, seperti pada instalasi self-hosted yang URL clone HTTPS-nya membawa prefiks path yang tidak dimiliki URL SSH, deklarasikan `vcs.repository.url.full` dalam `OTEL_RESOURCE_ATTRIBUTES` bersama setiap kunci `vcs.*` lain yang ingin Anda laporkan. Setiap clone kemudian melaporkan identitas yang Anda deklarasikan.

637 637 

638Atribut ini hanya mengalir ke exporter Anda sendiri; telemetri Anthropic membuang setiap kunci `vcs.*`.638Atribut ini hanya mengalir ke exporter milik Anda sendiri; telemetri Anthropic membuang setiap kunci `vcs.*`.

639 639 

640### Metrik640### Metrik

641 641 

642Claude Code mengekspor metrik berikut. Kolom Unit menunjukkan string unit OpenTelemetry yang dilampirkan pada setiap metrik; metrik hitungan tidak membawa unit.642Claude Code mengekspor metrik berikut. Kolom Unit menampilkan string unit OpenTelemetry yang dilampirkan ke setiap metrik; metrik hitungan tidak membawa unit.

643 643 

644| Nama Metrik | Deskripsi | Unit |644| Nama Metrik | Deskripsi | Unit |

645| - | - | - |645| - | - | - |

646| `claude_code.session.count` | Jumlah sesi CLI yang dimulai | tidak ada |646| `claude_code.session.count` | Jumlah sesi yang dimulai | tidak ada |

647| `claude_code.lines_of_code.count` | Jumlah baris kode yang dimodifikasi | tidak ada |647| `claude_code.lines_of_code.count` | Jumlah baris kode yang dimodifikasi | tidak ada |

648| `claude_code.pull_request.count` | Jumlah pull request yang dibuat | tidak ada |648| `claude_code.pull_request.count` | Jumlah pull request yang dibuat | tidak ada |

649| `claude_code.commit.count` | Jumlah commit git yang dibuat | tidak ada |649| `claude_code.commit.count` | Jumlah commit git yang dibuat | tidak ada |


652| `claude_code.code_edit_tool.decision` | Jumlah keputusan izin tool pengeditan kode | tidak ada |652| `claude_code.code_edit_tool.decision` | Jumlah keputusan izin tool pengeditan kode | tidak ada |

653| `claude_code.active_time.total` | Total waktu aktif | s |653| `claude_code.active_time.total` | Total waktu aktif | s |

654 654 

655Ketika `prometheus` adalah satu-satunya exporter yang tercantum di `OTEL_METRICS_EXPORTER`, Claude Code menghilangkan unit `USD`, `tokens`, dan `s` dari metrik yang diekspor agar hasil scrape tetap dalam format teks Prometheus yang valid. Nama metrik tidak berubah, dan konfigurasi yang menggabungkan exporter, seperti `otlp,prometheus`, tetap mempertahankan unit.655Saat `prometheus` adalah satu-satunya exporter yang tercantum dalam `OTEL_METRICS_EXPORTER`, Claude Code menghilangkan unit `USD`, `tokens`, dan `s` dari metrik yang diekspor agar hasil scrape tetap berformat teks Prometheus yang valid. Nama metrik tidak berubah, dan konfigurasi yang menggabungkan beberapa exporter, seperti `otlp,prometheus`, tetap mempertahankan unit.

656 656 

657### Detail metrik657### Detail metrik

658 658 


660 660 

661#### Penghitung sesi661#### Penghitung sesi

662 662 

663Bertambah pada awal setiap sesi.663Bertambah pada awal setiap sesi. Untuk menghitung jumlah orang, lihat [Pemantauan penggunaan](#usage-monitoring).

664 664 

665**Atribut**:665**Atribut**:

666 666 

667* Semua [atribut standar](#standard-attributes)667* Semua [atribut standar](#standard-attributes)

668* `start_type`: Cara sesi dimulai. Salah satu dari `"fresh"`, `"resume"`, `"continue"`, atau `"agents_view"`. Nilai `"agents_view"` mengidentifikasi proses dasbor `claude agents`, yaitu UI lokal yang diluncurkan pengguna, bukan sesi percakapan. Filter berdasarkan nilai ini untuk memisahkan peluncuran proses UI dari sesi percakapan di dasbor Anda.668* `start_type`: Cara sesi dimulai. Salah satu dari `"fresh"`, `"resume"`, `"continue"`, atau `"agents_view"`. Nilai `"agents_view"` mengidentifikasi proses dashboard `claude agents`, yaitu UI lokal yang diluncurkan pengguna, bukan sesi percakapan. Filter berdasarkan nilai ini untuk memisahkan peluncuran proses UI dari sesi percakapan di dashboard Anda.

669 669 

670#### Penghitung baris kode670#### Penghitung baris kode

671 671 

672Bertambah ketika kode ditambahkan atau dihapus.672Bertambah saat kode ditambahkan atau dihapus.

673 673 

674**Atribut**:674**Atribut**:

675 675 


679 679 

680#### Penghitung pull request680#### Penghitung pull request

681 681 

682Bertambah ketika Claude Code membuat pull request atau merge request melalui perintah shell atau tool MCP.682Bertambah saat Claude Code membuat pull request atau merge request melalui perintah shell atau tool MCP.

683 683 

684**Atribut**:684**Atribut**:

685 685 


687 687 

688#### Penghitung commit688#### Penghitung commit

689 689 

690Bertambah ketika membuat commit git melalui Claude Code.690Bertambah saat membuat commit git melalui Claude Code.

691 691 

692**Atribut**:692**Atribut**:

693 693 


697 697 

698Bertambah setelah setiap permintaan API.698Bertambah setelah setiap permintaan API.

699 699 

700Atribut `agent.name`, `skill.name`, `plugin.name`, `mcp_server.name`, dan `mcp_tool.name` masing-masing menyamarkan sebagian nama menjadi placeholder `"custom"` atau `"third-party"` secara default. Jika Anda menetapkan `OTEL_LOG_TOOL_DETAILS=1`, atribut tersebut membawa nama sebenarnya. Sebelum v2.1.273, penghitung biaya dan token serta event `api_request`, `api_error`, dan `api_refusal` membawa nilai yang disamarkan meskipun `OTEL_LOG_TOOL_DETAILS=1` ditetapkan.700Atribut `agent.name`, `skill.name`, `plugin.name`, `mcp_server.name`, dan `mcp_tool.name` masing-masing menyamarkan beberapa nama menjadi placeholder `"custom"` atau `"third-party"` secara default. Jika Anda mengatur `OTEL_LOG_TOOL_DETAILS=1`, atribut tersebut membawa nama sebenarnya. Sebelum v2.1.273, penghitung biaya dan token serta event `api_request`, `api_error`, dan `api_refusal` membawa nilai yang disamarkan bahkan dengan `OTEL_LOG_TOOL_DETAILS=1` diatur.

701 701 

702**Atribut**:702**Atribut**:

703 703 

704* Semua [atribut standar](#standard-attributes)704* Semua [atribut standar](#standard-attributes)

705* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-5")705* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-5")

706* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`706* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`

707* `speed`: `"fast"` ketika permintaan menggunakan fast mode. Tidak ada jika sebaliknya707* `speed`: `"fast"` saat permintaan menggunakan fast mode. Tidak ada jika tidak demikian

708* `effort`: [Tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang diterapkan pada permintaan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Tidak ada ketika Claude Code tidak mengirimkan tingkat effort, misalnya pada model yang tidak mendukung effort.708* `effort`: [Tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang diterapkan pada permintaan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Tidak ada saat Claude Code tidak mengirim tingkat effort, misalnya pada model yang tidak mendukung effort.

709* `agent.name`: Jenis subagent yang mengeluarkan permintaan. Nama agent bawaan dan agent dari plugin marketplace resmi muncul apa adanya. Nama agent lain yang ditentukan pengguna diganti dengan `"custom"`. Tidak ada ketika permintaan tidak dikeluarkan oleh jenis subagent bernama.709* `agent.name`: Jenis subagent yang mengeluarkan permintaan. Nama agent bawaan dan agent dari plugin marketplace resmi muncul apa adanya. Nama agent lain yang ditentukan pengguna diganti dengan `"custom"`. Tidak ada jika permintaan tidak dikeluarkan oleh jenis subagent bernama.

710* `skill.name`: Skill yang aktif untuk permintaan, ditetapkan oleh tool Skill atau perintah `/`, atau diwarisi oleh subagent yang dimunculkan. Nama skill bawaan, yang dibundel, yang ditentukan pengguna, dan dari plugin marketplace resmi muncul apa adanya. Nama skill plugin pihak ketiga diganti dengan `"third-party"`. Tidak ada ketika tidak ada skill yang aktif.710* `skill.name`: Skill yang aktif untuk permintaan, diatur oleh tool Skill atau perintah `/`, atau diwarisi oleh subagent yang dimunculkan. Nama skill bawaan, yang dibundel, yang ditentukan pengguna, dan plugin marketplace resmi muncul apa adanya. Nama skill plugin pihak ketiga diganti dengan `"third-party"`. Tidak ada jika tidak ada skill yang aktif.

711* `plugin.name`: Plugin pemilik ketika skill atau subagent yang aktif disediakan oleh plugin. Nama plugin marketplace resmi muncul apa adanya. Nama plugin pihak ketiga diganti dengan `"third-party"`. Tidak ada ketika baik skill maupun subagent tidak memiliki plugin pemilik.711* `plugin.name`: Plugin pemilik saat skill atau subagent yang aktif disediakan oleh plugin. Nama plugin marketplace resmi muncul apa adanya. Nama plugin pihak ketiga diganti dengan `"third-party"`. Tidak ada jika baik skill maupun subagent tidak memiliki plugin pemilik.

712* `marketplace.name`: Marketplace tempat plugin pemilik diinstal. Hanya dipancarkan untuk plugin marketplace resmi, bahkan ketika `OTEL_LOG_TOOL_DETAILS=1` ditetapkan. Tidak ada jika sebaliknya.712* `marketplace.name`: Marketplace tempat plugin pemilik diinstal. Hanya dipancarkan untuk plugin marketplace resmi, bahkan dengan `OTEL_LOG_TOOL_DETAILS=1` diatur. Tidak ada jika tidak demikian.

713* `mcp_server.name`: Server MCP yang hasil tool-nya dikonsumsi oleh permintaan ini. Nama server bawaan, yang diproksikan claude.ai, dan dari registri resmi muncul apa adanya. Nama server yang dikonfigurasi pengguna diganti dengan `"custom"`. Tidak ada ketika permintaan tidak mengonsumsi hasil tool MCP. Sebelum v2.1.222, Claude Code menetapkan atribut ini pada setiap permintaan setelah panggilan tool MCP, tidak hanya pada permintaan yang mengonsumsi hasil tool, sehingga dasbor yang mengagregasinya menunjukkan penurunan setelah Anda melakukan upgrade.713* `mcp_server.name`: Server MCP yang hasil tool-nya dikonsumsi oleh permintaan ini. Nama server bawaan, yang diproksikan claude.ai, dan registri resmi muncul apa adanya. Nama server yang dikonfigurasi pengguna diganti dengan `"custom"`. Tidak ada jika permintaan tidak mengonsumsi hasil tool MCP. Sebelum v2.1.222, Claude Code mengatur atribut ini pada setiap permintaan setelah panggilan tool MCP, bukan hanya pada permintaan yang mengonsumsi hasil tool, sehingga dashboard yang mengagregasinya menunjukkan penurunan setelah Anda melakukan upgrade.

714* `mcp_tool.name`: Tool MCP yang hasilnya dikonsumsi oleh permintaan ini, dengan perilaku penyamaran dan versi yang sama seperti `mcp_server.name`. Tidak ada ketika permintaan tidak mengonsumsi hasil tool MCP.714* `mcp_tool.name`: Tool MCP yang hasilnya dikonsumsi oleh permintaan ini, dengan perilaku penyamaran dan versi yang sama seperti `mcp_server.name`. Tidak ada jika permintaan tidak mengonsumsi hasil tool MCP.

715 715 

716#### Penghitung token716#### Penghitung token

717 717 


720**Atribut**:720**Atribut**:

721 721 

722* Semua [atribut standar](#standard-attributes)722* Semua [atribut standar](#standard-attributes)

723* `type`: (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`). Jenis `"input"` tidak mencakup token yang dibaca dari atau ditulis ke cache prompt, yang dihitung di bawah `"cacheRead"` dan `"cacheCreation"`. Jenis `"cacheCreation"` menghitung penulisan cache dengan [masa berlaku cache](https://code.claude.com/docs/id/prompt-caching.md#cache-lifetime) lima menit dan satu jam secara bersamaan.723* `type`: (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`). Jenis `"input"` tidak termasuk token yang dibaca dari atau ditulis ke cache prompt, yang dihitung di bawah `"cacheRead"` dan `"cacheCreation"`. Jenis `"cacheCreation"` menghitung penulisan cache dengan [masa berlaku cache](https://code.claude.com/docs/id/prompt-caching.md#cache-lifetime) lima menit dan satu jam secara bersamaan.

724* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-5")724* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-5")

725* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`725* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`

726* `speed`: `"fast"` ketika permintaan menggunakan fast mode. Tidak ada jika sebaliknya726* `speed`: `"fast"` saat permintaan menggunakan fast mode. Tidak ada jika tidak demikian

727* `effort`: [Tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang diterapkan pada permintaan. Lihat [Penghitung biaya](#cost-counter) untuk detailnya.727* `effort`: [Tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang diterapkan pada permintaan. Lihat [Penghitung biaya](#cost-counter) untuk detailnya.

728* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: Atribusi skill, plugin, agent, dan MCP untuk permintaan. Lihat [Penghitung biaya](#cost-counter) untuk definisi dan perilaku penyamaran.728* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: Atribusi skill, plugin, agent, dan MCP untuk permintaan. Lihat [Penghitung biaya](#cost-counter) untuk definisi dan perilaku penyamaran.

729 729 

730#### Penghitung keputusan tool pengeditan kode730#### Penghitung keputusan tool pengeditan kode

731 731 

732Bertambah ketika pengguna menerima atau menolak penggunaan tool Edit, Write, atau NotebookEdit.732Bertambah saat pengguna menerima atau menolak penggunaan tool Edit, Write, atau NotebookEdit.

733 733 

734**Atribut**:734**Atribut**:

735 735 


737* `tool_name`: Nama tool (`"Edit"`, `"Write"`, `"NotebookEdit"`)737* `tool_name`: Nama tool (`"Edit"`, `"Write"`, `"NotebookEdit"`)

738* `decision`: Keputusan pengguna (`"accept"`, `"reject"`)738* `decision`: Keputusan pengguna (`"accept"`, `"reject"`)

739* `source`: Asal keputusan. Salah satu dari `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"`, atau `"user_reject"`. Lihat [Event keputusan tool](#tool-decision-event) untuk arti setiap nilai.739* `source`: Asal keputusan. Salah satu dari `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"`, atau `"user_reject"`. Lihat [Event keputusan tool](#tool-decision-event) untuk arti setiap nilai.

740* `language`: Bahasa pemrograman dari file yang diedit, seperti `"TypeScript"`, `"Python"`, `"JavaScript"`, atau `"Markdown"`. Mengembalikan `"unknown"` untuk ekstensi file yang tidak dikenali.740* `language`: Bahasa pemrograman file yang diedit, seperti `"TypeScript"`, `"Python"`, `"JavaScript"`, atau `"Markdown"`. Mengembalikan `"unknown"` untuk ekstensi file yang tidak dikenali.

741 741 

742#### Penghitung waktu aktif742#### Penghitung waktu aktif

743 743 

744Melacak waktu aktual yang dihabiskan untuk secara aktif menggunakan Claude Code, tidak termasuk waktu diam. Metrik ini bertambah selama interaksi pengguna, seperti mengetik dan membaca respons, dan selama pemrosesan CLI, seperti eksekusi tool dan pembuatan respons AI.744Melacak waktu aktual yang dihabiskan untuk menggunakan Claude Code secara aktif, tidak termasuk waktu menganggur. Metrik ini bertambah selama interaksi pengguna, seperti mengetik dan membaca respons, dan selama pemrosesan CLI, seperti eksekusi tool dan pembuatan respons AI.

745 745 

746**Atribut**:746**Atribut**:

747 747 


750 750 

751### Event751### Event

752 752 

753Claude Code mengekspor event berikut melalui log/event OpenTelemetry (ketika `OTEL_LOGS_EXPORTER` dikonfigurasi):753Claude Code mengekspor event berikut melalui log/event OpenTelemetry (saat `OTEL_LOGS_EXPORTER` dikonfigurasi):

754 754 

755#### Atribut korelasi event755#### Atribut korelasi event

756 756 

757Ketika pengguna mengirimkan prompt, Claude Code dapat melakukan beberapa panggilan API dan menjalankan beberapa tool. Atribut `prompt.id` memungkinkan Anda mengaitkan semua event tersebut kembali ke satu prompt yang memicunya.757Saat pengguna mengirimkan prompt, Claude Code dapat melakukan beberapa panggilan API dan menjalankan beberapa tool. Atribut `prompt.id` memungkinkan Anda mengaitkan semua event tersebut kembali ke satu prompt yang memicunya.

758 758 

759| Atribut | Deskripsi |759| Atribut | Deskripsi |

760| - | - |760| - | - |

761| `prompt.id` | Pengidentifikasi UUID v4 yang menautkan semua event yang dihasilkan saat memproses satu prompt pengguna |761| `prompt.id` | Pengidentifikasi UUID v4 yang menautkan semua event yang dihasilkan saat memproses satu prompt pengguna |

762| `event.sequence` | Penghitung berbasis 0 untuk mengurutkan event, dihitung per proses Claude Code, bukan per sesi |762| `event.sequence` | Penghitung berbasis 0 untuk mengurutkan event, dihitung per proses Claude Code, bukan per sesi |

763| `message.uuid` | UUID pesan sebagaimana disimpan dalam transkrip sesi, yaitu file `~/.claude/projects/*/*.jsonl`. Ada pada `assistant_response`, pada `api_response_body`, dan pada `user_prompt` kecuali untuk dispatch perintah, yang dapat menghasilkan nol atau banyak pesan. Pada `assistant_response` dan `api_response_body`, ini adalah entri transkrip terakhir dari respons, yang menjadi rantai `parentUuid` giliran berikutnya. Memerlukan Claude Code v2.1.274 atau lebih baru pada `api_response_body` |763| `message.uuid` | UUID pesan sebagaimana disimpan dalam transkrip sesi, yaitu file `~/.claude/projects/*/*.jsonl`. Ada pada `assistant_response`, pada `api_response_body`, dan pada `user_prompt` kecuali untuk dispatch perintah, yang dapat menghasilkan nol atau banyak pesan. Pada `assistant_response` dan `api_response_body`, ini adalah entri transkrip terakhir dari respons, yang menjadi rantai `parentUuid` giliran berikutnya. Memerlukan Claude Code v2.1.274 atau yang lebih baru pada `api_response_body` |

764| `request_id` | ID permintaan API yang ditetapkan server, dibaca dari header respons `request-id`, seperti `req_011...`. Pada respons tanpa header `request-id`, seperti pada [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md), nilainya berasal dari header `x-amzn-requestid`. Ada pada `api_request`, `api_error`, `api_refusal`, `assistant_response`, `api_response_body`, [`tool_result`](#tool-result-event), dan [`tool_decision`](#tool-decision-event) ketika respons membawa salah satu header tersebut. Cocok dengan atribut yang sama pada span trace `llm_request`. Sumber `x-amzn-requestid` memerlukan Claude Code v2.1.282 atau yang lebih baru |764| `request_id` | ID permintaan API yang ditetapkan server, dibaca dari header respons `request-id`, seperti `req_011...`. Pada respons tanpa header `request-id`, seperti pada [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md), nilainya berasal dari header `x-amzn-requestid`. Ada pada `api_request`, `api_error`, `api_refusal`, `assistant_response`, `api_response_body`, [`tool_result`](#tool-result-event), dan [`tool_decision`](#tool-decision-event) saat respons membawa salah satu header tersebut. Cocok dengan atribut yang sama pada span trace `llm_request`. Sumber `x-amzn-requestid` memerlukan Claude Code v2.1.282 atau yang lebih baru |

765| `client_request_id` | UUID yang dibuat klien dan dikirim sebagai header permintaan `x-client-request-id`. Ada pada `api_request` dan `api_error` pada koneksi API pihak pertama; tidak ada pada backend penyedia pihak ketiga dan ketika permintaan dicoba ulang melalui fallback non-streaming. Memasangkan permintaan dengan responsnya dan tetap tersedia untuk kegagalan seperti timeout yang tidak pernah menghasilkan `request_id` server. Cocok dengan atribut yang sama pada span trace `llm_request` |765| `client_request_id` | UUID yang dibuat klien dan dikirim sebagai header permintaan `x-client-request-id`. Ada pada `api_request` dan `api_error` pada koneksi API pihak pertama; tidak ada pada backend penyedia pihak ketiga dan saat permintaan dicoba ulang melalui fallback non-streaming. Memasangkan permintaan dengan responsnya dan tetap tersedia untuk kegagalan seperti timeout yang tidak pernah menghasilkan `request_id` server. Cocok dengan atribut yang sama pada span trace `llm_request` |

766 766 

767Untuk melacak semua aktivitas yang dipicu oleh satu prompt, filter event Anda berdasarkan nilai `prompt.id` tertentu. Ini akan mengembalikan event user\_prompt, event api\_request apa pun, dan event tool\_result apa pun yang terjadi saat memproses prompt tersebut.767Untuk melacak semua aktivitas yang dipicu oleh satu prompt, filter event Anda berdasarkan nilai `prompt.id` tertentu. Ini mengembalikan event user\_prompt, event api\_request apa pun, dan event tool\_result apa pun yang terjadi saat memproses prompt tersebut.

768 768 

769`event.sequence` dimulai dari 0 setiap kali proses Claude Code dimulai dan bertambah selama masa hidup proses tersebut. Penghitung ini terus berjalan melewati `/clear`, yang menetapkan `session.id` baru. Jika Anda [melanjutkan sesi tanpa fork](https://code.claude.com/docs/id/how-claude-code-works.md#resume-or-fork-sessions), sesi tetap mempertahankan `session.id`-nya tetapi mengambil nilai `event.sequence` dari proses yang melanjutkannya, sehingga dalam satu sesi, event yang lebih baru dapat membawa nilai yang lebih rendah daripada event sebelumnya, atau mengulang nilai yang sama. Untuk mengurutkan event suatu sesi, urutkan berdasarkan `event.timestamp` dan gunakan `event.sequence` untuk mengurutkan event yang memiliki timestamp yang sama.769`event.sequence` dimulai dari 0 setiap kali proses Claude Code dimulai dan terus bertambah selama masa hidup proses tersebut. Penghitung ini terus berjalan melewati `/clear`, yang menetapkan `session.id` baru. Jika Anda [melanjutkan sesi tanpa fork](https://code.claude.com/docs/id/how-claude-code-works.md#resume-or-fork-sessions), sesi tersebut mempertahankan `session.id`-nya tetapi mengambil nilai `event.sequence` dari proses yang melanjutkannya, sehingga dalam satu sesi, event yang lebih akhir dapat membawa nilai yang lebih rendah daripada event sebelumnya, atau mengulang suatu nilai. Untuk mengurutkan event dalam sebuah sesi, urutkan berdasarkan `event.timestamp` dan gunakan `event.sequence` untuk mengurutkan event yang memiliki timestamp yang sama.

770 770 

771Untuk rekonstruksi tingkat pesan, setiap kelas event membawa kunci yang cocok dengan sebuah field dalam transkrip sesi. Format entri transkrip bersifat [internal bagi Claude Code](https://code.claude.com/docs/id/sessions.md#where-transcripts-are-stored) dan berubah antar versi, sehingga pipeline yang melakukan join pada field ini dapat rusak pada rilis mana pun; perlakukan join tersebut sebagai spesifik versi, bukan kontrak yang stabil:771Untuk rekonstruksi tingkat pesan, setiap kelas event membawa kunci yang cocok dengan sebuah field dalam transkrip sesi. Format entri transkrip bersifat [internal bagi Claude Code](https://code.claude.com/docs/id/sessions.md#where-transcripts-are-stored) dan berubah antarversi, sehingga pipeline yang melakukan join pada field ini dapat rusak pada rilis mana pun; perlakukan join tersebut sebagai spesifik versi, bukan kontrak yang stabil:

772 772 

773* `message.uuid` pada `user_prompt`, `assistant_response`, dan `api_response_body`773* `message.uuid` pada `user_prompt`, `assistant_response`, dan `api_response_body`

774* `request_id` pada event API, disimpan sebagai `requestId` pada entri asisten dalam transkrip774* `request_id` pada event API, disimpan sebagai `requestId` pada entri assistant di transkrip

775* `tool_use_id` pada event `tool_result` dan `tool_decision`, serta pada event `safety_event` kecuali yang untuk [akhir giliran](#safety-event)775* `tool_use_id` pada event `tool_result` dan `tool_decision`, serta pada event `safety_event` kecuali yang untuk [akhir giliran](#safety-event)

776 776 

777#### Event prompt pengguna777#### Event prompt pengguna

778 778 

779Dicatat ketika prompt dikirimkan, termasuk pada giliran yang dimulai Claude Code dengan sendirinya.779Dicatat saat prompt dikirimkan, termasuk pada giliran yang dimulai Claude Code sendiri.

780 780 

781**Nama Event**: `claude_code.user_prompt`781**Nama Event**: `claude_code.user_prompt`

782 782 


785* Semua [atribut standar](#standard-attributes)785* Semua [atribut standar](#standard-attributes)

786* `event.name`: `"user_prompt"`786* `event.name`: `"user_prompt"`

787* `event.timestamp`: Timestamp ISO 8601787* `event.timestamp`: Timestamp ISO 8601

788* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)788* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

789* `prompt_length`: Panjang prompt789* `prompt_length`: Panjang prompt

790* `prompt`: Konten prompt. Disamarkan secara default. Tetapkan `OTEL_LOG_USER_PROMPTS=1` untuk menyertakannya790* `prompt`: Konten prompt. Disamarkan secara default. Atur `OTEL_LOG_USER_PROMPTS=1` untuk menyertakannya

791* `prompt_text`: Nilai yang sama dengan `prompt`, disamarkan dengan kondisi yang sama. Backend yang menyimpan nama atribut bertitik sebagai objek bersarang membaca `prompt.id` sebagai `id` di dalam objek bernama `prompt` dan dapat kehilangan string prompt. Baca `prompt_text` di sana sebagai gantinya. Memerlukan Claude Code v2.1.287 atau lebih baru791* `prompt_text`: Nilai yang sama dengan `prompt`, disamarkan di bawah ketentuan yang sama. Backend yang menyimpan nama atribut bertitik sebagai objek bersarang membaca `prompt.id` sebagai `id` di dalam objek bernama `prompt` dan dapat kehilangan string prompt. Baca `prompt_text` di backend tersebut. Memerlukan Claude Code v2.1.287 atau yang lebih baru

792* `message.uuid`: UUID pesan pengguna yang dihasilkan, cocok dengan entri transkrip yang disimpan. Tidak ada pada dispatch perintah, yang dapat menghasilkan nol atau banyak pesan.792* `message.uuid`: UUID pesan pengguna yang dihasilkan, cocok dengan entri transkrip yang disimpan. Tidak ada pada dispatch perintah, yang dapat menghasilkan nol atau banyak pesan.

793* `command_name`: Nama perintah ketika prompt memanggil perintah. Nama perintah bawaan dan yang dibundel seperti `compact` atau `debug` dipancarkan apa adanya; alias seperti `reset` dipancarkan sebagaimana diketik, bukan nama kanonisnya. Nama perintah kustom, plugin, dan MCP diringkas menjadi `custom` atau `mcp` kecuali `OTEL_LOG_TOOL_DETAILS=1` ditetapkan793* `command_name`: Nama perintah saat prompt memanggil sebuah perintah. Nama perintah bawaan dan yang dibundel seperti `compact` atau `debug` dipancarkan apa adanya; alias seperti `reset` dipancarkan sebagaimana diketik, bukan nama kanonisnya. Nama perintah kustom, plugin, dan MCP diciutkan menjadi `custom` atau `mcp` kecuali jika `OTEL_LOG_TOOL_DETAILS=1` diatur

794* `command_source`: Asal perintah jika ada: `builtin`, `custom`, atau `mcp`. Perintah yang disediakan plugin dilaporkan sebagai `custom`794* `command_source`: Asal perintah jika ada: `builtin`, `custom`, atau `mcp`. Perintah yang disediakan plugin dilaporkan sebagai `custom`

795 795 

796#### Event respons asisten796#### Event respons asisten

797 797 

798Dicatat setelah setiap permintaan API yang mengembalikan konten teks dari model. Hanya blok teks respons yang disertakan; thinking block dan blok tool-use dikecualikan.798Dicatat setelah setiap permintaan API yang mengembalikan konten teks dari model. Hanya blok teks dari respons yang disertakan; thinking block dan blok tool-use dikecualikan.

799 799 

800**Nama Event**: `claude_code.assistant_response`800**Nama Event**: `claude_code.assistant_response`

801 801 


804* Semua [atribut standar](#standard-attributes)804* Semua [atribut standar](#standard-attributes)

805* `event.name`: `"assistant_response"`805* `event.name`: `"assistant_response"`

806* `event.timestamp`: Timestamp ISO 8601806* `event.timestamp`: Timestamp ISO 8601

807* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)807* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

808* `response_length`: Panjang teks respons dalam karakter808* `response_length`: Panjang teks respons dalam karakter

809* `response`: Teks respons, dipotong pada batas konten (60 KB secara default). Disamarkan menjadi `<REDACTED>` secara default. Tetapkan `OTEL_LOG_ASSISTANT_RESPONSES=1` untuk menyertakannya. Ketika `OTEL_LOG_ASSISTANT_RESPONSES` tidak ditetapkan, `OTEL_LOG_USER_PROMPTS` yang mengendalikannya, jadi tetapkan `OTEL_LOG_ASSISTANT_RESPONSES=0` agar respons tetap disamarkan saat logging prompt aktif809* `response`: Teks respons, dipotong pada batas konten (60 KB secara default). Disamarkan menjadi `<REDACTED>` secara default. Atur `OTEL_LOG_ASSISTANT_RESPONSES=1` untuk menyertakannya. Saat `OTEL_LOG_ASSISTANT_RESPONSES` tidak diatur, `OTEL_LOG_USER_PROMPTS` yang mengendalikannya, jadi atur `OTEL_LOG_ASSISTANT_RESPONSES=0` untuk tetap menyamarkan respons saat pencatatan prompt aktif

810* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-5")810* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-5")

811* `request_id`: ID permintaan API, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)811* `request_id`: ID permintaan API, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

812* `message.uuid`: UUID entri transkrip terakhir dari respons. Respons API disimpan sebagai satu entri transkrip per blok konten; ini adalah yang terakhir, yang menjadi rantai `parentUuid` giliran berikutnya.812* `message.uuid`: UUID entri transkrip terakhir dari respons. Respons API disimpan sebagai satu entri transkrip per blok konten; ini adalah entri terakhir, yang menjadi rantai `parentUuid` giliran berikutnya.

813* `query_source`: Subsistem yang mengeluarkan permintaan, seperti `"repl_main_thread"`, `"compact"`, atau nama subagent813* `query_source`: Subsistem yang mengeluarkan permintaan, seperti `"repl_main_thread"`, `"compact"`, atau nama subagent

814 814 

815#### Event hasil tool815#### Event hasil tool

816 816 

817Dicatat ketika tool selesai dieksekusi. Tidak dipancarkan jika panggilan tool ditolak; lihat [Event keputusan tool](#tool-decision-event) untuk penolakan.817Dicatat saat tool selesai dieksekusi. Tidak dipancarkan jika panggilan tool ditolak; lihat [Event keputusan tool](#tool-decision-event) untuk penolakan.

818 818 

819**Nama Event**: `claude_code.tool_result`819**Nama Event**: `claude_code.tool_result`

820 820 


823* Semua [atribut standar](#standard-attributes)823* Semua [atribut standar](#standard-attributes)

824* `event.name`: `"tool_result"`824* `event.name`: `"tool_result"`

825* `event.timestamp`: Timestamp ISO 8601825* `event.timestamp`: Timestamp ISO 8601

826* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)826* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

827* `tool_name`: Nama tool827* `tool_name`: Nama tool

828* `tool_use_id`: Pengidentifikasi unik untuk pemanggilan tool ini. Cocok dengan `tool_use_id` yang diteruskan ke hook, memungkinkan korelasi antara event OTel dan data yang ditangkap hook.828* `tool_use_id`: Pengidentifikasi unik untuk pemanggilan tool ini. Cocok dengan `tool_use_id` yang diteruskan ke hook, memungkinkan korelasi antara event OTel dan data yang ditangkap hook.

829* `request_id`: [`request_id`](#event-correlation-attributes) dari respons API yang memuat panggilan tool ini, sehingga Anda dapat melakukan join panggilan tersebut dengan event API dari respons itu. Tidak ada ketika respons tersebut tidak memiliki ID permintaan, atau ketika tidak ada respons API yang memuat panggilan tersebut. Memerlukan Claude Code v2.1.310 atau yang lebih baru829* `request_id`: [`request_id`](#event-correlation-attributes) dari respons API yang berisi panggilan tool ini, sehingga Anda dapat melakukan join panggilan tersebut ke event API dari respons itu. Tidak ada jika respons tersebut tidak memiliki ID permintaan, atau jika tidak ada respons API yang berisi panggilan tersebut. Memerlukan Claude Code v2.1.310 atau yang lebih baru

830* `success`: `"true"` atau `"false"`830* `success`: `"true"` atau `"false"`

831* `duration_ms`: Waktu eksekusi dalam milidetik831* `duration_ms`: Waktu eksekusi dalam milidetik

832* `error_type`: String kategori error ketika tool gagal, seperti `"Error:ENOENT"` atau `"ShellError"`832* `error_type`: String kategori error saat tool gagal, seperti `"Error:ENOENT"` atau `"ShellError"`

833* `error` (ketika `OTEL_LOG_TOOL_DETAILS=1`): Pesan error lengkap ketika tool gagal833* `error` (saat `OTEL_LOG_TOOL_DETAILS=1`): Pesan error lengkap saat tool gagal

834* `decision_type`: Selalu `"accept"`, karena event ini hanya dipancarkan setelah tool berjalan. Panggilan yang ditolak tidak menghasilkan hasil tool834* `decision_type`: Selalu `"accept"`, karena event ini hanya dipancarkan setelah tool berjalan. Panggilan yang ditolak tidak menghasilkan hasil tool

835* `decision_source`: Asal keputusan izin. Salah satu dari `"config"`, `"hook"`, `"user_permanent"`, atau `"user_temporary"`. Lihat [Event keputusan tool](#tool-decision-event) untuk arti setiap nilai. Sumber khusus penolakan `"user_abort"` dan `"user_reject"` tidak pernah muncul pada event ini.835* `decision_source`: Asal keputusan izin. Salah satu dari `"config"`, `"hook"`, `"user_permanent"`, atau `"user_temporary"`. Lihat [Event keputusan tool](#tool-decision-event) untuk arti setiap nilai. Sumber khusus penolakan `"user_abort"` dan `"user_reject"` tidak pernah muncul pada event ini.

836* `tool_input_size_bytes`: Ukuran input tool yang diserialisasi JSON dalam byte836* `tool_input_size_bytes`: Ukuran input tool yang diserialisasi JSON dalam byte

837* `tool_result_size_bytes`: Ukuran hasil tool dalam byte837* `tool_result_size_bytes`: Ukuran hasil tool dalam byte

838* `mcp_server_scope`: Pengidentifikasi cakupan server MCP (untuk tool MCP)838* `mcp_server_scope`: Pengidentifikasi cakupan server MCP (untuk tool MCP)

839* `vcs.ref.head.revision`, `vcs.ref.head.name`, `vcs.ref.head.type` (ketika `OTEL_LOG_TOOL_DETAILS=1`): identitas commit dari `git commit` yang berhasil dijalankan oleh tool Bash atau PowerShell. `vcs.ref.head.revision` adalah SHA commit, `vcs.ref.head.name` adalah branch tempat commit dibuat, dan `vcs.ref.head.type` adalah `branch`. Nama dan jenis dihilangkan ketika commit dibuat pada detached HEAD. Memerlukan Claude Code v2.1.269 atau lebih baru839* `vcs.ref.head.revision`, `vcs.ref.head.name`, `vcs.ref.head.type` (saat `OTEL_LOG_TOOL_DETAILS=1`): identitas commit dari `git commit` yang berhasil dijalankan oleh tool Bash atau PowerShell. `vcs.ref.head.revision` adalah SHA commit, `vcs.ref.head.name` adalah branch tempat commit dibuat, dan `vcs.ref.head.type` adalah `branch`. Nama dan jenis dihilangkan jika commit dibuat pada detached HEAD. Memerlukan Claude Code v2.1.269 atau yang lebih baru

840* `tool_parameters` (ketika `OTEL_LOG_TOOL_DETAILS=1`): String JSON yang berisi parameter spesifik tool. Untuk server bawaan Claude Desktop, dalam sesi yang dimiliki Claude Desktop, pasangan `mcp_server_name`/`mcp_tool_name` disertakan bahkan ketika flag dimatikan, pengecualian yang sama yang ditulis host seperti pada [Event keputusan tool](#tool-decision-event). Parameter bervariasi menurut tool:840* `tool_parameters` (saat `OTEL_LOG_TOOL_DETAILS=1`): String JSON yang berisi parameter spesifik tool. Untuk server bawaan Claude Desktop, dalam sesi yang dimiliki Claude Desktop, pasangan `mcp_server_name`/`mcp_tool_name` disertakan bahkan saat flag nonaktif, pengecualian yang ditulis host yang sama seperti pada [Event keputusan tool](#tool-decision-event). Parameter bervariasi menurut tool:

841 * Untuk tool Bash: mencakup `bash_command`, `full_command`, `timeout`, `description`, dan `dangerouslyDisableSandbox`, ditambah `git_commit_id` dan `git_branch` ketika perintah `git commit` berhasil. `git_commit_id` adalah SHA commit lengkap ketika commit tersebut merupakan HEAD dari direktori kerja sesi, dan SHA singkat git jika tidak. `git_branch` adalah branch tempat commit dibuat, dihilangkan pada detached HEAD841 * Untuk tool Bash: mencakup `bash_command`, `full_command`, `timeout`, `description`, dan `dangerouslyDisableSandbox`, ditambah `git_commit_id` dan `git_branch` saat perintah `git commit` berhasil. `git_commit_id` adalah SHA commit lengkap saat commit tersebut adalah HEAD dari direktori kerja sesi, dan SHA singkat git jika tidak demikian. `git_branch` adalah branch tempat commit dibuat, dihilangkan pada detached HEAD

842 * Untuk tool Bash workspace aplikasi desktop, yang juga melaporkan `tool_name` sebagai `Bash`: hanya mencakup `bash_command`, `full_command`, dan `timeout`842 * Untuk tool Bash workspace aplikasi desktop, yang juga melaporkan `tool_name` sebagai `Bash`: hanya mencakup `bash_command`, `full_command`, dan `timeout`

843 * Untuk tool MCP: mencakup `mcp_server_name`, `mcp_tool_name`843 * Untuk tool MCP: mencakup `mcp_server_name`, `mcp_tool_name`

844 * Untuk tool Skill: mencakup `skill_name`844 * Untuk tool Skill: mencakup `skill_name`

845 * Untuk tool Agent atau tool Task lama: mencakup `subagent_type`845 * Untuk tool Agent atau tool Task lama: mencakup `subagent_type`

846* `tool_input` (ketika `OTEL_LOG_TOOL_DETAILS=1`): Argumen tool yang diserialisasi JSON. Nilai individual yang lebih dari 512 karakter dipotong, dan payload lengkap dibatasi hingga \~4 K karakter. Berlaku untuk semua tool termasuk tool MCP.846* `tool_input` (saat `OTEL_LOG_TOOL_DETAILS=1`): Argumen tool yang diserialisasi JSON. Nilai individual lebih dari 512 karakter dipotong, dan payload lengkap dibatasi hingga \~4 K karakter. Berlaku untuk semua tool termasuk tool MCP.

847 847 

848#### Event permintaan API848#### Event permintaan API

849 849 


856* Semua [atribut standar](#standard-attributes)856* Semua [atribut standar](#standard-attributes)

857* `event.name`: `"api_request"`857* `event.name`: `"api_request"`

858* `event.timestamp`: Timestamp ISO 8601858* `event.timestamp`: Timestamp ISO 8601

859* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)859* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

860* `model`: Model yang digunakan (misalnya, "claude-sonnet-5")860* `model`: Model yang digunakan (misalnya, "claude-sonnet-5")

861* `cost_usd`: Perkiraan biaya dalam USD861* `cost_usd`: Perkiraan biaya dalam USD

862* `cost_usd_micros`: Perkiraan biaya dalam sepersejuta dolar AS, dipancarkan sebagai bilangan bulat862* `cost_usd_micros`: Perkiraan biaya dalam sepersejuta dolar AS, dipancarkan sebagai integer

863* `duration_ms`: Durasi permintaan dalam milidetik863* `duration_ms`: Durasi permintaan dalam milidetik

864* `input_tokens`: Jumlah token input, tidak termasuk token yang dibaca dari atau ditulis ke cache prompt864* `input_tokens`: Jumlah token input, tidak termasuk token yang dibaca dari atau ditulis ke cache prompt

865* `output_tokens`: Jumlah token output865* `output_tokens`: Jumlah token output

866* `cache_read_tokens`: Jumlah token yang dibaca dari cache866* `cache_read_tokens`: Jumlah token yang dibaca dari cache

867* `cache_creation_tokens`: Jumlah token yang digunakan untuk pembuatan cache867* `cache_creation_tokens`: Jumlah token yang digunakan untuk pembuatan cache

868* `cache_creation_5m_tokens`, `cache_creation_1h_tokens`: jumlah token yang dilaporkan respons API sebagai ditulis ke cache dengan [masa berlaku cache](https://code.claude.com/docs/id/prompt-caching.md#cache-lifetime) lima menit dan jumlah yang ditulis dengan masa berlaku satu jam. Keduanya bernilai `0` jika respons API tidak melaporkannya, bahkan saat `cache_creation_tokens` di atas nol. Memerlukan Claude Code v2.1.300 atau lebih baru868* `cache_creation_5m_tokens`, `cache_creation_1h_tokens`: jumlah token yang dilaporkan respons API sebagai ditulis ke cache dengan [masa berlaku cache](https://code.claude.com/docs/id/prompt-caching.md#cache-lifetime) lima menit dan jumlah yang ditulis dengan masa berlaku satu jam. Keduanya bernilai `0` saat respons API tidak melaporkannya, bahkan saat `cache_creation_tokens` di atas nol. Memerlukan Claude Code v2.1.300 atau yang lebih baru

869* `request_id`: ID permintaan API, seperti `"req_011..."`, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes).869* `request_id`: ID permintaan API, seperti `"req_011..."`, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes).

870* `client_request_id`: UUID yang dibuat klien dan dikirim sebagai header permintaan `x-client-request-id`; lihat tabel [atribut korelasi event](#event-correlation-attributes) untuk kapan atribut ini ada870* `client_request_id`: UUID yang dibuat klien dan dikirim sebagai header permintaan `x-client-request-id`; lihat tabel [atribut korelasi event](#event-correlation-attributes) untuk kapan atribut ini ada

871* `speed`: `"fast"` atau `"normal"`, menunjukkan apakah fast mode aktif871* `speed`: `"fast"` atau `"normal"`, menunjukkan apakah fast mode aktif

872* `query_source`: Subsistem yang mengeluarkan permintaan, seperti `"repl_main_thread"`, `"compact"`, atau nama subagent872* `query_source`: Subsistem yang mengeluarkan permintaan, seperti `"repl_main_thread"`, `"compact"`, atau nama subagent

873* `effort`: [Tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang diterapkan pada permintaan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Tidak ada ketika Claude Code tidak mengirimkan tingkat effort, misalnya pada model yang tidak mendukung effort.873* `effort`: [Tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang diterapkan pada permintaan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Tidak ada saat Claude Code tidak mengirim tingkat effort, misalnya pada model yang tidak mendukung effort.

874* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: Atribusi skill, plugin, agent, dan MCP untuk permintaan. Lihat [Penghitung biaya](#cost-counter) untuk definisi dan perilaku penyamaran.874* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: Atribusi skill, plugin, agent, dan MCP untuk permintaan. Lihat [Penghitung biaya](#cost-counter) untuk definisi dan perilaku penyamaran.

875 875 

876#### Event error API876#### Event error API

877 877 

878Dicatat ketika permintaan API ke Claude gagal.878Dicatat saat permintaan API ke Claude gagal.

879 879 

880**Nama Event**: `claude_code.api_error`880**Nama Event**: `claude_code.api_error`

881 881 


884* Semua [atribut standar](#standard-attributes)884* Semua [atribut standar](#standard-attributes)

885* `event.name`: `"api_error"`885* `event.name`: `"api_error"`

886* `event.timestamp`: Timestamp ISO 8601886* `event.timestamp`: Timestamp ISO 8601

887* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)887* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

888* `model`: Model yang digunakan (misalnya, "claude-sonnet-5")888* `model`: Model yang digunakan (misalnya, "claude-sonnet-5")

889* `error`: Pesan error889* `error`: Pesan error

890* `status_code`: Kode status HTTP sebagai angka. Tidak ada untuk error non-HTTP seperti kegagalan koneksi.890* `status_code`: Kode status HTTP sebagai angka. Tidak ada untuk error non-HTTP seperti kegagalan koneksi.

891* `duration_ms`: Durasi permintaan dalam milidetik891* `duration_ms`: Durasi permintaan dalam milidetik

892* `attempt`: Jumlah percobaan yang dilakukan, termasuk permintaan awal. [Mendeteksi habisnya retry](#detect-retry-exhaustion) menjelaskan kapan penghitungan dimulai kembali892* `attempt`: Jumlah percobaan yang dilakukan, termasuk permintaan awal. [Mendeteksi habisnya retry](#detect-retry-exhaustion) menjelaskan kapan hitungan dimulai lagi

893* `request_id`: ID permintaan API, seperti `"req_011..."`, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes).893* `request_id`: ID permintaan API, seperti `"req_011..."`, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes).

894* `client_request_id`: UUID yang dibuat klien dan dikirim sebagai header permintaan `x-client-request-id`. Tersedia bahkan ketika kegagalan seperti timeout atau error koneksi tidak pernah menghasilkan `request_id` server; lihat tabel [atribut korelasi event](#event-correlation-attributes) untuk kapan atribut ini ada.894* `client_request_id`: UUID yang dibuat klien dan dikirim sebagai header permintaan `x-client-request-id`. Tersedia bahkan saat kegagalan seperti timeout atau error koneksi tidak pernah menghasilkan `request_id` server; lihat tabel [atribut korelasi event](#event-correlation-attributes) untuk kapan atribut ini ada.

895* `speed`: `"fast"` atau `"normal"`, menunjukkan apakah fast mode aktif895* `speed`: `"fast"` atau `"normal"`, menunjukkan apakah fast mode aktif

896* `query_source`: Subsistem yang mengeluarkan permintaan, seperti `"repl_main_thread"`, `"compact"`, atau nama subagent896* `query_source`: Subsistem yang mengeluarkan permintaan, seperti `"repl_main_thread"`, `"compact"`, atau nama subagent

897* `effort`: [Tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang diterapkan pada permintaan. Tidak ada ketika Claude Code tidak mengirimkan tingkat effort, misalnya pada model yang tidak mendukung effort.897* `effort`: [Tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang diterapkan pada permintaan. Tidak ada saat Claude Code tidak mengirim tingkat effort, misalnya pada model yang tidak mendukung effort.

898* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: Atribusi skill, plugin, agent, dan MCP untuk permintaan. Lihat [Penghitung biaya](#cost-counter) untuk definisi dan perilaku penyamaran.898* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: Atribusi skill, plugin, agent, dan MCP untuk permintaan. Lihat [Penghitung biaya](#cost-counter) untuk definisi dan perilaku penyamaran.

899 899 

900#### Event penolakan API900#### Event penolakan API

901 901 

902Dicatat ketika permintaan API mengembalikan `stop_reason: "refusal"`. Penolakan datang pada stream respons yang berhasil, bukan sebagai error HTTP, sehingga event `api_error` tidak terpicu untuknya. Event ini memungkinkan Anda melacak frekuensi penolakan dan mengelompokkan penolakan berdasarkan atribut yang sama dengan `api_request` dan `api_error`.902Dicatat saat permintaan API mengembalikan `stop_reason: "refusal"`. Penolakan tiba pada stream respons yang berhasil, bukan sebagai error HTTP, sehingga event `api_error` tidak terpicu untuk penolakan tersebut. Event ini memungkinkan Anda melacak frekuensi penolakan dan mengelompokkan penolakan berdasarkan atribut yang sama seperti `api_request` dan `api_error`.

903 903 

904**Nama Event**: `claude_code.api_refusal`904**Nama Event**: `claude_code.api_refusal`

905 905 


908* Semua [atribut standar](#standard-attributes)908* Semua [atribut standar](#standard-attributes)

909* `event.name`: `"api_refusal"`909* `event.name`: `"api_refusal"`

910* `event.timestamp`: Timestamp ISO 8601910* `event.timestamp`: Timestamp ISO 8601

911* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)911* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

912* `model`: Pengidentifikasi model dari permintaan912* `model`: Pengidentifikasi model dari permintaan

913* `request_id`: ID permintaan API, seperti `"req_011..."`, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes).913* `request_id`: ID permintaan API, seperti `"req_011..."`, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes).

914* `query_source`: Subsistem yang mengeluarkan permintaan, seperti `"repl_main_thread"`, `"compact"`, atau nama subagent. Lihat [`api_request`](#api-request-event) untuk definisinya.914* `query_source`: Subsistem yang mengeluarkan permintaan, seperti `"repl_main_thread"`, `"compact"`, atau nama subagent. Lihat [`api_request`](#api-request-event) untuk definisinya.

915* `speed`: Either `"fast"` ketika [Fast mode](https://code.claude.com/docs/id/fast-mode.md) aktif, atau `"normal"`915* `speed`: `"fast"` saat [Fast mode](https://code.claude.com/docs/id/fast-mode.md) aktif, atau `"normal"`

916* `attempt`: Nomor percobaan retry. Percobaan pertama adalah `1`.916* `attempt`: Nomor percobaan retry. Percobaan pertama adalah `1`.

917* `effort`: [Tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang diterapkan pada permintaan. Tidak ada ketika Claude Code tidak mengirimkan tingkat effort, misalnya pada model yang tidak mendukung effort.917* `effort`: [Tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang diterapkan pada permintaan. Tidak ada saat Claude Code tidak mengirim tingkat effort, misalnya pada model yang tidak mendukung effort.

918* `server_fallback_hop`: `true` ketika fallback model sisi server API telah mencoba ulang penolakan ini pada model lain, sehingga pengguna tidak melihat penolakan khusus ini. `false` ketika permintaan berakhir dengan penolakan. Satu giliran dapat memancarkan event hop `true` dan kemudian event akhir `false` ketika model fallback juga menolak.918* `server_fallback_hop`: `true` saat fallback model sisi server dari API sudah mencoba ulang penolakan ini pada model yang berbeda, sehingga pengguna tidak melihat penolakan tertentu ini. `false` saat permintaan berakhir dengan penolakan. Satu giliran dapat memancarkan event hop `true` dan kemudian event akhir `false` saat model fallback juga menolak.

919* `has_category`: `true` ketika respons API membawa `stop_details.category` berupa `"cyber"`, `"bio"`, `"frontier_llm"`, atau `"reasoning_extraction"`. `false` ketika respons tidak membawa kategori atau membawa nilai di luar kumpulan tersebut. Tidak ada ketika `server_fallback_hop` adalah `true`, karena blok hop tidak membawa `stop_details`.919* `has_category`: `true` saat respons API membawa `stop_details.category` berupa `"cyber"`, `"bio"`, `"frontier_llm"`, atau `"reasoning_extraction"`. `false` saat respons tidak membawa kategori atau membawa nilai di luar himpunan tersebut. Tidak ada saat `server_fallback_hop` bernilai `true`, karena blok hop tidak membawa `stop_details`.

920* `has_explanation`: `true` ketika respons API membawa `stop_details.explanation`, jika tidak `false`. Tidak ada ketika `server_fallback_hop` adalah `true`.920* `has_explanation`: `true` saat respons API membawa `stop_details.explanation`, jika tidak `false`. Tidak ada saat `server_fallback_hop` bernilai `true`.

921* `category`: Nilai `stop_details.category` dari respons API. Salah satu dari `"cyber"`, `"bio"`, `"frontier_llm"`, atau `"reasoning_extraction"`. Hanya ada ketika `OTEL_LOG_TOOL_DETAILS=1` ditetapkan dan `has_category` adalah `true`.921* `category`: Nilai `stop_details.category` dari respons API. Salah satu dari `"cyber"`, `"bio"`, `"frontier_llm"`, atau `"reasoning_extraction"`. Hanya ada saat `OTEL_LOG_TOOL_DETAILS=1` diatur dan `has_category` bernilai `true`.

922* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: Atribusi skill, plugin, agent, dan MCP untuk permintaan. Lihat [Penghitung biaya](#cost-counter) untuk definisi dan perilaku penyamaran.922* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name`: Atribusi skill, plugin, agent, dan MCP untuk permintaan. Lihat [Penghitung biaya](#cost-counter) untuk definisi dan perilaku penyamaran.

923 923 

924#### Event body permintaan API924#### Event body permintaan API

925 925 

926Dicatat untuk setiap percobaan permintaan API ketika `OTEL_LOG_RAW_API_BODIES` ditetapkan. Satu event dipancarkan per percobaan, sehingga retry dengan parameter yang disesuaikan masing-masing menghasilkan event-nya sendiri.926Dicatat untuk setiap percobaan permintaan API saat `OTEL_LOG_RAW_API_BODIES` diatur. Satu event dipancarkan per percobaan, sehingga setiap retry dengan parameter yang disesuaikan menghasilkan event-nya sendiri.

927 927 

928**Nama Event**: `claude_code.api_request_body`928**Nama Event**: `claude_code.api_request_body`

929 929 


932* Semua [atribut standar](#standard-attributes)932* Semua [atribut standar](#standard-attributes)

933* `event.name`: `"api_request_body"`933* `event.name`: `"api_request_body"`

934* `event.timestamp`: Timestamp ISO 8601934* `event.timestamp`: Timestamp ISO 8601

935* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)935* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

936* `body`: Parameter permintaan Messages API yang diserialisasi JSON, seperti system prompt, pesan, dan tool, dipotong pada batas konten (60 KB secara default). Konten extended thinking pada giliran asisten sebelumnya disamarkan. Hanya dipancarkan dalam mode inline (`OTEL_LOG_RAW_API_BODIES=1`).936* `body`: Parameter permintaan Messages API yang diserialisasi JSON, seperti system prompt, pesan, dan tool, dipotong pada batas konten (60 KB secara default). Konten extended thinking pada giliran asisten sebelumnya disamarkan. Hanya dipancarkan dalam mode inline (`OTEL_LOG_RAW_API_BODIES=1`).

937* `body_ref`: Path absolut ke file `<dir>/<uuid>.request.json` yang berisi body yang tidak dipotong. Hanya dipancarkan dalam mode file (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).937* `body_ref`: Path absolut ke file `<dir>/<uuid>.request.json` yang berisi body yang tidak dipotong. Hanya dipancarkan dalam mode file (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

938* `body_length`: Panjang body yang tidak dipotong. Byte UTF-8 ketika `OTEL_LOG_RAW_API_BODIES=file:<dir>`, atau unit kode UTF-16 ketika `=1`938* `body_length`: Panjang body yang tidak dipotong. Dalam byte UTF-8 saat `OTEL_LOG_RAW_API_BODIES=file:<dir>`, atau unit kode UTF-16 saat `=1`

939* `body_truncated`: `"true"` ketika terjadi pemotongan inline. Tidak ada dalam mode file dan ketika tidak terjadi pemotongan.939* `body_truncated`: `"true"` saat terjadi pemotongan inline. Tidak ada dalam mode file dan saat tidak terjadi pemotongan.

940* `model`: Pengidentifikasi model dari parameter permintaan940* `model`: Pengidentifikasi model dari parameter permintaan

941* `query_source`: Subsistem yang mengeluarkan permintaan (misalnya, `"compact"`)941* `query_source`: Subsistem yang mengeluarkan permintaan (misalnya, `"compact"`)

942* `request_body_id`: UUID yang mengidentifikasi body permintaan dari percobaan ini. [Event `api_response_body`](#api-response-body-event) untuk percobaan yang berhasil membawa nilai yang sama, sehingga Anda dapat memasangkan respons dengan permintaan persis yang menghasilkannya. Memerlukan Claude Code v2.1.274 atau lebih baru942* `request_body_id`: UUID yang mengidentifikasi body permintaan dari percobaan ini. [Event `api_response_body`](#api-response-body-event) untuk percobaan yang berhasil membawa nilai yang sama, sehingga Anda dapat memasangkan respons dengan permintaan persis yang menghasilkannya. Memerlukan Claude Code v2.1.274 atau yang lebih baru

943 943 

944#### Event body respons API944#### Event body respons API

945 945 

946Dicatat untuk setiap respons API yang berhasil ketika `OTEL_LOG_RAW_API_BODIES` ditetapkan.946Dicatat untuk setiap respons API yang berhasil saat `OTEL_LOG_RAW_API_BODIES` diatur.

947 947 

948Dalam mode file (`OTEL_LOG_RAW_API_BODIES=file:<dir>`), Claude Code juga menambahkan satu baris JSON ke `<dir>/index.jsonl` untuk setiap respons yang berhasil, dengan field `timestamp`, `session_id`, `query_source`, `model`, `request_id`, `message_id`, `message_uuid`, `request_file`, dan `response_file`. Baca file ini untuk menemukan file permintaan dan respons di balik pesan transkrip tertentu tanpa melakukan query ke backend telemetri Anda. File indeks memerlukan Claude Code v2.1.274 atau lebih baru.948Dalam mode file (`OTEL_LOG_RAW_API_BODIES=file:<dir>`), Claude Code juga menambahkan satu baris JSON ke `<dir>/index.jsonl` untuk setiap respons yang berhasil, dengan field `timestamp`, `session_id`, `query_source`, `model`, `request_id`, `message_id`, `message_uuid`, `request_file`, dan `response_file`. Baca file tersebut untuk menemukan file permintaan dan respons di balik pesan transkrip tertentu tanpa melakukan query ke backend telemetri Anda. File indeks memerlukan Claude Code v2.1.274 atau yang lebih baru.

949 949 

950**Nama Event**: `claude_code.api_response_body`950**Nama Event**: `claude_code.api_response_body`

951 951 


954* Semua [atribut standar](#standard-attributes)954* Semua [atribut standar](#standard-attributes)

955* `event.name`: `"api_response_body"`955* `event.name`: `"api_response_body"`

956* `event.timestamp`: Timestamp ISO 8601956* `event.timestamp`: Timestamp ISO 8601

957* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)957* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

958* `body`: Respons Messages API yang diserialisasi JSON, termasuk id, blok konten, penggunaan, dan alasan berhenti, dipotong pada batas konten (60 KB secara default). Konten extended thinking disamarkan. Hanya dipancarkan dalam mode inline (`OTEL_LOG_RAW_API_BODIES=1`).958* `body`: Respons Messages API yang diserialisasi JSON, termasuk id, blok konten, penggunaan, dan alasan berhenti, dipotong pada batas konten (60 KB secara default). Konten extended thinking disamarkan. Hanya dipancarkan dalam mode inline (`OTEL_LOG_RAW_API_BODIES=1`).

959* `body_ref`: Path absolut ke file `<dir>/<request_id>.response.json` yang berisi body yang tidak dipotong. Hanya dipancarkan dalam mode file (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).959* `body_ref`: Path absolut ke file `<dir>/<request_id>.response.json` yang berisi body yang tidak dipotong. Hanya dipancarkan dalam mode file (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

960* `body_length`: Panjang body yang tidak dipotong. Byte UTF-8 ketika `OTEL_LOG_RAW_API_BODIES=file:<dir>`, atau unit kode UTF-16 ketika `=1`960* `body_length`: Panjang body yang tidak dipotong. Dalam byte UTF-8 saat `OTEL_LOG_RAW_API_BODIES=file:<dir>`, atau unit kode UTF-16 saat `=1`

961* `body_truncated`: `"true"` ketika terjadi pemotongan inline. Tidak ada dalam mode file dan ketika tidak terjadi pemotongan.961* `body_truncated`: `"true"` saat terjadi pemotongan inline. Tidak ada dalam mode file dan saat tidak terjadi pemotongan.

962* `model`: Pengidentifikasi model962* `model`: Pengidentifikasi model

963* `query_source`: Subsistem yang mengeluarkan permintaan963* `query_source`: Subsistem yang mengeluarkan permintaan

964* `request_id`: ID permintaan API, seperti `"req_011..."`, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes).964* `request_id`: ID permintaan API, seperti `"req_011..."`, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes).

965* `request_body_id`: `request_body_id` dari [event `api_request_body`](#api-request-body-event) yang dijawab oleh respons ini. Memerlukan Claude Code v2.1.274 atau lebih baru965* `request_body_id`: `request_body_id` dari [event `api_request_body`](#api-request-body-event) yang dijawab oleh respons ini. Memerlukan Claude Code v2.1.274 atau yang lebih baru

966* `message.id`: ID pesan yang ditetapkan API untuk respons, yaitu field `id` dari body respons. Memerlukan Claude Code v2.1.274 atau lebih baru966* `message.id`: ID pesan yang ditetapkan API untuk respons, yaitu field `id` dari body respons. Memerlukan Claude Code v2.1.274 atau yang lebih baru

967* `message.uuid`: UUID entri transkrip terakhir dari respons. Bersama dengan `request_body_id`, atribut ini menautkan pesan transkrip ke body permintaan dan respons di baliknya. Memerlukan Claude Code v2.1.274 atau lebih baru967* `message.uuid`: UUID entri transkrip terakhir dari respons. Bersama dengan `request_body_id`, atribut ini menautkan pesan transkrip ke body permintaan dan respons di baliknya. Memerlukan Claude Code v2.1.274 atau yang lebih baru

968 968 

969#### Event keputusan tool969#### Event keputusan tool

970 970 

971Dicatat ketika keputusan izin tool dibuat (terima/tolak).971Dicatat saat keputusan izin tool dibuat (terima/tolak).

972 972 

973**Nama Event**: `claude_code.tool_decision`973**Nama Event**: `claude_code.tool_decision`

974 974 


977* Semua [atribut standar](#standard-attributes)977* Semua [atribut standar](#standard-attributes)

978* `event.name`: `"tool_decision"`978* `event.name`: `"tool_decision"`

979* `event.timestamp`: Timestamp ISO 8601979* `event.timestamp`: Timestamp ISO 8601

980* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)980* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

981* `tool_name`: Nama tool (misalnya, "Read", "Edit", "Write", "NotebookEdit")981* `tool_name`: Nama tool (misalnya, "Read", "Edit", "Write", "NotebookEdit")

982* `tool_use_id`: Pengidentifikasi unik untuk pemanggilan tool ini. Cocok dengan `tool_use_id` yang diteruskan ke hook, memungkinkan korelasi antara event OTel dan data yang ditangkap hook.982* `tool_use_id`: Pengidentifikasi unik untuk pemanggilan tool ini. Cocok dengan `tool_use_id` yang diteruskan ke hook, memungkinkan korelasi antara event OTel dan data yang ditangkap hook.

983* `request_id`: [`request_id`](#event-correlation-attributes) dari respons API yang memuat panggilan tool ini, sehingga Anda dapat melakukan join panggilan tersebut dengan event API dari respons itu. Tidak ada ketika respons tersebut tidak memiliki ID permintaan, atau ketika tidak ada respons API yang memuat panggilan tersebut. Memerlukan Claude Code v2.1.310 atau yang lebih baru983* `request_id`: [`request_id`](#event-correlation-attributes) dari respons API yang berisi panggilan tool ini, sehingga Anda dapat melakukan join panggilan tersebut ke event API dari respons itu. Tidak ada jika respons tersebut tidak memiliki ID permintaan, atau jika tidak ada respons API yang berisi panggilan tersebut. Memerlukan Claude Code v2.1.310 atau yang lebih baru

984* `decision`: Either `"accept"` atau `"reject"`984* `decision`: `"accept"` atau `"reject"`

985* `tool_source`: Selalu ada. Asal-usul tool, sebagai kumpulan tertutup nilai yang ditulis CLI:985* `tool_source`: Selalu ada. Asal-usul tool, sebagai himpunan tertutup nilai yang ditulis CLI:

986 * `"builtin"`: tool milik CLI sendiri986 * `"builtin"`: tool milik CLI sendiri

987 * `"mcp"`: server MCP secara umum987 * `"mcp"`: server MCP secara umum

988 * `"sdk_host_builtin_mcp"`: server dalam proses yang dibangun ke dalam Claude Desktop itu sendiri, dalam sesi yang dimiliki Claude Desktop. Claude Desktop memiliki sesi yang dimulainya dari salah satu entrypoint-nya sendiri, `claude-desktop`, `claude-desktop-3p`, atau `local-agent`, ketika sesi tersebut bukan anak bersarang; sesi bersarang, termasuk sesi yang dimunculkan oleh Claude Code sendiri, melaporkan server ini sebagai `"mcp"`988 * `"sdk_host_builtin_mcp"`: server dalam proses yang dibangun ke dalam Claude Desktop itu sendiri, dalam sesi yang dimiliki Claude Desktop. Claude Desktop memiliki sesi yang dimulainya dari salah satu entrypoint-nya sendiri, yaitu `claude-desktop`, `claude-desktop-3p`, atau `local-agent`, saat sesi tersebut bukan turunan bersarang; sesi bersarang, termasuk sesi yang dimunculkan Claude Code sendiri, melaporkan server ini sebagai `"mcp"`

989* `source`: Asal keputusan:989* `source`: Asal keputusan:

990 * `"config"`: Diputuskan secara otomatis tanpa meminta, oleh salah satu sumber berikut:990 * `"config"`: Diputuskan secara otomatis tanpa meminta, oleh salah satu sumber berikut:

991 991 


994 * Kebijakan terkelola enterprise994 * Kebijakan terkelola enterprise

995 * Flag `--allowedTools` atau `--disallowedTools`995 * Flag `--allowedTools` atau `--disallowedTools`

996 * Mode izin yang aktif996 * Mode izin yang aktif

997 * Pengklasifikasi auto mode, yang verdict-nya dicatat oleh event yang sama di `classifier_verdict`997 * Pengklasifikasi auto mode, yang verdict-nya dicatat oleh event yang sama dalam `classifier_verdict`

998 * Pemberian akses untuk sisa sesi, yang diberikan pada permintaan izin sebelumnya dalam sesi CLI interaktif yang sama998 * Pemberian izin untuk sisa sesi, yang diberikan pada permintaan izin sebelumnya dalam sesi CLI interaktif yang sama

999 * Tool yang secara inheren aman999 * Tool yang secara inheren aman

1000 1000 

1001 Nilai `source` tidak menunjukkan sumber mana yang cocok. Untuk menemukan sumber mana yang menolak suatu panggilan, cari [Event safety](#safety-event) dengan `tool_use_id` yang sama dan baca atribut `category` dan `rule_source`-nya. Beberapa panggilan yang ditolak [tidak memiliki event safety](#calls-without-a-safety-event).1001 Nilai `source` tidak menunjukkan sumber mana yang cocok. Untuk mengetahui sumber mana yang menolak sebuah panggilan, cari [Event keamanan](#safety-event) dengan `tool_use_id` yang sama dan baca atribut `category` dan `rule_source`-nya. Beberapa panggilan yang ditolak [tidak memiliki event keamanan](#calls-without-a-safety-event).

1002 1002 

1003 Claude Code juga melaporkan `"config"` ketika permintaan izin itu sendiri gagal. Misalnya, permintaan tersebut gagal ketika callback [`canUseTool`](https://code.claude.com/docs/id/agent-sdk/typescript#canusetool) dari Agent SDK atau tool [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) mengembalikan hasil yang tidak valid, atau ketika stream input ditutup saat permintaan masih tertunda.1003 Claude Code juga melaporkan `"config"` saat permintaan izin itu sendiri gagal. Misalnya, permintaan tersebut gagal saat callback [`canUseTool`](https://code.claude.com/docs/id/agent-sdk/typescript#canusetool) dari Agent SDK atau tool [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) mengembalikan hasil yang tidak valid, atau saat stream input ditutup ketika permintaan masih tertunda.

1004 * `"hook"`: Hook `PreToolUse` atau `PermissionRequest` mengembalikan keputusan.1004 * `"hook"`: Hook `PreToolUse` atau `PermissionRequest` mengembalikan keputusan.

1005 * `"user_permanent"`: Dipancarkan ketika pengguna memilih "Yes, and don't ask again for ..." pada permintaan izin, yang menyimpan aturan izinkan ke pengaturan pribadinya. Di CLI interaktif, ini hanya dipancarkan untuk pilihan itu sendiri; panggilan berikutnya yang cocok dengan aturan yang disimpan memancarkan `"config"`. Dalam sesi Agent SDK atau sesi `-p` non-interaktif, baik pilihan awal maupun kecocokan aturan berikutnya memancarkan `"user_permanent"`. Diperlakukan sebagai penerimaan.1005 * `"user_permanent"`: Dipancarkan saat pengguna memilih "Yes, and don't ask again for ..." pada permintaan izin, yang menyimpan aturan allow ke pengaturan pribadinya. Di CLI interaktif, nilai ini hanya dipancarkan untuk pilihan itu sendiri; panggilan berikutnya yang cocok dengan aturan yang disimpan memancarkan `"config"`. Dalam sesi Agent SDK atau sesi non-interaktif `-p`, baik pilihan awal maupun kecocokan aturan berikutnya memancarkan `"user_permanent"`. Diperlakukan sebagai penerimaan.

1006 * `"user_temporary"`: Dipancarkan ketika pengguna memilih "Yes" pada permintaan izin untuk persetujuan satu kali, atau memilih opsi yang memberikan akses untuk sisa sesi pada permintaan izin pengeditan atau pembacaan file. Di CLI interaktif, ini hanya dipancarkan untuk pilihan itu sendiri; panggilan berikutnya yang diizinkan oleh pemberian izin berlingkup sesi tersebut memancarkan `"config"`. Dalam sesi Agent SDK atau sesi `-p` non-interaktif, baik pilihan maupun kecocokan berikutnya memancarkan `"user_temporary"`. Diperlakukan sebagai penerimaan.1006 * `"user_temporary"`: Dipancarkan saat pengguna memilih "Yes" pada permintaan izin untuk persetujuan satu kali, atau memilih opsi yang memberikan akses untuk sisa sesi pada permintaan izin edit atau baca file. Di CLI interaktif, nilai ini hanya dipancarkan untuk pilihan itu sendiri; panggilan berikutnya yang diizinkan oleh pemberian izin berskala sesi tersebut memancarkan `"config"`. Dalam sesi Agent SDK atau sesi non-interaktif `-p`, baik pilihan maupun kecocokan berikutnya memancarkan `"user_temporary"`. Diperlakukan sebagai penerimaan.

1007 * `"user_abort"`: Dipancarkan ketika pengguna menutup permintaan izin tanpa menjawab. Dalam sesi Agent SDK dan sesi `-p` non-interaktif, ini termasuk menginterupsi giliran saat permintaan izin `canUseTool` atau `--permission-prompt-tool` masih tertunda. Diperlakukan sebagai penolakan.1007 * `"user_abort"`: Dipancarkan saat pengguna menutup permintaan izin tanpa menjawab. Dalam sesi Agent SDK dan sesi non-interaktif `-p`, ini termasuk menginterupsi giliran saat permintaan izin `canUseTool` atau `--permission-prompt-tool` masih tertunda. Diperlakukan sebagai penolakan.

1008 * `"user_reject"`: Dipancarkan ketika pengguna memilih "No" saat diminta. Di CLI interaktif, ini hanya dipancarkan untuk pilihan itu sendiri; panggilan yang cocok dengan aturan tolak dalam pengaturan pribadi pengguna memancarkan `"config"`. Dalam sesi Agent SDK atau sesi `-p` non-interaktif, panggilan yang cocok dengan aturan tolak dalam pengaturan pribadi memancarkan `"user_reject"`. Diperlakukan sebagai penolakan.1008 * `"user_reject"`: Dipancarkan saat pengguna memilih "No" saat diminta. Di CLI interaktif, nilai ini hanya dipancarkan untuk pilihan itu sendiri; panggilan yang cocok dengan aturan deny dalam pengaturan pribadi pengguna memancarkan `"config"`. Dalam sesi Agent SDK atau sesi non-interaktif `-p`, panggilan yang cocok dengan aturan deny dalam pengaturan pribadi memancarkan `"user_reject"`. Diperlakukan sebagai penolakan.

1009* `classifier_verdict`: Verdict [pengklasifikasi](https://code.claude.com/docs/id/permission-modes.md#how-the-classifier-evaluates-actions) auto mode untuk panggilan, atau alasan Claude Code menolak panggilan ketika tidak ada verdict yang datang. Memerlukan Claude Code v2.1.301 atau lebih baru1009* `classifier_verdict`: Verdict [pengklasifikasi](https://code.claude.com/docs/id/permission-modes.md#how-the-classifier-evaluates-actions) auto mode untuk panggilan, atau alasan Claude Code menolak panggilan saat tidak ada verdict yang datang. Memerlukan Claude Code v2.1.301 atau yang lebih baru

1010 1010 

1011 * `"allow"`: pengklasifikasi menyetujui panggilan1011 * `"allow"`: pengklasifikasi menyetujui panggilan

1012 * `"block"`: pengklasifikasi memblokir panggilan. Pemeriksaan pengklasifikasi yang gagal di tengah jalan juga dapat berakhir sebagai `"block"`, sehingga gangguan parsial pengklasifikasi dapat muncul sebagai lebih banyak pemblokiran, bukan sebagai `"unavailable"`1012 * `"block"`: pengklasifikasi memblokir panggilan. Pemeriksaan pengklasifikasi yang gagal di tengah jalan juga dapat berakhir sebagai `"block"`, sehingga gangguan pengklasifikasi parsial dapat muncul sebagai lebih banyak blokir, bukan sebagai `"unavailable"`

1013 * `"no_verdict"`: pemeriksaan berjalan tetapi [tidak memberikan verdict yang dapat digunakan](https://code.claude.com/docs/id/errors.md#auto-mode-cannot-determine-the-safety-of-an-action), sehingga Claude Code menolak panggilan. Penolakan tersebut tidak berarti pengklasifikasi menganggap panggilan tidak aman1013 * `"no_verdict"`: pemeriksaan berjalan tetapi [tidak memberikan verdict yang dapat digunakan](https://code.claude.com/docs/id/errors.md#auto-mode-cannot-determine-the-safety-of-an-action), sehingga Claude Code menolak panggilan. Penolakan ini tidak berarti pengklasifikasi menganggap panggilan tersebut tidak aman

1014 * `"unavailable"`: permintaan ke pengklasifikasi gagal, misalnya karena rate limit, timeout, atau error koneksi, sehingga Claude Code menolak panggilan. Dengan [peninjauan pengklasifikasi sisi server](https://code.claude.com/docs/id/permission-modes.md#server-side-classifier-review), nilai ini juga menandai panggilan yang ditolak karena [server tidak mengembalikan verdict keamanan](https://code.claude.com/docs/id/errors.md#the-server-returned-no-safety-verdict)1014 * `"unavailable"`: permintaan ke pengklasifikasi gagal, misalnya karena rate limit, timeout, atau error koneksi, sehingga Claude Code menolak panggilan. Dengan [tinjauan pengklasifikasi sisi server](https://code.claude.com/docs/id/permission-modes.md#server-side-classifier-review), nilai ini juga menandai panggilan yang ditolak karena [server tidak mengembalikan verdict keamanan](https://code.claude.com/docs/id/errors.md#the-server-returned-no-safety-verdict)

1015 1015 

1016 Atribut ini juga muncul pada panggilan plan mode ketika [pengklasifikasi meninjau perintah dalam plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode). Atribut ini tidak ada dalam kasus berikut:1016 Atribut ini juga muncul pada panggilan plan mode saat [pengklasifikasi meninjau perintah dalam plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode). Atribut ini tidak ada dalam kasus berikut:

1017 1017 

1018 * [Aturan izin](https://code.claude.com/docs/id/permissions.md#manage-permissions) allow atau deny memutuskan panggilan1018 * [Aturan izin](https://code.claude.com/docs/id/permissions.md#manage-permissions) allow atau deny yang memutuskan panggilan

1019 * Claude Code menyetujui panggilan dalam auto mode tanpa bertanya kepada pengklasifikasi1019 * Claude Code menyetujui panggilan dalam auto mode tanpa bertanya ke pengklasifikasi

1020 * Pengguna menjawab permintaan izin yang ditampilkan Claude Code setelah [pemblokiran berulang](https://code.claude.com/docs/id/permission-modes.md#repeated-block-thresholds)1020 * Pengguna menjawab permintaan izin yang ditampilkan Claude Code setelah [blokir berulang](https://code.claude.com/docs/id/permission-modes.md#repeated-block-thresholds)

1021 * Dalam run `-p` tanpa `--permission-prompt-tool`, Claude Code menolak panggilan setelah pemblokiran berulang karena tidak ada yang menjawab permintaan izin. Event tersebut melaporkan `decision` sebagai `"reject"` dan `source` sebagai `"config"`1021 * Dalam eksekusi `-p` tanpa `--permission-prompt-tool`, Claude Code menolak panggilan setelah blokir berulang karena tidak ada yang dapat menjawab permintaan izin. Event tersebut melaporkan `decision` sebagai `"reject"` dan `source` sebagai `"config"`

1022* `classifier_category` (ketika `OTEL_LOG_TOOL_DETAILS=1`): Nama [aturan bawaan](https://code.claude.com/docs/id/auto-mode-config.md#inspect-the-defaults-and-your-effective-config) yang disebut pengklasifikasi ketika memblokir panggilan, dalam huruf kecil dengan garis bawah, seperti `"data_exfiltration"` untuk aturan Data Exfiltration. Memerlukan Claude Code v2.1.301 atau yang lebih baru. Atribut ini ada ketika kedua kondisi berikut terpenuhi:1022* `classifier_category` (saat `OTEL_LOG_TOOL_DETAILS=1`): Nama [aturan bawaan](https://code.claude.com/docs/id/auto-mode-config.md#inspect-the-defaults-and-your-effective-config) yang disebutkan pengklasifikasi saat memblokir panggilan, dalam huruf kecil dengan garis bawah, seperti `"data_exfiltration"` untuk aturan Data Exfiltration. Memerlukan Claude Code v2.1.301 atau yang lebih baru. Atribut ini ada saat kedua kondisi berikut terpenuhi:

1023 1023 

1024 * `classifier_verdict` bernilai `"block"`1024 * `classifier_verdict` bernilai `"block"`

1025 * Pengklasifikasi menyebut tepat satu aturan, dan aturan tersebut adalah aturan bawaan, bukan aturan yang Anda tulis1025 * Pengklasifikasi menyebutkan tepat satu aturan, dan aturan tersebut adalah aturan bawaan, bukan aturan yang Anda tulis

1026 1026 

1027 Sebelum v2.1.302, atribut ini juga tidak ada pada blokir apa pun yang diputuskan oleh [tinjauan pengklasifikasi sisi server](https://code.claude.com/docs/id/permission-modes.md#server-side-classifier-review).1027 Sebelum v2.1.302, atribut ini juga tidak ada pada blokir apa pun yang diputuskan oleh [tinjauan pengklasifikasi sisi server](https://code.claude.com/docs/id/permission-modes.md#server-side-classifier-review).

1028* `permission_mode`: [Mode izin](https://code.claude.com/docs/id/permission-modes.md) yang aktif ketika pemeriksaan izin panggilan ini dimulai: `"default"`, `"plan"`, `"acceptEdits"`, `"bypassPermissions"`, `"dontAsk"`, atau `"auto"`. Mode manual muncul sebagai `"default"`. Panggilan [subagent](https://code.claude.com/docs/id/sub-agents.md#permission-modes) melaporkan mode izin subagent, bukan mode izin sesi. Memerlukan Claude Code v2.1.301 atau lebih baru1028* `permission_mode`: [Mode izin](https://code.claude.com/docs/id/permission-modes.md) yang aktif saat pemeriksaan izin panggilan ini dimulai: `"default"`, `"plan"`, `"acceptEdits"`, `"bypassPermissions"`, `"dontAsk"`, atau `"auto"`. Mode manual muncul sebagai `"default"`. Panggilan [subagent](https://code.claude.com/docs/id/sub-agents.md#permission-modes) melaporkan mode izin subagent, bukan mode izin sesi. Memerlukan Claude Code v2.1.301 atau yang lebih baru

1029* `tool_parameters` (ketika `OTEL_LOG_TOOL_DETAILS=1`): String JSON yang berisi parameter spesifik tool. Bentuknya sama dengan [Event hasil tool](#tool-result-event), tanpa field pasca-eksekusi seperti `git_commit_id`. Nilai dapat berbeda dari `tool_result` untuk panggilan yang diterima jika keputusan izin menulis ulang input tool melalui `updatedInput`. Gunakan atribut ini untuk melihat perintah mana yang ditolak ketika `decision` adalah `"reject"`.1029* `tool_parameters` (saat `OTEL_LOG_TOOL_DETAILS=1`): String JSON yang berisi parameter spesifik tool. Bentuknya sama seperti [Event hasil tool](#tool-result-event), tanpa field pasca-eksekusi seperti `git_commit_id`. Nilainya dapat berbeda dari `tool_result` untuk panggilan yang diterima jika keputusan izin menulis ulang input tool melalui `updatedInput`. Gunakan atribut ini untuk melihat perintah mana yang ditolak saat `decision` bernilai `"reject"`.

1030 * Untuk tool `"sdk_host_builtin_mcp"`: `mcp_server_name` dan `mcp_tool_name` disertakan bahkan ketika `OTEL_LOG_TOOL_DETAILS` dimatikan, karena aplikasi host yang mendefinisikan nama-nama ini; tanpanya, panggilan yang ditolak ke salah satu server bawaan ini tidak dapat diatribusikan pada stream default. Untuk server MCP yang dikonfigurasi pengguna, `tool_name` event selalu berupa literal `"mcp_tool"`, dan nama server serta tool hanya muncul di `tool_parameters` dengan flag aktif; konten argumen memerlukan flag di mana pun.1030 * Untuk tool `"sdk_host_builtin_mcp"`: `mcp_server_name` dan `mcp_tool_name` disertakan bahkan saat `OTEL_LOG_TOOL_DETAILS` nonaktif, karena aplikasi host yang menentukan nama-nama ini; tanpanya, panggilan yang ditolak ke salah satu server bawaan ini tidak dapat diatribusikan pada stream default. Untuk server MCP yang dikonfigurasi pengguna, `tool_name` event selalu berupa literal `"mcp_tool"`, dan nama server serta tool hanya muncul dalam `tool_parameters` dengan flag aktif; konten argumen memerlukan flag di mana pun.

1031 * Untuk tool Bash: mencakup `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox`. Tool bash workspace aplikasi desktop juga melaporkan `tool_name` sebagai `Bash`, tetapi hanya mencakup `bash_command`, `full_command`, dan `timeout`1031 * Untuk tool Bash: mencakup `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox`. Tool bash workspace aplikasi desktop juga melaporkan `tool_name` sebagai `Bash`, tetapi hanya mencakup `bash_command`, `full_command`, dan `timeout`

1032 * Untuk tool MCP: mencakup `mcp_server_name`, `mcp_tool_name`1032 * Untuk tool MCP: mencakup `mcp_server_name`, `mcp_tool_name`

1033 * Untuk tool Skill: mencakup `skill_name`1033 * Untuk tool Skill: mencakup `skill_name`

1034 * Untuk tool Agent atau tool Task lama: mencakup `subagent_type`1034 * Untuk tool Agent atau tool Task lama: mencakup `subagent_type`

1035 1035 

1036Jika Anda menurunkan `OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT` milik SDK OpenTelemetry di bawah jumlah atribut pada event `tool_decision`, SDK membuang atribut yang ditetapkan terakhir oleh Claude Code. SDK membuang atribut ini sebelum atribut lain, dalam urutan berikut, melewati atribut yang tidak dibawa event:1036Jika Anda menurunkan `OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT` milik SDK OpenTelemetry di bawah jumlah atribut pada event `tool_decision`, SDK akan membuang atribut yang diatur terakhir oleh Claude Code. SDK membuang atribut ini sebelum atribut lainnya, dengan urutan berikut, melewati atribut yang tidak dibawa oleh event:

1037 1037 

10381. `parent_agent_id`10381. `parent_agent_id`

10392. `agent_id`10392. `agent_id`


10425. `classifier_category`10425. `classifier_category`

10436. `classifier_verdict`10436. `classifier_verdict`

1044 1044 

1045`permission_mode`, `classifier_category`, dan `classifier_verdict` dibuang dalam urutan ini pada Claude Code v2.1.302 atau yang lebih baru. `parent_agent_id`, `agent_id`, dan `request_id` memerlukan v2.1.310 atau yang lebih baru.1045`permission_mode`, `classifier_category`, dan `classifier_verdict` dibuang dengan urutan ini pada Claude Code v2.1.302 atau yang lebih baru. `parent_agent_id`, `agent_id`, dan `request_id` memerlukan v2.1.310 atau yang lebih baru.

1046 1046 

1047#### Event safety1047#### Event keamanan

1048 1048 

1049Dicatat saat suatu pemeriksaan menolak panggilan tool atau mengharuskan permintaan izin, kecuali untuk [panggilan tanpa event safety](#calls-without-a-safety-event). Juga dicatat saat [proxy jaringan sandbox](https://code.claude.com/docs/id/sandboxing.md#network-isolation) menolak koneksi atau permintaan, dan saat hook memblokir hasil. Memerlukan Claude Code v2.1.307 atau lebih baru.1049Dicatat saat sebuah pemeriksaan menolak panggilan tool atau memerlukan permintaan izin, kecuali untuk [panggilan tanpa event keamanan](#calls-without-a-safety-event). Juga dicatat saat [proxy jaringan sandbox](https://code.claude.com/docs/id/sandboxing.md#network-isolation) menolak koneksi atau permintaan, dan saat hook memblokir hasil. Memerlukan Claude Code v2.1.307 atau yang lebih baru.

1050 1050 

1051Event ini diekspor bersama event lainnya dan tidak memiliki pengaturan tersendiri. Atribut milik event ini sendiri tidak memuat teks perintah, path file, nama host, atau nama server dan tool MCP. Record ini juga memuat [atribut standar](#standard-attributes) yang dimiliki setiap event, yang dapat mencakup `workspace.host_paths` dan [atribut repositori](#repository-attributes). Untuk melihat perintah atau tool MCP di balik suatu event, tetapkan `OTEL_LOG_TOOL_DETAILS=1` dan baca `tool_parameters` pada event `tool_decision` yang cocok.1051Event ini diekspor bersama event lainnya dan tidak memiliki pengaturan terpisah. Atribut milik event ini tidak memuat teks perintah, path file, nama host, ataupun nama server dan tool MCP. Record ini juga membawa [atribut standar](#standard-attributes) yang dimiliki setiap event, yang dapat mencakup `workspace.host_paths` dan [atribut repositori](#repository-attributes). Untuk melihat perintah atau tool MCP di balik sebuah event, atur `OTEL_LOG_TOOL_DETAILS=1` dan baca `tool_parameters` pada event `tool_decision` yang cocok.

1052 1052 

1053**Nama Event**: `claude_code.safety_event`1053**Nama Event**: `claude_code.safety_event`

1054 1054 


1057* Semua [atribut standar](#standard-attributes)1057* Semua [atribut standar](#standard-attributes)

1058* `event.name`: `"safety_event"`1058* `event.name`: `"safety_event"`

1059* `event.timestamp`: Timestamp ISO 86011059* `event.timestamp`: Timestamp ISO 8601

1060* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)1060* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1061* `category`: Pemeriksaan atau hasilnya, berupa [nilai kategori](#safety-event-categories)1061* `category`: Pemeriksaan atau hasilnya, berupa [nilai kategori](#safety-event-categories)

1062* `decision`: `"accept"`, `"reject"`, atau `"sent_back"` saat hook memblokir hasil atau akhir giliran1062* `decision`: `"accept"`, `"reject"`, atau `"sent_back"` saat hook memblokir hasil atau akhir giliran

1063* `decision_source`: Siapa atau apa yang memutuskan, berupa nilai `source` dari [`tool_decision`](#tool-decision-event) atau `"other"`1063* `decision_source`: Siapa atau apa yang memutuskan, berupa nilai `source` dari [`tool_decision`](#tool-decision-event) atau `"other"`


1065* `reason_type`: Jenis alasan pemeriksaan, seperti `"rule"`, `"subcommandResults"`, `"mode"`, `"hook"`, `"classifier"`, atau `"asyncAgent"`1065* `reason_type`: Jenis alasan pemeriksaan, seperti `"rule"`, `"subcommandResults"`, `"mode"`, `"hook"`, `"classifier"`, atau `"asyncAgent"`

1066* `rule_source`: Sumber pengaturan dari aturan yang terlibat, seperti `"policySettings"`, `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"cliArg"`, atau `"session"`1066* `rule_source`: Sumber pengaturan dari aturan yang terlibat, seperti `"policySettings"`, `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"cliArg"`, atau `"session"`

1067* `grant_scope`: `"once"` atau `"session"` untuk permintaan izin yang disetujui tanpa menyimpan aturan ke file pengaturan1067* `grant_scope`: `"once"` atau `"session"` untuk permintaan izin yang disetujui tanpa menyimpan aturan ke file pengaturan

1068* `circuit_breaker`: Pemeriksaan safety bawaan, seperti `"dangerousRemoval"`, `"outsideReadsBlocked"`, atau `"claudeSettingsFile"`1068* `circuit_breaker`: Pemeriksaan keamanan bawaan, seperti `"dangerousRemoval"`, `"outsideReadsBlocked"`, atau `"claudeSettingsFile"`

1069* `classifier_category`: Dengan `OTEL_LOG_TOOL_DETAILS=1`, [aturan bawaan](https://code.claude.com/docs/id/auto-mode-config.md#inspect-the-defaults-and-your-effective-config) di balik pemblokiran auto mode, seperti `"data_exfiltration"`1069* `classifier_category`: Dengan `OTEL_LOG_TOOL_DETAILS=1`, [aturan bawaan](https://code.claude.com/docs/id/auto-mode-config.md#inspect-the-defaults-and-your-effective-config) di balik blokir auto mode, seperti `"data_exfiltration"`

1070* `hook_event`: `"pre_tool_use"` untuk hook `PreToolUse`, atau `"post_tool_use"`, `"post_tool_use_failure"`, `"stop"`, atau `"subagent_stop"` pada event `"hook_review"`1070* `hook_event`: `"pre_tool_use"` untuk hook `PreToolUse`, atau `"post_tool_use"`, `"post_tool_use_failure"`, `"stop"`, atau `"subagent_stop"` pada event `"hook_review"`

1071* `tool_class`: `"bash"` untuk Bash dan [Monitor](https://code.claude.com/docs/id/tools-reference.md#monitor-tool), `"powershell"`, `"file"` untuk Read, Edit, Write, NotebookEdit, Glob, dan Grep, `"web"` untuk WebFetch dan WebSearch, `"mcp"`, atau `"other"`1071* `tool_class`: `"bash"` untuk Bash dan [Monitor](https://code.claude.com/docs/id/tools-reference.md#monitor-tool), `"powershell"`, `"file"` untuk Read, Edit, Write, NotebookEdit, Glob, dan Grep, `"web"` untuk WebFetch dan WebSearch, `"mcp"`, atau `"other"`

1072* `tool_name`: Nama tool, seperti `"Bash"` untuk tool bawaan, atau `"mcp_tool"`, `"skill_tool"`, `"dynamic_tool"`, atau `"other_tool"`1072* `tool_name`: Nama tool, seperti `"Bash"` untuk tool bawaan, atau `"mcp_tool"`, `"skill_tool"`, `"dynamic_tool"`, atau `"other_tool"`

1073* `tool_source`: `"builtin"`, `"mcp"`, atau `"sdk_host_builtin_mcp"`, seperti pada [`tool_decision`](#tool-decision-event)1073* `tool_source`: `"builtin"`, `"mcp"`, atau `"sdk_host_builtin_mcp"`, seperti pada [`tool_decision`](#tool-decision-event)

1074* `permission_mode`: [Mode izin](https://code.claude.com/docs/id/permission-modes.md) panggilan saat diperiksa: `"default"`, `"plan"`, `"acceptEdits"`, `"bypassPermissions"`, `"dontAsk"`, atau `"auto"`1074* `permission_mode`: [Mode izin](https://code.claude.com/docs/id/permission-modes.md) panggilan saat diperiksa: `"default"`, `"plan"`, `"acceptEdits"`, `"bypassPermissions"`, `"dontAsk"`, atau `"auto"`

1075* `tool_use_id`: ID panggilan, seperti pada `tool_decision` dan `tool_result`1075* `tool_use_id`: ID panggilan, seperti pada `tool_decision` dan `tool_result`

1076* `sandbox_violation_count`: Jumlah koneksi atau permintaan berbeda dari perintah panggilan yang ditolak oleh proxy jaringan sandbox, `"0"` hingga `"20"` sebagai string. Penolakan dihitung untuk perintah dalam sandbox yang selesai di foreground1076* `sandbox_violation_count`: Berapa banyak koneksi atau permintaan berbeda dari perintah panggilan yang ditolak oleh proxy jaringan sandbox, `"0"` hingga `"20"` sebagai string. Penolakan dihitung untuk perintah dalam sandbox yang selesai di foreground

1077* `sandbox_enabled`: `"true"` jika [sandboxing](https://code.claude.com/docs/id/sandboxing.md) aktif untuk sesi, jika tidak `"false"`1077* `sandbox_enabled`: `"true"` jika [sandboxing](https://code.claude.com/docs/id/sandboxing.md) aktif untuk sesi, jika tidak `"false"`

1078 1078 

1079Berikut adalah atribut milik event ini saat aturan deny dari pengaturan terkelola menolak perintah Bash:1079Berikut adalah atribut milik event ini saat aturan deny pengaturan terkelola menolak perintah Bash:

1080 1080 

1081```json theme={null}1081```json theme={null}

1082{1082{


1096}1096}

1097```1097```

1098 1098 

1099##### Kategori event safety1099##### Kategori event keamanan

1100 1100 

1101| Nilai | Pemeriksaan atau hasil | Atribut detail |1101| Nilai | Pemeriksaan atau hasil | Atribut detail |

1102| - | - | - |1102| - | - | - |

1103| `"permission_rule"` | [Aturan izin](https://code.claude.com/docs/id/permissions.md#manage-permissions) deny atau ask di luar pengaturan terkelola | `rule_source` |1103| `"permission_rule"` | [Aturan izin](https://code.claude.com/docs/id/permissions.md#manage-permissions) deny atau ask di luar pengaturan terkelola | `rule_source` |

1104| `"managed_policy"` | Aturan deny atau ask dari [pengaturan terkelola](https://code.claude.com/docs/id/permissions.md#managed-settings) | `rule_source` |1104| `"managed_policy"` | Aturan deny atau ask dari [pengaturan terkelola](https://code.claude.com/docs/id/permissions.md#managed-settings) | `rule_source` |

1105| `"permission_mode"` | Mode [`dontAsk`](https://code.claude.com/docs/id/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) atau [plan](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode), atau permintaan izin [tanpa kategori](#prompts-with-no-category) dalam sesi yang tidak dapat menampilkan permintaan izin, seperti dengan [`--permission-prompts none`](https://code.claude.com/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) | `reason_code`, `reason_type` |1105| `"permission_mode"` | Mode [`dontAsk`](https://code.claude.com/docs/id/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) atau [plan](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode), atau permintaan izin [tanpa kategori](#prompts-with-no-category) dalam sesi yang tidak dapat menampilkan permintaan izin, seperti dengan [`--permission-prompts none`](https://code.claude.com/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) | `reason_code`, `reason_type` |

1106| `"hook"` | Hook, seperti [`PreToolUse`](https://code.claude.com/docs/id/hooks#pretooluse) atau [`PermissionRequest`](https://code.claude.com/docs/id/hooks#permissionrequest) | `hook_event`, `reason_code` |1106| `"hook"` | Sebuah hook, seperti [`PreToolUse`](https://code.claude.com/docs/id/hooks#pretooluse) atau [`PermissionRequest`](https://code.claude.com/docs/id/hooks#permissionrequest) | `hook_event`, `reason_code` |

1107| `"auto_mode_block"` | [Pengklasifikasi](https://code.claude.com/docs/id/permission-modes.md#how-the-classifier-evaluates-actions) auto mode memblokir panggilan | `classifier_category` |1107| `"auto_mode_block"` | [Pengklasifikasi](https://code.claude.com/docs/id/permission-modes.md#how-the-classifier-evaluates-actions) auto mode memblokir panggilan | `classifier_category` |

1108| `"auto_mode_no_verdict"` | Tidak ada [verdict pengklasifikasi](https://code.claude.com/docs/id/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) yang dapat digunakan, seperti setelah permintaan yang gagal | `reason_code` |1108| `"auto_mode_no_verdict"` | Tidak ada [verdict pengklasifikasi](https://code.claude.com/docs/id/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) yang dapat digunakan, seperti setelah permintaan yang gagal | `reason_code` |

1109| `"safety_check"` | Pemeriksaan safety bawaan, seperti untuk Read, Edit, atau Write di luar [direktori kerja](https://code.claude.com/docs/id/permissions.md#working-directories) Anda | `circuit_breaker` |1109| `"safety_check"` | Pemeriksaan keamanan bawaan, seperti untuk Read, Edit, atau Write di luar [direktori kerja](https://code.claude.com/docs/id/permissions.md#working-directories) Anda | `circuit_breaker` |

1110| `"static_analysis"` | Cara perintah Bash atau Monitor ditulis, seperti perintah yang terlalu kompleks untuk dianalisis | `reason_code` |1110| `"static_analysis"` | Cara penulisan perintah Bash atau Monitor, seperti perintah yang terlalu kompleks untuk dianalisis | `reason_code` |

1111| `"sandbox_override"` | Permintaan izin untuk [menjalankan perintah di luar sandbox](https://code.claude.com/docs/id/sandboxing.md#the-unsandboxed-retry-escape-hatch) | `reason_code` |1111| `"sandbox_override"` | Permintaan izin untuk [menjalankan perintah di luar sandbox](https://code.claude.com/docs/id/sandboxing.md#the-unsandboxed-retry-escape-hatch) | `reason_code` |

1112| `"user_rejected"` | Seseorang menolak atau menutup permintaan izin yang [tidak memiliki kategori](#prompts-with-no-category) atau yang hanya diharuskan oleh hook, atau callback `canUseTool` atau tool `--permission-prompt-tool` menolaknya | `decision_source` |1112| `"user_rejected"` | Seseorang menolak atau menutup permintaan izin yang [tidak memiliki kategori](#prompts-with-no-category) atau yang hanya diwajibkan oleh hook, atau callback `canUseTool` atau tool `--permission-prompt-tool` menolaknya | `decision_source` |

1113| `"sandbox_network"` | Panggilan berjalan dan [proxy jaringan sandbox](https://code.claude.com/docs/id/sandboxing.md#network-isolation) menolak koneksi atau permintaan | `sandbox_violation_count` |1113| `"sandbox_network"` | Panggilan berjalan dan [proxy jaringan sandbox](https://code.claude.com/docs/id/sandboxing.md#network-isolation) menolak koneksi atau permintaan | `sandbox_violation_count` |

1114| `"sandbox_other"` | Seperti `"sandbox_network"`, tetapi tidak ada target yang ditolak yang terbaca sebagai nama host atau alamat IP | `sandbox_violation_count` |1114| `"sandbox_other"` | Seperti `"sandbox_network"`, tetapi tidak ada target yang ditolak yang terbaca sebagai nama host atau alamat IP | `sandbox_violation_count` |

1115| `"hook_review"` | Hook [memblokir hasil panggilan](https://code.claude.com/docs/id/hooks.md#posttooluse-decision-control) atau [akhir giliran](https://code.claude.com/docs/id/hooks.md#stop-decision-control) | `hook_event` |1115| `"hook_review"` | Hook [memblokir hasil panggilan](https://code.claude.com/docs/id/hooks.md#posttooluse-decision-control) atau [akhir giliran](https://code.claude.com/docs/id/hooks.md#stop-decision-control) | `hook_event` |


1117 1117 

1118Untuk menemukan penolakan proxy di bawah `category` apa pun, filter `sandbox_violation_count` yang ada dan bukan `"0"`.1118Untuk menemukan penolakan proxy di bawah `category` apa pun, filter `sandbox_violation_count` yang ada dan bukan `"0"`.

1119 1119 

1120##### Panggilan tanpa event safety1120##### Panggilan tanpa event keamanan

1121 1121 

1122Untuk menemukan panggilan yang ditolak karena tidak ada yang dapat menjawab [permintaan izin tanpa kategori](#prompts-with-no-category), cari event [`tool_decision`](#tool-decision-event) yang melaporkan `"reject"` dengan `source` `"config"` dan tidak ada event safety yang memiliki `tool_use_id` yang sama. Penolakan seperti ini terjadi dalam eksekusi `-p` tanpa [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) maupun `--permission-prompts none`.1122Untuk menemukan panggilan yang ditolak karena tidak ada yang dapat menjawab [permintaan izin tanpa kategori](#prompts-with-no-category), cari event [`tool_decision`](#tool-decision-event) yang melaporkan `"reject"` dengan `source` `"config"` dan tidak ada event keamanan yang memiliki `tool_use_id` yang sama. Penolakan seperti itu terjadi dalam eksekusi `-p` tanpa [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) maupun `--permission-prompts none`.

1123 1123 

1124Periksa panggilan seperti berikut untuk event `tool_decision`, karena panggilan tersebut tidak memiliki event safety kecuali [event `"sandbox_network"`, `"sandbox_other"`, atau `"hook_review"`](#safety-event-categories) yang dikirim setelah panggilan tersebut berjalan:1124Periksa panggilan seperti berikut untuk event `tool_decision`, karena panggilan tersebut tidak memiliki event keamanan kecuali [event `"sandbox_network"`, `"sandbox_other"`, atau `"hook_review"`](#safety-event-categories) yang dikirim setelah panggilan berjalan:

1125 1125 

1126* Panggilan yang disetujui pada permintaan izin tanpa kategori1126* Panggilan yang disetujui pada permintaan izin tanpa kategori

1127* Panggilan yang disetujui oleh callback `canUseTool` atau tool `--permission-prompt-tool` pada permintaan izin yang hanya diharuskan oleh hook `PreToolUse`1127* Panggilan yang disetujui oleh callback `canUseTool` atau tool `--permission-prompt-tool` pada permintaan izin yang hanya diwajibkan oleh hook `PreToolUse`

1128* Panggilan [`AskUserQuestion`](https://code.claude.com/docs/id/tools-reference#askuserquestion-tool-behavior) atau `ExitPlanMode`, baik ditolak maupun tidak1128* Panggilan [`AskUserQuestion`](https://code.claude.com/docs/id/tools-reference#askuserquestion-tool-behavior) atau `ExitPlanMode`, baik ditolak maupun tidak

1129 1129 

1130##### Permintaan izin tanpa kategori1130##### Permintaan izin tanpa kategori

1131 1131 

1132Permintaan izin tidak memiliki kategori saat tidak ada [nilai `category`](#safety-event-categories) yang menyebutkan pemeriksaannya, seperti permintaan izin mode `default` untuk edit di dalam direktori kerja Anda.1132Sebuah permintaan izin tidak memiliki kategori jika tidak ada [nilai `category`](#safety-event-categories) yang menyebutkan pemeriksaannya, seperti permintaan izin mode `default` untuk pengeditan di dalam direktori kerja Anda.

1133 1133 

1134#### Event perubahan mode izin1134#### Event perubahan mode izin

1135 1135 

1136Dicatat ketika mode izin berubah, misalnya dari siklus `Shift+Tab`, keluar dari plan mode, atau pemeriksaan gerbang auto mode.1136Dicatat saat mode izin berubah, misalnya dari siklus `Shift+Tab`, keluar dari plan mode, atau pemeriksaan gerbang auto mode.

1137 1137 

1138Untuk mengelompokkan panggilan tool berdasarkan mode izin saat masing-masing diperiksa, gunakan `permission_mode` pada [Event keputusan tool](#tool-decision-event).1138Untuk mengelompokkan panggilan tool berdasarkan mode izin tempat masing-masing diperiksa, gunakan `permission_mode` pada [Event keputusan tool](#tool-decision-event).

1139 1139 

1140**Nama Event**: `claude_code.permission_mode_changed`1140**Nama Event**: `claude_code.permission_mode_changed`

1141 1141 


1144* Semua [atribut standar](#standard-attributes)1144* Semua [atribut standar](#standard-attributes)

1145* `event.name`: `"permission_mode_changed"`1145* `event.name`: `"permission_mode_changed"`

1146* `event.timestamp`: Timestamp ISO 86011146* `event.timestamp`: Timestamp ISO 8601

1147* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)1147* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1148* `from_mode`: Mode izin sebelumnya, misalnya `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, atau `"bypassPermissions"`1148* `from_mode`: Mode izin sebelumnya, misalnya `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, atau `"bypassPermissions"`

1149* `to_mode`: Mode izin yang baru1149* `to_mode`: Mode izin yang baru

1150* `trigger`: Penyebab perubahan, misalnya `"shift_tab"`, `"exit_plan_mode"`, atau `"auto_gate_denied"`. Tidak ada untuk beberapa perubahan, seperti ketika SDK menetapkan mode izin melalui [`setPermissionMode()`](https://code.claude.com/docs/id/agent-sdk/typescript#query-object)1150* `trigger`: Penyebab perubahan, misalnya `"shift_tab"`, `"exit_plan_mode"`, atau `"auto_gate_denied"`. Tidak ada untuk beberapa perubahan, seperti saat SDK mengatur mode izin melalui [`setPermissionMode()`](https://code.claude.com/docs/id/agent-sdk/typescript#query-object)

1151 1151 

1152#### Event autentikasi1152#### Event autentikasi

1153 1153 

1154Dicatat ketika `/login` atau `/logout` selesai.1154Dicatat saat `/login` atau `/logout` selesai.

1155 1155 

1156**Nama Event**: `claude_code.auth`1156**Nama Event**: `claude_code.auth`

1157 1157 


1160* Semua [atribut standar](#standard-attributes)1160* Semua [atribut standar](#standard-attributes)

1161* `event.name`: `"auth"`1161* `event.name`: `"auth"`

1162* `event.timestamp`: Timestamp ISO 86011162* `event.timestamp`: Timestamp ISO 8601

1163* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)1163* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1164* `action`: `"login"` atau `"logout"`1164* `action`: `"login"` atau `"logout"`

1165* `success`: `"true"` atau `"false"`1165* `success`: `"true"` atau `"false"`

1166* `auth_method`: Metode autentikasi, seperti `"oauth"`1166* `auth_method`: Metode autentikasi, seperti `"oauth"`

1167* `error_category`: Jenis error kategoris ketika aksi gagal. Pesan error mentah tidak pernah disertakan1167* `error_category`: Jenis error kategoris saat tindakan gagal. Pesan error mentah tidak pernah disertakan

1168* `status_code`: Kode status HTTP sebagai string ketika aksi gagal dengan error HTTP1168* `status_code`: Kode status HTTP sebagai string saat tindakan gagal dengan error HTTP

1169 1169 

1170#### Event koneksi server MCP1170#### Event koneksi server MCP

1171 1171 

1172Dicatat ketika server MCP terhubung, terputus, atau gagal terhubung.1172Dicatat saat server MCP terhubung, terputus, atau gagal terhubung.

1173 1173 

1174**Nama Event**: `claude_code.mcp_server_connection`1174**Nama Event**: `claude_code.mcp_server_connection`

1175 1175 


1178* Semua [atribut standar](#standard-attributes)1178* Semua [atribut standar](#standard-attributes)

1179* `event.name`: `"mcp_server_connection"`1179* `event.name`: `"mcp_server_connection"`

1180* `event.timestamp`: Timestamp ISO 86011180* `event.timestamp`: Timestamp ISO 8601

1181* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)1181* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1182* `status`: `"connected"`, `"failed"`, atau `"disconnected"`1182* `status`: `"connected"`, `"failed"`, atau `"disconnected"`

1183* `transport_type`: Transport server, seperti `"stdio"`, `"sse"`, atau `"http"`1183* `transport_type`: Transport server, seperti `"stdio"`, `"sse"`, atau `"http"`

1184* `server_scope`: Cakupan tempat server dikonfigurasi, seperti `"user"`, `"project"`, atau `"local"`1184* `server_scope`: Cakupan tempat server dikonfigurasi, seperti `"user"`, `"project"`, atau `"local"`

1185* `duration_ms`: Durasi percobaan koneksi dalam milidetik1185* `duration_ms`: Durasi percobaan koneksi dalam milidetik

1186* `error_code`: Kode error ketika koneksi gagal1186* `error_code`: Kode error saat koneksi gagal

1187* `is_plugin`: `true` ketika server disediakan oleh plugin, `false` jika tidak1187* `is_plugin`: `true` saat server disediakan oleh plugin, `false` jika tidak

1188* `plugin_id_hash` (ketika `is_plugin` adalah `true`): Hash stabil dari nama plugin dan marketplace, untuk mengelompokkan event berdasarkan plugin tanpa mengekspos namanya. Claude Code menghitungnya sebagaimana dijelaskan di bawah [event plugin dimuat](#plugin-loaded-event)1188* `plugin_id_hash` (saat `is_plugin` bernilai `true`): Hash stabil dari nama plugin dan marketplace, untuk mengelompokkan event berdasarkan plugin tanpa mengekspos namanya. Claude Code menghitungnya seperti yang dijelaskan di bagian [event plugin dimuat](#plugin-loaded-event)

1189* `plugin.name` (ketika `is_plugin` adalah `true`): Nama plugin yang menyediakan server. Untuk plugin pihak ketiga, ini adalah string literal `"third-party"` kecuali `OTEL_LOG_TOOL_DETAILS=1`; ini melindungi nama plugin pihak ketiga agar tidak muncul di log secara default. Plugin dari sumber resmi Anthropic selalu diidentifikasi berdasarkan nama. Atribut `plugin_id_hash` dan `plugin.name` mengalir ke backend pemantauan Anda sendiri dan tidak dikirim ke Anthropic1189* `plugin.name` (saat `is_plugin` bernilai `true`): Nama plugin yang menyediakan server. Untuk plugin pihak ketiga, ini adalah string literal `"third-party"` kecuali jika `OTEL_LOG_TOOL_DETAILS=1`; ini melindungi nama plugin pihak ketiga agar tidak muncul di log secara default. Plugin dari sumber resmi Anthropic selalu diidentifikasi berdasarkan nama. Atribut `plugin_id_hash` dan `plugin.name` mengalir ke backend pemantauan milik Anda sendiri dan tidak dikirim ke Anthropic

1190* `server_name` (ketika `OTEL_LOG_TOOL_DETAILS=1`): Nama server yang dikonfigurasi1190* `server_name` (saat `OTEL_LOG_TOOL_DETAILS=1`): Nama server yang dikonfigurasi

1191* `error` (ketika `OTEL_LOG_TOOL_DETAILS=1`): Pesan error lengkap ketika koneksi gagal1191* `error` (saat `OTEL_LOG_TOOL_DETAILS=1`): Pesan error lengkap saat koneksi gagal

1192 1192 

1193#### Event error internal1193#### Event error internal

1194 1194 

1195Dicatat ketika Claude Code menangkap error internal yang tidak terduga. Hanya nama kelas error dan kode bergaya errno yang dicatat. Pesan error dan stack trace tidak pernah disertakan. Event ini tidak dipancarkan ketika berjalan terhadap Amazon Bedrock, Agent Platform milik Google Cloud, atau Microsoft Foundry, atau ketika `DISABLE_ERROR_REPORTING` ditetapkan.1195Dicatat saat Claude Code menangkap error internal yang tidak terduga. Hanya nama kelas error dan kode bergaya errno yang dicatat. Pesan error dan stack trace tidak pernah disertakan. Event ini tidak dipancarkan saat berjalan pada Amazon Bedrock, Agent Platform dari Google Cloud, atau Microsoft Foundry, atau saat `DISABLE_ERROR_REPORTING` diatur.

1196 1196 

1197**Nama Event**: `claude_code.internal_error`1197**Nama Event**: `claude_code.internal_error`

1198 1198 


1201* Semua [atribut standar](#standard-attributes)1201* Semua [atribut standar](#standard-attributes)

1202* `event.name`: `"internal_error"`1202* `event.name`: `"internal_error"`

1203* `event.timestamp`: Timestamp ISO 86011203* `event.timestamp`: Timestamp ISO 8601

1204* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)1204* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1205* `error_name`: Nama kelas error, seperti `"TypeError"` atau `"SyntaxError"`1205* `error_name`: Nama kelas error, seperti `"TypeError"` atau `"SyntaxError"`

1206* `error_code`: Kode errno Node.js seperti `"ENOENT"` jika ada pada error1206* `error_code`: Kode errno Node.js seperti `"ENOENT"` jika ada pada error

1207 1207 

1208#### Event plugin diinstal1208#### Event plugin terpasang

1209 1209 

1210Dicatat ketika plugin selesai diinstal, baik dari perintah CLI `claude plugin install` maupun UI `/plugin` interaktif.1210Dicatat ketika sebuah plugin selesai dipasang, baik dari perintah CLI `claude plugin install` maupun dari UI interaktif `/plugin`.

1211 1211 

1212**Nama Event**: `claude_code.plugin_installed`1212**Nama Event**: `claude_code.plugin_installed`

1213 1213 


1216* Semua [atribut standar](#standard-attributes)1216* Semua [atribut standar](#standard-attributes)

1217* `event.name`: `"plugin_installed"`1217* `event.name`: `"plugin_installed"`

1218* `event.timestamp`: Timestamp ISO 86011218* `event.timestamp`: Timestamp ISO 8601

1219* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)1219* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1220* `marketplace.is_official`: `"true"` jika marketplace adalah marketplace resmi Anthropic, `"false"` jika tidak1220* `marketplace.is_official`: `"true"` jika marketplace adalah marketplace resmi Anthropic, `"false"` jika tidak

1221* `install.trigger`: `"cli"` atau `"ui"`1221* `install.trigger`: `"cli"` atau `"ui"`

1222* `plugin.name`: Nama plugin yang diinstal. Untuk marketplace pihak ketiga, ini hanya disertakan ketika `OTEL_LOG_TOOL_DETAILS=1`1222* `plugin.name`: Nama plugin yang dipasang. Untuk marketplace pihak ketiga, atribut ini hanya disertakan ketika `OTEL_LOG_TOOL_DETAILS=1`

1223* `plugin.version`: Versi plugin jika dideklarasikan dalam entri marketplace. Untuk marketplace pihak ketiga, ini hanya disertakan ketika `OTEL_LOG_TOOL_DETAILS=1`1223* `plugin.version`: Versi plugin jika dideklarasikan dalam entri marketplace. Untuk marketplace pihak ketiga, atribut ini hanya disertakan ketika `OTEL_LOG_TOOL_DETAILS=1`

1224* `marketplace.name`: Marketplace tempat plugin diinstal. Untuk marketplace pihak ketiga, ini hanya disertakan ketika `OTEL_LOG_TOOL_DETAILS=1`1224* `marketplace.name`: Marketplace tempat plugin dipasang. Untuk marketplace pihak ketiga, atribut ini hanya disertakan ketika `OTEL_LOG_TOOL_DETAILS=1`

1225 1225 

1226#### Event plugin dimuat1226#### Event plugin dimuat

1227 1227 

1228Dicatat sekali per plugin yang diaktifkan pada awal sesi. Gunakan event ini untuk menginventarisasi plugin mana yang aktif di seluruh armada Anda, sebagai pelengkap `plugin_installed` yang mencatat aksi instalasi itu sendiri.1228Dicatat satu kali untuk setiap plugin yang diaktifkan saat sesi dimulai. Gunakan event ini untuk menginventarisasi plugin mana yang aktif di seluruh armada Anda, sebagai pelengkap `plugin_installed` yang mencatat tindakan pemasangan itu sendiri.

1229 1229 

1230**Nama Event**: `claude_code.plugin_loaded`1230**Nama Event**: `claude_code.plugin_loaded`

1231 1231 


1234* Semua [atribut standar](#standard-attributes)1234* Semua [atribut standar](#standard-attributes)

1235* `event.name`: `"plugin_loaded"`1235* `event.name`: `"plugin_loaded"`

1236* `event.timestamp`: Timestamp ISO 86011236* `event.timestamp`: Timestamp ISO 8601

1237* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)1237* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1238* `plugin.name`: nama plugin. Untuk plugin di luar marketplace resmi dan bundel bawaan, nilainya adalah `"third-party"` kecuali `OTEL_LOG_TOOL_DETAILS=1`1238* `plugin.name`: nama plugin. Untuk plugin di luar marketplace resmi dan bundel bawaan, nilainya adalah `"third-party"` kecuali jika `OTEL_LOG_TOOL_DETAILS=1`

1239* `marketplace.name`: marketplace tempat plugin diinstal, jika diketahui. Disamarkan menjadi `"third-party"` dengan kondisi yang sama seperti `plugin.name`1239* `marketplace.name`: marketplace tempat plugin dipasang, jika diketahui. Disamarkan menjadi `"third-party"` dengan kondisi yang sama seperti `plugin.name`

1240* `plugin.version`: versi dari manifes plugin. Hanya disertakan ketika nama tidak disamarkan dan manifes mendeklarasikan versi1240* `plugin.version`: versi dari manifest plugin. Hanya disertakan ketika nama tidak disamarkan dan manifest mendeklarasikan versi

1241* `plugin.scope`: kategori asal-usul plugin: `"official"`, `"community"`, `"org"`, `"user-local"`, atau `"default-bundle"`1241* `plugin.scope`: kategori asal plugin: `"official"`, `"community"`, `"org"`, `"user-local"`, atau `"default-bundle"`

1242* `enabled_via`: bagaimana plugin menjadi aktif: `"default-enable"`, `"org-policy"`, `"admin-install"`, `"seed-mount"`, atau `"user-install"`. Nilai `"admin-install"` berarti plugin ditetapkan sebagai wajib atau instal otomatis untuk organisasi Anda di [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory). Sebelum v2.1.246, Claude Code melaporkan plugin ini sebagai `"user-install"` atau `"seed-mount"`1242* `enabled_via`: bagaimana plugin menjadi aktif: `"default-enable"`, `"org-policy"`, `"admin-install"`, `"seed-mount"`, atau `"user-install"`. Nilai `"admin-install"` berarti plugin diatur sebagai wajib atau pemasangan otomatis untuk organisasi Anda di [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory). Sebelum v2.1.246, Claude Code melaporkan plugin ini sebagai `"user-install"` atau `"seed-mount"`

1243* `plugin_id_hash`: hash deterministik dari nama plugin dan marketplace, hanya dikirim ke exporter yang Anda konfigurasikan. Memungkinkan Anda menghitung plugin pihak ketiga yang berbeda yang dimuat di seluruh armada Anda tanpa mencatat namanya. Untuk [plugin yang disinkronkan dari claude.ai](https://code.claude.com/docs/id/plugins/loading.md#synced-plugins), Claude Code melakukan hash pada nama plugin dengan nama marketplace yang dilaporkan claude.ai untuk plugin tersebut, atau dengan `synced` jika tidak ada. Sebelum v2.1.246, Claude Code tidak menggunakan nama marketplace yang dilaporkan claude.ai dalam hash1243* `plugin_id_hash`: hash deterministik dari nama plugin dan marketplace, yang hanya dikirim ke exporter yang Anda konfigurasi. Memungkinkan Anda menghitung plugin pihak ketiga yang berbeda yang dimuat di seluruh armada Anda tanpa mencatat namanya. Untuk [plugin yang disinkronkan dari claude.ai](https://code.claude.com/docs/id/plugins/loading.md#synced-plugins), Claude Code melakukan hash nama plugin dengan nama marketplace yang dilaporkan claude.ai untuk plugin tersebut, atau dengan `synced` jika tidak ada. Sebelum v2.1.246, Claude Code tidak menggunakan nama marketplace yang dilaporkan claude.ai dalam hash

1244* `has_hooks`: apakah plugin menyumbangkan hook, melalui [konfigurasi hook](https://code.claude.com/docs/id/plugins/components.md#hooks) atau sebagai [mod](https://code.claude.com/docs/id/plugins/mods/overview.md#how-a-mod-works)1244* `has_hooks`: apakah plugin menyumbangkan hook, melalui [konfigurasi hook](https://code.claude.com/docs/id/plugins/components.md#hooks) atau sebagai [mod](https://code.claude.com/docs/id/plugins/mods/overview.md#how-a-mod-works)

1245* `has_mcp`: apakah plugin menyumbangkan server MCP1245* `has_mcp`: apakah plugin menyumbangkan server MCP

1246* `host_owned_mcp`: `true` ketika host SDK mengelola koneksi MCP plugin ini dan Claude Code melewatkan pembacaan konfigurasi server MCP plugin, `false` jika tidak1246* `host_owned_mcp`: `true` ketika host SDK mengelola koneksi MCP plugin ini dan Claude Code melewati pembacaan konfigurasi server MCP plugin, `false` jika tidak

1247* `skill_path_count`: jumlah direktori skill yang dideklarasikan plugin1247* `skill_path_count`: jumlah direktori skill yang dideklarasikan plugin

1248* `command_path_count`: jumlah direktori perintah yang dideklarasikan plugin1248* `command_path_count`: jumlah direktori perintah yang dideklarasikan plugin

1249* `agent_path_count`: jumlah direktori agent yang dideklarasikan plugin1249* `agent_path_count`: jumlah direktori agent yang dideklarasikan plugin


1251 1251 

1252#### Event skill diaktifkan1252#### Event skill diaktifkan

1253 1253 

1254Dicatat ketika skill dipanggil, baik Claude memanggilnya melalui tool Skill maupun Anda menjalankannya sebagai perintah `/`.1254Dicatat ketika sebuah skill dipanggil, baik Claude memanggilnya melalui tool Skill maupun Anda menjalankannya sebagai perintah `/`.

1255 1255 

1256**Nama Event**: `claude_code.skill_activated`1256**Nama Event**: `claude_code.skill_activated`

1257 1257 


1260* Semua [atribut standar](#standard-attributes)1260* Semua [atribut standar](#standard-attributes)

1261* `event.name`: `"skill_activated"`1261* `event.name`: `"skill_activated"`

1262* `event.timestamp`: Timestamp ISO 86011262* `event.timestamp`: Timestamp ISO 8601

1263* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)1263* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1264* `skill.name`: Nama skill. Untuk skill yang ditentukan pengguna dan skill plugin pihak ketiga, nilainya adalah placeholder `"custom_skill"` kecuali `OTEL_LOG_TOOL_DETAILS=1`1264* `skill.name`: Nama skill. Untuk skill yang didefinisikan pengguna dan skill plugin pihak ketiga, nilainya adalah placeholder `"custom_skill"` kecuali jika `OTEL_LOG_TOOL_DETAILS=1`

1265* `invocation_trigger`: Cara skill dipicu (`"user-slash"`, `"claude-proactive"`, atau `"nested-skill"`)1265* `invocation_trigger`: Bagaimana skill dipicu (`"user-slash"`, `"claude-proactive"`, atau `"nested-skill"`)

1266* `skill.source`: Asal skill dimuat (misalnya, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)1266* `skill.source`: Asal skill dimuat (misalnya, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)

1267* `skill.kind`: `"workflow"` ketika skill adalah skill workflow. Tidak ada jika sebaliknya1267* `skill.kind`: `"workflow"` ketika skill adalah skill workflow. Tidak ada jika sebaliknya

1268* `plugin.name` (ketika `OTEL_LOG_TOOL_DETAILS=1` atau plugin berasal dari marketplace resmi): Nama plugin pemilik ketika skill disediakan oleh plugin1268* `plugin.name` (ketika `OTEL_LOG_TOOL_DETAILS=1` atau plugin berasal dari marketplace resmi): Nama plugin pemilik ketika skill disediakan oleh plugin

1269* `marketplace.name` (ketika `OTEL_LOG_TOOL_DETAILS=1` atau plugin berasal dari marketplace resmi): Marketplace tempat plugin pemilik diinstal, ketika skill disediakan oleh plugin1269* `marketplace.name` (ketika `OTEL_LOG_TOOL_DETAILS=1` atau plugin berasal dari marketplace resmi): Marketplace tempat plugin pemilik dipasang, ketika skill disediakan oleh plugin

1270 1270 

1271#### Event at mention1271#### Event at mention

1272 1272 

1273Dicatat ketika Claude Code menyelesaikan `@`-mention dalam prompt. Tidak setiap mention memancarkan event: jalur keluar awal seperti penolakan izin, file yang terlalu besar, lampiran referensi PDF, dan kegagalan listing direktori kembali tanpa mencatat.1273Dicatat ketika Claude Code me-resolve sebuah `@`-mention dalam prompt. Tidak setiap mention menghasilkan event: jalur keluar awal seperti penolakan izin, file yang terlalu besar, lampiran referensi PDF, dan kegagalan listing direktori kembali tanpa mencatat log.

1274 1274 

1275Setiap kali Claude Code membaca prompt, Claude Code mencatat paling banyak 100 event dengan `mention_type` berupa `"agent"` dan 100 dengan `"mcp_resource"`. Mention yang melewati salah satu batas tersebut tetap diselesaikan tetapi tidak memancarkan event.1275Setiap kali Claude Code membaca prompt, Claude Code mencatat paling banyak 100 event dengan `mention_type` bernilai `"agent"` dan 100 dengan `"mcp_resource"`. Mention yang melewati salah satu batas tersebut tetap di-resolve tetapi tidak menghasilkan event.

1276 1276 

1277**Nama Event**: `claude_code.at_mention`1277**Nama Event**: `claude_code.at_mention`

1278 1278 


1281* Semua [atribut standar](#standard-attributes)1281* Semua [atribut standar](#standard-attributes)

1282* `event.name`: `"at_mention"`1282* `event.name`: `"at_mention"`

1283* `event.timestamp`: Timestamp ISO 86011283* `event.timestamp`: Timestamp ISO 8601

1284* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)1284* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1285* `mention_type`: Jenis mention (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`, `"peer"`). Nilai `"peer"` berarti Anda menyebut [salah satu sesi Claude Code Anda yang lain](https://code.claude.com/docs/id/cross-session-messaging.md). Memerlukan Claude Code v2.1.232 atau lebih baru1285* `mention_type`: Jenis mention (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`, `"peer"`). Nilai `"peer"` berarti Anda menyebut [salah satu sesi Claude Code Anda yang lain](https://code.claude.com/docs/id/cross-session-messaging.md). Memerlukan Claude Code v2.1.232 atau lebih baru

1286* `success`: Apakah mention berhasil diselesaikan (`"true"` atau `"false"`)1286* `success`: Apakah mention berhasil di-resolve (`"true"` atau `"false"`)

1287 1287 

1288#### Event retry API habis1288#### Event retry API habis

1289 1289 

1290Dicatat sekali ketika permintaan API gagal setelah lebih dari satu percobaan. Dipancarkan bersama event `api_error` terakhir.1290Dicatat satu kali ketika permintaan API gagal setelah lebih dari satu percobaan. Dikirim bersamaan dengan event `api_error` terakhir.

1291 1291 

1292**Nama Event**: `claude_code.api_retries_exhausted`1292**Nama Event**: `claude_code.api_retries_exhausted`

1293 1293 


1296* Semua [atribut standar](#standard-attributes)1296* Semua [atribut standar](#standard-attributes)

1297* `event.name`: `"api_retries_exhausted"`1297* `event.name`: `"api_retries_exhausted"`

1298* `event.timestamp`: Timestamp ISO 86011298* `event.timestamp`: Timestamp ISO 8601

1299* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)1299* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1300* `model`: Model yang digunakan1300* `model`: Model yang digunakan

1301* `error`: Pesan error terakhir1301* `error`: Pesan error terakhir

1302* `status_code`: Kode status HTTP sebagai angka. Tidak ada untuk error non-HTTP.1302* `status_code`: Kode status HTTP sebagai angka. Tidak ada untuk error non-HTTP.

1303* `total_attempts`: Jumlah total percobaan yang dilakukan1303* `total_attempts`: Jumlah total percobaan yang dilakukan

1304* `total_retry_duration_ms`: Total waktu wall-clock di seluruh percobaan1304* `total_retry_duration_ms`: Total waktu nyata di seluruh percobaan

1305* `speed`: `"fast"` atau `"normal"`1305* `speed`: `"fast"` atau `"normal"`

1306 1306 

1307#### Event hook terdaftar1307#### Event hook terdaftar

1308 1308 

1309Dicatat sekali per hook yang dikonfigurasi pada awal sesi. Gunakan event ini untuk menginventarisasi hook mana yang aktif di seluruh armada Anda, sebagai pelengkap event per eksekusi `hook_execution_start` dan `hook_execution_complete`.1309Dicatat satu kali untuk setiap hook yang dikonfigurasi saat sesi dimulai. Gunakan event ini untuk menginventarisasi hook mana yang aktif di seluruh armada Anda, sebagai pelengkap event per eksekusi `hook_execution_start` dan `hook_execution_complete`.

1310 1310 

1311**Nama Event**: `claude_code.hook_registered`1311**Nama Event**: `claude_code.hook_registered`

1312 1312 


1315* Semua [atribut standar](#standard-attributes)1315* Semua [atribut standar](#standard-attributes)

1316* `event.name`: `"hook_registered"`1316* `event.name`: `"hook_registered"`

1317* `event.timestamp`: Timestamp ISO 86011317* `event.timestamp`: Timestamp ISO 8601

1318* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)1318* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1319* `hook_event`: jenis event hook, seperti `"PreToolUse"` atau `"PostToolUse"`1319* `hook_event`: jenis event hook, seperti `"PreToolUse"` atau `"PostToolUse"`

1320* `hook_type`: jenis implementasi hook: `"command"`, `"prompt"`, `"mcp_tool"`, `"http"`, atau `"agent"`1320* `hook_type`: jenis implementasi hook: `"command"`, `"prompt"`, `"mcp_tool"`, `"http"`, atau `"agent"`

1321* `hook_source`: tempat hook didefinisikan: `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"`, atau `"pluginHook"`1321* `hook_source`: tempat hook didefinisikan: `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"`, atau `"pluginHook"`

1322* `safe_mode`: `"true"` ketika sesi dimulai dengan [`--safe-mode`](https://code.claude.com/docs/id/cli-reference), `"false"` jika tidak. Memerlukan Claude Code v2.1.169 atau lebih baru1322* `safe_mode`: `"true"` ketika sesi dimulai dengan [`--safe-mode`](https://code.claude.com/docs/id/cli-reference), `"false"` jika tidak. Memerlukan Claude Code v2.1.169 atau lebih baru

1323* `hook_matcher` (ketika `OTEL_LOG_TOOL_DETAILS=1`): string matcher dari konfigurasi hook, jika ditetapkan1323* `hook_matcher` (ketika `OTEL_LOG_TOOL_DETAILS=1`): string matcher dari konfigurasi hook, jika ada yang diatur

1324* `plugin.name` (ketika `hook_source` adalah `"pluginHook"`): nama plugin penyumbang. Untuk plugin di luar marketplace resmi dan bundel bawaan, nilainya adalah `"third-party"` kecuali `OTEL_LOG_TOOL_DETAILS=1`1324* `plugin.name` (ketika `hook_source` adalah `"pluginHook"`): nama plugin yang menyumbangkan hook. Untuk plugin di luar marketplace resmi dan bundel bawaan, nilainya adalah `"third-party"` kecuali jika `OTEL_LOG_TOOL_DETAILS=1`

1325* `plugin_id_hash` (ketika `hook_source` adalah `"pluginHook"`): hash deterministik dari nama plugin dan marketplace, hanya dikirim ke exporter yang Anda konfigurasikan. Memungkinkan Anda menghitung plugin penyumbang yang berbeda tanpa mencatat namanya. Claude Code menghitungnya sebagaimana dijelaskan di bawah [event plugin dimuat](#plugin-loaded-event)1325* `plugin_id_hash` (ketika `hook_source` adalah `"pluginHook"`): hash deterministik dari nama plugin dan marketplace, yang hanya dikirim ke exporter yang Anda konfigurasi. Memungkinkan Anda menghitung plugin penyumbang yang berbeda tanpa mencatat namanya. Claude Code menghitungnya seperti yang dijelaskan di bagian [event plugin dimuat](#plugin-loaded-event)

1326 1326 

1327#### Event mulai eksekusi hook1327#### Event mulai eksekusi hook

1328 1328 

1329Dicatat ketika satu atau lebih hook mulai dieksekusi untuk suatu event hook.1329Dicatat ketika satu atau lebih hook mulai dieksekusi untuk sebuah event hook.

1330 1330 

1331**Nama Event**: `claude_code.hook_execution_start`1331**Nama Event**: `claude_code.hook_execution_start`

1332 1332 


1335* Semua [atribut standar](#standard-attributes)1335* Semua [atribut standar](#standard-attributes)

1336* `event.name`: `"hook_execution_start"`1336* `event.name`: `"hook_execution_start"`

1337* `event.timestamp`: Timestamp ISO 86011337* `event.timestamp`: Timestamp ISO 8601

1338* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bawah [Atribut korelasi event](#event-correlation-attributes)1338* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1339* `hook_event`: Jenis event hook, seperti `"PreToolUse"` atau `"PostToolUse"`1339* `hook_event`: Jenis event hook, seperti `"PreToolUse"` atau `"PostToolUse"`

1340* `hook_name`: Nama hook lengkap termasuk matcher, seperti `"PreToolUse:Write"`1340* `hook_name`: Nama hook lengkap termasuk matcher, seperti `"PreToolUse:Write"`

1341* `num_hooks`: Jumlah perintah hook yang cocok1341* `num_hooks`: Jumlah perintah hook yang cocok

1342* `managed_only`: `"true"` ketika hanya hook kebijakan terkelola yang diizinkan1342* `managed_only`: `"true"` ketika hanya hook kebijakan terkelola yang diizinkan

1343* `hook_source`: `"policySettings"` atau `"merged"`1343* `hook_source`: `"policySettings"` atau `"merged"`

1344* `safe_mode`: `"true"` ketika sesi dimulai dengan [`--safe-mode`](https://code.claude.com/docs/id/cli-reference), `"false"` jika tidak. Memerlukan Claude Code v2.1.169 atau lebih baru1344* `safe_mode`: `"true"` ketika sesi dimulai dengan [`--safe-mode`](https://code.claude.com/docs/id/cli-reference), `"false"` jika tidak. Memerlukan Claude Code v2.1.169 atau lebih baru

1345* `hook_definitions`: Konfigurasi hook yang diserialisasi JSON. Hanya disertakan ketika tracing beta terperinci dan `OTEL_LOG_TOOL_DETAILS=1` keduanya diaktifkan1345* `hook_definitions`: Konfigurasi hook yang diserialisasi sebagai JSON. Hanya disertakan ketika detailed beta tracing dan `OTEL_LOG_TOOL_DETAILS=1` keduanya diaktifkan

1346 1346 

1347#### Event penyelesaian eksekusi hook1347#### Event eksekusi hook selesai

1348 1348 

1349Dicatat ketika semua hook untuk sebuah event hook telah selesai.1349Dicatat ketika semua hook untuk sebuah event hook telah selesai.

1350 1350 


1354 1354 

1355* Semua [atribut standar](#standard-attributes)1355* Semua [atribut standar](#standard-attributes)

1356* `event.name`: `"hook_execution_complete"`1356* `event.name`: `"hook_execution_complete"`

1357* `event.timestamp`: timestamp ISO 86011357* `event.timestamp`: Timestamp ISO 8601

1358* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)1358* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1359* `hook_event`: Jenis event hook1359* `hook_event`: Jenis event hook

1360* `hook_name`: Nama hook lengkap termasuk matcher1360* `hook_name`: Nama hook lengkap termasuk matcher


1363* `num_blocking`: Jumlah yang mengembalikan keputusan pemblokiran1363* `num_blocking`: Jumlah yang mengembalikan keputusan pemblokiran

1364* `num_non_blocking_error`: Jumlah yang gagal tanpa memblokir1364* `num_non_blocking_error`: Jumlah yang gagal tanpa memblokir

1365* `num_cancelled`: Jumlah yang dibatalkan sebelum selesai1365* `num_cancelled`: Jumlah yang dibatalkan sebelum selesai

1366* `total_duration_ms`: Durasi wall-clock dari semua hook yang cocok1366* `total_duration_ms`: Durasi waktu nyata dari semua hook yang cocok

1367* `stdout_chars`: Total karakter stdout di seluruh hook yang cocok yang berhasil. Memerlukan Claude Code v2.1.280 atau lebih baru1367* `stdout_chars`: Total karakter stdout dari hook cocok yang berhasil. Memerlukan Claude Code v2.1.280 atau lebih baru

1368* `additional_context_chars`: Total karakter `additionalContext` yang dikembalikan oleh hook yang cocok. Memerlukan Claude Code v2.1.280 atau lebih baru1368* `additional_context_chars`: Total karakter `additionalContext` yang dikembalikan oleh hook yang cocok. Memerlukan Claude Code v2.1.280 atau lebih baru

1369* `system_message_chars`: Total karakter `systemMessage` yang dikembalikan oleh hook yang cocok. Memerlukan Claude Code v2.1.280 atau lebih baru1369* `system_message_chars`: Total karakter `systemMessage` yang dikembalikan oleh hook yang cocok. Memerlukan Claude Code v2.1.280 atau lebih baru

1370* `initial_user_message_chars`: Total karakter `initialUserMessage` yang dikembalikan oleh hook yang cocok. Memerlukan Claude Code v2.1.280 atau lebih baru1370* `initial_user_message_chars`: Total karakter `initialUserMessage` yang dikembalikan oleh hook yang cocok. Memerlukan Claude Code v2.1.280 atau lebih baru

1371* `num_outputs_persisted`: Jumlah output hook yang melebihi [batas 10.000 karakter](https://code.claude.com/docs/id/hooks.md#json-output) yang disimpan Claude Code ke sebuah file. Memerlukan Claude Code v2.1.280 atau lebih baru1371* `num_outputs_persisted`: Jumlah output hook yang melebihi [batas 10.000 karakter](https://code.claude.com/docs/id/hooks.md#json-output) yang disimpan Claude Code ke file. Memerlukan Claude Code v2.1.280 atau lebih baru

1372* `managed_only`: `"true"` ketika hanya hook dari kebijakan terkelola yang diizinkan1372* `managed_only`: `"true"` ketika hanya hook kebijakan terkelola yang diizinkan

1373* `hook_source`: `"policySettings"` atau `"merged"`1373* `hook_source`: `"policySettings"` atau `"merged"`

1374* `safe_mode`: `"true"` ketika sesi dimulai dengan [`--safe-mode`](https://code.claude.com/docs/id/cli-reference), `"false"` jika tidak. Memerlukan Claude Code v2.1.169 atau lebih baru1374* `safe_mode`: `"true"` ketika sesi dimulai dengan [`--safe-mode`](https://code.claude.com/docs/id/cli-reference), `"false"` jika tidak. Memerlukan Claude Code v2.1.169 atau lebih baru

1375* `hook_definitions`: Konfigurasi hook yang diserialisasi sebagai JSON. Hanya disertakan ketika detailed beta tracing dan `OTEL_LOG_TOOL_DETAILS=1` keduanya diaktifkan1375* `hook_definitions`: Konfigurasi hook yang diserialisasi sebagai JSON. Hanya disertakan ketika detailed beta tracing dan `OTEL_LOG_TOOL_DETAILS=1` keduanya diaktifkan

1376 1376 

1377#### Event metrik plugin hook1377#### Event metrik plugin hook

1378 1378 

1379Dicatat ketika hook plugin dari marketplace resmi memancarkan metrik per pemanggilan. Hanya plugin yang diinstal dari marketplace resmi Anthropic yang dapat memancarkan metrik ini. Plugin marketplace pihak ketiga dan hook yang dikonfigurasi pengguna tidak memancarkan ke event ini. Gunakan event ini untuk memantau perilaku plugin seperti tingkat temuan, biaya, dan durasi dari stack observabilitas Anda sendiri.1379Dicatat ketika hook plugin dari marketplace resmi mengirimkan metrik per pemanggilan. Hanya plugin yang dipasang dari marketplace resmi Anthropic yang dapat mengirimkannya. Plugin marketplace pihak ketiga dan hook yang dikonfigurasi pengguna tidak mengirim ke event ini. Gunakan event ini untuk memantau perilaku plugin seperti tingkat temuan, biaya, dan durasi dari stack observabilitas Anda sendiri.

1380 1380 

1381**Nama Event**: `claude_code.hook_plugin_metrics`1381**Nama Event**: `claude_code.hook_plugin_metrics`

1382 1382 


1384 1384 

1385* Semua [atribut standar](#standard-attributes)1385* Semua [atribut standar](#standard-attributes)

1386* `event.name`: `"hook_plugin_metrics"`1386* `event.name`: `"hook_plugin_metrics"`

1387* `event.timestamp`: timestamp ISO 86011387* `event.timestamp`: Timestamp ISO 8601

1388* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)1388* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1389* `plugin_id`: pengidentifikasi plugin dalam bentuk `<name>@<marketplace>`1389* `plugin_id`: pengidentifikasi plugin dalam bentuk `<name>@<marketplace>`

1390* `hook_event`: jenis event hook yang memancarkan metrik1390* `hook_event`: jenis event hook yang mengirimkan metrik

1391* Hingga 20 kunci metrik yang dipancarkan plugin. Nama cocok dengan `^[a-z][a-z0-9_]{0,39}$`. Nilai berupa Boolean atau angka.1391* Hingga 20 kunci metrik yang dikirim plugin. Nama cocok dengan `^[a-z][a-z0-9_]{0,39}$`. Nilai berupa Boolean atau angka.

1392 1392 

1393#### Event compaction1393#### Event compaction

1394 1394 


1400 1400 

1401* Semua [atribut standar](#standard-attributes)1401* Semua [atribut standar](#standard-attributes)

1402* `event.name`: `"compaction"`1402* `event.name`: `"compaction"`

1403* `event.timestamp`: timestamp ISO 86011403* `event.timestamp`: Timestamp ISO 8601

1404* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)1404* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1405* `trigger`: `"auto"` atau `"manual"`1405* `trigger`: `"auto"` atau `"manual"`

1406* `success`: `"true"` atau `"false"`1406* `success`: `"true"` atau `"false"`

1407* `duration_ms`: Durasi compaction1407* `duration_ms`: Durasi compaction

1408* `pre_tokens`: Perkiraan jumlah token sebelum compaction1408* `pre_tokens`: Perkiraan jumlah token sebelum compaction

1409* `post_tokens`: Perkiraan jumlah token setelah compaction1409* `post_tokens`: Perkiraan jumlah token setelah compaction

1410* `error`: Pesan kesalahan ketika compaction gagal1410* `error`: Pesan error ketika compaction gagal

1411* `precompute_reuse`: Hanya ditetapkan jika `trigger` adalah `"manual"`, atau jika `trigger` adalah `"auto"` untuk [idle compaction](https://code.claude.com/docs/id/settings-reference.md#idlecompaction) dalam sesi terminal interaktif. Auto-compaction dapat menyiapkan ringkasan di latar belakang sebelum context window penuh, dan atribut ini mencatat apakah compaction menggunakan kembali ringkasan yang telah disiapkan tersebut. `"hit"` berarti ringkasan digunakan kembali; `"miss_custom_instructions"`, `"miss_hook"`, dan `"miss_not_ready"` memberikan alasan mengapa ringkasan baru dihitung sebagai gantinya1411* `precompute_reuse`: Hanya diatur ketika `trigger` adalah `"manual"`, atau ketika `trigger` adalah `"auto"` untuk [idle compaction](https://code.claude.com/docs/id/settings-reference.md#idlecompaction) dalam sesi terminal interaktif. Auto-compaction dapat menyiapkan ringkasan di latar belakang sebelum context window penuh, dan atribut ini mencatat apakah compaction menggunakan kembali ringkasan yang telah disiapkan tersebut. `"hit"` berarti ringkasan tersebut digunakan kembali; `"miss_custom_instructions"`, `"miss_hook"`, dan `"miss_not_ready"` memberikan alasan mengapa ringkasan baru dihitung sebagai gantinya

1412 1412 

1413#### Event subagent selesai1413#### Event subagent selesai

1414 1414 

1415Dicatat ketika sebuah [subagent](https://code.claude.com/docs/id/sub-agents.md) selesai dan mengembalikan hasilnya ke percakapan yang memulainya. Gunakan event ini untuk merangkum penggunaan tool dan waktu eksekusi berdasarkan jenis subagent; untuk rangkuman token atau biaya, gunakan [penghitung token](#token-counter) dan [penghitung biaya](#cost-counter) yang difilter ke `query_source` `"subagent"`, karena `total_tokens` pada event ini hanya mencakup permintaan terakhir. Kategori `"subagent"` juga menghitung permintaan dari hook berbasis agent, yang tidak memancarkan event subagent.1415Dicatat ketika sebuah [subagent](https://code.claude.com/docs/id/sub-agents.md) selesai dan mengembalikan hasilnya ke percakapan yang memulainya. Gunakan event ini untuk merangkum penggunaan tool dan waktu eksekusi berdasarkan jenis subagent; untuk rangkuman token atau biaya, gunakan [penghitung token](#token-counter) dan [penghitung biaya](#cost-counter) yang difilter ke `query_source` `"subagent"`, karena `total_tokens` pada event ini hanya mencakup permintaan terakhir. Kategori `"subagent"` juga menghitung permintaan dari hook berbasis agent, yang tidak menghasilkan event subagent.

1416 1416 

1417**Nama Event**: `claude_code.subagent_completed`1417**Nama Event**: `claude_code.subagent_completed`

1418 1418 


1420 1420 

1421* Semua [atribut standar](#standard-attributes)1421* Semua [atribut standar](#standard-attributes)

1422* `event.name`: `"subagent_completed"`1422* `event.name`: `"subagent_completed"`

1423* `event.timestamp`: timestamp ISO 86011423* `event.timestamp`: Timestamp ISO 8601

1424* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)1424* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1425* `agent_type`: Jenis subagent. Nama agent bawaan dan agent dari plugin marketplace resmi muncul apa adanya; nama agent lainnya diganti dengan `"custom"` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur1425* `agent_type`: Jenis subagent. Nama agent bawaan dan agent dari plugin marketplace resmi muncul apa adanya; nama agent lainnya diganti dengan `"custom"` kecuali jika `OTEL_LOG_TOOL_DETAILS=1` diatur

1426* `agent.source`: Asal definisi agent: `built-in`, `plugin`, atau sumber pengaturan yang mendefinisikan agent kustom, seperti `userSettings` atau `projectSettings`1426* `agent.source`: Asal definisi agent: `built-in`, `plugin`, atau sumber pengaturan yang mendefinisikan agent kustom, seperti `userSettings` atau `projectSettings`

1427* `is_built_in`: Apakah subagent merupakan jenis agent bawaan1427* `is_built_in`: Apakah subagent merupakan jenis agent bawaan

1428* `is_async`: Apakah subagent berjalan di [latar belakang](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background)1428* `is_async`: Apakah subagent berjalan di [latar belakang](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background)

1429* `total_tokens`: Jejak token dari permintaan API terakhir subagent: token input, pembuatan cache, pembacaan cache, dan output dari satu permintaan tersebut, kira-kira ukuran konteks subagent saat selesai. Bukan jumlah di seluruh eksekusi1429* `total_tokens`: Jejak token dari permintaan API terakhir subagent: token input, pembuatan cache, pembacaan cache, dan output dari satu permintaan tersebut, kurang lebih ukuran konteks subagent saat selesai. Bukan jumlah di seluruh eksekusi

1430* `total_tool_uses`: Jumlah panggilan tool yang dilakukan subagent di seluruh eksekusi1430* `total_tool_uses`: Jumlah panggilan tool yang dilakukan subagent di seluruh eksekusi

1431* `duration_ms`: Waktu eksekusi dalam milidetik1431* `duration_ms`: Waktu eksekusi dalam milidetik

1432* `model`: Model yang ditetapkan untuk menjalankan subagent1432* `model`: Model yang di-resolve untuk menjalankan subagent

1433* `final_model`: Model yang menghasilkan respons akhir subagent, yang berbeda dari `model` setelah peralihan di tengah eksekusi seperti fallback1433* `final_model`: Model yang menghasilkan respons terakhir subagent, yang berbeda dari `model` setelah peralihan di tengah eksekusi seperti fallback

1434* `model_swapped`: Apakah lebih dari satu model melayani permintaan subagent1434* `model_swapped`: Apakah lebih dari satu model melayani permintaan subagent

1435* `plugin_id_hash`, `plugin.name`: Ada untuk agent yang disediakan plugin. Nama plugin marketplace resmi muncul apa adanya; nama plugin lainnya diganti dengan `"third-party"` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur1435* `plugin_id_hash`, `plugin.name`: Ada untuk agent yang disediakan plugin. Nama plugin marketplace resmi muncul apa adanya; nama plugin lainnya diganti dengan `"third-party"` kecuali jika `OTEL_LOG_TOOL_DETAILS=1` diatur

1436 1436 

1437#### Event survei umpan balik1437#### Event survei umpan balik

1438 1438 

1439Dicatat ketika survei kualitas sesi ditampilkan atau dijawab. Lihat [Survei kualitas sesi](https://code.claude.com/docs/id/data-usage.md#session-quality-surveys) untuk mengetahui apa yang dikumpulkan survei dan cara mengendalikannya.1439Dicatat ketika survei kualitas sesi ditampilkan atau dijawab. Lihat [Survei kualitas sesi](https://code.claude.com/docs/id/data-usage.md#session-quality-surveys) untuk mengetahui apa yang dikumpulkan survei dan cara mengontrolnya.

1440 1440 

1441**Nama Event**: `claude_code.feedback_survey`1441**Nama Event**: `claude_code.feedback_survey`

1442 1442 


1444 1444 

1445* Semua [atribut standar](#standard-attributes)1445* Semua [atribut standar](#standard-attributes)

1446* `event.name`: `"feedback_survey"`1446* `event.name`: `"feedback_survey"`

1447* `event.timestamp`: timestamp ISO 86011447* `event.timestamp`: Timestamp ISO 8601

1448* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)1448* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1449* `event_type`: Event siklus hidup survei, misalnya `"appeared"`, `"responded"`, atau `"transcript_prompt_appeared"`1449* `event_type`: Event siklus hidup survei, misalnya `"appeared"`, `"responded"`, atau `"transcript_prompt_appeared"`

1450* `appearance_id`: ID unik yang menghubungkan event yang dipancarkan untuk satu instans survei1450* `appearance_id`: ID unik yang menghubungkan event yang dikirim untuk satu instans survei

1451* `survey_type`: Survei mana yang menghasilkan event. `"session"` adalah prompt penilaian "How is Claude doing?"1451* `survey_type`: Survei mana yang menghasilkan event. `"session"` adalah prompt penilaian "How is Claude doing?"

1452* `response`: Pilihan pengguna pada event `responded`1452* `response`: Pilihan pengguna pada event `responded`

1453* `enabled_via_override`: `true` ketika [`CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`](https://code.claude.com/docs/id/env-vars) diatur. Dipancarkan sebagai Boolean, bukan string. Ada pada event survei `session`. Filter berdasarkan atribut ini untuk memastikan override diterapkan di seluruh armada1453* `enabled_via_override`: `true` ketika [`CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`](https://code.claude.com/docs/id/env-vars) diatur. Dikirim sebagai Boolean, bukan string. Ada pada event survei `session`. Filter berdasarkan atribut ini untuk memastikan override diterapkan di seluruh armada

1454 1454 

1455#### Event sapuan retensi1455#### Event sweep retensi

1456 1456 

1457Dicatat sekali per eksekusi sapuan pembersihan retensi, yang menghapus [transkrip sesi dan data aplikasi lainnya](https://code.claude.com/docs/id/claude-directory.md#cleaned-up-automatically) yang lebih lama dari pengaturan [`cleanupPeriodDays`](https://code.claude.com/docs/id/settings-reference#cleanupperioddays). Claude Code menjalankan sapuan di latar belakang paling banyak sekali per sesi, dan eksekusi yang tidak menghapus apa pun tetap memancarkan event. Jika Claude Code menjalankan sapuan di sesi mana pun pada mesin yang sama dalam 24 jam terakhir, Claude Code menunda sapuan sesi ini setidaknya 10 menit, sehingga sesi yang keluar lebih cepat tidak memancarkan apa pun. Ketika Anda menjalankan `claude -p` dengan `--bare`, Claude Code tidak menjalankan sapuan dan tidak memancarkan apa pun.1457Dicatat satu kali per eksekusi sweep pembersihan retensi, yang menghapus [transkrip sesi dan data aplikasi lainnya](https://code.claude.com/docs/id/claude-directory.md#cleaned-up-automatically) yang lebih lama dari pengaturan [`cleanupPeriodDays`](https://code.claude.com/docs/id/settings-reference#cleanupperioddays). Claude Code menjalankan sweep di latar belakang paling banyak satu kali per sesi, dan eksekusi yang tidak menghapus apa pun tetap mengirimkan event. Jika Claude Code telah menjalankan sweep di sesi mana pun pada mesin yang sama dalam 24 jam terakhir, Claude Code menunda sweep sesi ini setidaknya 10 menit, sehingga sesi yang keluar lebih awal tidak mengirimkan apa pun. Ketika Anda menjalankan `claude -p` dengan `--bare`, Claude Code tidak menjalankan sweep dan tidak mengirimkan apa pun.

1458 1458 

1459Seperti setiap event OTel di halaman ini, event ini hanya dikirim ke backend telemetri yang Anda konfigurasi. Memerlukan Claude Code v2.1.227 atau lebih baru.1459Seperti setiap event OTel di halaman ini, event ini hanya dikirim ke backend telemetri yang Anda konfigurasi. Memerlukan Claude Code v2.1.227 atau lebih baru.

1460 1460 

1461Ketika Claude Code tidak dapat menentukan periode retensi dengan aman, Claude Code menjeda sapuan dan memancarkan event dengan `result` diatur ke `"skipped"` dan sebuah `skip_reason`. Ketika [pengaturan terkelola](https://code.claude.com/docs/id/server-managed-settings.md) mengatur `cleanupPeriodDays`, nilai terkelola mengunci periode retensi dan sapuan tetap berjalan meskipun file pengaturan di cakupan berprioritas lebih rendah rusak atau tidak valid. Ketika `managed-settings.json` itu sendiri tidak dapat dibaca, Claude Code tetap menjeda sapuan kecuali [tingkat terkelola](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources) menyediakan `cleanupPeriodDays` dari tempat lain, seperti pengaturan terkelola server atau drop-in `managed-settings.d/` di samping file yang rusak. Atribut penghitung penghapusan hanya ada ketika `result` bernilai `"complete"`.1461Baca `result` untuk melihat apakah sweep berjalan:

1462 

1463* `"complete"`: sweep berjalan, dan event membawa hitungannya

1464* `"skipped"`: Claude Code tidak dapat menentukan periode retensi dengan aman, sehingga Claude Code menjeda sweep dan event tidak membawa hitungan. Jika `skip_reason` adalah `"settings_unknowable"` atau `"settings_invalid_key_set"`, perbaiki error pengaturan yang dilaporkan `/status` pada mesin tersebut agar sesi berikutnya dapat menjalankan sweep

1465 

1466Ketika [pengaturan terkelola](https://code.claude.com/docs/id/server-managed-settings.md) mengatur `cleanupPeriodDays`, nilai terkelola menetapkan periode retensi dan sweep tetap berjalan meskipun file pengaturan dalam cakupan berprioritas lebih rendah rusak atau tidak valid.

1462 1467 

1463**Nama Event**: `claude_code.retention_sweep`1468**Nama Event**: `claude_code.retention_sweep`

1464 1469 


1466 1471 

1467* Semua [atribut standar](#standard-attributes)1472* Semua [atribut standar](#standard-attributes)

1468* `event.name`: `"retention_sweep"`1473* `event.name`: `"retention_sweep"`

1469* `event.timestamp`: timestamp ISO 86011474* `event.timestamp`: Timestamp ISO 8601

1470* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)1475* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1471* `result`: `"complete"` ketika sapuan berjalan, `"skipped"` ketika Claude Code menjedanya1476* `result`: `"complete"` ketika sweep berjalan, `"skipped"` ketika Claude Code menjedanya

1472* `period_days`: Nilai `cleanupPeriodDays` dari pengaturan yang digabungkan, dalam hari, atau `30` ketika tidak ada sumber yang mengaturnya. Pada event yang dilewati, nilai yang akan digunakan sapuan, dihitung dari sumber pengaturan yang dapat dibaca Claude Code1477* `period_days`: Periode retensi yang digunakan saat sweep dimulai, dalam hari: `cleanupPeriodDays` dari pengaturan yang digabungkan, dengan perubahan apa pun dari [hook `settings.read`](https://code.claude.com/docs/id/plugins/mods/events#settings-read-hook) diterapkan. `30` ketika hal itu membuat kunci tidak diatur. Pada event yang dilewati, nilai yang akan digunakan sweep, dihitung dari sumber pengaturan yang dapat dibaca Claude Code

1473* `used_default`: `"true"` ketika tidak ada sumber pengaturan yang dapat dibaca yang mengatur `cleanupPeriodDays`, `"false"` jika sebaliknya. Pada event complete, `"true"` berarti default 30 hari diterapkan1478* `used_default`: `"true"` ketika `period_days` kembali ke `30`, `"false"` jika tidak. Pada event complete, `"true"` berarti default 30 hari diterapkan

1474* `skip_reason`: Mengapa Claude Code menjeda sweep. Hanya ada ketika `result` adalah `"skipped"`:1479* `skip_reason`: Alasan Claude Code menjeda sweep. Hanya ada ketika `result` adalah `"skipped"`:

1475 * `"user_source_disabled"`: Pengaturan pengguna dikecualikan, misalnya oleh flag [`--setting-sources`](https://code.claude.com/docs/id/cli-reference#cli-flags) atau opsi [`settingSources`](https://code.claude.com/docs/id/agent-sdk/typescript#options) SDK, dan tidak ada sumber yang diaktifkan yang menyediakan `cleanupPeriodDays`1480 * `"user_source_disabled"`: Pengaturan pengguna dikecualikan, misalnya oleh flag [`--setting-sources`](https://code.claude.com/docs/id/cli-reference#cli-flags) atau opsi [`settingSources`](https://code.claude.com/docs/id/agent-sdk/typescript#options) milik SDK, dan tidak ada sumber aktif yang menyediakan `cleanupPeriodDays`

1476 * `"settings_unknowable"`: File pengaturan tidak dapat dibaca atau diurai, sehingga `cleanupPeriodDays` atau `desktopSessionCleanupPeriodDays` mungkin diatur ke nilai yang tidak dapat dilihat Claude Code1481 * `"settings_unknowable"`: Sebuah file pengaturan tidak dapat dibaca atau di-parse, sehingga `cleanupPeriodDays` atau `desktopSessionCleanupPeriodDays` mungkin diatur ke nilai yang tidak dapat dilihat Claude Code

1477 * `"settings_invalid_key_set"`: Pengaturan memiliki error validasi dan `cleanupPeriodDays` atau `desktopSessionCleanupPeriodDays` diatur secara eksplisit, sehingga kembali ke default dapat menghapus atau menyimpan file yang bertentangan dengan pengaturan tersebut1482 * `"settings_invalid_key_set"`: Pengaturan memiliki error validasi dan `cleanupPeriodDays` atau `desktopSessionCleanupPeriodDays` diatur secara eksplisit, sehingga kembali ke default dapat menghapus atau mempertahankan file yang bertentangan dengan pengaturan tersebut

1478 * `"remote_settings_unknowable"`: Sesi di tab Code Claude Desktop pada deployment pihak ketiga meminta [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md). Sesi tersebut tidak menerima respons yang dapat digunakan, sehingga `cleanupPeriodDays` mungkin diatur ke nilai yang tidak dapat dilihat Claude Code1483 * `"remote_settings_unknowable"`: Sebuah sesi di tab Code Claude Desktop pada deployment pihak ketiga meminta [pengaturan yang dikelola server](https://code.claude.com/docs/id/server-managed-settings.md). Sesi tersebut tidak menerima respons yang dapat digunakan, sehingga `cleanupPeriodDays` mungkin diatur ke nilai yang tidak dapat dilihat Claude Code

1479* `transcripts_deleted`: Jumlah transkrip sesi, yaitu file tingkat atas `~/.claude/projects/*/*.jsonl`, yang dihapus oleh sapuan1484* `transcripts_deleted`: Jumlah transkrip sesi, yaitu file tingkat atas `~/.claude/projects/*/*.jsonl`, yang dihapus sweep

1480* `transcripts_exempted_desktop`: Jumlah transkrip yang melewati periode retensi yang dipertahankan oleh sapuan berdasarkan [aturan Claude Desktop dan Cowork](https://code.claude.com/docs/id/claude-directory.md#cleaned-up-automatically). Transkrip ini tidak dihitung dalam `files_past_cutoff`. Memerlukan Claude Code v2.1.248 atau lebih baru1485* `transcripts_exempted_desktop`: Jumlah transkrip yang melewati periode retensi yang dipertahankan sweep berdasarkan [aturan Claude Desktop dan Cowork](https://code.claude.com/docs/id/claude-directory.md#cleaned-up-automatically). Transkrip ini tidak dihitung dalam `files_past_cutoff`. Memerlukan Claude Code v2.1.248 atau lebih baru

1481* `session_files_deleted`: Jumlah artefak yang dihapus oleh sapuan file sesi: transkrip ditambah file pendamping per sesi seperti sidecar, rekaman, dan hasil tool1486* `session_files_deleted`: Jumlah artefak yang dihapus oleh sweep file sesi: transkrip ditambah file pendamping per sesi seperti sidecar, rekaman, dan hasil tool

1482* `artifacts_deleted`: Total item yang dihapus sapuan di seluruh direktori data yang dicakupnya, termasuk file sesi. Beberapa sapuan menghitung seluruh pohon direktori yang dihapus sebagai satu item dan beberapa tahap pembersihan tidak berkontribusi pada penghitung, jadi perlakukan nilai ini sebagai batas bawah, bukan jumlah file yang tepat1487* `artifacts_deleted`: Total item yang dihapus sweep di seluruh direktori data yang dicakupnya, termasuk file sesi. Beberapa sweep menghitung seluruh pohon direktori yang dihapus sebagai satu item dan beberapa proses pembersihan tidak berkontribusi pada penghitung, jadi anggap nilai ini sebagai batas bawah, bukan jumlah file yang pasti

1483* `files_retained_fresh`: File yang diperiksa dan dibiarkan di tempatnya karena masih berada dalam periode retensi. Hanya sapuan per file yang menghitungnya, sehingga nilainya merupakan batas bawah; nilai bukan nol adalah kondisi stabil yang normal1488* `files_retained_fresh`: File yang diperiksa dan dibiarkan di tempatnya karena masih berada dalam periode retensi. Hanya sweep per file yang menghitungnya, sehingga nilainya merupakan batas bawah; nilai bukan nol adalah kondisi normal yang stabil

1484* `files_past_cutoff`: File yang lebih lama dari periode retensi yang gagal dihapus oleh sapuan, misalnya karena kesalahan permission atau file yang masih terbuka. Jumlah ini juga mencakup setiap folder usang yang ditemukan sapuan di bawah `skills/synced/` atau `plugins/synced/`, terlepas dari apakah sapuan memindahkan folder tersebut ke tempat sampah. Selain folder tersebut, nilai di atas nol berarti ada file yang bertahan melewati periode retensi yang dikonfigurasi; nol bukan bukti bahwa tidak ada file yang bertahan, karena kegagalan penghapusan seluruh direktori dihitung dalam `error_count`1489* `files_past_cutoff`: File yang lebih lama dari periode retensi yang gagal dihapus sweep, misalnya karena error izin atau file yang sedang dibuka. Hitungan ini juga mencakup setiap folder usang yang ditemukan sweep di bawah `skills/synced/` atau `plugins/synced/`, baik sweep memindahkan folder tersebut ke tempat sampah maupun tidak. Selain folder-folder tersebut, nilai di atas nol berarti ada file yang bertahan melampaui periode retensi yang dikonfigurasi; nol bukan bukti bahwa tidak ada file yang demikian, karena kegagalan penghapusan seluruh direktori dihitung dalam `error_count` sebagai gantinya

1485* `error_count`: Jumlah kesalahan yang ditemui sapuan saat mendaftar atau menghapus file1490* `error_count`: Jumlah error yang ditemui sweep saat mendaftar atau menghapus file

1486 1491 

1487#### Event pengaturan terkelola terselesaikan1492#### Event pengaturan terkelola di-resolve

1488 1493 

1489Dicatat bersama [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) yang diselesaikan oleh sebuah sesi: sekali saat sesi dimulai, lagi ketika pengaturan terkelola atau status [policy helper](https://code.claude.com/docs/id/managed-settings.md#compute-the-policy-with-a-helper-program) berubah selama sesi, dan ketika Claude Code menolak untuk memulai atau mengakhiri sesi karena salah satu alasan yang tercantum dalam atribut `error.type`.1494Dicatat bersama [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) yang di-resolve oleh sebuah sesi: satu kali saat sesi dimulai, lagi ketika pengaturan terkelola atau status [policy helper](https://code.claude.com/docs/id/managed-settings.md#compute-the-policy-with-a-helper-program) berubah selama sesi, dan ketika Claude Code menolak untuk dimulai atau mengakhiri sesi karena salah satu alasan yang tercantum dalam atribut `error.type`.

1490Gunakan event ini untuk menemukan mesin yang berjalan pada sumber terkelola yang tidak terduga, mesin yang policy helper-nya gagal, dan alasan sebuah mesin menolak untuk memulai.1495Gunakan event ini untuk menemukan mesin yang berjalan pada sumber terkelola yang tidak terduga, mesin yang policy helper-nya gagal, dan alasan sebuah mesin menolak untuk dimulai.

1491Memerlukan Claude Code v2.1.274 atau lebih baru.1496Memerlukan Claude Code v2.1.274 atau lebih baru.

1492 1497 

1493Secara default, event ini membawa sumber terkelola dan status policy helper, tetapi tidak membawa pengaturan itu sendiri. Untuk menambahkan atribut `managed_settings.settings` yang telah disamarkan dan digest `managed_settings.resolved_sha256`, atur `OTEL_LOG_MANAGED_SETTINGS=1`:1498Secara default, event membawa sumber terkelola dan status policy helper, tetapi tidak membawa pengaturan itu sendiri. Untuk menambahkan atribut `managed_settings.settings` yang disamarkan dan digest `managed_settings.resolved_sha256`, atur `OTEL_LOG_MANAGED_SETTINGS=1`:

1494 1499 

1495* Atur di blok `env` pada pengaturan terkelola, pengaturan pengguna, atau `--settings`, atau di lingkungan tempat Anda meluncurkan Claude Code. Nilai di pengaturan proyek atau lokal tidak mengaktifkannya, karena repositori yang di-clone dapat menulisnya.1500* Atur di blok `env` pada pengaturan terkelola, pengaturan pengguna, atau `--settings`, atau di lingkungan tempat Anda menjalankan Claude Code. Nilai di pengaturan proyek atau lokal tidak mengaktifkannya, karena repositori yang di-clone dapat menulis pengaturan tersebut.

1496* Pengaturan terkelola server dapat mengaturnya tanpa menampilkan [dialog persetujuan keamanan](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs), karena variabel ini hanya menambahkan kebijakan organisasi Anda sendiri yang telah disamarkan ke event yang sudah diterima organisasi Anda.1501* Pengaturan yang dikelola server dapat mengaturnya tanpa menampilkan [dialog persetujuan keamanan](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs), karena variabel tersebut hanya menambahkan kebijakan organisasi Anda sendiri yang telah disamarkan ke event yang sudah diterima organisasi Anda.

1497 1502 

1498Dalam sesi interaktif di folder yang belum Anda [percayai](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder), Claude Code tidak mengekspor event penolakan.1503Dalam sesi interaktif di folder yang belum Anda [percayai](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder), Claude Code tidak mengekspor event penolakan.

1499 1504 


1503 1508 

1504* Semua [atribut standar](#standard-attributes)1509* Semua [atribut standar](#standard-attributes)

1505* `event.name`: `"managed_settings_resolved"`1510* `event.name`: `"managed_settings_resolved"`

1506* `event.timestamp`: timestamp ISO 86011511* `event.timestamp`: Timestamp ISO 8601

1507* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)1512* `event.sequence`: penghitung per proses untuk mengurutkan event, dijelaskan di bagian [Atribut korelasi event](#event-correlation-attributes)

1508* `managed_settings.trigger`: `"startup"` untuk event awal sesi, `"change"` ketika pengaturan terkelola atau status policy helper berubah kemudian dalam sesi, atau `"refused"` ketika kebijakan pengaturan terkelola menghentikan sesi. Claude Code mengirim event `change` hanya ketika sebuah atribut berbeda dari event terakhir yang dikirimnya, dan nilai pengaturan yang berubah tetap dihitung meskipun `OTEL_LOG_MANAGED_SETTINGS` dinonaktifkan1513* `managed_settings.trigger`: `"startup"` untuk event awal sesi, `"change"` ketika pengaturan terkelola atau status policy helper berubah kemudian dalam sesi, atau `"refused"` ketika kebijakan pengaturan terkelola menghentikan sesi. Claude Code mengirim event `change` hanya ketika sebuah atribut berbeda dari event terakhir yang dikirimnya, dan nilai pengaturan yang berubah tetap dihitung meskipun `OTEL_LOG_MANAGED_SETTINGS` dimatikan

1509* `error.type`: alasan Claude Code menghentikan sesi. Hanya ada pada event `refused`:1514* `error.type`: alasan Claude Code menghentikan sesi. Hanya ada pada event `refused`:

1510 * `"helper_failed"`: sebuah [eksekusi policy helper gagal](https://code.claude.com/docs/id/settings-reference.md#helper-failures)1515 * `"helper_failed"`: sebuah [eksekusi policy helper gagal](https://code.claude.com/docs/id/settings-reference.md#helper-failures)

1511 * `"policy_invalid"`: pengaturan terkelola berisi kesalahan yang mencegah Claude Code memulai, atau sebuah sumber admin gagal dimuat karena alasan selain pembacaan yang ditolak, sehingga Claude Code tidak dapat memeriksa login organisasi atau penegakan penyedia1516 * `"policy_invalid"`: pengaturan terkelola berisi error yang mencegah Claude Code dimulai, atau sumber admin gagal dimuat karena alasan selain pembacaan yang ditolak, sehingga Claude Code tidak dapat memeriksa login organisasi atau penegakan provider

1512 * `"provider_not_allowed"`: sesi akan menggunakan penyedia API, atau mengirim lalu lintas penyedia ke sebuah host, yang tidak diizinkan oleh daftar [`allowedProviders`](https://code.claude.com/docs/id/settings-reference#allowedproviders) terkelola. Memerlukan Claude Code v2.1.285 atau lebih baru1517 * `"provider_not_allowed"`: sesi akan menggunakan provider API, atau mengirim lalu lintas provider ke host, yang tidak diizinkan oleh daftar terkelola [`allowedProviders`](https://code.claude.com/docs/id/settings-reference#allowedproviders). Memerlukan Claude Code v2.1.285 atau lebih baru

1513 * `"consent_rejected"`: pengguna menolak [dialog persetujuan keamanan](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs) untuk pengaturan terkelola server1518 * `"consent_rejected"`: pengguna menolak [dialog persetujuan keamanan](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs) untuk pengaturan yang dikelola server

1514 * `"force_refresh_failed"`: pengambilan pengaturan yang diwajibkan oleh [`forceRemoteSettingsRefresh`](https://code.claude.com/docs/id/settings-reference#forceremotesettingsrefresh) gagal1519 * `"force_refresh_failed"`: pengambilan pengaturan yang diwajibkan oleh [`forceRemoteSettingsRefresh`](https://code.claude.com/docs/id/settings-reference#forceremotesettingsrefresh) gagal

1515 * `"gateway_rejected"`: sebuah [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway) menjawab pemuatan pengaturan terkelola dengan HTTP 4031520 * `"gateway_rejected"`: sebuah [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway) menjawab pemuatan pengaturan terkelola dengan HTTP 403

1516 * `"version_below_minimum"`: versi Claude Code ini berada di bawah [`requiredMinimumVersion`](https://code.claude.com/docs/id/settings-reference#requiredminimumversion) atau di atas [`requiredMaximumVersion`](https://code.claude.com/docs/id/settings-reference#requiredmaximumversion)1521 * `"version_below_minimum"`: versi Claude Code ini di bawah [`requiredMinimumVersion`](https://code.claude.com/docs/id/settings-reference#requiredminimumversion) atau di atas [`requiredMaximumVersion`](https://code.claude.com/docs/id/settings-reference#requiredmaximumversion)

1517 * `"_OTHER"`: pemuatan pengaturan terkelola Claude apps gateway gagal karena alasan lain1522 * `"_OTHER"`: pemuatan pengaturan terkelola Claude apps gateway gagal karena alasan lain

1518* `managed_settings.sources`: setiap sumber terkelola yang menyediakan setidaknya satu [kunci kebijakan](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources), prioritas tertinggi terlebih dahulu, termasuk sumber yang kuncinya tidak berlaku di bawah `first-wins`. Nilainya adalah `"remote"`, `"plist"` atau `"hklm"` untuk kebijakan MDM atau tingkat OS, `"file"` untuk file pengaturan terkelola dan drop-in, `"parent"` ketika sebuah [host penyemat](https://code.claude.com/docs/id/managed-settings.md#let-an-embedding-host-add-policy) menyediakan pengaturan, dan `"hkcu"` untuk [nilai registri Windows HKCU](https://code.claude.com/docs/id/managed-settings.md#where-each-mechanism-stores-the-policy) ketika Claude Code [membacanya](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources). Sumber yang hanya membawa kunci kontrol, atau yang tidak dapat dibaca Claude Code, tidak dicantumkan. Dipancarkan sebagai array string, kosong ketika tidak ada sumber terkelola yang menyediakan kunci kebijakan1523* `managed_settings.sources`: setiap sumber terkelola yang mengirimkan setidaknya satu [kunci kebijakan](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources), dimulai dari prioritas tertinggi, termasuk sumber yang kuncinya tidak berlaku di bawah `first-wins`. Nilainya adalah `"remote"`, `"plist"` atau `"hklm"` untuk kebijakan MDM atau tingkat OS, `"file"` untuk file pengaturan terkelola dan drop-in, `"parent"` ketika [host penyemat](https://code.claude.com/docs/id/managed-settings.md#let-an-embedding-host-add-policy) menyediakan pengaturan, dan `"hkcu"` untuk [nilai registri Windows HKCU](https://code.claude.com/docs/id/managed-settings.md#where-each-mechanism-stores-the-policy) ketika Claude Code [membacanya](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources). Sumber yang hanya membawa kunci kontrol, atau yang tidak dapat dibaca Claude Code, tidak dicantumkan. Dikirim sebagai array string, kosong ketika tidak ada sumber terkelola yang mengirimkan kunci kebijakan

1519* `managed_settings.source_behavior`: nilai [`managedSourcesBehavior`](https://code.claude.com/docs/id/settings-reference#managedsourcesbehavior) yang dibaca Claude Code, `"first-wins"` atau `"merge"`. `"first-wins"` ketika tidak ada sumber yang mengatur kunci tersebut1524* `managed_settings.source_behavior`: nilai [`managedSourcesBehavior`](https://code.claude.com/docs/id/settings-reference#managedsourcesbehavior) yang dibaca Claude Code, `"first-wins"` atau `"merge"`. `"first-wins"` ketika tidak ada sumber yang mengatur kunci tersebut

1520* `managed_settings.helper.state`: status policy helper yang dikonfigurasi oleh sumber MDM atau file yang dipilih:1525* `managed_settings.helper.state`: status policy helper yang dikonfigurasi oleh sumber MDM atau file yang dipilih:

1521 * `"ok"`: output helper berfungsi sebagai pengaturan terkelola1526 * `"ok"`: output helper berfungsi sebagai pengaturan terkelola

1522 * `"bad_path"`, `"not_a_file"`, `"exit_nonzero"`, `"timed_out"`, `"oversize"`, `"parse_failed"`, `"envelope_invalid"`, atau `"schema_rejected"`: eksekusi terakhir helper gagal. [Kegagalan helper](https://code.claude.com/docs/id/settings-reference.md#helper-failures) menjelaskan kasus-kasusnya1527 * `"bad_path"`, `"not_a_file"`, `"exit_nonzero"`, `"timed_out"`, `"oversize"`, `"parse_failed"`, `"envelope_invalid"`, atau `"schema_rejected"`: eksekusi terakhir helper gagal. [Kegagalan helper](https://code.claude.com/docs/id/settings-reference.md#helper-failures) menjelaskan kasus-kasusnya

1523 * `"none"`: tidak ada helper yang dikonfigurasi, atau sumber yang mengonfigurasinya bukan kebijakan MDM atau file pengaturan terkelola1528 * `"none"`: tidak ada helper yang dikonfigurasi, atau sumber yang mengonfigurasinya bukan kebijakan MDM atau file pengaturan terkelola

1524* `managed_settings.helper.applied`: `"output"` selama output helper itu sendiri berfungsi sebagai pengaturan terkelola, `"none"` jika tidak1529* `managed_settings.helper.applied`: `"output"` selama output helper itu sendiri berfungsi sebagai pengaturan terkelola, `"none"` ketika tidak

1525* `managed_settings.helper.entry`: `"policyHelper"` ketika Claude Code memilih sebuah [`policyHelper`](https://code.claude.com/docs/id/settings-reference#policyhelper). Tidak ada ketika tidak ada helper yang dipilih1530* `managed_settings.helper.entry`: `"policyHelper"` ketika Claude Code memilih sebuah [`policyHelper`](https://code.claude.com/docs/id/settings-reference#policyhelper). Tidak ada ketika Claude Code tidak memilih helper

1526* `managed_settings.helper.path`: [`path`](https://code.claude.com/docs/id/settings-reference#policyhelper-path) helper yang dikonfigurasi. Ada setiap kali Claude Code memilih helper, terlepas dari apakah `OTEL_LOG_MANAGED_SETTINGS` diatur1531* `managed_settings.helper.path`: [`path`](https://code.claude.com/docs/id/settings-reference#policyhelper-path) helper yang dikonfigurasi. Ada setiap kali Claude Code memilih helper, baik `OTEL_LOG_MANAGED_SETTINGS` diatur maupun tidak

1527* `managed_settings.resolved_sha256` (ketika `OTEL_LOG_MANAGED_SETTINGS=1`): SHA-256 dari pengaturan terkelola yang diselesaikan sebelum penyamaran, diserialisasi sebagai JSON dengan kunci diurutkan secara rekursif dan tanpa spasi kosong. Mesin dengan digest yang sama menjalankan kebijakan yang sama. Claude Code mengirim digest hanya dengan opt-in karena kebijakan yang pendek dapat dipulihkan dengan melakukan hash terhadap tebakan. Tidak ada ketika tidak ada pengaturan terkelola yang diselesaikan, dan pada event `refused`1532* `managed_settings.resolved_sha256` (ketika `OTEL_LOG_MANAGED_SETTINGS=1`): SHA-256 dari pengaturan terkelola yang di-resolve sebelum penyamaran, diserialisasi sebagai JSON dengan kunci diurutkan secara rekursif dan tanpa spasi. Mesin dengan digest yang sama menjalankan kebijakan yang sama. Claude Code mengirim digest hanya dengan opt-in karena kebijakan yang pendek dapat dipulihkan dengan melakukan hash terhadap tebakan. Tidak ada ketika tidak ada pengaturan terkelola yang di-resolve, dan pada event `refused`

1528* `managed_settings.settings` (ketika `OTEL_LOG_MANAGED_SETTINGS=1`): nama dan bentuk pengaturan terkelola yang diselesaikan sebagai string JSON, dengan nilai-nilai disamarkan. Tidak ada pada event `refused`. Claude Code membangunnya dari skema pengaturannya:1533* `managed_settings.settings` (ketika `OTEL_LOG_MANAGED_SETTINGS=1`): nama dan bentuk pengaturan terkelola yang di-resolve sebagai string JSON, dengan nilai disamarkan. Tidak ada pada event `refused`. Claude Code membangunnya dari skema pengaturannya:

1529 1534 

1530 * Nama pengaturan yang dideklarasikan skema diekspor, dan kunci yang tidak dideklarasikan dihilangkan1535 * Nama pengaturan yang dideklarasikan skema diekspor, dan kunci yang tidak dideklarasikannya dihilangkan

1531 * Boolean, angka, dan nilai string yang dibatasi skema ke sekumpulan opsi tetap, seperti `permissions.defaultMode`, diekspor apa adanya. `sandbox.network.httpProxyPort` dan `sandbox.network.socksProxyPort` diekspor sebagai `"[REDACTED]"`1536 * Boolean, angka, dan nilai string yang dibatasi skema ke sekumpulan opsi tetap, seperti `permissions.defaultMode`, diekspor apa adanya. `sandbox.network.httpProxyPort` dan `sandbox.network.socksProxyPort` diekspor sebagai `"[REDACTED]"`

1532 * Setiap string lainnya, seperti `model`, `apiKeyHelper`, setiap nilai `env`, setiap URL, dan setiap perintah, diekspor sebagai `"[REDACTED]"`1537 * Setiap string lainnya, seperti `model`, `apiKeyHelper`, setiap nilai `env`, setiap URL, dan setiap perintah, diekspor sebagai `"[REDACTED]"`

1533 * Nama entri dari map, seperti nama variabel `env` dan ID plugin, diekspor apa adanya. Pengaturan yang entrinya tidak diberi tipe oleh skema, seperti `vimInsertModeRemaps`, diekspor sebagai satu `"[REDACTED]"`, dan `sandbox.ignoreViolations` diekspor sebagai daftar dari daftar path-nya tanpa pola perintah1538 * Nama entri dari map, seperti nama variabel `env` dan ID plugin, diekspor apa adanya. Pengaturan yang entrinya tidak diberi tipe oleh skema, seperti `vimInsertModeRemaps`, diekspor sebagai satu `"[REDACTED]"`, dan `sandbox.ignoreViolations` diekspor sebagai daftar dari daftar path-nya tanpa pola perintah

1534 * Sebuah daftar mempertahankan panjangnya, dengan setiap entri disamarkan menurut aturan yang sama1539 * Sebuah daftar mempertahankan panjangnya, dengan setiap entri disamarkan berdasarkan aturan yang sama

1535 * Aturan `permissions.allow`, `permissions.deny`, atau `permissions.ask` diekspor sebagai nama tool-nya dengan konten disamarkan, seperti `Read([REDACTED])`, ketika tool tersebut merupakan bawaan versi Claude Code ini atau merupakan referensi `mcp__` seperti `mcp__jira__create_issue`. Aturan lainnya diekspor sebagai `"[REDACTED]"`1540 * Aturan `permissions.allow`, `permissions.deny`, atau `permissions.ask` diekspor sebagai nama tool-nya dengan konten disamarkan, seperti `Read([REDACTED])`, ketika tool tersebut merupakan bawaan versi Claude Code ini atau merupakan referensi `mcp__` seperti `mcp__jira__create_issue`. Aturan lainnya diekspor sebagai `"[REDACTED]"`

1536 * Hook mengikuti aturan yang sama, sehingga field opsi tetap dan numerik seperti `type` dan `timeout` ditampilkan, sementara setiap perintah, URL, `matcher`, dan kondisi `if` diekspor sebagai `"[REDACTED]"`1541 * Hook mengikuti aturan yang sama, sehingga field opsi tetap dan numerik seperti `type` dan `timeout` ditampilkan, sedangkan setiap perintah, URL, `matcher`, dan kondisi `if` diekspor sebagai `"[REDACTED]"`

1537 1542 

1538 Misalnya, pengaturan terkelola dengan `apiKeyHelper`, dua variabel `env`, dan sebuah aturan deny diekspor sebagai `{"apiKeyHelper":"[REDACTED]","env":{"HTTPS_PROXY":"[REDACTED]","CLAUDE_CODE_ENABLE_TELEMETRY":"[REDACTED]"},"permissions":{"deny":["Read([REDACTED])"]}}`.1543 Misalnya, pengaturan terkelola dengan `apiKeyHelper`, dua variabel `env`, dan sebuah aturan deny diekspor sebagai `{"apiKeyHelper":"[REDACTED]","env":{"HTTPS_PROXY":"[REDACTED]","CLAUDE_CODE_ENABLE_TELEMETRY":"[REDACTED]"},"permissions":{"deny":["Read([REDACTED])"]}}`.

1539 1544 

1540 Claude Code memotong nilai pada 8 KB UTF-8, dan nilai yang terpotong bukan JSON yang valid1545 Claude Code memotong nilai pada 8 KB UTF-8, dan nilai yang dipotong bukan JSON yang valid

1541* `managed_settings.settings_truncated` (ketika `managed_settings.settings` ada): `true` ketika Claude Code memotong `managed_settings.settings` pada 8 KB, `false` jika tidak. Dipancarkan sebagai Boolean, bukan string1546* `managed_settings.settings_truncated` (ketika `managed_settings.settings` ada): `true` ketika Claude Code memotong `managed_settings.settings` pada 8 KB, `false` jika tidak. Dikirim sebagai Boolean, bukan string

1542 1547 

1543## Menafsirkan data metrik dan acara1548## Menafsirkan data metrik dan acara

1544 1549 


1549| Metrik | Peluang Analisis |1554| Metrik | Peluang Analisis |

1550| - | - |1555| - | - |

1551| `claude_code.token.usage` | Pecahkan berdasarkan [`type`](#token-counter) token, pengguna, tim, model, `skill.name`, `plugin.name`, atau `agent.name` |1556| `claude_code.token.usage` | Pecahkan berdasarkan [`type`](#token-counter) token, pengguna, tim, model, `skill.name`, `plugin.name`, atau `agent.name` |

1552| `claude_code.session.count` | Lacak adopsi dan keterlibatan dari waktu ke waktu |

1553| `claude_code.lines_of_code.count` | Ukur produktivitas dengan melacak penambahan dan penghapusan kode, dipecah berdasarkan model |1557| `claude_code.lines_of_code.count` | Ukur produktivitas dengan melacak penambahan dan penghapusan kode, dipecah berdasarkan model |

1554| `claude_code.commit.count` & `claude_code.pull_request.count` | Pahami dampak pada alur kerja pengembangan |1558| `claude_code.commit.count` & `claude_code.pull_request.count` | Pahami dampak pada alur kerja pengembangan |

1555 1559 

1560Untuk membandingkan pengguna aktif di berbagai surface, atur `OTEL_METRICS_INCLUDE_ENTRYPOINT=true` untuk menambahkan [`app.entrypoint`](#standard-attributes) ke metrik dan acara. Kemudian hitung nilai `user.account_uuid` yang berbeda per entrypoint pada acara [`claude_code.user_prompt`](#user-prompt-event), atau pada `claude_code.token.usage` jika Anda hanya mengekspor metrik. Misalnya, gunakan `cli` untuk sesi CLI interaktif, dan kelompokkan `claude-desktop`, `claude-desktop-3p`, dan `remote_desktop` untuk tab Code di Claude Desktop.

1561 

1562`user.account_uuid` tidak mengidentifikasi orang dalam sesi channel Claude Tag dan tidak ada pada sesi tanpa akun Claude: lihat [Mengatribusikan tindakan ke pengguna](#attribute-actions-to-users). Ketika satu orang memulai banyak sesi, atau sebuah sesi tidak menerima prompt, [`claude_code.session.count`](#session-counter) bertambah tanpa menambah pengguna aktif.

1563 

1556### Pemantauan biaya1564### Pemantauan biaya

1557 1565 

1558Metrik `claude_code.cost.usage` membantu dengan:1566Metrik `claude_code.cost.usage` membantu dengan:


1783## Keamanan dan privasi1791## Keamanan dan privasi

1784 1792 

1785* Ekspor OpenTelemetry ke backend Anda adalah opt-in dan memerlukan konfigurasi eksplisit. Untuk telemetri operasional terpisah Anthropic dan cara menonaktifkannya, lihat [Penggunaan data](https://code.claude.com/docs/id/data-usage.md#telemetry-services)1793* Ekspor OpenTelemetry ke backend Anda adalah opt-in dan memerlukan konfigurasi eksplisit. Untuk telemetri operasional terpisah Anthropic dan cara menonaktifkannya, lihat [Penggunaan data](https://code.claude.com/docs/id/data-usage.md#telemetry-services)

1786* Konten file mentah dan cuplikan kode tidak disertakan dalam metrik atau acara. Trace spans adalah jalur data terpisah: lihat poin `OTEL_LOG_TOOL_CONTENT` di bawah1794* Secara default, konten file mentah dan cuplikan kode tidak disertakan dalam metrik atau acara. Jika Anda mengatur variabel seperti `OTEL_LOG_TOOL_DETAILS` atau `OTEL_LOG_RAW_API_BODIES`, acara dapat menyertakannya. Trace spans adalah jalur data terpisah: lihat poin `OTEL_LOG_TOOL_CONTENT` di bawah

1787* Saat diautentikasi melalui OAuth, `user.email` disertakan dalam atribut telemetri, dikirim hanya ke titik akhir OTel yang Anda konfigurasikan, tidak pernah ke Anthropic. Jika ini menjadi perhatian bagi organisasi Anda, bekerja dengan backend telemetri Anda untuk memfilter atau menyunting bidang ini1795* Saat diautentikasi melalui OAuth, `user.email` disertakan dalam atribut telemetri, dikirim hanya ke titik akhir OTel yang Anda konfigurasikan, tidak pernah ke Anthropic. Jika ini menjadi perhatian bagi organisasi Anda, bekerja dengan backend telemetri Anda untuk memfilter atau menyunting bidang ini

1788* Konten prompt pengguna tidak dikumpulkan secara default. Hanya panjang prompt yang dicatat. Untuk menyertakan konten prompt, atur `OTEL_LOG_USER_PROMPTS=1`. Saat diaktifkan:1796* Konten prompt pengguna tidak dikumpulkan secara default. Hanya panjang prompt yang dicatat. Untuk menyertakan konten prompt, atur `OTEL_LOG_USER_PROMPTS=1`. Saat diaktifkan:

1789 * Acara `user_prompt` membawa teks prompt dalam dua atribut, `prompt` dan [`prompt_text`](#user-prompt-event). Jika Anda membuang atau menyamarkan teks prompt acara berdasarkan nama atribut di collector Anda, sebutkan kedua atribut dalam aturan tersebut1797 * Acara `user_prompt` membawa teks prompt dalam dua atribut, `prompt` dan [`prompt_text`](#user-prompt-event). Jika Anda membuang atau menyamarkan teks prompt acara berdasarkan nama atribut di collector Anda, sebutkan kedua atribut dalam aturan tersebut

permission-modes.md +186 −184

Details

25 25 

26Mode yang meninjau setiap tindakan dinamai **Manual** di CLI, di `claude --help`, di ekstensi VS Code dan JetBrains, dan di aplikasi desktop. Nilai konfignya adalah `default`, yang digunakan oleh hook dan integrasi SDK. CLI menerima `manual` sebagai alias di mana pun Anda mengetik nilainya, misalnya `claude --permission-mode manual` atau `"defaultMode": "manual"`.26Mode yang meninjau setiap tindakan dinamai **Manual** di CLI, di `claude --help`, di ekstensi VS Code dan JetBrains, dan di aplikasi desktop. Nilai konfignya adalah `default`, yang digunakan oleh hook dan integrasi SDK. CLI menerima `manual` sebagai alias di mana pun Anda mengetik nilainya, misalnya `claude --permission-mode manual` atau `"defaultMode": "manual"`.

27 27 

28Penulisan ke [jalur yang dilindungi](#protected-paths) tidak pernah disetujui otomatis kecuali dalam mode `bypassPermissions` dan dalam sesi mode plan di mana izin bypass tersedia, artinya sesi terminal interaktif yang dimulai dengan cara yang [menempatkan `bypassPermissions` dalam siklus mode](#switch-permission-modes).28Setiap mode memiliki aturannya sendiri untuk penulisan ke [jalur yang dilindungi](#protected-paths).

29 29 

30Mode menetapkan garis dasar. Lapisi [aturan izin](https://code.claude.com/docs/id/permissions.md#manage-permissions) di atas untuk menyetujui sebelumnya atau memblokir alat tertentu. Aturan Deny memblokir di setiap mode, termasuk `bypassPermissions`. Aturan Deny dan ask tidak berlaku untuk [`EndConversation`](https://code.claude.com/docs/id/tools-reference#endconversation-tool-behavior) selama Claude masih memiliki setidaknya satu alat lain yang dapat dipanggilnya. Aturan Allow tidak berpengaruh dalam `bypassPermissions`.30Mode menetapkan garis dasar. Lapisi [aturan izin](https://code.claude.com/docs/id/permissions.md#manage-permissions) di atas untuk menyetujui sebelumnya atau memblokir alat tertentu. Aturan Deny memblokir di setiap mode, termasuk `bypassPermissions`. Aturan Deny dan ask tidak berlaku untuk [`EndConversation`](https://code.claude.com/docs/id/tools-reference#endconversation-tool-behavior) selama Claude masih memiliki setidaknya satu alat lain yang dapat dipanggilnya. Aturan Allow tidak berpengaruh dalam `bypassPermissions`.

31 31 


58 58 

59Sandbox Bash dan mode auto bekerja secara independen dan menggabungkan, dengan pengecualian yang tercantum di bawah [Sandbox modes](https://code.claude.com/docs/id/sandboxing.md#sandbox-modes). Untuk interaksi penuh, lihat [Bagaimana sandboxing berhubungan dengan izin dan mode izin](https://code.claude.com/docs/id/sandboxing.md#how-sandboxing-relates-to-permissions-and-permission-modes) dan [Bagaimana isolasi berhubungan dengan mode izin](https://code.claude.com/docs/id/sandbox-environments.md#how-isolation-relates-to-permission-modes).59Sandbox Bash dan mode auto bekerja secara independen dan menggabungkan, dengan pengecualian yang tercantum di bawah [Sandbox modes](https://code.claude.com/docs/id/sandboxing.md#sandbox-modes). Untuk interaksi penuh, lihat [Bagaimana sandboxing berhubungan dengan izin dan mode izin](https://code.claude.com/docs/id/sandboxing.md#how-sandboxing-relates-to-permissions-and-permission-modes) dan [Bagaimana isolasi berhubungan dengan mode izin](https://code.claude.com/docs/id/sandbox-environments.md#how-isolation-relates-to-permission-modes).

60 60 

61## Mode mana yang dimulai sesi61## Mode mana yang digunakan saat sesi dimulai

62 62 

63Ketika Anda memulai sesi baru di terminal, Claude Code mengambil mode izin dari yang pertama dari ini yang berlaku:63Saat Anda memulai sesi baru di terminal, Claude Code mengambil mode izin dari yang pertama berlaku di antara berikut ini:

64 64 

651. Flag `--permission-mode`, atau `--dangerously-skip-permissions`651. Flag `--permission-mode`, atau `--dangerously-skip-permissions`

66 66 

672. `permissions.defaultMode` dalam [file pengaturan](https://code.claude.com/docs/id/settings.md#where-settings-live)672. `permissions.defaultMode` dalam [file pengaturan](https://code.claude.com/docs/id/settings.md#where-settings-live)

68 68 

69 Jika Anda menetapkan `"auto"` di `.claude/settings.json` atau `.claude/settings.local.json`, nilainya tidak berlaku, dan Claude Code kemudian menggunakan default bawaan daripada `defaultMode` dari `~/.claude/settings.json`. Jika Anda menetapkan `"bypassPermissions"` di dua file itu, itu juga tidak berlaku, dan sesi dimulai dalam mode Manual. Nilai lainnya berlaku dari file pengaturan apa pun.69 Jika Anda mengatur `"auto"` di `.claude/settings.json` atau `.claude/settings.local.json`, nilai tersebut tidak berlaku, dan Claude Code kemudian menggunakan default bawaan alih-alih `defaultMode` dari `~/.claude/settings.json`. Jika Anda mengatur `"bypassPermissions"` di kedua file tersebut, nilai itu juga tidak berlaku, dan sesi dimulai dalam mode Manual. Nilai-nilai lainnya berlaku dari file pengaturan mana pun.

70 70 

713. Default bawaan713. Default bawaan

72 72 

73Percakapan yang dimulai ekstensi VS Code mengikuti daftar ekstensi sendiri dalam [Alihkan mode izin](#switch-permission-modes). Untuk mode izin yang dimulai Claude Code dalam sesi yang dilanjutkan, lihat [mode izin pada resume](https://code.claude.com/docs/id/sessions.md#permission-mode-on-resume).73Percakapan yang dimulai oleh ekstensi VS Code mengikuti daftar milik ekstensi itu sendiri di [Beralih mode izin](#switch-permission-modes). Untuk mode izin yang digunakan Claude Code saat memulai sesi yang dilanjutkan, lihat [mode izin saat melanjutkan](https://code.claude.com/docs/id/sessions.md#permission-mode-on-resume).

74 74 

75Default `auto` bawaan memerlukan Claude Code v2.1.228 atau lebih baru di macOS, Linux, dan WSL, dan v2.1.233 atau lebih baru di Windows asli. Pada versi sebelumnya, default bawaan adalah Manual.75Default bawaan `auto` memerlukan Claude Code v2.1.228 atau yang lebih baru di macOS, Linux, dan WSL, serta v2.1.233 atau yang lebih baru di Windows native. Pada versi sebelumnya, default bawaannya adalah Manual.

76 76 

77Default bawaan bergantung pada cara Anda menjalankan Claude Code. Baris pertama yang cocok dengan sesi Anda berlaku. Tabel mencakup sesi yang Anda mulai di terminal atau melalui ekstensi VS Code; untuk aplikasi desktop dan claude.ai, lihat tab Desktop dan Web dalam [Alihkan mode izin](#switch-permission-modes).77Default bawaan bergantung pada cara Anda menjalankan Claude Code. Baris pertama yang cocok dengan sesi Anda yang berlaku. Tabel ini mencakup sesi yang Anda mulai di terminal atau melalui ekstensi VS Code; untuk aplikasi desktop dan claude.ai, lihat tab Desktop dan Web di [Beralih mode izin](#switch-permission-modes).

78 78 

79| Cara Anda menjalankan Claude Code | Mode izin awal bawaan |79| Cara Anda menjalankan Claude Code | Mode izin awal bawaan |

80| :- | :- |80| :- | :- |

81| File pengaturan apa pun menetapkan `disableAutoMode` ke `"disable"` | `default` |81| File pengaturan mana pun mengatur `disableAutoMode` ke `"disable"` | `default` |

82| `claude -p` atau [Agent SDK](https://code.claude.com/docs/id/agent-sdk/permissions.md#permission-modes) | `default` |82| `claude -p` atau [Agent SDK](https://code.claude.com/docs/id/agent-sdk/permissions.md#permission-modes) | `default` |

83| Organisasi Anda telah menerapkan [konfigurasi HIPAA](#hipaa-configuration) dan sesi tersebut [memenuhi syarat untuknya](https://code.claude.com/docs/id/hipaa-setup.md#check-how-developers-sign-in-and-connect) | `default` dengan Claude Code v2.1.285 atau lebih baru; auto mode tetap tersedia untuk dialihkan |83| Organisasi Anda telah menerapkan [konfigurasi HIPAA](#hipaa-configuration) dan sesi tersebut [memenuhi syarat untuknya](https://code.claude.com/docs/id/hipaa-setup.md#check-how-developers-sign-in-and-connect) | `default` dengan Claude Code v2.1.285 atau yang lebih baru; auto mode tetap tersedia untuk dipilih |

84| Di terminal atau melalui [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) | `auto` dengan Claude Code v2.1.283 atau lebih baru; pada versi sebelumnya, `auto` pada paket Pro, Max, Ultra, atau Team dalam sesi yang [mengambil flag fitur](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), dan `default` sebaliknya |84| Di terminal atau melalui [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) | `auto` dengan Claude Code v2.1.283 atau yang lebih baru; pada versi sebelumnya, `auto` pada paket Pro, Max, Ultra, atau Team dalam sesi yang [mengambil feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), dan `default` untuk kasus lainnya |

85 85 

86Ketika flag, file pengaturan, atau default bawaan memilih `auto` tetapi auto mode tidak tersedia untuk sesi, Claude Code memulai sesi dalam Manual sebagai gantinya. Auto mode tidak tersedia ketika sesi tidak memenuhi [persyaratan ketersediaan](#eliminate-prompts-with-auto-mode), seperti file pengaturan mematikannya atau model yang tidak mendukungnya, atau ketika Anthropic untuk sementara telah mematikannya di sisi server.86Ketika flag, file pengaturan, atau default bawaan memilih `auto` tetapi auto mode tidak tersedia untuk sesi tersebut, Claude Code memulai sesi dalam mode Manual sebagai gantinya. Auto mode tidak tersedia ketika sesi tidak memenuhi [persyaratan ketersediaan](#eliminate-prompts-with-auto-mode), seperti file pengaturan yang menonaktifkannya atau model yang tidak mendukungnya, atau ketika Anthropic untuk sementara menonaktifkannya di sisi server.

87 87 

88Pertama kali default bawaan memulai salah satu sesi Anda dalam auto mode, Claude Code menampilkan pemberitahuan yang menghubungkan ke halaman ini:88Pertama kali default bawaan memulai salah satu sesi Anda dalam auto mode, Claude Code menampilkan pemberitahuan yang menautkan ke halaman ini:

89 89 

90* Di terminal, sekali, di bagian atas sesi90* Di terminal, satu kali, di bagian atas sesi

91* Di ekstensi VS Code, sebagai kartu di layar percakapan baru yang tetap sampai Anda menutupnya91* Di ekstensi VS Code, sebagai kartu di layar percakapan baru yang tetap ada hingga Anda menutupnya

92 92 

93Jika `~/.claude/settings.json` Anda menetapkan `defaultMode` selain `auto` dan tidak ada file pengaturan lain yang menetapkan satu, sesi Anda terus dimulai dalam mode itu.93Jika `~/.claude/settings.json` Anda mengatur `defaultMode` selain `auto` dan tidak ada file pengaturan lain yang mengaturnya, sesi Anda tetap dimulai dalam mode tersebut.

94 94 

95Pada paket Pro, Max, Ultra, dan Team, dan dalam sesi yang [tidak mengambil flag fitur](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), Claude Code menanyakan sekali apakah akan mengubah pengaturan ke auto mode. Pertanyaan tersebut muncul di terminal atau di ekstensi VS Code, dan jika Anda menolak, pengaturan Anda tetap seperti adanya.95Pada paket Pro, Max, Ultra, dan Team, serta dalam sesi yang [tidak mengambil feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), Claude Code menanyakan satu kali apakah pengaturan akan diubah ke auto mode. Pertanyaan ini muncul di terminal atau di ekstensi VS Code, dan jika Anda menolak, pengaturan Anda tetap seperti semula.

96 96 

97### Panggilan tool ditolak dalam eksekusi `claude -p` dan Agent SDK97### Panggilan tool ditolak dalam `claude -p` dan eksekusi Agent SDK

98 98 

99Di Claude Code v2.1.302 atau lebih baru, eksekusi `claude -p` dan [Agent SDK](https://code.claude.com/docs/id/agent-sdk/permissions.md#permission-modes) [tanpa mode izin yang ditetapkan](#which-mode-a-session-starts-in) dimulai dalam mode Manual. Mode ini muncul sebagai `default` dalam opsi SDK dan pengaturan. Panggilan yang memerlukan persetujuan ditolak kecuali Anda menyetujuinya dengan aturan izin allow, hook, callback `canUseTool`, atau `--permission-prompt-tool`.99Di Claude Code v2.1.302 atau yang lebih baru, eksekusi `claude -p` dan [Agent SDK](https://code.claude.com/docs/id/agent-sdk/permissions.md#permission-modes) yang [tidak mengatur mode izin](#which-mode-a-session-starts-in) dimulai dalam mode Manual. Mode ini muncul sebagai `default` dalam opsi SDK dan pengaturan. Panggilan yang memerlukan persetujuan ditolak kecuali Anda menyetujuinya dengan aturan allow, hook, callback `canUseTool`, atau `--permission-prompt-tool`.

100 100 

101Agar panggilan ini disetujui, tambahkan aturan allow atau mulai dalam auto mode:101Agar panggilan ini disetujui, tambahkan aturan allow atau mulai dalam auto mode:

102 102 

103* **[Tambahkan aturan allow](https://code.claude.com/docs/id/permissions.md#manage-permissions)**: Claude menjalankan panggilan yang Anda cantumkan. Lewatkan [`--allowedTools "Bash(npm test)"`](https://code.claude.com/docs/id/headless#auto-approve-tools) ke `claude -p`, atau atur [opsi allowed-tools](https://code.claude.com/docs/id/agent-sdk/permissions.md#allow-and-deny-rules) SDK Anda.103* **[Tambahkan aturan allow](https://code.claude.com/docs/id/permissions.md#manage-permissions)**: Claude menjalankan panggilan yang Anda cantumkan. Berikan [`--allowedTools "Bash(npm test)"`](https://code.claude.com/docs/id/headless#auto-approve-tools) ke `claude -p`, atau atur [opsi allowed-tools](https://code.claude.com/docs/id/agent-sdk/permissions.md#allow-and-deny-rules) pada SDK Anda.

104* **Mulai dalam [auto mode](#eliminate-prompts-with-auto-mode)**: model pengklasifikasi meninjau panggilan, sehingga Anda tidak perlu mencantumkan apa pun sebelumnya. Lewatkan `--permission-mode auto` ke `claude -p`, atau atur [opsi mode izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#set-permission-mode) SDK Anda.104* **Mulai dalam [auto mode](#eliminate-prompts-with-auto-mode)**: model pengklasifikasi meninjau panggilan, sehingga Anda tidak perlu mencantumkan apa pun sebelumnya. Berikan `--permission-mode auto` ke `claude -p`, atau atur [opsi mode izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#set-permission-mode) pada SDK Anda.

105 105 

106Contoh-contoh ini menunjukkan bentuk auto mode untuk CLI dan setiap SDK:106Contoh-contoh berikut menunjukkan bentuk auto mode untuk CLI dan setiap SDK:

107 107 

108> [tab] CLI108> [tab] CLI

109>109>


127> options = ClaudeAgentOptions(permission_mode="auto")127> options = ClaudeAgentOptions(permission_mode="auto")

128> ```128> ```

129 129 

130Sebelum v2.1.302, eksekusi ini dapat dimulai dalam auto mode jika tidak [mengambil flag fitur](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), misalnya pada [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md) atau dengan `DISABLE_TELEMETRY`.130Sebelum v2.1.302, eksekusi ini dapat dimulai dalam auto mode jika tidak [mengambil feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), misalnya pada [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md) atau dengan `DISABLE_TELEMETRY`.

131 131 

132### Mulai dalam mode izin yang berbeda132### Memulai dalam mode izin yang berbeda

133 133 

134Anda dapat menetapkan mode izin awal untuk satu sesi, atau sebagai default untuk setiap sesi di mesin, proyek, atau organisasi. Ketika lebih dari satu file pengaturan menetapkan `permissions.defaultMode`, [prioritas pengaturan](https://code.claude.com/docs/id/settings.md#settings-precedence) memutuskan, jadi nilai proyek atau terkelola mengalahkan `~/.claude/settings.json`. Untuk mengubah mode izin sesi yang sudah berjalan, lihat [Alihkan mode izin](#switch-permission-modes).134Anda dapat mengatur mode izin awal untuk satu sesi, atau sebagai default untuk setiap sesi di sebuah mesin, dalam sebuah proyek, atau dalam sebuah organisasi. Ketika lebih dari satu file pengaturan mengatur `permissions.defaultMode`, [prioritas pengaturan](https://code.claude.com/docs/id/settings.md#settings-precedence) yang menentukan, sehingga nilai proyek atau nilai terkelola diutamakan daripada `~/.claude/settings.json`. Untuk mengubah mode izin sesi yang sudah berjalan, lihat [Beralih mode izin](#switch-permission-modes).

135 135 

136| Untuk menetapkan mode izin awal untuk | Lakukan ini |136| Untuk mengatur mode izin awal bagi | Lakukan ini |

137| :- | :- |137| :- | :- |

138| Satu sesi yang akan Anda mulai | Lewatkan mode izin sebagai flag, misalnya `claude --permission-mode default` |138| Satu sesi yang akan Anda mulai | Berikan mode izin sebagai flag, misalnya `claude --permission-mode default` |

139| Setiap sesi terminal yang Anda mulai di mesin ini | Atur `permissions.defaultMode` di `~/.claude/settings.json`. Untuk apa yang dibaca ekstensi VS Code, lihat [Alihkan mode izin](#switch-permission-modes) |139| Setiap sesi terminal yang Anda mulai di mesin ini | Atur `permissions.defaultMode` di `~/.claude/settings.json`. Untuk apa yang dibaca oleh ekstensi VS Code, lihat [Beralih mode izin](#switch-permission-modes) |

140| Setiap sesi terminal yang Anda mulai dalam satu proyek | Atur `permissions.defaultMode` di `.claude/settings.json` proyek. Sesi yang Anda mulai di terminal menghormati setiap nilai kecuali `auto` dan `bypassPermissions`; sesi yang dimulai ekstensi VS Code tidak membaca pengaturan proyek untuk mode izin awal |140| Setiap sesi terminal yang Anda mulai dalam satu proyek | Atur `permissions.defaultMode` di `.claude/settings.json` milik proyek. Sesi yang Anda mulai di terminal mematuhi setiap nilai kecuali `auto` dan `bypassPermissions`; sesi yang dimulai oleh ekstensi VS Code tidak membaca pengaturan proyek untuk mode izin awal |

141| Setiap sesi terminal di organisasi Anda | Atur `permissions.defaultMode` dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md). Sesi terminal dimulai dalam mode itu dan orang masih dapat beralih ke auto mode; untuk apa yang dibaca ekstensi VS Code, lihat [Alihkan mode izin](#switch-permission-modes). Untuk menghapus auto mode sehingga tidak ada yang dapat memilihnya, atur `permissions.disableAutoMode` ke `"disable"` sebagai gantinya |141| Setiap sesi terminal di organisasi Anda | Atur `permissions.defaultMode` di [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md). Sesi terminal dimulai dalam mode tersebut dan pengguna masih dapat beralih ke auto mode; untuk apa yang dibaca oleh ekstensi VS Code, lihat [Beralih mode izin](#switch-permission-modes). Untuk menghapus auto mode sehingga tidak ada yang dapat memilihnya, atur `permissions.disableAutoMode` ke `"disable"` sebagai gantinya |

142 142 

143Contoh ini membuat setiap sesi terminal di mesin Anda dimulai dalam mode Manual, yang nilai konfignya adalah `default`. Simpan di `~/.claude/settings.json`:143Contoh ini membuat setiap sesi terminal di mesin Anda dimulai dalam mode Manual, yang nilai konfigurasinya adalah `default`. Simpan di `~/.claude/settings.json`:

144 144 

145```json theme={null}145```json theme={null}

146{146{


154 154 

155### Mode izin dengan konfigurasi HIPAA155### Mode izin dengan konfigurasi HIPAA

156 156 

157Dalam organisasi yang telah menerapkan [konfigurasi HIPAA](https://code.claude.com/docs/id/hipaa-setup.md), [default `auto` bawaan](#which-mode-a-session-starts-in) tidak berlaku. Sesi terminal atau VS Code dimulai dalam mode Manual ketika tidak ada hal lain yang memilih mode izin awalnya. Sesi terminal juga menampilkan `Auto mode isn't the default for your organization · Shift+Tab to switch`, dan ekstensi VS Code tidak menampilkan pemberitahuan. [Periksa cara developer masuk dan terhubung](https://code.claude.com/docs/id/hipaa-setup.md#check-how-developers-sign-in-and-connect) mencantumkan sesi yang terkena ketentuan ini.157Dalam organisasi yang telah menerapkan [konfigurasi HIPAA](https://code.claude.com/docs/id/hipaa-setup.md), [default bawaan `auto`](#which-mode-a-session-starts-in) tidak berlaku. Sesi terminal atau VS Code dimulai dalam mode Manual ketika tidak ada hal lain yang memilih mode izin awalnya. Sesi terminal juga menampilkan `Auto mode isn't the default for your organization · Shift+Tab to switch`, dan ekstensi VS Code tidak menampilkan pemberitahuan apa pun. [Periksa cara developer masuk dan terhubung](https://code.claude.com/docs/id/hipaa-setup.md#check-how-developers-sign-in-and-connect) mencantumkan sesi-sesi yang terkena ketentuan ini.

158 158 

159Auto mode dan `bypassPermissions` tetap tersedia:159Auto mode dan `bypassPermissions` tetap tersedia:

160 160 

161* **Beralih ke auto mode**: tekan `Shift+Tab`, atau gunakan [kontrol antarmuka Anda](#switch-permission-modes)161* **Beralih ke auto mode**: tekan `Shift+Tab`, atau gunakan [kontrol pada antarmuka Anda](#switch-permission-modes)

162* **Mulai dalam auto mode**: lewatkan `--permission-mode auto`, atau atur `permissions.defaultMode` ke `auto` di pengaturan pengguna Anda, atau di pengaturan terkelola untuk seluruh organisasi Anda. Lihat [Mulai dalam mode izin yang berbeda](#start-in-a-different-mode)162* **Mulai dalam auto mode**: berikan `--permission-mode auto`, atau atur `permissions.defaultMode` ke `auto` di pengaturan pengguna Anda, atau di pengaturan terkelola untuk seluruh organisasi Anda. Lihat [Memulai dalam mode izin yang berbeda](#start-in-a-different-mode)

163* **Hapus auto mode**: atur [`permissions.disableAutoMode`](https://code.claude.com/docs/id/settings-reference#disableautomode) ke `"disable"` di pengaturan terkelola163* **Hapus auto mode**: atur [`permissions.disableAutoMode`](https://code.claude.com/docs/id/settings-reference#disableautomode) ke `"disable"` di pengaturan terkelola

164* **Blokir `bypassPermissions`**: atur [`permissions.disableBypassPermissionsMode`](https://code.claude.com/docs/id/settings-reference#permissions-disablebypasspermissionsmode) ke `"disable"` di pengaturan terkelola164* **Blokir `bypassPermissions`**: atur [`permissions.disableBypassPermissionsMode`](https://code.claude.com/docs/id/settings-reference#permissions-disablebypasspermissionsmode) ke `"disable"` di pengaturan terkelola

165 165 


324 324 

325Untuk menjadikan plan mode sebagai default untuk sesi terminal suatu proyek, atur `defaultMode` ke `plan` di `.claude/settings.json`, ditempatkan seperti yang ditunjukkan contoh di bagian [Memulai dalam mode izin yang berbeda](#start-in-a-different-mode). Percakapan yang dimulai oleh [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) tidak membaca pengaturan proyek untuk mode izin awal. Di sana, atur `claudeCode.initialPermissionMode` ke `plan` di pengaturan pengguna VS Code Anda sebagai gantinya.325Untuk menjadikan plan mode sebagai default untuk sesi terminal suatu proyek, atur `defaultMode` ke `plan` di `.claude/settings.json`, ditempatkan seperti yang ditunjukkan contoh di bagian [Memulai dalam mode izin yang berbeda](#start-in-a-different-mode). Percakapan yang dimulai oleh [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) tidak membaca pengaturan proyek untuk mode izin awal. Di sana, atur `claudeCode.initialPermissionMode` ke `plan` di pengaturan pengguna VS Code Anda sebagai gantinya.

326 326 

327## Hilangkan permintaan izin dengan auto mode327## Menghilangkan permintaan izin dengan auto mode

328 328 

329Auto mode memungkinkan Claude untuk bekerja tanpa permintaan izin rutin. Model pengklasifikasi terpisah meninjau tindakan sebelum dijalankan, memblokir apa pun yang melampaui permintaan Anda, menargetkan infrastruktur yang tidak dikenali, atau tampak didorong oleh konten bermusuhan yang dibaca Claude. [Aturan ask](https://code.claude.com/docs/id/permissions.md#manage-permissions) eksplisit tetap memaksa munculnya permintaan izin.329Auto mode memungkinkan Claude mengeksekusi tanpa permintaan izin rutin. Model pengklasifikasi terpisah meninjau tindakan sebelum dijalankan, memblokir apa pun yang melampaui permintaan Anda, menargetkan infrastruktur yang tidak dikenali, atau tampak didorong oleh konten berbahaya yang dibaca Claude. [Aturan ask](https://code.claude.com/docs/id/permissions.md#manage-permissions) eksplisit tetap memaksa munculnya permintaan izin.

330 330 

331Dengan Claude Code v2.1.283 atau lebih baru, auto mode adalah [mode izin awal bawaan](#which-mode-a-session-starts-in) untuk sesi terminal interaktif dan VS Code di setiap paket dan penyedia. Pada versi sebelumnya, ini adalah mode izin awal bawaan hanya pada paket Pro, Max, Ultra, dan Team.331Dengan Claude Code v2.1.283 atau yang lebih baru, auto mode adalah [mode izin awal bawaan](#which-mode-a-session-starts-in) untuk sesi terminal interaktif dan VS Code di setiap paket dan penyedia. Pada versi sebelumnya, auto mode menjadi mode izin awal bawaan hanya pada paket Pro, Max, Ultra, dan Team.

332 332 

333Pengklasifikasi juga meninjau setiap pesan yang dikirim Claude ke agent lain dengan [`SendMessage`](https://code.claude.com/docs/id/tools-reference), baik teks biasa maupun pesan [tim agent](https://code.claude.com/docs/id/agent-teams.md) terstruktur, sebelum Claude Code mengirimkannya, baik dalam auto mode maupun dalam [plan mode saat pengklasifikasi meninjau perintah](#analyze-before-you-edit-with-plan-mode); tinjauan pengiriman memerlukan Claude Code v2.1.222 atau lebih baru.333Pengklasifikasi juga meninjau setiap pesan yang dikirim Claude ke agent lain dengan [`SendMessage`](https://code.claude.com/docs/id/tools-reference), baik teks biasa maupun pesan [tim agent](https://code.claude.com/docs/id/agent-teams.md) terstruktur, sebelum Claude Code mengirimkannya, baik dalam auto mode maupun dalam [plan mode saat pengklasifikasi meninjau perintah](#analyze-before-you-edit-with-plan-mode); peninjauan pengiriman ini memerlukan Claude Code v2.1.222 atau yang lebih baru.

334 334 

335Secara default, pengklasifikasi tidak meninjau penghapusan jalur kritis `rm` dan `rmdir` yang dikenali, seperti `rm -rf /` atau `rm -rf ~`. [Jalur kritis](#critical-paths) menjelaskan apa yang terjadi pada penghapusan tersebut di setiap mode izin.335Secara default, pengklasifikasi tidak meninjau penghapusan jalur kritis `rm` dan `rmdir` yang dikenali, seperti `rm -rf /` atau `rm -rf ~`. [Jalur kritis](#critical-paths) menjelaskan apa yang terjadi pada penghapusan tersebut di setiap mode izin.

336 336 

337Auto mode juga mendorong Claude untuk terus bekerja tanpa berhenti untuk pertanyaan klarifikasi, meskipun Claude tetap bertanya ketika prompt Anda atau skill secara eksplisit bergantung padanya. Untuk perilaku otonom yang lebih kuat dalam mode yang masih meminta persetujuan Anda, atur [gaya output Proaktif](https://code.claude.com/docs/id/output-styles.md) sebagai gantinya.337Auto mode juga mendorong Claude untuk terus bekerja tanpa berhenti untuk mengajukan pertanyaan klarifikasi, meskipun Claude tetap bertanya ketika prompt Anda atau sebuah skill secara eksplisit bergantung pada hal itu. Untuk perilaku otonom yang lebih kuat dalam mode yang tetap meminta izin Anda, atur [gaya output Proactive](https://code.claude.com/docs/id/output-styles.md) sebagai gantinya.

338 338 

339> [!WARNING]339> [!WARNING]

340>340>

341> Auto mode mengurangi permintaan izin tetapi tidak menjamin keamanan. Gunakan untuk tugas di mana Anda mempercayai arah umumnya, bukan sebagai pengganti tinjauan pada operasi sensitif.341> Auto mode mengurangi permintaan izin tetapi tidak menjamin keamanan. Gunakan untuk tugas yang arah umumnya Anda percayai, bukan sebagai pengganti peninjauan pada operasi sensitif.

342 342 

343Auto mode tersedia hanya ketika akun Anda memenuhi semua persyaratan ini:343Auto mode hanya tersedia jika akun Anda memenuhi semua persyaratan berikut:

344 344 

345* **Paket**: Semua paket.345* **Paket**: Semua paket.

346* **Organisasi**: pada Team dan Enterprise, auto mode tersedia secara default. Administrator dapat mematikannya untuk organisasi dengan menetapkan `permissions.disableAutoMode` ke `"disable"` dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md).346* **Organisasi**: pada Team dan Enterprise, auto mode tersedia secara default. Administrator dapat mematikannya untuk organisasi dengan mengatur `permissions.disableAutoMode` ke `"disable"` dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md).

347* **Model**: pada Anthropic API dan [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), Claude Opus 4.6 atau lebih baru, Sonnet 4.6 atau lebih baru, Haiku 5.5, atau [model Fable](https://code.claude.com/docs/id/model-config.md#work-with-fable). Pada Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi [gateway aplikasi Claude](https://code.claude.com/docs/id/claude-apps-gateway) yang masuk, hanya Claude Sonnet 5 atau lebih baru, Opus 4.7 atau lebih baru, Haiku 5.5, dan model Fable. Model yang lebih lama, termasuk Sonnet 4.5, Opus 4.5, Haiku 4.5, dan model claude-3, tidak didukung di penyedia mana pun.347* **Model**: pada Anthropic API dan [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), Claude Opus 4.6 atau yang lebih baru, Sonnet 4.6 atau yang lebih baru, Haiku 5.5, atau [model Fable](https://code.claude.com/docs/id/model-config.md#work-with-fable). Pada Amazon Bedrock, Agent Platform milik Google Cloud, Microsoft Foundry, dan sesi [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway) yang sudah masuk, hanya Claude Sonnet 5 atau yang lebih baru, Opus 4.7 atau yang lebih baru, Haiku 5.5, dan model Fable. Model yang lebih lama, termasuk Sonnet 4.5, Opus 4.5, Haiku 4.5, dan model claude-3, tidak didukung di penyedia mana pun.

348* **Penyedia**: tersedia secara default pada Anthropic API, Claude Platform on AWS, Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi gateway aplikasi Claude yang masuk.348* **Penyedia**: tersedia secara default pada Anthropic API, Claude Platform on AWS, Amazon Bedrock, Agent Platform milik Google Cloud, Microsoft Foundry, dan sesi Claude apps gateway yang sudah masuk.

349 349 

350Jika Claude Code melaporkan auto mode sebagai tidak tersedia, pertama periksa persyaratan ini dan apakah ada file pengaturan yang menetapkan [`disableAutoMode`](https://code.claude.com/docs/id/settings-reference#disableautomode). Anthropic juga dapat mematikan auto mode di sisi server, atau server dapat menolak auto mode untuk akun Anda. Sesi yang menerima salah satu jawaban tersebut menjaga auto mode tetap mati sampai sesi berakhir, jadi mulai sesi baru nanti.350Jika Claude Code melaporkan auto mode tidak tersedia, periksa terlebih dahulu persyaratan ini dan apakah ada file pengaturan yang mengatur [`disableAutoMode`](https://code.claude.com/docs/id/settings-reference#disableautomode). Anthropic mungkin juga telah mematikan auto mode di sisi server, atau server mungkin telah menolak auto mode untuk akun Anda. Sesi yang menerima salah satu jawaban tersebut tetap menonaktifkan auto mode hingga sesi berakhir, jadi mulailah sesi baru nanti.

351 351 

352Pesan terpisah yang menyebutkan model dan mengatakan auto mode "tidak dapat menentukan keamanan" suatu tindakan berarti permintaan pengklasifikasi gagal. Kegagalan itu biasanya bersifat sementara, tetapi pada Amazon Bedrock dapat berulang sampai akun Anda dapat memanggil model yang disebutkan. Lihat [referensi kesalahan](https://code.claude.com/docs/id/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) untuk penyebab dan apa yang harus dilakukan.352Pesan terpisah yang menyebutkan sebuah model dan menyatakan bahwa auto mode "cannot determine the safety" suatu tindakan berarti permintaan pengklasifikasi gagal. Kegagalan itu biasanya bersifat sementara, tetapi di Amazon Bedrock kegagalan dapat berulang hingga akun Anda dapat memanggil model yang disebutkan. Lihat [referensi error](https://code.claude.com/docs/id/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) untuk penyebab dan langkah yang perlu dilakukan.

353 353 

354Jika Anda menetapkan `defaultMode: "auto"` dalam [pengaturan](https://code.claude.com/docs/id/settings-reference.md#all-settings) dan sesi terminal dimulai dalam mode Manual tanpa kesalahan, pengaturan tersebut kemungkinan ada di `.claude/settings.json` atau `.claude/settings.local.json`. `auto` tidak berlaku dari file tersebut. Pindahkan ke `~/.claude/settings.json`. Untuk percakapan yang dimulai oleh ekstensi VS Code, periksa daftar milik ekstensi itu sendiri dalam [Beralih mode izin](#switch-permission-modes) sebagai gantinya.354Jika Anda mengatur `defaultMode: "auto"` dalam [pengaturan](https://code.claude.com/docs/id/settings-reference.md#all-settings) dan sesi terminal dimulai dalam mode Manual tanpa error, kemungkinan pengaturan tersebut berada di `.claude/settings.json` atau `.claude/settings.local.json`. `auto` tidak berlaku dari file-file tersebut. Pindahkan ke `~/.claude/settings.json`. Untuk percakapan yang dimulai oleh ekstensi VS Code, periksa daftar milik ekstensi itu sendiri di [Beralih mode izin](#switch-permission-modes) sebagai gantinya.

355 355 

356### Auto mode pada Bedrock, Agent Platform, atau Foundry356### Auto mode di Bedrock, Agent Platform, atau Foundry

357 357 

358Pada [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md), [Agent Platform Google Cloud](https://code.claude.com/docs/id/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md), dan sesi [gateway aplikasi Claude](https://code.claude.com/docs/id/claude-apps-gateway) yang masuk, auto mode tersedia secara default. Jika Anda tidak menetapkan mode izin di sana, sesi interaktif dimulai dalam auto mode, dan eksekusi `claude -p` atau Agent SDK dimulai dalam mode Manual, yang nilai konfigurasinya adalah `default`:358Pada [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md), [Agent Platform milik Google Cloud](https://code.claude.com/docs/id/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md), dan sesi [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway) yang sudah masuk, auto mode tersedia secara default. Jika Anda tidak mengatur mode izin di sana, sesi interaktif dimulai dalam auto mode, sedangkan eksekusi `claude -p` atau Agent SDK dimulai dalam mode Manual, yang nilai konfigurasinya adalah `default`:

359 359 

360* **Sesi terminal interaktif dan VS Code**: untuk memulainya dalam mode izin selain auto, atur `permissions.defaultMode` seperti yang dijelaskan [Mulai dalam mode izin yang berbeda](#start-in-a-different-mode), atau pilih salah satu dari [indikator mode](#switch-permission-modes) ekstensi VS Code. [Mode mana yang digunakan saat sesi dimulai](#which-mode-a-session-starts-in) mencantumkan versi Claude Code yang memulainya dalam auto mode.360* **Sesi terminal interaktif dan VS Code**: untuk memulainya dalam mode izin selain auto, atur `permissions.defaultMode` seperti yang dijelaskan di [Memulai dalam mode izin yang berbeda](#start-in-a-different-mode), atau pilih salah satu dari [indikator mode](#switch-permission-modes) ekstensi VS Code. [Mode yang digunakan saat sesi dimulai](#which-mode-a-session-starts-in) mencantumkan versi Claude Code yang memulai sesi tersebut dalam auto mode.

361* **Eksekusi `claude -p` dan Agent SDK**: untuk memulainya dalam auto mode, teruskan `--permission-mode auto` ke `claude -p`, atau teruskan `permissionMode: "auto"` di TypeScript atau `permission_mode="auto"` di Python. Jika Anda tidak meneruskan mode izin apa pun, lihat [Panggilan tool ditolak dalam eksekusi `claude -p` dan Agent SDK](#which-mode-a-non-interactive-run-starts-in), yang juga mencakup versi Claude Code sebelumnya.361* **Eksekusi `claude -p` dan Agent SDK**: untuk memulainya dalam auto mode, berikan `--permission-mode auto` ke `claude -p`, atau berikan `permissionMode: "auto"` di TypeScript atau `permission_mode="auto"` di Python. Jika Anda tidak memberikan mode izin, lihat [Panggilan tool ditolak dalam eksekusi `claude -p` dan Agent SDK](#which-mode-a-non-interactive-run-starts-in), yang juga mencakup versi Claude Code sebelumnya.

362 362 

363Hanya Claude Sonnet 5 atau lebih baru, Opus 4.7 atau lebih baru, Haiku 5.5, dan model Fable yang didukung pada penyedia ini. Pada model lain apa pun, sesi dimulai dalam Manual sebagai gantinya. Auto mode dengan Haiku 5.5 pada penyedia ini memerlukan Claude Code v2.1.293 atau lebih baru.363Hanya Claude Sonnet 5 atau yang lebih baru, Opus 4.7 atau yang lebih baru, Haiku 5.5, dan model Fable yang didukung pada penyedia-penyedia ini. Pada model lain mana pun, sesi dimulai dalam mode Manual sebagai gantinya. Auto mode dengan Haiku 5.5 pada penyedia-penyedia ini memerlukan Claude Code v2.1.293 atau yang lebih baru.

364 364 

365Untuk mencegah pengembang menggunakan auto mode, atur `disableAutoMode` ke `"disable"` dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md). Ini menghapus `auto` dari siklus `Shift+Tab`, dan sesi yang dimulai dengan `--permission-mode auto` dimulai dalam Manual sebagai gantinya. Sesi yang sudah berjalan dalam auto mode akan keluar darinya ketika pengaturan mencapai sesi itu dari [sumber yang diterapkan admin](https://code.claude.com/docs/id/managed-settings.md#which-managed-source-claude-code-uses), dan menampilkan `auto mode disabled by settings`. Sebelum v2.1.251, sesi yang sedang berjalan tetap dalam auto mode sampai berakhir.365Untuk mencegah pengembang menggunakan auto mode, atur `disableAutoMode` ke `"disable"` dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md). Ini menghapus `auto` dari siklus `Shift+Tab`, dan sesi yang dimulai dengan `--permission-mode auto` akan dimulai dalam mode Manual sebagai gantinya. Sesi yang sudah berjalan dalam auto mode akan keluar dari mode tersebut ketika pengaturan mencapai sesi itu dari [sumber yang di-deploy admin](https://code.claude.com/docs/id/managed-settings.md#which-managed-source-claude-code-uses), dan menampilkan `auto mode disabled by settings`. Sebelum v2.1.251, sesi yang sedang berjalan tetap menggunakan auto mode hingga berakhir.

366 366 

367### Tinjauan pengklasifikasi di sisi server367### Peninjauan pengklasifikasi di sisi server

368 368 

369Dalam auto mode, Claude Code dapat meminta server untuk memeriksa tindakan yang dikirim untuk ditinjau oleh [urutan keputusan](#how-the-classifier-evaluates-actions), sebagai bagian dari permintaan model sesi, sebagai pengganti mengirim permintaan pengklasifikasinya sendiri. Sesi-sesi berikut meminta hal ini:369Dalam auto mode, Claude Code dapat meminta server untuk memeriksa tindakan yang dikirim oleh [urutan keputusan](#how-the-classifier-evaluates-actions) untuk ditinjau, sebagai bagian dari permintaan model sesi, alih-alih mengirimkan permintaan pengklasifikasinya sendiri. Sesi-sesi berikut meminta server:

370 370 

371* **Koneksi langsung ke Anthropic API**: dalam sesi terminal interaktif dan dalam sesi `-p`, Agent SDK, [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md), dan [aplikasi desktop](https://code.claude.com/docs/id/desktop.md), apa pun paket atau jenis akun Anda, seiring Anthropic meluncurkannya. Periksa jenis sesi Anda terhadap versi minimum Claude Code berikut:371* **Koneksi langsung ke Anthropic API**: dalam sesi terminal interaktif dan dalam sesi `-p`, Agent SDK, [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md), dan [aplikasi desktop](https://code.claude.com/docs/id/desktop.md), apa pun paket atau jenis akun Anda, seiring Anthropic meluncurkannya. Periksa jenis sesi Anda terhadap versi minimum Claude Code berikut:

372 * Dalam sesi terminal interaktif, meminta server memerlukan Claude Code v2.1.271 atau lebih baru pada paket Pro, Max, Ultra, dan Team. Pada paket Enterprise dan akun Claude API, sesi tersebut memerlukan v2.1.278 atau lebih baru.372 * Dalam sesi terminal interaktif, meminta server memerlukan Claude Code v2.1.271 atau yang lebih baru pada paket Pro, Max, Ultra, dan Team. Pada paket Enterprise dan akun Claude API, sesi tersebut memerlukan v2.1.278 atau yang lebih baru.

373 * Dalam sesi `-p` dan ekstensi VS Code, meminta server memerlukan Claude Code v2.1.278 atau lebih baru373 * Dalam sesi `-p` dan ekstensi VS Code, meminta server memerlukan Claude Code v2.1.278 atau yang lebih baru

374 * Dalam sesi Agent SDK dan aplikasi desktop, meminta server memerlukan Claude Code v2.1.281 atau lebih baru374 * Dalam sesi Agent SDK dan aplikasi desktop, meminta server memerlukan Claude Code v2.1.281 atau yang lebih baru

375 * Mulai v2.1.282, sesi yang [tidak mengambil feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), misalnya karena Anda mematikan telemetri, meminta server secara default dalam jenis sesi apa pun375 * Mulai v2.1.282, sesi yang [tidak mengambil feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), misalnya karena Anda mematikan telemetri, meminta server secara default dalam jenis sesi apa pun

376* **Penyedia cloud, atau gateway LLM atau proxy**: pada [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), Amazon Bedrock, Agent Platform Google Cloud, dan Microsoft Foundry, dan kapan pun Anda mengarahkan `ANTHROPIC_BASE_URL` ke [gateway LLM atau proxy](https://code.claude.com/docs/id/llm-gateway), apa pun paket Anda. Meminta secara default memerlukan Claude Code v2.1.278 atau lebih baru.376* **Penyedia cloud, atau LLM gateway atau proxy**: pada [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), Amazon Bedrock, Agent Platform milik Google Cloud, dan Microsoft Foundry, serta setiap kali Anda mengarahkan `ANTHROPIC_BASE_URL` ke [LLM gateway atau proxy](https://code.claude.com/docs/id/llm-gateway), apa pun paket Anda. Meminta server secara default memerlukan Claude Code v2.1.278 atau yang lebih baru.

377* **Sesi [gateway aplikasi Claude](https://code.claude.com/docs/id/claude-apps-gateway) yang masuk**: memerlukan Claude Code v2.1.280 atau lebih baru377* **Sesi [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway) yang sudah masuk**: memerlukan Claude Code v2.1.280 atau yang lebih baru

378* **[Sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) di lingkungan yang di-hosting Anthropic**: apa pun paket Anda, ketika Anda memulainya dari web, aplikasi seluler, atau aplikasi desktop dengan **Cloud** dipilih. Sesi yang dimulai oleh [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md) meminta server seiring Anthropic meluncurkannya.378* **[Sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) di lingkungan yang di-host Anthropic**: apa pun paket Anda, ketika Anda memulainya dari web, aplikasi seluler, atau aplikasi desktop dengan **Cloud** dipilih. Sesi yang dimulai oleh [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md) meminta server seiring Anthropic meluncurkannya.

379 379 

380Ketika server meninjau tindakan, vonisnya yang memutuskan tindakan tersebut. Dua hasil lain dimungkinkan:380Jika server meninjau tindakan, putusan server itulah yang menentukannya. Dua hasil lain mungkin terjadi:

381 381 

382* **Server tidak meninjau sesi**: respons selesai tanpa hasil tinjauan, atau server menjawab bahwa server tidak meninjau sesi ini. Penyebab paling umum adalah gateway LLM atau proxy yang menghilangkan permintaan tinjauan atau hasilnya, dan platform, wilayah, atau kredensial yang belum memiliki pemeriksaan di sisi server. Claude Code beralih ke permintaan pengklasifikasinya sendiri. Setelah fallback itu berlaku untuk sisa sesi, Claude Code menampilkan [pemberitahuan tentang biaya permintaan pengklasifikasi](https://code.claude.com/docs/id/auto-mode-classifier-billing.md) pada akun di mana permintaan tersebut ditagih.382* **Server tidak meninjau sesi**: respons selesai tanpa hasil peninjauan, atau server menjawab bahwa server tidak meninjau sesi ini. Penyebab paling umum adalah LLM gateway atau proxy yang membuang permintaan peninjauan atau hasilnya, serta platform, region, atau kredensial yang belum memiliki pemeriksaan di sisi server. Claude Code melakukan fallback ke permintaan pengklasifikasinya sendiri. Setelah fallback itu berlaku untuk sisa sesi, Claude Code menampilkan [pemberitahuan tentang biaya permintaan pengklasifikasi](https://code.claude.com/docs/id/auto-mode-classifier-billing.md) pada akun yang dikenai biaya untuk permintaan tersebut.

383* **Server tidak memberikan vonis untuk suatu tindakan**: Claude Code menolak tindakan tersebut alih-alih menjalankannya tanpa tinjauan. Pada koneksi apa pun, ini terjadi ketika respons berakhir sebelum hasil tinjauan tiba atau hasil tiba dalam bentuk yang tidak dapat dibaca Claude Code. Gateway LLM atau proxy yang memotong respons atau menulis ulang hasilnya dapat menyebabkan keduanya. Pada koneksi langsung ke Anthropic API, ini juga terjadi ketika pemeriksaan server gagal untuk tindakan tersebut, misalnya karena waktu habis. [Server tidak mengembalikan vonis keamanan](https://code.claude.com/docs/id/errors.md#the-server-returned-no-safety-verdict) menjelaskan pesan penolakan, apa yang terjadi ketika penolakan berulang, dan apa yang harus dilakukan.383* **Server tidak memberikan putusan untuk suatu tindakan**: Claude Code menolak tindakan tersebut alih-alih menjalankannya tanpa ditinjau. Pada koneksi apa pun, hal ini terjadi ketika respons berakhir sebelum hasil peninjauan tiba atau hasilnya tiba dalam bentuk yang tidak dapat dibaca Claude Code. LLM gateway atau proxy yang memotong respons atau menulis ulang hasilnya dapat menyebabkan salah satunya. Pada koneksi langsung ke Anthropic API, hal ini juga terjadi ketika pemeriksaan server gagal untuk tindakan tersebut, misalnya karena waktu habis. [Server tidak mengembalikan putusan keamanan](https://code.claude.com/docs/id/errors.md#the-server-returned-no-safety-verdict) menjelaskan pesan penolakan, apa yang terjadi ketika penolakan berulang, dan langkah yang perlu dilakukan.

384 384 

385 Jika [hook](https://code.claude.com/docs/id/hooks.md#pretooluse-updatedinput-in-auto-mode) atau [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) mengubah input suatu tindakan setelah tinjauan server, Claude Code dapat menolak tindakan tersebut tanpa vonis. Dalam sesi terminal interaktif dan VS Code pada koneksi langsung ke Anthropic API, teks penolakan tersebut menyertakan `a hook changed this call's input after auto mode reviewed it`. [Entri kesalahannya](https://code.claude.com/docs/id/errors.md#hook-changed-input-after-review) menjelaskan apa yang harus dilakukan.385 Jika [hook](https://code.claude.com/docs/id/hooks.md#pretooluse-updatedinput-in-auto-mode) atau [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) mengubah input suatu tindakan setelah peninjauan server, Claude Code dapat menolak tindakan tersebut tanpa putusan. Dalam sesi terminal interaktif dan VS Code pada koneksi langsung ke Anthropic API, teks penolakan mencakup `a hook changed this call's input after auto mode reviewed it`. [Entri error-nya](https://code.claude.com/docs/id/errors.md#hook-changed-input-after-review) menjelaskan langkah yang perlu dilakukan.

386 386 

387Untuk melewati permintaan ke server dan selalu menggunakan permintaan pengklasifikasi Claude Code sendiri, atur [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](https://code.claude.com/docs/id/env-vars). Pada koneksi langsung ke Anthropic API, variabel ini memerlukan Claude Code v2.1.281 atau lebih baru. Menetapkannya ke `1` di sana mengaktifkan tinjauan server dalam sesi yang belum memilikinya, kecuali Anda juga menetapkan `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`. Jika Anda menetapkan `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` dan membiarkan `CLAUDE_CODE_AUTO_MODE_SERVER` tidak ditetapkan, Claude Code juga berhenti meminta server, kecuali seperti yang dijelaskan [Nonaktifkan kemampuan pra-rilis](https://code.claude.com/docs/id/llm-gateway-protocol.md#disable-pre-release-capabilities).387Untuk melewati permintaan ke server dan selalu menggunakan permintaan pengklasifikasi Claude Code sendiri, atur [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](https://code.claude.com/docs/id/env-vars). Pada koneksi langsung ke Anthropic API, variabel ini memerlukan Claude Code v2.1.281 atau yang lebih baru. Mengaturnya ke `1` di sana mengaktifkan peninjauan server dalam sesi yang belum memilikinya, kecuali jika Anda juga telah mengatur `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`. Jika Anda mengatur `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` dan membiarkan `CLAUDE_CODE_AUTO_MODE_SERVER` tidak diatur, Claude Code juga berhenti meminta server, kecuali seperti yang dijelaskan di [Menonaktifkan kemampuan pra-rilis](https://code.claude.com/docs/id/llm-gateway-protocol.md#disable-pre-release-capabilities).

388 388 

389### Model pengklasifikasi default389### Model pengklasifikasi default

390 390 

391Secara default, permintaan pengklasifikasi dikirim ke Claude Sonnet 5. Jika `/status` menampilkan `Auto mode server` sebagai `Enabled`, permintaan tersebut dikirim hanya untuk panggilan di luar [tinjauan server](#server-side-classifier-review).391Secara default, permintaan pengklasifikasi dikirim ke Claude Sonnet 5. Jika `/status` menampilkan `Auto mode server` sebagai `Enabled`, permintaan tersebut hanya dikirim untuk panggilan di luar [peninjauan server](#server-side-classifier-review).

392 392 

393Temukan baris pertama dalam tabel ini yang cocok dengan sesi Anda. Anda mendapatkan model dari baris tersebut sebagai pengganti Sonnet 5.393Temukan baris pertama dalam tabel ini yang cocok dengan sesi Anda. Anda mendapatkan model pada baris tersebut sebagai pengganti Sonnet 5.

394 394 

395| Sesi Anda | Model pengklasifikasi |395| Sesi Anda | Model pengklasifikasi |

396| - | - |396| - | - |

397| Memiliki model pengklasifikasi yang dikonfigurasi Anthropic | Model yang dikonfigurasi. [Periksa log debug](#classifier-model-check) untuk melihat model mana |397| Memiliki model pengklasifikasi yang dikonfigurasi Anthropic | Model yang dikonfigurasi. [Periksa log debug](#classifier-model-check) untuk mengetahui model mana |

398| Berjalan pada Claude Sonnet 4.6 | Sonnet 4.6 |398| Berjalan pada Claude Sonnet 4.6 | Sonnet 4.6 |

399| Memiliki [`ANTHROPIC_DEFAULT_SONNET_MODEL`](https://code.claude.com/docs/id/model-config#environment-variables) yang ditetapkan | Nilainya, atau Sonnet 5 jika nilainya adalah Claude Sonnet 5.5 atau Claude Opus 5.5 |399| Mengatur [`ANTHROPIC_DEFAULT_SONNET_MODEL`](https://code.claude.com/docs/id/model-config#environment-variables) | Nilainya, atau Sonnet 5 jika nilainya adalah Claude Sonnet 5.5 atau Claude Opus 5.5 |

400 400 

401Jika Sonnet 5 atau model dalam `ANTHROPIC_DEFAULT_SONNET_MODEL` tidak tersedia dari penyedia Anda atau dikecualikan oleh [kebijakan model](https://code.claude.com/docs/id/model-config.md#restrict-model-selection) organisasi Anda, Claude Code menggunakan model fallback. Model tersebut adalah model sesi Anda, atau model Opus dalam [sesi Fable](https://code.claude.com/docs/id/model-config.md#work-with-fable).401Jika Sonnet 5 atau model dalam `ANTHROPIC_DEFAULT_SONNET_MODEL` tidak tersedia dari penyedia Anda atau dikecualikan oleh [kebijakan model](https://code.claude.com/docs/id/model-config.md#restrict-model-selection) organisasi Anda, Claude Code menggunakan model fallback. Model tersebut adalah model sesi Anda, atau model Opus dalam [sesi Fable](https://code.claude.com/docs/id/model-config.md#work-with-fable).

402 402 

403### Pilih model pengklasifikasi403### Memilih model pengklasifikasi

404 404 

405Dengan Claude Code v2.1.302 atau lebih baru, atur [`CLAUDE_CODE_AUTO_MODE_MODEL`](https://code.claude.com/docs/id/env-vars) ke ID model lengkap untuk menjalankan pengklasifikasi pada model selain [default](#default-classifier-model). ID model lengkap milik penyedia cloud Anda sendiri juga berfungsi. Contoh `~/.claude/settings.json` ini menetapkan Claude Sonnet 4.6:405Dengan Claude Code v2.1.302 atau yang lebih baru, atur [`CLAUDE_CODE_AUTO_MODE_MODEL`](https://code.claude.com/docs/id/env-vars) ke ID model lengkap untuk menjalankan pengklasifikasi pada model selain [model default](#default-classifier-model). ID model lengkap milik penyedia cloud Anda sendiri juga berfungsi. Contoh `~/.claude/settings.json` ini mengatur Claude Sonnet 4.6:

406 406 

407```json theme={null}407```json theme={null}

408{408{


412}412}

413```413```

414 414 

415#### Ketika model Anda bukan yang meninjau415#### Ketika model Anda tidak meninjau

416 416 

417| Situasi | Apa yang terjadi | Apa yang harus dilakukan |417| Situasi | Apa yang terjadi | Apa yang perlu dilakukan |

418| - | - | - |418| - | - | - |

419| [Log debug](#classifier-model-check) melaporkan model pengklasifikasi yang dikonfigurasi Anthropic | Model tersebut yang meninjau | Tidak perlu tindakan |419| [Log debug](#classifier-model-check) melaporkan model pengklasifikasi yang dikonfigurasi Anthropic | Model tersebut yang meninjau | Tidak perlu tindakan |

420| Anda menetapkan Claude Opus 5, Sonnet 5.5, Opus 5.5 atau model yang dikecualikan oleh [kebijakan model](https://code.claude.com/docs/id/model-config.md#restrict-model-selection) organisasi Anda | [Model pengklasifikasi default](#default-classifier-model) yang meninjau | Tetapkan model lain |420| Anda mengatur Claude Opus 5, Sonnet 5.5, Opus 5.5, atau model yang dikecualikan oleh [kebijakan model](https://code.claude.com/docs/id/model-config.md#restrict-model-selection) organisasi Anda | [Model pengklasifikasi default](#default-classifier-model) yang meninjau | Atur model lain |

421| Penyedia Anda tidak dapat melayani model tersebut | Pemeriksaan pengklasifikasi gagal, sehingga Claude Code [menolak setiap tindakan yang diperiksanya](https://code.claude.com/docs/id/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) | Tetapkan model yang dilayani penyedia tersebut, atau hapus variabel tersebut |421| Penyedia Anda tidak dapat melayani model tersebut | Pemeriksaan pengklasifikasi gagal, sehingga Claude Code [menolak setiap tindakan yang diperiksanya](https://code.claude.com/docs/id/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) | Atur model yang dilayani penyedia, atau hapus variabel tersebut |

422| Dalam sesi, `/status` menampilkan [`Auto mode server`](#server-side-classifier-review) sebagai `Enabled` | Server meninjau tanpa model Anda | Tidak perlu tindakan |422| Dalam sesi, `/status` menampilkan [`Auto mode server`](#server-side-classifier-review) sebagai `Enabled` | Server meninjau tanpa model Anda | Tidak perlu tindakan |

423 423 

424Jika beberapa situasi berlaku, ikuti yang tercantum pertama.424Jika beberapa situasi berlaku, ikuti yang tercantum pertama.

425 425 

426#### Periksa model mana yang digunakan pengklasifikasi426#### Memeriksa model yang digunakan pengklasifikasi

427 427 

428Dari shell Anda, mulai sesi auto mode dengan [`--debug-file`](https://code.claude.com/docs/id/cli-reference#cli-flags):428Dari shell Anda, mulai sesi auto mode dengan [`--debug-file`](https://code.claude.com/docs/id/cli-reference#cli-flags):

429 429 


434Untuk memberi pengklasifikasi perintah untuk ditinjau, minta Claude menjalankan `curl https://example.com`, lalu cari `classifier_request_started` di log:434Untuk memberi pengklasifikasi perintah untuk ditinjau, minta Claude menjalankan `curl https://example.com`, lalu cari `classifier_request_started` di log:

435 435 

436* **Model Anda setelah `model=`**: variabel tersebut berlaku436* **Model Anda setelah `model=`**: variabel tersebut berlaku

437* **Model lain setelah `model=`**: cari `ignoring CLAUDE_CODE_AUTO_MODE_MODEL` di log, yang memberikan alasannya dan langkah apa pun yang perlu diambil437* **Model yang berbeda setelah `model=`**: cari `ignoring CLAUDE_CODE_AUTO_MODE_MODEL` di log, yang memberikan alasan dan langkah apa pun yang perlu diambil

438* **Tidak ada baris seperti itu**: baca `Auto mode server` di `/status` pada prompt Claude Code:438* **Tidak ada baris seperti itu**: baca `Auto mode server` di `/status` pada prompt Claude Code:

439 * **`Enabled`**: [server](#server-side-classifier-review) diatur untuk meninjau panggilan sesi ini.439 * **`Enabled`**: [server](#server-side-classifier-review) diatur untuk meninjau panggilan sesi ini.

440 * **`Disabled`**: pemeriksaan ini belum menguji model Anda. Pastikan [mode izin](#switch-permission-modes) adalah auto dan tidak ada [aturan izin](https://code.claude.com/docs/id/permissions.md#manage-permissions) yang cocok dengan `curl`, lalu jalankan pemeriksaan lagi dengan [sandbox](https://code.claude.com/docs/id/sandboxing.md) dimatikan.440 * **`Disabled`**: pemeriksaan ini belum menguji model Anda. Pastikan [mode izin](#switch-permission-modes) adalah auto dan tidak ada [aturan izin](https://code.claude.com/docs/id/permissions.md#manage-permissions) yang cocok dengan `curl`, lalu jalankan pemeriksaan lagi dengan [sandbox](https://code.claude.com/docs/id/sandboxing.md) dinonaktifkan.

441 441 

442### Apa yang diblokir pengklasifikasi secara default442### Apa yang diblokir pengklasifikasi secara default

443 443 

444Pengklasifikasi mempercayai direktori kerja Anda dan remote yang dikonfigurasi untuknya ketika sesi dimulai. Remote yang ditambahkan atau diarahkan ulang selama sesi dengan `git remote add` atau `git remote set-url` tidak dipercaya, dan semua hal lain diperlakukan sebagai eksternal sampai Anda [mengonfigurasi infrastruktur terpercaya](https://code.claude.com/docs/id/auto-mode-config.md).444Pengklasifikasi memercayai direktori kerja Anda dan remote yang dikonfigurasi untuknya saat sesi dimulai. Remote yang ditambahkan atau diarahkan ulang selama sesi dengan `git remote add` atau `git remote set-url` tidak dipercaya, dan segala hal lainnya diperlakukan sebagai eksternal hingga Anda [mengonfigurasi infrastruktur tepercaya](https://code.claude.com/docs/id/auto-mode-config.md).

445 445 

446**Diblokir secara default**:446**Diblokir secara default**:

447 447 

448* Mengunduh dan menjalankan kode, seperti `curl | bash`448* Mengunduh dan mengeksekusi kode, seperti `curl | bash`

449* Mengirim data sensitif ke endpoint eksternal449* Mengirim data sensitif ke endpoint eksternal

450* Deploy dan migrasi produksi450* Deploy dan migrasi produksi

451* Penghapusan massal pada penyimpanan cloud451* Penghapusan massal pada penyimpanan cloud


453* Memodifikasi infrastruktur bersama453* Memodifikasi infrastruktur bersama

454* Menghancurkan secara permanen file yang sudah ada sebelum sesi454* Menghancurkan secara permanen file yang sudah ada sebelum sesi

455* Force push455* Force push

456* Melakukan commit atau push perubahan yang akan mengirim rahasia atau data sensitif ke luar repositori saat dijalankan, atau memperluas apa yang diekspos oleh deploy. Ini mencakup workflow CI atau konfigurasi deploy yang meneruskan rahasia ke tujuan yang belum menerimanya, skrip atau langkah penyiapan yang membaca penyimpanan rahasia dan mengirim datanya keluar, dan perubahan konfigurasi yang memperluas apa yang dipublikasikan deploy, seperti pengaturan registri, visibilitas, artefak, atau sourcemap. Pemeriksaan ini berlaku di branch apa pun, berlaku bahkan ketika repositori bersifat publik, dan terpicu ketika perubahan di-commit atau di-push, terlepas dari apakah commit atau push itu memicu pipeline; untuk melewatinya diperlukan penyebutan efek eksekusinya, bukan hanya commit atau push-nya456* Melakukan commit atau push perubahan yang, ketika dijalankan, akan mengirim secret atau data sensitif ke luar repositori, atau memperluas apa yang diekspos oleh deploy. Ini mencakup CI workflow atau konfigurasi deploy yang meneruskan secret ke tujuan yang belum menerimanya, skrip atau langkah penyiapan yang membaca secret store dan mengirim datanya keluar, serta perubahan konfigurasi yang memperluas apa yang dipublikasikan oleh deploy, seperti pengaturan registry, visibilitas, artifact, atau sourcemap. Pemeriksaan ini berlaku pada branch mana pun, tetap berlaku bahkan ketika repositori bersifat publik, dan terpicu ketika perubahan di-commit atau di-push, baik commit atau push tersebut memicu pipeline maupun tidak; untuk membukanya, efek eksekusinya harus disebutkan, bukan hanya commit atau push-nya

457* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop`, atau `git stash clear`, yang diasumsikan pengklasifikasi akan membuang perubahan yang belum di-commit457* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop`, atau `git stash clear`, yang menurut anggapan pengklasifikasi akan membuang perubahan yang belum di-commit

458* `git commit --amend` ketika commit di HEAD tidak dibuat dalam sesi ini458* `git commit --amend` ketika commit di HEAD tidak dibuat dalam sesi ini

459* Mulai v2.1.198, `git commit --amend` ketika commit di HEAD sudah di-push. Mengubah pesan saja tidak diblokir: `--amend -m` tanpa ada yang baru di-stage, pada commit yang dibuat Claude selama sesi ini459* Mulai v2.1.198, `git commit --amend` ketika commit di HEAD sudah di-push. Perubahan kata-kata pesan saja tidak diblokir: `--amend -m` tanpa ada yang baru di-stage, pada commit yang dibuat Claude selama sesi ini

460* `terraform destroy`, `pulumi destroy`, `cdk destroy`, atau `terragrunt destroy`, dan menerapkan rencana yang menghancurkan sumber daya460* `terraform destroy`, `pulumi destroy`, `cdk destroy`, atau `terragrunt destroy`, serta menerapkan plan yang menghancurkan resource

461* Menulis ke pengelola rahasia, atau mengubah catatan DNS atau sertifikat TLS461* Menulis ke secret manager, atau mengubah record DNS atau sertifikat TLS

462* Melakukan merge pull request yang belum disetujui manusia, menyetujui pull request milik Claude sendiri, atau menonaktifkan pemeriksaan CI462* Melakukan merge pull request yang belum disetujui manusia mana pun, menyetujui pull request milik Claude sendiri, atau menonaktifkan pemeriksaan CI

463* Memposting komentar yang itu sendiri merupakan perintah untuk otomasi, seperti `atlantis apply` atau `/deploy` atau `/merge` milik bot463* Memposting komentar yang merupakan perintah untuk otomatisasi, seperti `atlantis apply` atau `/deploy` atau `/merge` milik bot

464* Mengaktifkan/menonaktifkan, menaikkan bertahap, atau menghapus feature flag produksi464* Mengalihkan, menaikkan bertahap, atau menghapus feature flag produksi

465* Menerapkan perubahan infrastruktur ke cakupan IaC yang dilindungi, atau mengosongkan dan menghapus node cluster465* Menerapkan perubahan infrastruktur ke cakupan IaC yang dilindungi, atau mengosongkan dan menghapus node cluster

466* Menulis ke cluster komputasi bersama yang menjangkau melampaui sumber daya yang Anda sebutkan, seperti pemilih label atau `--all` yang ikut mengenai pekerjaan pengguna lain466* Penulisan ke cluster komputasi bersama yang menjangkau melampaui resource yang Anda sebutkan, seperti label selector atau `--all` yang ikut mengenai job pengguna lain

467* Membuat sumber daya Kubernetes yang berjalan di setiap node atau mencegat lalu lintas cluster, seperti DaemonSets dan admission webhook467* Membuat resource Kubernetes yang berjalan di setiap node atau mencegat lalu lintas cluster, seperti DaemonSet dan admission webhook

468* Shell interaktif atau port-forward ke target jarak jauh yang sensitif468* Shell interaktif atau port-forward ke target remote yang sensitif

469* Membuka tunnel atau reverse shell yang membuat layanan lokal dapat dijangkau dari internet publik469* Membuka tunnel atau reverse shell yang membuat layanan lokal dapat dijangkau dari internet publik

470* Mencetak kredensial atau token aktif ke transkrip atau file470* Mencetak kredensial atau token aktif ke dalam transkrip atau file

471* Mengakses lokasi yang tercantum sebagai lokasi data sensitif dalam [environment](https://code.claude.com/docs/id/auto-mode-config.md#define-trusted-infrastructure) Anda, menyalin data keluar darinya, atau mengirim data darinya ke audiens yang dikecualikan oleh entri tersebut471* Mengakses lokasi yang tercantum sebagai lokasi data sensitif dalam [environment](https://code.claude.com/docs/id/auto-mode-config.md#define-trusted-infrastructure) Anda, menyalin data keluar dari lokasi tersebut, atau mengirim data dari lokasi tersebut ke audiens yang dikecualikan oleh entri tersebut

472* Mengarahkan instalasi paket melewati registri paket internal Anda ke registri publik. Ini berlaku ketika registri internal atau mirror tercantum dalam environment Anda atau ketika Anda telah memberi tahu Claude dalam percakapan bahwa registri tersebut ada472* Mengalihkan instalasi paket dari registry paket internal Anda ke registry publik. Ini berlaku ketika registry atau mirror internal tercantum dalam environment Anda atau ketika Anda telah memberi tahu Claude dalam percakapan bahwa registry semacam itu ada

473* Menjalankan perintah dengan flag yang menonaktifkan pengaman keamanan, seperti `--insecure`473* Menjalankan perintah dengan flag yang melumpuhkan pengaman keselamatan, seperti `--insecure`

474* Meluncurkan loop agent otonom yang berjalan tanpa persetujuan manusia atau sandbox, seperti yang dimulai dengan `--dangerously-skip-permissions` atau `--no-sandbox`. Ini juga mencakup menjalankan agent pihak ketiga atau harness eval dengan isolasi dan persetujuan per tindakan dinonaktifkan, seperti runner yang dimulai dengan `--yes-always`474* Meluncurkan loop agent otonom yang berjalan tanpa persetujuan manusia atau sandbox, seperti yang dimulai dengan `--dangerously-skip-permissions` atau `--no-sandbox`. Ini termasuk menjalankan agent pihak ketiga atau eval harness dengan isolasi dan persetujuan per tindakan dinonaktifkan, seperti runner yang dimulai dengan `--yes-always`

475* Tindakan browser [Claude in Chrome](https://code.claude.com/docs/id/chrome.md) yang dapat mengirim konten halaman, cookie, atau kredensial ke luar origin475* Tindakan browser [Claude in Chrome](https://code.claude.com/docs/id/chrome.md) yang dapat mengirim konten halaman, cookie, atau kredensial ke luar origin

476* Menghapus file di `/tmp`, `$TMPDIR`, atau direktori scratch atau cache bersama lainnya menggunakan wildcard, glob, atau filter usia alih-alih jalur bernama yang spesifik476* Menghapus file di `/tmp`, `$TMPDIR`, atau direktori scratch atau cache bersama lainnya dengan wildcard, glob, atau filter usia, alih-alih dengan jalur bernama yang spesifik

477* Menyertakan detail sensitif dalam konten yang dikirim, diunggah, dipublikasikan, atau ditulis untuk orang lain atau sistem bersama, ketika pesan Anda sendiri tidak mengotorisasi detail tersebut untuk penerima itu. Isi PR dan issue, pesan commit, dan komentar dihitung sebagai jenis konten keluar ini ketika repositori berada di luar batas kepercayaan atau bersifat publik, termasuk repositori publik milik organisasi Anda sendiri; jalur file internal, nama kode, data respons API aktif seperti email atau pengidentifikasi akun, dan pengidentifikasi infrastruktur dihitung sebagai detail sensitif. Data pribadi aktif dari respons API dalam isi PR atau issue, seperti alamat email, pengidentifikasi akun atau organisasi, atau metrik penggunaan, mengharuskan Anda menyebutkan detail tersebut dan penerimanya terlepas dari visibilitas repositori atau batas kepercayaan477* Menyertakan detail sensitif dalam konten yang dikirim, diunggah, dipublikasikan, atau ditulis kepada orang lain atau sistem bersama, ketika pesan Anda sendiri tidak mengizinkan detail tersebut untuk penerima itu. Isi PR dan issue, pesan commit, dan komentar dihitung sebagai konten keluar semacam ini ketika repositori berada di luar batas kepercayaan atau bersifat publik, termasuk repositori publik milik organisasi Anda sendiri; jalur file internal, nama kode, data respons API aktif seperti email atau pengidentifikasi akun, dan pengidentifikasi infrastruktur dihitung sebagai detail sensitif. Data pribadi aktif dari respons API dalam isi PR atau issue, seperti alamat email, pengidentifikasi akun atau organisasi, atau metrik penggunaan, mengharuskan Anda menyebutkan detail tersebut dan penerimanya, terlepas dari visibilitas repositori atau batas kepercayaannya

478* Mengirim keystroke ke pane tmux milik Claude Code sendiri untuk mengendalikan antarmukanya sendiri, yang diperlakukan pengklasifikasi sebagai Claude mengubah izin atau pengawasannya sendiri478* Mengirim keystroke ke pane tmux milik Claude Code sendiri untuk mengendalikan antarmukanya sendiri, yang diperlakukan pengklasifikasi sebagai Claude mengubah izin atau pengawasannya sendiri

479* Mengomentari, menghapus, atau memaksa lolos tes atau assertion yang menjaga perilaku keamanan, seperti auth, kontrol akses, validasi input, atau sandboxing479* Mengomentari, menghapus, atau memaksa lulus pengujian atau assertion yang menjaga perilaku keamanan, seperti autentikasi, kontrol akses, validasi input, atau sandboxing

480* Menghapus atau membongkar sumber daya stateful yang tidak dibuat Claude dalam sesi, ketika tidak ada aturan penghapusan yang lebih spesifik yang berlaku dan Anda tidak menyebutkan sumber daya itu480* Menghapus atau membongkar resource stateful yang tidak dibuat Claude dalam sesi, ketika tidak ada aturan penghapusan yang lebih spesifik yang berlaku dan Anda tidak menyebutkan resource tersebut

481* Mengarahkan ulang URL dasar API, endpoint proxy, penerima webhook, atau mirror registri ke host pihak ketiga yang tidak sesuai dengan tugas, termasuk dalam file contoh seperti `.env.example`481* Mengarahkan ulang base URL API, endpoint proxy, penerima webhook, atau mirror registry ke host pihak ketiga yang tidak sesuai dengan tugas, termasuk dalam file contoh seperti `.env.example`

482* Mengubah tujuan push dengan `git remote set-url` atau `git remote add`, kecuali Anda menyebutkan remote baru tersebut482* Mengubah tujuan push dengan `git remote set-url` atau `git remote add`, kecuali jika Anda menyebutkan remote baru tersebut

483* Melakukan push rahasia atau data pribadi atau data yang dipercayakan ke repositori yang diketahui bersifat publik, atau melakukan push materi rahasia ke sana yang bukan bagian dari pekerjaan repositori itu sendiri. Pokok bahasan repositori dotfiles itu sendiri adalah satu-satunya pengecualian untuk data pribadi atau yang dipercayakan, dan konten dari repositori privat yang mencapai surface publik apa pun diblokir dengan cara yang sama. Ketika visibilitas repositori tidak diketahui, pengklasifikasi tidak memblokir berdasarkan hal itu saja; pengklasifikasi menilai kontennya berdasarkan aturan lain sebagai gantinya483* Melakukan push secret atau data pribadi atau data titipan ke repositori yang diketahui bersifat publik, atau melakukan push materi rahasia ke sana yang bukan bagian dari pekerjaan repositori itu sendiri. Pokok bahasan repositori dotfiles itu sendiri adalah satu-satunya pengecualian untuk data pribadi atau data titipan, dan konten dari repositori privat yang mencapai surface publik mana pun diblokir dengan cara yang sama. Ketika visibilitas repositori belum dapat dipastikan, pengklasifikasi tidak memblokir hanya berdasarkan hal itu; pengklasifikasi menilai konten berdasarkan aturan lainnya sebagai gantinya

484* Membuka pull request terhadap repositori atau organisasi yang berbeda, melakukan fork dengan `gh repo fork`, atau melakukan push ke repositori pihak ketiga, kecuali Anda menyebutkan target eksternal itu484* Membuka pull request terhadap repositori atau organisasi yang berbeda, melakukan fork dengan `gh repo fork`, atau melakukan push ke repositori pihak ketiga, kecuali jika Anda menyebutkan target eksternal tersebut

485* Konten dari penyimpanan lokal yang sensitif, atau dari file yang nama, jalur, atau jenisnya menandainya sebagai sensitif, masuk ke commit, push, teks PR atau issue, gist atau paste, atau publikasi paket, kecuali Anda menyebutkan sumber dan tujuannya. Transkrip sesi dan log percakapan, folder dot kredensial dan konfigurasi seperti kunci SSH, kredensial cloud, profil browser, dan riwayat shell, serta ekspor data pengguna semuanya termasuk, dan repositori yang bersifat privat tidak membebaskannya485* Konten dari penyimpanan lokal yang sensitif, atau dari file yang nama, jalur, atau jenisnya menandainya sebagai sensitif, masuk ke dalam commit, push, teks PR atau issue, gist atau paste, atau publikasi paket, kecuali jika Anda menyebutkan baik sumber maupun tujuannya. Transkrip sesi dan log percakapan, folder titik kredensial dan konfigurasi seperti kunci SSH, kredensial cloud, profil browser, dan riwayat shell, serta ekspor data pengguna semuanya termasuk, dan repositori yang bersifat privat tidak membebaskannya

486* Menulis ke transkrip sesi Claude Code, yaitu file riwayat `.jsonl` di bawah `~/.claude/projects/` atau direktori konfigurasi yang Anda konfigurasikan, baik secara langsung maupun melalui perintah shell. Aturan ini juga mencakup baris metadata yang ditambahkan Claude Code ke setiap entri transkrip untuk pemeriksaannya sendiri. Membaca transkrip tidak diblokir486* Menulis ke transkrip sesi Claude Code, yaitu file riwayat `.jsonl` di bawah `~/.claude/projects/` atau direktori konfigurasi yang Anda konfigurasi, baik secara langsung maupun melalui perintah shell. Aturan ini juga mencakup baris metadata yang ditambahkan Claude Code ke setiap entri transkrip untuk pemeriksaannya sendiri. Membaca transkrip tidak diblokir

487* Penghapusan paksa rekursif seperti `rm -rf "$VAR"` atau `Remove-Item -Recurse -Force $dir` yang targetnya adalah variabel shell yang tidak ditetapkan di mana pun dalam percakapan yang dilihat pengklasifikasi, atau glob yang berakar pada variabel tersebut. Nilainya hanya berasal dari output perintah sebelumnya, yang tidak pernah diterima pengklasifikasi, sehingga pengklasifikasi tidak dapat memverifikasi target penghapusan terhadap aturan penghapusan lainnya. Blok ini hilang ketika Anda menyebutkan jalur persis yang dihapus, atau ketika Claude menjalankan ulang penghapusan dengan jalur literal yang sudah di-resolve ditulis ke dalam perintah. Penghapusan yang targetnya dapat di-resolve oleh pengklasifikasi tidak terpengaruh.487* Penghapusan paksa rekursif seperti `rm -rf "$VAR"` atau `Remove-Item -Recurse -Force $dir` yang targetnya adalah variabel shell yang tidak ditetapkan di mana pun dalam percakapan yang dilihat pengklasifikasi, atau glob yang berakar pada variabel semacam itu. Nilainya hanya berasal dari output perintah sebelumnya, yang tidak pernah diterima pengklasifikasi, sehingga pengklasifikasi tidak dapat memverifikasi target penghapusan terhadap aturan penghapusan lainnya. Blokir ini terbuka ketika Anda menyebutkan jalur persis yang dihapus, atau ketika Claude menjalankan ulang penghapusan dengan jalur literal yang sudah di-resolve dituliskan ke dalam perintah. Penghapusan yang targetnya dapat di-resolve oleh pengklasifikasi tidak terpengaruh.

488 488 

489 Glob langsung di bawah variabel, seperti dalam `rm -rf "$VAR"/*`, termasuk [jalur kritis](#critical-paths) sebagai gantinya. Target `Remove-Item` yang berupa `*` saja atau berakhiran `/*` atau `\*` tidak pernah mencapai pengklasifikasi: Claude Code [langsung menolaknya](#remove-item-in-powershell).489 Glob langsung di bawah variabel, seperti dalam `rm -rf "$VAR"/*`, merupakan [jalur kritis](#critical-paths) sebagai gantinya. Target `Remove-Item` yang berupa `*` saja atau berakhiran `/*` atau `\*` tidak pernah mencapai pengklasifikasi: Claude Code [langsung menolaknya](#remove-item-in-powershell).

490 490 

491Beberapa kategori ini bergantung pada entri [environment](https://code.claude.com/docs/id/auto-mode-config.md#define-trusted-infrastructure), seperti target jarak jauh yang sensitif dan cakupan IaC yang dilindungi, yang dapat Anda persempit menjadi nama konkret.491Beberapa kategori ini bergantung pada entri [environment](https://code.claude.com/docs/id/auto-mode-config.md#define-trusted-infrastructure), seperti target remote yang sensitif dan cakupan IaC yang dilindungi, yang dapat Anda persempit menjadi nama-nama konkret.

492 492 

493Claude Code v2.1.257 dan lebih baru juga memblokir hal berikut secara default:493Claude Code v2.1.257 dan yang lebih baru juga memblokir hal-hal berikut secara default:

494 494 

495* Meminta kredensial dari endpoint metadata instans cloud, seperti `169.254.169.254`, atau secara eksplisit mengautentikasi panggilan cloud, cluster, atau registri dengan identitas akun layanan atau node milik mesin itu sendiri495* Meminta kredensial dari endpoint instance-metadata cloud, seperti `169.254.169.254`, atau secara eksplisit mengautentikasi panggilan cloud, cluster, atau registry dengan identitas service-account atau node milik mesin itu sendiri

496* Menjangkau host publik melalui rute selain permintaan langsung, seperti tunnel, reverse shell, atau konfigurasi resolver atau proxy yang ditulis ulang untuk mengarah ke luar496* Menjangkau host publik melalui rute selain permintaan langsung, seperti tunnel, reverse shell, atau konfigurasi resolver atau proxy yang ditulis ulang untuk mengarah ke luar

497* Membaca kredensial yang dimiliki host alih-alih tugas Anda, seperti sertifikat node atau auth registri kontainer milik node497* Membaca kredensial yang menjadi milik host alih-alih milik tugas Anda, seperti sertifikat node atau autentikasi container-registry milik node

498* Terhubung ke atau memindai kontainer, pod, atau VM lain yang tidak dimulai oleh Claude, atau node di bawah kontainer498* Terhubung ke atau memindai container, pod, atau VM saudara yang tidak dimulai oleh Claude, atau node di bawah container

499 499 

500Jika Claude Code berjalan di tempat yang memang dimaksudkan untuk mengizinkan salah satu dari hal ini, jelaskan penyiapan itu dalam entri [Host containment](https://code.claude.com/docs/id/auto-mode-config.md#define-trusted-infrastructure) dalam `autoMode.environment`.500Jika Claude Code berjalan di tempat yang memang dimaksudkan untuk mengizinkan salah satu dari hal ini, jelaskan penyiapan tersebut dalam [entri Host containment](https://code.claude.com/docs/id/auto-mode-config.md#define-trusted-infrastructure) di `autoMode.environment`.

501 501 

502Claude Code v2.1.261 dan lebih baru juga memblokir hal berikut secara default:502Claude Code v2.1.261 dan yang lebih baru juga memblokir hal-hal berikut secara default:

503 503 

504* Memposting atau menulis tautan ke layanan paste, diagram, atau berbagi data publik dalam pesan, teks PR atau issue, dokumen, atau di mana pun tautan tersebut akan dibuka atau diambil, ketika URL itu sendiri membawa konten yang dibagikan, kecuali Anda menyebutkan layanan itu504* Memposting atau menulis tautan ke layanan paste, diagram, atau berbagi data publik dalam pesan, teks PR atau issue, dokumen, atau tempat lain mana pun tautan tersebut akan dibuka atau diambil, ketika URL itu sendiri membawa konten yang dibagikan, kecuali jika Anda menyebutkan layanan tersebut

505 505 

506**Diizinkan secara default**:506**Diizinkan secara default**:

507 507 

508* Operasi file lokal di direktori kerja Anda508* Operasi file lokal di direktori kerja Anda

509* Menginstal dependensi yang dideklarasikan dalam file lock atau manifes Anda509* Menginstal dependensi yang dideklarasikan dalam lock file atau manifest Anda

510* Membaca `.env` dan mengirim kredensial ke API yang sesuai510* Membaca `.env` dan mengirim kredensial ke API yang sesuai

511* Permintaan HTTP read-only511* Permintaan HTTP read-only

512* Melakukan push ke branch mana pun dari repositori yang sedang Anda kerjakan, termasuk branch default. Branch non-default yang namanya menandainya sebagai target deploy atau publikasi, seperti `production` atau `gh-pages`, tidak tercakup: pengklasifikasi menilai push ke sana secara tersendiri.512* Melakukan push ke branch mana pun dari repositori tempat Anda bekerja, termasuk branch default. Branch non-default yang namanya menandainya sebagai target deploy atau publikasi, seperti `production` atau `gh-pages`, tidak tercakup: pengklasifikasi menilai push ke sana berdasarkan ketentuannya sendiri.

513 513 

514 Konten push tetap diperiksa terhadap aturan lain pengklasifikasi, dan [aturan `permissions.deny`](https://code.claude.com/docs/id/permissions#manage-permissions) tetap dapat memblokir perintah push [sebagaimana ditulis](https://code.claude.com/docs/id/permissions.md#bash-rule-limits) dalam setiap mode. Proteksi branch milik remote itu sendiri tetap berlaku.514 Konten push tetap diperiksa terhadap aturan pengklasifikasi lainnya, dan [aturan `permissions.deny`](https://code.claude.com/docs/id/permissions#manage-permissions) tetap dapat memblokir perintah push [sebagaimana tertulis](https://code.claude.com/docs/id/permissions.md#bash-rule-limits) di setiap mode. Proteksi branch milik remote itu sendiri tetap berlaku.

515* Menghapus pekerjaan persis yang dibuat Claude sebelumnya dalam sesi yang sama515* Menghapus job persis yang dibuat Claude sebelumnya dalam sesi yang sama

516* Membaca, meninjau, atau menulis kode, konfigurasi, dan model ancaman terkait keamanan sebagai bagian dari tugas Anda516* Membaca, meninjau, atau menulis kode, konfigurasi, dan threat model terkait keamanan sebagai bagian dari tugas Anda

517* Pesan antar agent yang bekerja bersama dalam sesi multi-agent yang sama517* Pesan antar agent yang bekerja sama dalam sesi multi-agent yang sama

518* Mengirim data ke domain, bucket, dan layanan terpercaya yang Anda daftarkan dalam [`environment`](https://code.claude.com/docs/id/auto-mode-config#define-trusted-infrastructure). Ini hanya mencakup aliran data, bukan operasi destruktif atau operasi kredensial pada infrastruktur yang sama518* Mengirim data ke domain, bucket, dan layanan tepercaya yang Anda cantumkan dalam [`environment`](https://code.claude.com/docs/id/auto-mode-config#define-trusted-infrastructure). Ini hanya mencakup aliran data, bukan operasi destruktif atau operasi kredensial pada infrastruktur yang sama

519* Navigasi [Claude in Chrome](https://code.claude.com/docs/id/chrome.md) ke domain internal terpercaya, localhost, atau URL yang Anda sebutkan519* Navigasi [Claude in Chrome](https://code.claude.com/docs/id/chrome.md) ke domain internal tepercaya, localhost, atau URL yang Anda sebutkan

520 520 

521Perintah yang di-sandbox tidak mendapatkan akses jaringan secara default. Claude menyebutkan host yang dibutuhkan perintah pada perintah itu sendiri, pengklasifikasi meninjaunya bersama perintah tersebut, dan daftar yang disetujui membuka host tersebut hanya untuk perintah itu saja. [Domain yang diizinkan per perintah](https://code.claude.com/docs/id/sandboxing.md#per-command-allowed-domains-in-auto-mode) menjelaskan apa yang dapat dan tidak dapat dibuka oleh daftar tersebut dan apa yang terjadi ketika perintah mencoba menjangkau host yang tidak tercantum.521Perintah yang berjalan di sandbox tidak mendapatkan akses jaringan secara default. Claude menyebutkan host yang dibutuhkan suatu perintah pada perintah itu sendiri, pengklasifikasi meninjaunya bersama perintah tersebut, dan daftar yang disetujui membuka host tersebut hanya untuk satu perintah itu. [Domain yang diizinkan per perintah](https://code.claude.com/docs/id/sandboxing.md#per-command-allowed-domains-in-auto-mode) menjelaskan apa yang dapat dan tidak dapat dibuka oleh sebuah daftar dan apa yang terjadi ketika suatu perintah menjangkau host yang tidak tercantum.

522 522 

523Jalankan `claude auto-mode defaults` untuk mencetak daftar aturan lengkap sebagai JSON. Jika tindakan rutin terblokir, administrator dapat menambahkan repo, bucket, dan layanan terpercaya melalui pengaturan `autoMode.environment`: lihat [Konfigurasi auto mode](https://code.claude.com/docs/id/auto-mode-config.md).523Jalankan `claude auto-mode defaults` untuk mencetak daftar aturan lengkap sebagai JSON. Jika tindakan rutin terblokir, administrator dapat menambahkan repo, bucket, dan layanan tepercaya melalui pengaturan `autoMode.environment`: lihat [Mengonfigurasi auto mode](https://code.claude.com/docs/id/auto-mode-config.md).

524 524 

525Melakukan push ke branch mana pun dari repositori yang sedang Anda kerjakan dan membuat pull request yang sesuai dengan permintaan Anda berjalan tanpa permintaan izin, kecuali push atau pull request tersebut termasuk dalam [daftar yang diblokir](#what-the-classifier-blocks-by-default), seperti rahasia atau data sensitif yang keluar dari repositori, atau pull request yang menargetkan repositori atau organisasi yang berbeda. Untuk mewajibkan checkpoint manusia sebelum perintah-perintah ini sambil tetap dalam auto mode, tambahkan aturan `permissions.ask`, yang mencocokkan perintah [sebagaimana ditulis](https://code.claude.com/docs/id/permissions.md#bash-rule-limits): lihat [Batasan umum](https://code.claude.com/docs/id/auto-mode-config.md#common-boundaries).525Melakukan push ke branch mana pun dari repositori tempat Anda bekerja dan membuat pull request yang sesuai dengan permintaan Anda berjalan tanpa permintaan izin, kecuali jika push atau pull request tersebut termasuk dalam [daftar yang diblokir](#what-the-classifier-blocks-by-default), seperti secret atau data sensitif yang keluar dari repositori, atau pull request yang menargetkan repositori atau organisasi yang berbeda. Untuk mewajibkan checkpoint manusia sebelum perintah-perintah ini sambil tetap berada dalam auto mode, tambahkan aturan `permissions.ask`, yang mencocokkan perintah [sebagaimana tertulis](https://code.claude.com/docs/id/permissions.md#bash-rule-limits): lihat [Batasan umum](https://code.claude.com/docs/id/auto-mode-config.md#common-boundaries).

526 526 

527### Pembacaan pertama di luar direktori kerja527### Pembacaan pertama di luar direktori kerja

528 528 

529Selama [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) nonaktif, pembacaan file selain [pembacaan dari jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths) berjalan tanpa permintaan izin dalam auto mode, termasuk pembacaan di luar [direktori kerja](https://code.claude.com/docs/id/permissions.md#working-directories). Pertama kali Claude menggunakan tool Read, Grep, atau Glob pada jalur di luar direktori tersebut, Claude Code menanyakan apakah pembacaan itu diizinkan.529Selama [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) nonaktif, pembacaan file selain [pembacaan dari jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths) berjalan tanpa permintaan izin dalam auto mode, termasuk pembacaan di luar [direktori kerja](https://code.claude.com/docs/id/permissions.md#working-directories). Pertama kali Claude menggunakan tool Read, Grep, atau Glob pada jalur di luar direktori tersebut, Claude Code menanyakan apakah pembacaan itu diizinkan.

530 530 

531Permintaan izin ini tidak muncul dalam eksekusi `-p` non-interaktif atau sesi latar belakang; pembacaan di sana berjalan seperti sebelumnya.531Permintaan izin ini tidak muncul dalam eksekusi non-interaktif `-p` atau sesi latar belakang; pembacaan di sana berjalan seperti sebelumnya.

532 532 

533Apa pun jawaban Anda, Claude terus bekerja:533Apa pun jawaban Anda, Claude tetap bekerja:

534 534 

535* **Ya, dan terus izinkan pembacaan apa pun di luar direktori kerja**: pembacaan berjalan, pembacaan berikutnya di luar direktori kerja berjalan seperti sebelumnya, dan Claude Code mencatat jawaban Anda sehingga permintaan izin tidak muncul lagi535* **Yes, and keep allowing any reads outside the working directories**: pembacaan berjalan, pembacaan berikutnya di luar direktori kerja berjalan seperti sebelumnya, dan Claude Code mencatat jawaban Anda sehingga permintaan izin tidak muncul lagi

536* **Tidak, dan blokir pembacaan di luar direktori kerja mulai sekarang**: pembacaan ditolak, dan Claude Code menetapkan [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) ke `true` dalam pengaturan pengguna Anda, yang membuat tool file menolak pembacaan semacam itu di sesi ini dan setiap sesi berikutnya serta di setiap mode izin. Untuk mencabut blok tersebut, hapus pengaturan itu dari setiap [file pengaturan](https://code.claude.com/docs/id/settings.md#settings-files-and-who-they-affect) yang menetapkannya, lalu mulai ulang setiap sesi yang sedang berjalan. Untuk satu direktori dalam sesi ini, gunakan `/add-dir`.536* **No, and block reads outside the working directories from now on**: pembacaan ditolak, dan Claude Code mengatur [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) ke `true` dalam pengaturan pengguna Anda, yang membuat tool file menolak pembacaan semacam itu dalam sesi ini dan setiap sesi berikutnya serta di setiap mode izin. Untuk mencabut blokir ini, hapus pengaturan tersebut dari setiap [file pengaturan](https://code.claude.com/docs/id/settings.md#settings-files-and-who-they-affect) yang mengaturnya, lalu mulai ulang setiap sesi yang sedang berjalan. Untuk satu direktori dalam sesi ini, gunakan `/add-dir`.

537* **Tidak, dan tanyakan lagi lain kali**: pembacaan ditolak, dan pembacaan berikutnya di luar direktori kerja akan memunculkan permintaan izin lagi537* **No, and ask again next time**: pembacaan ditolak, dan pembacaan berikutnya di luar direktori kerja akan memunculkan permintaan izin lagi

538* **Ya, tetapi tanyakan lagi lain kali**: pembacaan berjalan, tidak ada yang disimpan, dan pembacaan berikutnya di luar direktori kerja akan memunculkan permintaan izin lagi538* **Yes, but ask again next time**: pembacaan berjalan, tidak ada yang disimpan, dan pembacaan berikutnya di luar direktori kerja akan memunculkan permintaan izin lagi

539 539 

540### Batasan yang Anda nyatakan dalam percakapan540### Batasan yang Anda nyatakan dalam percakapan

541 541 

542Pengklasifikasi memperlakukan batasan yang Anda nyatakan dalam percakapan sebagai sinyal blok. Jika Anda memberi tahu Claude "jangan push" atau "tunggu sampai saya meninjau sebelum deploy", pengklasifikasi memblokir tindakan yang cocok bahkan ketika aturan default akan mengizinkannya. Batasan tetap berlaku sampai Anda mencabutnya dalam pesan berikutnya. Penilaian Claude sendiri bahwa suatu kondisi telah terpenuhi tidak mencabutnya.542Pengklasifikasi memperlakukan batasan yang Anda nyatakan dalam percakapan sebagai sinyal blokir. Jika Anda memberi tahu Claude "jangan push" atau "tunggu sampai saya meninjau sebelum melakukan deploy", pengklasifikasi memblokir tindakan yang sesuai bahkan ketika aturan default akan mengizinkannya. Batasan tetap berlaku hingga Anda mencabutnya dalam pesan berikutnya. Penilaian Claude sendiri bahwa suatu kondisi telah terpenuhi tidak mencabutnya.

543 543 

544Batasan tidak disimpan sebagai aturan. Pengklasifikasi membacanya ulang dari transkrip pada setiap pemeriksaan, sehingga batasan dapat hilang jika [compaction konteks](https://code.claude.com/docs/id/costs.md#reduce-token-usage) menghapus pesan yang menyatakannya. Untuk jaminan yang pasti, tambahkan [aturan deny](https://code.claude.com/docs/id/permissions.md#permission-rule-syntax) sebagai gantinya.544Batasan tidak disimpan sebagai aturan. Pengklasifikasi membacanya ulang dari transkrip pada setiap pemeriksaan, sehingga batasan dapat hilang jika [compaction konteks](https://code.claude.com/docs/id/costs.md#reduce-token-usage) menghapus pesan yang menyatakannya. Untuk jaminan yang pasti, tambahkan [aturan deny](https://code.claude.com/docs/id/permissions.md#permission-rule-syntax) sebagai gantinya.

545 545 

546### Persetujuan yang Anda nyatakan dalam percakapan546### Persetujuan yang Anda nyatakan dalam percakapan

547 547 

548Jika Anda memberi tahu Claude bahwa tindakan yang diblokir diizinkan, pengklasifikasi membacanya sebagai persetujuan Anda dan dapat mencabut blok tersebut. Cara Anda merumuskannya menentukan apakah tindakan berjalan, dan seberapa jauh persetujuan tersebut berlaku:548Jika Anda memberi tahu Claude bahwa tindakan yang diblokir diizinkan, pengklasifikasi membacanya sebagai persetujuan Anda dan dapat membuka blokir tersebut. Cara Anda merumuskannya menentukan apakah tindakan itu berjalan, dan seberapa jauh jangkauan persetujuannya:

549 549 

550* **Sebutkan tindakan dan detailnya**: pesan Anda harus menyebutkan tindakan dan hal spesifik yang membuatnya berbahaya, seperti branch dari force push. Menyebutkan kata kerjanya saja tidak mencabut apa pun, jadi "Anda boleh force-push" membiarkan blok tetap ada.550* **Sebutkan tindakan dan spesifikasinya**: pesan Anda harus menyebutkan tindakan dan hal spesifik yang membuatnya berbahaya, seperti branch dari suatu force push. Menyebutkan kata kerjanya saja tidak membuka apa pun, jadi "Anda boleh force-push" membiarkan blokir tetap berlaku.

551* **Anggap persetujuan hanya mencakup satu tindakan**: persetujuan mencakup tindakan destruktif yang Anda sebutkan, sehingga tindakan berikutnya diblokir lagi kecuali Anda memberikan persetujuan sebagai persetujuan tetap. Agar tidak perlu menyetujui pola rutin satu per satu, tambahkan ke [`autoMode.allow`](https://code.claude.com/docs/id/auto-mode-config#override-the-block-and-allow-rules).551* **Anggap persetujuan mencakup satu tindakan**: persetujuan mencakup tindakan destruktif yang Anda sebutkan, sehingga tindakan berikutnya diblokir lagi kecuali jika Anda memberikan persetujuan itu sebagai persetujuan tetap. Agar tidak perlu menyetujui pola rutin satu tindakan demi satu tindakan, tambahkan pola tersebut ke [`autoMode.allow`](https://code.claude.com/docs/id/auto-mode-config#override-the-block-and-allow-rules).

552* **Beberapa blok tetap ada**: [urutan prioritas pengklasifikasi](https://code.claude.com/docs/id/auto-mode-config.md#override-the-block-and-allow-rules) menetapkan blok mana yang dapat dicabut oleh persetujuan Anda. Untuk menjalankan langkah yang tidak akan dicabutnya, [keluar dari auto mode](#switch-permission-modes) dan jawab permintaan izinnya.552* **Beberapa blokir tetap berlaku**: [urutan prioritas pengklasifikasi](https://code.claude.com/docs/id/auto-mode-config.md#override-the-block-and-allow-rules) menetapkan blokir mana yang dapat dijangkau oleh persetujuan Anda. Untuk menjalankan langkah yang tidak akan dibukanya, [keluar dari auto mode](#switch-permission-modes) dan jawab permintaan izinnya.

553 553 

554### Ketika auto mode beralih ke fallback554### Ketika auto mode melakukan fallback

555 555 

556Ketika auto mode tidak dapat menyetujui tindakan sesi Anda, apa yang terjadi bergantung pada kasusnya:556Ketika auto mode tidak dapat menyetujui tindakan sesi Anda, apa yang terjadi bergantung pada kasusnya:

557 557 

558* **Tindakan yang diblokir**: Claude Code menampilkan pemberitahuan dan mencantumkan tindakan tersebut dalam `/permissions` di bawah tab **Recently blocked**, di mana Anda dapat [menyetujui tindakan tersebut agar Claude dapat mencobanya ulang](https://code.claude.com/docs/id/auto-mode-config.md#review-denials).558* **Tindakan yang diblokir**: Claude Code menampilkan notifikasi dan mencantumkan tindakan tersebut di `/permissions` pada tab **Recently blocked**, tempat Anda dapat [menyetujui tindakan tersebut agar Claude dapat mencoba ulang](https://code.claude.com/docs/id/auto-mode-config.md#review-denials).

559* **Blok berulang**: jika pengklasifikasi memblokir tindakan 3 kali berturut-turut atau total 20 kali, auto mode dijeda dan Claude Code kembali menampilkan permintaan izin. Menyetujui tindakan yang diminta akan melanjutkan auto mode. Lihat [Ambang blok berulang](#repeated-block-thresholds) untuk cara blok dihitung.559* **Blokir berulang**: jika pengklasifikasi memblokir suatu tindakan 3 kali berturut-turut atau total 20 kali, auto mode dijeda dan Claude Code kembali menampilkan permintaan izin. Menyetujui tindakan yang dimintakan izinnya akan melanjutkan auto mode. Lihat [Ambang batas blokir berulang](#repeated-block-thresholds) untuk cara penghitungan blokir.

560* **Tidak ada vonis dari pengklasifikasi**: ketika pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan milik pengklasifikasi sendiri, atau respons pengklasifikasi tidak dapat diurai, Claude Code memblokir tindakan tanpa pemberitahuan atau entri **Recently blocked**. Lihat [Auto mode tidak dapat menentukan keamanan suatu tindakan](https://code.claude.com/docs/id/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) untuk pesan yang ditampilkan setiap kasus dan apa yang harus dilakukan.560* **Tidak ada putusan dari pengklasifikasi**: ketika pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri, atau respons pengklasifikasi tidak dapat di-parse, Claude Code memblokir tindakan tanpa notifikasi atau entri **Recently blocked**. Lihat [Auto mode cannot determine the safety of an action](https://code.claude.com/docs/id/errors.md#auto-mode-cannot-determine-the-safety-of-an-action) untuk pesan yang ditampilkan setiap kasus dan langkah yang perlu dilakukan.

561* **Tidak ada vonis dari server**: dalam [tinjauan pengklasifikasi di sisi server](#server-side-classifier-review), Claude Code menolak tindakan yang tidak diberi vonis oleh server, dan dapat menghentikan giliran setelah sepuluh respons berturut-turut tanpa vonis. Lihat [Server tidak mengembalikan vonis keamanan](https://code.claude.com/docs/id/errors.md#the-server-returned-no-safety-verdict).561* **Tidak ada putusan dari server**: dalam [peninjauan pengklasifikasi di sisi server](#server-side-classifier-review), Claude Code menolak tindakan yang tidak diberi putusan oleh server, dan dapat menghentikan giliran setelah sepuluh respons berturut-turut tanpa putusan. Lihat [Server tidak mengembalikan putusan keamanan](https://code.claude.com/docs/id/errors.md#the-server-returned-no-safety-verdict).

562* **Beralih mode selama pemeriksaan**: jika Anda beralih mode izin saat pemeriksaan pengklasifikasi sedang tertunda, Claude Code membuang vonis yang tidak akan diminta oleh mode baru. Anda akan diminta memberikan persetujuan sebagai gantinya, atau tindakan ditolak otomatis dalam [mode `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).562* **Pergantian mode selama pemeriksaan**: jika Anda beralih mode izin saat pemeriksaan pengklasifikasi masih tertunda, Claude Code membuang putusan yang tidak akan diminta oleh mode baru. Anda akan dimintai persetujuan sebagai gantinya, atau tindakan tersebut ditolak secara otomatis dalam [mode `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).

563 563 

564#### Ambang blok berulang564#### Ambang batas blokir berulang

565 565 

566Ambang 3 blok berturut-turut dan total 20 blok tidak dapat dikonfigurasi. Penghitung total bertahan sepanjang sesi dan direset hanya ketika batasnya sendiri memicu fallback. Claude Code tidak menghitung penolakan terhadap ambang mana pun ketika pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan milik pengklasifikasi sendiri.566Ambang batas 3 blokir berturut-turut dan total 20 blokir tidak dapat dikonfigurasi. Penghitung total bertahan selama sesi dan hanya direset ketika batasnya sendiri memicu fallback. Claude Code tidak menghitung penolakan terhadap ambang batas mana pun ketika pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri.

567 567 

568Eksekusi `-p` [non-interaktif](https://code.claude.com/docs/id/headless.md) tanpa [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) tidak memiliki permintaan izin untuk dijadikan fallback. Ketika blok berulang mencapai ambang, tindakan tidak dijalankan dan Claude terus bekerja. Claude Code tidak menghentikan eksekusi.568Eksekusi `-p` [non-interaktif](https://code.claude.com/docs/id/headless.md) tanpa [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) tidak memiliki permintaan izin sebagai fallback. Ketika blokir berulang mencapai ambang batas, tindakan tersebut tidak dijalankan dan Claude tetap bekerja. Claude Code tidak menghentikan eksekusi.

569 569 

570Blok berulang biasanya berarti pengklasifikasi kekurangan konteks tentang infrastruktur Anda. Gunakan `/feedback` untuk melaporkan positif palsu, atau minta administrator [mengonfigurasi infrastruktur terpercaya](https://code.claude.com/docs/id/auto-mode-config.md).570Blokir berulang biasanya berarti pengklasifikasi kekurangan konteks tentang infrastruktur Anda. Gunakan `/feedback` untuk melaporkan positif palsu, atau minta administrator untuk [mengonfigurasi infrastruktur tepercaya](https://code.claude.com/docs/id/auto-mode-config.md).

571 571 

572### Bagaimana auto mode mengevaluasi tindakan572### Cara auto mode mengevaluasi tindakan

573 573 

574Bagian berikut menjelaskan urutan Claude Code dalam mengevaluasi suatu tindakan, bagaimana pengklasifikasi meninjau pekerjaan subagent, dan tambahan biaya serta latensi dari panggilan pengklasifikasi.574Bagian-bagian berikut menjelaskan urutan Claude Code mengevaluasi suatu tindakan, cara pengklasifikasi meninjau pekerjaan subagent, dan tambahan biaya serta latensi dari panggilan pengklasifikasi.

575 575 

576> [accordion] Bagaimana pengklasifikasi mengevaluasi tindakan576> [accordion] Cara pengklasifikasi mengevaluasi tindakan

577>577>

578> Setiap tindakan melalui urutan keputusan yang tetap. Langkah pertama yang cocok yang menentukan:578> Setiap tindakan melewati urutan keputusan yang tetap. Langkah pertama yang cocok yang berlaku:

579>579>

580> 1. Tindakan yang cocok dengan [aturan allow, ask, atau deny](https://code.claude.com/docs/id/permissions.md#manage-permissions) Anda langsung diselesaikan, dengan pengecualian berikut:580> 1. Tindakan yang cocok dengan [aturan allow, ask, atau deny](https://code.claude.com/docs/id/permissions.md#manage-permissions) Anda langsung diputuskan, dengan pengecualian berikut:

581> * Penulisan ke [jalur yang dilindungi](#protected-paths) diarahkan ke pengklasifikasi meskipun ada aturan allow yang cocok. Ketika jalur yang dilindungi tersebut adalah file yang dituju oleh file pengaturan berupa symlink, penulisan tersebut dapat meminta persetujuan Anda, sebagaimana dijelaskan dalam daftar [jalur yang dilindungi](#protected-paths)581> * Penulisan ke [jalur yang dilindungi](#protected-paths) diarahkan ke pengklasifikasi bahkan ketika aturan allow cocok. Ketika jalur yang dilindungi adalah file yang dituju oleh file pengaturan berupa symlink, penulisan tersebut dapat memunculkan permintaan izin kepada Anda sebagai gantinya, seperti yang dijelaskan dalam daftar [jalur yang dilindungi](#protected-paths)

582> * Tidak ada aturan allow yang menyetujui [penghapusan jalur kritis](#critical-paths) yang dikenali oleh `rm` dan `rmdir`582> * Tidak ada aturan allow yang menyetujui [penghapusan jalur kritis](#critical-paths) `rm` dan `rmdir` yang dikenali

583> * Tool MCP yang ditandai [`requiresUserInteraction`](https://code.claude.com/docs/id/mcp#require-approval-for-a-specific-tool) langsung meminta persetujuan Anda meskipun ada aturan allow yang cocok, begitu pula tool konektor yang [diatur organisasi Anda ke `ask`](https://code.claude.com/docs/id/mcp#organization-controls-on-connector-tools) dalam sesi di mana pengaturan tersebut berlaku untuk Claude Code583> * Tool MCP yang ditandai [`requiresUserInteraction`](https://code.claude.com/docs/id/mcp#require-approval-for-a-specific-tool) langsung meminta izin Anda bahkan ketika aturan allow cocok, begitu pula tool konektor yang [diatur organisasi Anda ke `ask`](https://code.claude.com/docs/id/mcp#organization-controls-on-connector-tools) dalam sesi tempat pengaturan tersebut mencapai Claude Code

584> * Perintah shell yang membawa [domain yang diizinkan per perintah](https://code.claude.com/docs/id/sandboxing.md#per-command-allowed-domains-in-auto-mode) juga diarahkan ke pengklasifikasi meskipun ada aturan allow yang cocok, karena aturan menyetujui perintahnya, bukan host-nya584> * Perintah shell yang membawa [domain yang diizinkan per perintah](https://code.claude.com/docs/id/sandboxing.md#per-command-allowed-domains-in-auto-mode) juga diarahkan ke pengklasifikasi bahkan ketika aturan allow cocok, karena aturan menyetujui perintahnya, bukan host-nya

585> * Aturan ask yang mencocokkan isi perintah, seperti `Bash(git push *)`, beralih ke permintaan izin585> * Aturan ask yang mencocokkan konten perintah, seperti `Bash(git push *)`, melakukan fallback ke permintaan izin

586> * Penulisan yang oleh [pemeriksaan symlink](https://code.claude.com/docs/id/permissions.md#symlinks) diselesaikan ke jalur yang dilindungi akan meminta persetujuan Anda ketika jalur yang diminta Claude itu sendiri tidak dilindungi586> * Penulisan yang oleh [pemeriksaan symlink](https://code.claude.com/docs/id/permissions.md#symlinks) di-resolve ke jalur yang dilindungi akan meminta izin Anda ketika jalur yang diminta Claude itu sendiri tidak dilindungi

587> * Pembacaan dari [jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths) meminta persetujuan Anda meskipun ada aturan allow yang cocok587> * Pembacaan dari [jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths) meminta izin Anda bahkan ketika aturan allow cocok

588> 2. Tindakan read-only dan pengeditan file di direktori kerja Anda disetujui secara otomatis, kecuali penulisan ke [jalur yang dilindungi](#protected-paths) dan [pembacaan pertama di luar direktori kerja](#first-read-outside-the-working-directories), yang meminta persetujuan Anda588> 2. Tindakan read-only dan pengeditan file di direktori kerja Anda disetujui secara otomatis, kecuali penulisan ke [jalur yang dilindungi](#protected-paths) dan [pembacaan pertama di luar direktori kerja](#first-read-outside-the-working-directories), yang meminta izin Anda

589> * Dalam sesi dengan [tinjauan pengklasifikasi sisi server](#server-side-classifier-review), perintah shell read-only dan yang [di-sandbox](https://code.claude.com/docs/id/sandboxing.md#sandbox-modes) menunggu tinjauan tersebut dan diblokir jika tinjauan tersebut menandainya589> * Dalam sesi dengan [peninjauan pengklasifikasi di sisi server](#server-side-classifier-review), perintah shell read-only dan yang [berjalan di sandbox](https://code.claude.com/docs/id/sandboxing.md#sandbox-modes) menunggu peninjauan tersebut dan diblokir jika peninjauan menandainya

590> * Penulisan di dalam direktori kerja Anda yang oleh [pemeriksaan symlink](https://code.claude.com/docs/id/permissions.md#symlinks) diselesaikan ke lokasi di luarnya akan meminta persetujuan Anda590> * Penulisan di dalam direktori kerja Anda yang oleh [pemeriksaan symlink](https://code.claude.com/docs/id/permissions.md#symlinks) di-resolve ke lokasi di luar direktori tersebut akan meminta izin Anda

591> * Ketika Claude membaca [artifact yang dibuat orang lain](https://code.claude.com/docs/id/artifacts.md#read-an-artifact-shared-with-you), kasus persetujuan yang tercantum di bagian tersebut berlaku591> * Ketika Claude membaca [artifact yang dibuat orang lain](https://code.claude.com/docs/id/artifacts.md#read-an-artifact-shared-with-you), kasus persetujuan yang tercantum di bagian tersebut berlaku

592> * Pembacaan dari [jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths) meminta persetujuan Anda592> * Pembacaan dari [jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths) meminta izin Anda

593> 3. Semua hal lainnya diteruskan ke pengklasifikasi, kecuali [penghapusan jalur kritis](#critical-paths) di bawah penanganan default-nya. Tool konektor dan tool MCP `requiresUserInteraction` yang langsung meminta persetujuan Anda pada langkah 1 juga tidak pernah mencapai pengklasifikasi, sehingga baik persetujuan yang diwajibkan organisasi maupun langkah persetujuan pengguna tidak disetujui secara otomatis593> 3. Segala hal lainnya masuk ke pengklasifikasi, selain [penghapusan jalur kritis](#critical-paths) dalam penanganan default-nya. Tool konektor dan tool MCP `requiresUserInteraction` yang langsung meminta izin Anda pada langkah 1 juga tidak pernah mencapai pengklasifikasi, sehingga baik persetujuan yang diwajibkan organisasi maupun langkah persetujuan tidak disetujui secara otomatis

594> 4. Jika pengklasifikasi memblokir, Claude menerima alasannya. Di sebagian besar sesi, alasan tersebut menyebutkan aturan yang dicocokkan oleh pengklasifikasi, seperti `[Data Exfiltration]`, alih-alih memberikan penjelasan tertulis; lihat [Meninjau penolakan](https://code.claude.com/docs/id/auto-mode-config.md#review-denials)594> 4. Jika pengklasifikasi memblokir, Claude menerima alasannya. Pada sebagian besar sesi, alasan tersebut menyebutkan aturan yang dicocokkan pengklasifikasi, seperti `[Data Exfiltration]`, alih-alih memberikan penjelasan tertulis; lihat [Meninjau penolakan](https://code.claude.com/docs/id/auto-mode-config.md#review-denials)

595>595>

596> [Mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal yang menangani `tool.check` juga dapat menyetujui suatu tindakan. Untuk kasus di mana persetujuannya tidak dapat melewati aturan dan hook Anda, lihat [Perluas izin dengan hook](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods).596> [Mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal dan menangani `tool.check` juga dapat menyetujui suatu tindakan. Untuk kasus ketika persetujuannya tidak dapat melewati aturan dan hook Anda, lihat [Memperluas izin dengan hooks](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods).

597>597>

598> Untuk cara tindakan browser [Claude in Chrome](https://code.claude.com/docs/id/chrome.md) disetujui di ekstensi VS Code, lihat [Permintaan izin dalam sesi VS Code](https://code.claude.com/docs/id/chrome.md#permission-prompts-in-vs-code-sessions).598> Untuk cara tindakan browser [Claude in Chrome](https://code.claude.com/docs/id/chrome.md) disetujui di ekstensi VS Code, lihat [Permintaan izin dalam sesi VS Code](https://code.claude.com/docs/id/chrome.md#permission-prompts-in-vs-code-sessions).

599>599>

600> Saat memasuki auto mode, aturan allow luas yang memberikan eksekusi kode arbitrer dihapus:600> Saat memasuki auto mode, aturan allow luas yang memberikan eksekusi kode sembarang akan dihapus:

601>601>

602> * `Bash(*)` atau `PowerShell(*)` menyeluruh602> * `Bash(*)` atau `PowerShell(*)` menyeluruh

603> * Interpreter dengan wildcard seperti `Bash(python*)`603> * Interpreter dengan wildcard seperti `Bash(python*)`

604> * Perintah run pengelola paket604> * Perintah run dari package manager

605> * Aturan allow `Agent`605> * Aturan allow `Agent`

606> * Aturan allow [`Monitor`](https://code.claude.com/docs/id/tools-reference#monitor-tool), karena Claude Code menjalankan perintah Monitor melalui shell606> * Aturan allow [`Monitor`](https://code.claude.com/docs/id/tools-reference#monitor-tool), karena Claude Code menjalankan perintah Monitor melalui shell

607>607>

608> Aturan sempit seperti `Bash(npm test)` tetap berlaku. Claude Code memulihkan aturan yang dihapus ketika Anda keluar dari auto mode. Sebelum v2.1.236, Claude Code membiarkan aturan allow `Monitor` tetap berlaku dalam auto mode, sehingga aturan yang cocok dengan seluruh tool menyetujui perintah Monitor tanpa tinjauan pengklasifikasi.608> Aturan sempit seperti `Bash(npm test)` tetap berlaku. Claude Code memulihkan aturan yang dihapus ketika Anda keluar dari auto mode. Sebelum v2.1.236, Claude Code membiarkan aturan allow `Monitor` tetap berlaku dalam auto mode, sehingga aturan yang mencocokkan seluruh tool menyetujui perintah Monitor tanpa peninjauan pengklasifikasi.

609>609>

610> Claude Code juga menjalankan `git status` sendiri sebelum perintah yang akan membuang pekerjaan yang belum di-commit, seperti `git reset --hard` atau `rm -rf`, dan menunjukkan kepada pengklasifikasi apakah ada pekerjaan yang di-stage, dimodifikasi, atau tidak dilacak. Claude Code melaporkan file yang tidak dilacak dalam pemeriksaan itu bahkan ketika konfigurasi git repositori menetapkan `status.showUntrackedFiles=no`.610> Claude Code juga menjalankan `git status` sendiri sebelum perintah yang akan membuang pekerjaan yang belum di-commit, seperti `git reset --hard` atau `rm -rf`, dan menunjukkan kepada pengklasifikasi apakah ada pekerjaan yang di-stage, dimodifikasi, atau tidak terlacak. Claude Code melaporkan file yang tidak terlacak dalam pemeriksaan tersebut bahkan ketika konfigurasi git repositori mengatur `status.showUntrackedFiles=no`.

611>611>

612> Dalam permintaan pengklasifikasi yang dikirim oleh Claude Code sendiri, pengklasifikasi melihat pesan pengguna, panggilan tool selain pencarian read-only seperti pembacaan file dan pencarian, dan konten CLAUDE.md Anda. Hasil tool dihapus dari permintaan tersebut, sehingga konten bermusuhan dalam file atau halaman web tidak dapat memanipulasi pengklasifikasi secara langsung.612> Dalam permintaan pengklasifikasi yang dikirim oleh Claude Code sendiri, pengklasifikasi melihat pesan pengguna, panggilan tool selain pencarian read-only seperti pembacaan file dan pencarian, serta konten CLAUDE.md Anda. Hasil tool dihapus dari permintaan tersebut, sehingga konten berbahaya dalam file atau halaman web tidak dapat memanipulasi pengklasifikasi secara langsung.

613>613>

614> Anda dapat memberi anotasi pada hasil suatu panggilan dengan [field `classifierContext` dari hook PostToolUse](https://code.claude.com/docs/id/hooks#annotate-a-result-for-the-auto-mode-classifier), yang dibaca pengklasifikasi sebagai konteks yang disediakan aplikasi. Field ini memerlukan Claude Code v2.1.236 atau lebih baru.614> Anda dapat memberi anotasi pada hasil suatu panggilan dengan [field `classifierContext` dari hook PostToolUse](https://code.claude.com/docs/id/hooks#annotate-a-result-for-the-auto-mode-classifier), yang dibaca pengklasifikasi sebagai konteks yang disediakan aplikasi. Field ini memerlukan Claude Code v2.1.236 atau yang lebih baru.

615>615>

616> Probe terpisah di sisi server memindai hasil tool yang masuk dan menandai konten mencurigakan sebelum Claude membacanya. Untuk informasi lebih lanjut tentang cara lapisan-lapisan ini bekerja bersama, lihat [pengumuman auto mode](https://claude.com/blog/auto-mode) dan [pembahasan mendalam dari tim engineering](https://www.anthropic.com/engineering/claude-code-auto-mode).616> Probe terpisah di sisi server memindai hasil tool yang masuk dan menandai konten mencurigakan sebelum Claude membacanya. Untuk informasi lebih lanjut tentang cara lapisan-lapisan ini bekerja bersama, lihat [pengumuman auto mode](https://claude.com/blog/auto-mode) dan [pembahasan mendalam engineering](https://www.anthropic.com/engineering/claude-code-auto-mode).

617 617 

618> [accordion] Bagaimana auto mode menangani subagent618> [accordion] Cara auto mode menangani subagent

619>619>

620> Pengklasifikasi memeriksa pekerjaan [subagent](https://code.claude.com/docs/id/sub-agents.md) di tiga titik:620> Pengklasifikasi memeriksa pekerjaan [subagent](https://code.claude.com/docs/id/sub-agents.md) pada tiga titik:

621>621>

622> 1. Sebelum subagent dimulai, deskripsi tugas yang didelegasikan dievaluasi, sehingga tugas yang tampak berbahaya diblokir pada saat spawn.622> 1. Sebelum subagent dimulai, deskripsi tugas yang didelegasikan dievaluasi, sehingga tugas yang tampak berbahaya diblokir saat pembuatan.

623> 2. Saat subagent berjalan, setiap tindakannya melalui [urutan keputusan](#how-the-classifier-evaluates-actions) yang sama seperti dalam sesi induk, dengan aturan blok dan allow yang sama. `permissionMode` apa pun dalam frontmatter subagent diabaikan.623> 2. Saat subagent berjalan, setiap tindakannya melewati [urutan keputusan](#how-the-classifier-evaluates-actions) yang sama seperti dalam sesi induk, dengan aturan blokir dan izin yang sama. `permissionMode` apa pun dalam frontmatter subagent diabaikan.

624> 3. Ketika subagent selesai, pengklasifikasi meninjau pekerjaannya dan laporan akhirnya sebelum induk membaca laporan tersebut. Ketika pengklasifikasi menandai pekerjaan atau laporan subagent, atau pemeriksaan keamanan API yang terpisah menolak tinjauan tersebut, laporan tetap disampaikan, diawali dengan peringatan keamanan. Ketika pengklasifikasi tidak tersedia untuk tinjauan, laporan tiba dengan catatan untuk memverifikasi pekerjaan subagent sebelum menindaklanjutinya.624> 3. Ketika subagent selesai, pengklasifikasi meninjau pekerjaan dan laporan akhirnya sebelum induk membaca laporan tersebut. Ketika pengklasifikasi menandai pekerjaan atau laporan subagent, atau pemeriksaan keamanan API terpisah menolak peninjauan, laporan tetap dikirimkan, dengan peringatan keamanan di bagian awal. Ketika pengklasifikasi tidak tersedia untuk peninjauan, laporan tiba dengan catatan untuk memverifikasi pekerjaan subagent sebelum bertindak berdasarkan laporan tersebut.

625 625 

626> [accordion] Biaya dan latensi626> [accordion] Biaya dan latensi

627>627>

628> Permintaan pengklasifikasi Claude Code dapat berjalan pada model selain pilihan `/model` Anda. Lihat [model mana yang digunakannya](#default-classifier-model).628> Permintaan pengklasifikasi Claude Code dapat berjalan pada model selain pilihan `/model` Anda. Lihat [model tempat permintaan tersebut berjalan](#default-classifier-model).

629>629>

630> Pada paket Enterprise dan pada akun yang menggunakan Claude API, [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry, panggilan pengklasifikasi dihitung dalam penggunaan token Anda. Setiap pemeriksaan mengirim sebagian transkrip ditambah tindakan yang tertunda, sehingga menambah satu perjalanan bolak-balik sebelum eksekusi. Pembacaan dan pengeditan di direktori kerja di luar jalur yang dilindungi melewati pengklasifikasi, sehingga overhead terutama berasal dari perintah shell dan operasi jaringan. Ketika server meninjau tindakan sebagai bagian dari permintaan model sesi, tidak ada panggilan pengklasifikasi terpisah yang dihitung; lihat [Tinjauan pengklasifikasi di sisi server](#server-side-classifier-review).630> Pada paket Enterprise dan pada akun yang menggunakan Claude API, [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), Amazon Bedrock, Agent Platform milik Google Cloud, atau Microsoft Foundry, panggilan pengklasifikasi dihitung dalam penggunaan token Anda. Setiap pemeriksaan mengirimkan sebagian transkrip ditambah tindakan yang tertunda, menambahkan satu perjalanan bolak-balik sebelum eksekusi. Pembacaan dan pengeditan di direktori kerja di luar jalur yang dilindungi melewati pengklasifikasi, sehingga overhead terutama berasal dari perintah shell dan operasi jaringan. Jika server meninjau tindakan sebagai bagian dari permintaan model sesi, tidak ada panggilan pengklasifikasi terpisah yang perlu dihitung; lihat [Peninjauan pengklasifikasi di sisi server](#server-side-classifier-review).

631>631>

632> Akses jaringan yang di-sandbox tidak menambahkan permintaan pengklasifikasi per koneksi. Pengklasifikasi menilai [host yang disebutkan oleh perintah](https://code.claude.com/docs/id/sandboxing.md#per-command-allowed-domains-in-auto-mode) bersama dengan perintah tersebut dalam satu tinjauan, dan Claude Code memeriksa setiap koneksi terhadap daftar yang disetujui tanpa memanggil pengklasifikasi lagi.632> Akses jaringan dalam sandbox tidak menambahkan permintaan pengklasifikasi per koneksi. Pengklasifikasi menilai [host yang disebutkan suatu perintah](https://code.claude.com/docs/id/sandboxing.md#per-command-allowed-domains-in-auto-mode) bersama dengan perintah tersebut dalam satu peninjauan, dan Claude Code memeriksa setiap koneksi terhadap daftar yang disetujui tanpa memanggil pengklasifikasi lagi.

633 633 

634## Izinkan hanya alat yang telah disetujui sebelumnya dengan mode dontAsk634## Izinkan hanya alat yang telah disetujui sebelumnya dengan mode dontAsk

635 635 


686* **Jika Anda menerima**: Claude Code menetapkan `skipDangerousModePermissionPrompt` ke `true` dalam `~/.claude/settings.json`, sehingga sesi berikutnya melewati dialog. Untuk melihat dialog lagi, hapus kunci dari file tersebut atau atur ke `false`. Referensi [`skipDangerousModePermissionPrompt`](https://code.claude.com/docs/id/settings-reference#skipdangerousmodepermissionprompt) mencantumkan file pengaturan lainnya di mana Anda atau organisasi Anda dapat mengaturnya.686* **Jika Anda menerima**: Claude Code menetapkan `skipDangerousModePermissionPrompt` ke `true` dalam `~/.claude/settings.json`, sehingga sesi berikutnya melewati dialog. Untuk melihat dialog lagi, hapus kunci dari file tersebut atau atur ke `false`. Referensi [`skipDangerousModePermissionPrompt`](https://code.claude.com/docs/id/settings-reference#skipdangerousmodepermissionprompt) mencantumkan file pengaturan lainnya di mana Anda atau organisasi Anda dapat mengaturnya.

687* **Jika Anda menolak**: Claude Code keluar.687* **Jika Anda menolak**: Claude Code keluar.

688 688 

689Jika Anda meneruskan [`--setting-sources`](https://code.claude.com/docs/id/cli-reference#cli-flags) tanpa `user`, dialog dapat muncul lagi meskipun Anda telah menerimanya sebelumnya. Untuk melewatinya, tambahkan `user`, seperti pada `--setting-sources user,project`.

690 

689Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) tidak ada dialog yang ditampilkan.691Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) tidak ada dialog yang ditampilkan.

690 692 

691[Sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) menghormati penerimaan Anda ketika penerimaan tersebut tercatat dalam pengaturan pengguna atau pengaturan terkelola:693[Sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) menghormati penerimaan Anda ketika penerimaan tersebut tercatat dalam pengaturan pengguna atau pengaturan terkelola:


728 730 

729## Jalur yang dilindungi731## Jalur yang dilindungi

730 732 

731Penulisan ke serangkaian jalur kecil tidak pernah disetujui otomatis, kecuali dalam mode `bypassPermissions` dan dalam sesi terminal interaktif mode plan dengan [bypass permissions](#skip-all-checks-with-bypasspermissions-mode) tersedia. Ini mencegah kerusakan yang tidak disengaja dari status repositori dan konfigurasi Claude sendiri.733Sekumpulan kecil jalur menyimpan status repositori dan konfigurasi Claude sendiri, sehingga setiap mode memiliki aturannya sendiri untuk penulisan ke jalur tersebut:

732 734 

733| Mode | Penulisan jalur yang dilindungi |735| Mode | Penulisan jalur yang dilindungi |

734| :- | :- |736| :- | :- |

735| `default`, `acceptEdits` | Diminta |737| `default`, `acceptEdits` | Diminta |

736| `plan` | Diizinkan dalam sesi terminal interaktif dengan [bypass permissions](#skip-all-checks-with-bypasspermissions-mode) tersedia. Jika tidak, dirutekan ke pengklasifikasi ketika [mode auto](#eliminate-prompts-with-auto-mode) tersedia selama perencanaan, dan diminta ketika tidak |738| `plan` | Diizinkan dalam sesi terminal interaktif dengan [bypass permissions](#skip-all-checks-with-bypasspermissions-mode) tersedia. Jika tidak, dirutekan ke pengklasifikasi ketika [mode auto](#eliminate-prompts-with-auto-mode) tersedia selama perencanaan, dan diminta ketika tidak |

737| `auto` | Dirutekan ke pengklasifikasi |739| `auto` | Dirutekan ke pengklasifikasi, yang memutuskan |

738| `dontAsk` | Ditolak |740| `dontAsk` | Ditolak |

739| `bypassPermissions` | Diizinkan |741| `bypassPermissions` | Diizinkan |

740 742 

permissions.md +5 −3

Details

578* `mcp__puppeteer__*` menggunakan sintaks wildcard dan juga cocok dengan semua tool dari server `puppeteer`578* `mcp__puppeteer__*` menggunakan sintaks wildcard dan juga cocok dengan semua tool dari server `puppeteer`

579* `mcp__puppeteer__puppeteer_navigate` cocok dengan tool `puppeteer_navigate` yang disediakan oleh server `puppeteer`579* `mcp__puppeteer__puppeteer_navigate` cocok dengan tool `puppeteer_navigate` yang disediakan oleh server `puppeteer`

580 580 

581Tulis aturan allow untuk tool MCP tanpa [specifier](#use-specifiers-for-fine-grained-control), yang oleh [pembaruan izin](https://code.claude.com/docs/id/hooks.md#permission-update-entries) disebut `ruleContent`. Jika Anda menambahkan specifier untuk hanya mengizinkan sebagian panggilan sebuah tool, aturan tersebut tidak cocok dengan panggilan apa pun. Untuk memblokir sebagian panggilan, lihat [Mencocokkan berdasarkan parameter input](#match-by-input-parameter).

582 

581Untuk `<server>`, tulis nama server sebagaimana nama tersebut muncul dalam nama tool server itu. Contoh-contoh berikut menunjukkan aturan yang perlu ditulis untuk nama dengan karakter khusus, server dari plugin, dan nama yang mengandung `__` atau berakhiran `_`:583Untuk `<server>`, tulis nama server sebagaimana nama tersebut muncul dalam nama tool server itu. Contoh-contoh berikut menunjukkan aturan yang perlu ditulis untuk nama dengan karakter khusus, server dari plugin, dan nama yang mengandung `__` atau berakhiran `_`:

582 584 

583* **Nama dengan karakter seperti `.` atau spasi**: karakter tersebut menjadi `_`, sehingga untuk server yang Anda konfigurasi sebagai `my.server`, tulis `mcp__my_server__*`585* **Nama dengan karakter seperti `.` atau spasi**: karakter tersebut menjadi `_`, sehingga untuk server yang Anda konfigurasi sebagai `my.server`, tulis `mcp__my_server__*`


632 634 

633Keputusan hook PreToolUse tidak melewati aturan izin. Claude Code mengevaluasi aturan deny dan ask terlepas dari apa yang dikembalikan hook PreToolUse: aturan deny yang cocok memblokir panggilan, dan aturan ask masih meminta bahkan ketika hook mengembalikan `"allow"` atau `"ask"`. Ini mempertahankan prioritas deny-first yang dijelaskan dalam [Kelola izin](#manage-permissions), termasuk aturan deny yang ditetapkan dalam pengaturan terkelola.635Keputusan hook PreToolUse tidak melewati aturan izin. Claude Code mengevaluasi aturan deny dan ask terlepas dari apa yang dikembalikan hook PreToolUse: aturan deny yang cocok memblokir panggilan, dan aturan ask masih meminta bahkan ketika hook mengembalikan `"allow"` atau `"ask"`. Ini mempertahankan prioritas deny-first yang dijelaskan dalam [Kelola izin](#manage-permissions), termasuk aturan deny yang ditetapkan dalam pengaturan terkelola.

634 636 

635Prioritas tersebut mencakup hook dalam file pengaturan dan dalam `hooks/hooks.json` plugin. Sebuah [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal yang menangani event [`tool.check`](https://code.claude.com/docs/id/plugins/mods/events#approve-or-refuse-a-tool-call-before-the-user-is-asked) memberikan jawabannya setelah hook `PreToolUse` selesai berjalan. Dengan [pengaturan terkelola](https://code.claude.com/docs/id/settings.md#check-what-your-organization-enforces) pada mesin, atau [`/login`](https://code.claude.com/docs/id/authentication#authentication-precedence) Team atau Enterprise sebagai kredensial sesi, hasil-hasil berikut tetap berlaku secara default ketika mod menyetujui panggilan:637Prioritas tersebut mencakup hook dalam file pengaturan dan dalam `hooks/hooks.json` plugin. Sebuah [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal yang menangani event [`tool.check`](https://code.claude.com/docs/id/plugins/mods/events#approve-or-refuse-a-tool-call-before-the-user-is-asked) memberikan jawabannya setelah hook `PreToolUse` selesai berjalan. Dengan [pengaturan terkelola](https://code.claude.com/docs/id/settings.md#check-what-your-organization-enforces) atau [file `managed-mcp.json`](https://code.claude.com/docs/id/managed-mcp#deploy-managed-mcp-json), atau [`/login`](https://code.claude.com/docs/id/authentication#authentication-precedence) Team atau Enterprise sebagai kredensial sesi, hasil-hasil berikut tetap berlaku secara default ketika mod menyetujui panggilan:

636 638 

637* Panggilan yang ditolak oleh aturan deny tetap ditolak, dan organisasi Anda dapat mengubahnya.639* Panggilan yang ditolak oleh aturan deny tetap ditolak.

638* Panggilan yang akan dimintakan persetujuan oleh aturan ask tetap meminta persetujuan Anda.640* Panggilan yang akan dimintakan persetujuan oleh aturan ask tetap meminta persetujuan Anda.

639* Panggilan yang akan dimintakan persetujuan oleh hook `PreToolUse` atau [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) tetap meminta persetujuan Anda.641* Panggilan yang akan dimintakan persetujuan oleh hook `PreToolUse` atau [`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) tetap meminta persetujuan Anda.

640* Panggilan yang diblokir oleh hook `PreToolUse` tetap diblokir, dari file pengaturan mana pun hook tersebut berasal.642* Panggilan yang diblokir oleh hook `PreToolUse` tetap diblokir, dari file pengaturan mana pun hook tersebut berasal.

641* Panggilan yang akan ditanyakan kepada [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) Anda atau [callback `canUseTool`](https://code.claude.com/docs/id/agent-sdk/user-input#handle-tool-approval-requests) Agent SDK tetap diajukan ke tool atau callback tersebut.643* Panggilan yang akan ditanyakan kepada [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) Anda atau [callback `canUseTool`](https://code.claude.com/docs/id/agent-sdk/user-input#handle-tool-approval-requests) Agent SDK tetap diajukan ke tool atau callback tersebut.

642 644 

643Tanpa pengaturan terkelola maupun `/login` Team atau Enterprise sebagai kredensial sesi, mod dapat menyetujui panggilan yang ditolak aturan deny atau diblokir hook `PreToolUse`. Sesi yang berjalan dengan kunci API atau [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/id/authentication#generate-a-long-lived-token) berumur panjang tidak menggunakan login tersebut, bahkan ketika login tersebut tersimpan.645Penyiapan Anda mungkin tidak memiliki pengaturan terkelola, file `managed-mcp.json`, maupun `/login` Team atau Enterprise sebagai kredensial sesi. Dalam penyiapan tersebut, mod dapat menyetujui panggilan yang ditolak aturan deny atau diblokir hook `PreToolUse`. Sesi yang berjalan dengan kunci API atau [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/id/authentication#generate-a-long-lived-token) berumur panjang tidak menggunakan login tersebut, bahkan ketika login tersebut tersimpan.

644 646 

645Dalam pengaturan tersebut, Anda tidak dimintai persetujuan ketika mod menyetujui panggilan yang akan dimintakan persetujuan oleh aturan ask, hook `PreToolUse`, atau `permissions.blockReadsOutsideWorkingDirectories`. `--permission-prompt-tool` atau callback `canUseTool` Anda juga tidak ditanya tentang panggilan yang disetujui mod. Auto mode, plan mode, dan mode `dontAsk` masing-masing menambahkan hasilnya sendiri dalam setiap pengaturan:647Dalam pengaturan tersebut, Anda tidak dimintai persetujuan ketika mod menyetujui panggilan yang akan dimintakan persetujuan oleh aturan ask, hook `PreToolUse`, atau `permissions.blockReadsOutsideWorkingDirectories`. `--permission-prompt-tool` atau callback `canUseTool` Anda juga tidak ditanya tentang panggilan yang disetujui mod. Auto mode, plan mode, dan mode `dontAsk` masing-masing menambahkan hasilnya sendiri dalam setiap pengaturan:

646 648 

Details

94* **stdin atau stdout bukan TTY, dan Anda tidak memberikan `-y` maupun `--accept-command`**: instalasi ditolak. Output menyatakan bahwa perintah hanya ditampilkan, dan exit code-nya `1`94* **stdin atau stdout bukan TTY, dan Anda tidak memberikan `-y` maupun `--accept-command`**: instalasi ditolak. Output menyatakan bahwa perintah hanya ditampilkan, dan exit code-nya `1`

95* **Claude menjalankan perintah melalui tool Bash-nya**: `-y` diabaikan. Jalankan perintah dari terminal Anda sendiri sebagai gantinya95* **Claude menjalankan perintah melalui tool Bash-nya**: `-y` diabaikan. Jalankan perintah dari terminal Anda sendiri sebagai gantinya

96 96 

97Instal plugin untuk semua orang yang meng-clone proyek:97Untuk membagikan plugin kepada semua orang yang meng-clone proyek, jalankan `claude plugin install` dengan `--scope project` lalu lakukan commit pada `.claude/settings.json`. Kemudian minta setiap orang [menambahkan marketplace](https://code.claude.com/docs/id/plugins/install.md#add-a-marketplace) dan [menjalankan perintah yang sama](https://code.claude.com/docs/id/plugins/loading.md#enabled-in-project-settings-but-not-installed) di clone mereka sendiri:

98 98 

99```bash theme={null}99```bash theme={null}

100claude plugin install formatter@my-marketplace --scope project100claude plugin install formatter@my-marketplace --scope project


333| `notes` | array of strings | Peringatan yang bukan kesalahan pemuatan, seperti masalah penulisan atau [paket yang tidak terinstal](https://code.claude.com/docs/id/plugins/loading.md#when-the-dependency-install-fails-or-is-skipped) |333| `notes` | array of strings | Peringatan yang bukan kesalahan pemuatan, seperti masalah penulisan atau [paket yang tidak terinstal](https://code.claude.com/docs/id/plugins/loading.md#when-the-dependency-install-fails-or-is-skipped) |

334| `errorDetails` | array of objects | Satu objek per entri `errors`, yang memberikan `type` diagnostiknya dan nama-nama yang dirujuknya, seperti plugin, marketplace, server, atau file. Memerlukan Claude Code v2.1.268 atau yang lebih baru |334| `errorDetails` | array of objects | Satu objek per entri `errors`, yang memberikan `type` diagnostiknya dan nama-nama yang dirujuknya, seperti plugin, marketplace, server, atau file. Memerlukan Claude Code v2.1.268 atau yang lebih baru |

335| `noteDetails` | array of objects | Objek detail yang sama untuk setiap entri `notes`. Memerlukan Claude Code v2.1.268 atau yang lebih baru |335| `noteDetails` | array of objects | Objek detail yang sama untuk setiap entri `notes`. Memerlukan Claude Code v2.1.268 atau yang lebih baru |

336| `hasUserConfig` | boolean | Ada dan bernilai `true` ketika plugin dimuat dan manifesnya mendeklarasikan [opsi `userConfig`](https://code.claude.com/docs/id/plugins/manifest-reference#user-configuration). Tidak ada untuk plugin yang gagal dimuat, apa pun yang dideklarasikan manifesnya. Nilai tersimpan tidak pernah disertakan. Memerlukan Claude Code v2.1.285 atau yang lebih baru |336| `hasUserConfig` | boolean | Ada dan bernilai `true` ketika plugin dimuat dan manifesnya mendeklarasikan [opsi `userConfig`](https://code.claude.com/docs/id/plugins/manifest-reference#user-configuration). Tidak ada untuk plugin yang gagal dimuat, apa pun yang dideklarasikan manifesnya. Memerlukan Claude Code v2.1.285 atau yang lebih baru |

337| `projectEnabled` | boolean | Apakah `.claude/settings.json` bersama milik proyek mengaktifkan plugin. Hanya instalasi marketplace. Memerlukan Claude Code v2.1.285 atau yang lebih baru |337| `projectEnabled` | boolean | Apakah `.claude/settings.json` bersama milik proyek mengaktifkan plugin. Hanya instalasi marketplace. Memerlukan Claude Code v2.1.285 atau yang lebih baru |

338| `dataDirSize` | object | Bersama `--data-size`, ukuran [direktori data tersimpan](#what-an-uninstall-deletes-and-keeps) plugin sebagai `bytes` dan `human`; tidak ada jika direktori tidak ada atau kosong. Hanya instalasi marketplace. Memerlukan Claude Code v2.1.285 atau yang lebih baru |338| `dataDirSize` | object | Bersama `--data-size`, ukuran [direktori data tersimpan](#what-an-uninstall-deletes-and-keeps) plugin sebagai `bytes` dan `human`; tidak ada jika direktori tidak ada atau kosong. Hanya instalasi marketplace. Memerlukan Claude Code v2.1.285 atau yang lebih baru |

339| `dataDirUnreadable` | boolean | Bersama `--data-size`, `true` ketika direktori data tersimpan ada tetapi tidak dapat diukur. Hanya instalasi marketplace. Memerlukan Claude Code v2.1.285 atau yang lebih baru |339| `dataDirUnreadable` | boolean | Bersama `--data-size`, `true` ketika direktori data tersimpan ada tetapi tidak dapat diukur. Hanya instalasi marketplace. Memerlukan Claude Code v2.1.285 atau yang lebih baru |

Details

169 169 

170### Muat plugin untuk satu sesi170### Muat plugin untuk satu sesi

171 171 

172Anda dapat memuat plugin untuk satu sesi dengan tiga cara: dari direktori atau arsip `.zip` di disk dengan `--plugin-dir`, dari URL dengan `--plugin-url`, atau dari variabel lingkungan ketika Anda tidak dapat menambahkan flag. Setiap plugin dimuat hanya untuk sesi itu, dan tidak ada yang ditulis ke settings Anda untuk itu. Ketika Anda mengedit file plugin selama sesi, jalankan `/reload-plugins` untuk memuat perubahan.172Anda dapat memuat plugin untuk satu sesi dengan tiga cara:

173 

174* Dari direktori atau arsip `.zip` di disk dengan `--plugin-dir`

175* Dari URL dengan `--plugin-url`

176* Dari environment variable ketika Anda tidak dapat menambahkan flag

177 

178Ketika Anda mengedit file plugin selama sesi, jalankan `/reload-plugins` untuk memuat perubahan.

173 179 

174#### Muat plugin dari direktori atau `.zip`180#### Muat plugin dari direktori atau `.zip`

175 181 

Details

123 123 

124Entry source ini tidak memerlukan akun git:124Entry source ini tidak memerlukan akun git:

125 125 

126* **`archive`**: zip yang diunduh melalui HTTPS. Pengguna tidak memerlukan `git` atau akun, hanya akses jaringan ke URL. Memerlukan Claude Code v2.1.224 atau lebih baru. Pin setiap archive dengan `sha256` sehingga Claude Code menolak unduhan yang berubah. Untuk mengirim kredensial dengan unduhan, lihat [Authenticate archive downloads](#authenticate-archive-downloads).126* **`archive`**: zip yang diunduh melalui HTTPS. Pengguna tidak memerlukan `git` atau akun, hanya akses jaringan ke URL. Pin setiap archive dengan `sha256` sehingga Claude Code menolak unduhan yang berubah. Untuk mengirim kredensial dengan unduhan, lihat [Authenticate archive downloads](#authenticate-archive-downloads).

127* **Repositori git publik**: Claude Code mengkloning source `url` atau `git-subdir` publik melalui HTTPS tanpa kredensial ketika entri memberikan URL `https://`. Untuk source `github`, atau source `git-subdir` yang ditulis sebagai `owner/repo`, beri tahu pengguna tanpa kunci SSH GitHub untuk mengatur `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`.127* **Repositori git publik**: Claude Code mengkloning source `url` atau `git-subdir` publik melalui HTTPS tanpa kredensial ketika entri memberikan URL `https://`. Untuk source `github`, atau source `git-subdir` yang ditulis sebagai `owner/repo`, beri tahu pengguna tanpa kunci SSH GitHub untuk mengatur `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`.

128 128 

129Tetap cantumkan `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1` dalam instruksi Anda meskipun `claude plugin install` berhasil tanpanya dari shell di mesin tanpa kunci SSH. Untuk source `github`, perintah tersebut dapat beralih ke HTTPS dengan sendirinya, sambil mencetak `SSH not configured, cloning via HTTPS`. Instalasi dari `/plugin` di dalam sesi dan pembaruan plugin tidak beralih ke HTTPS, sehingga tanpa variabel tersebut keduanya gagal bagi pengguna yang tidak memiliki kunci SSH GitHub.129Tetap cantumkan `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1` dalam instruksi Anda meskipun `claude plugin install` berhasil tanpanya dari shell di mesin tanpa kunci SSH. Untuk source `github`, perintah tersebut dapat beralih ke HTTPS dengan sendirinya, sambil mencetak `SSH not configured, cloning via HTTPS`. Instalasi dari `/plugin` di dalam sesi dan pembaruan plugin tidak beralih ke HTTPS, sehingga tanpa variabel tersebut keduanya gagal bagi pengguna yang tidak memiliki kunci SSH GitHub.

Details

132Cakupan instalasi plugin memutuskan siapa yang mendapatkan plugin dan file pengaturan mana yang mencatat sebagai diaktifkan:132Cakupan instalasi plugin memutuskan siapa yang mendapatkan plugin dan file pengaturan mana yang mencatat sebagai diaktifkan:

133 133 

134* **User scope**: plugin diaktifkan untuk Anda di setiap proyek di mesin ini. Entri masuk di `enabledPlugins` di `~/.claude/settings.json`.134* **User scope**: plugin diaktifkan untuk Anda di setiap proyek di mesin ini. Entri masuk di `enabledPlugins` di `~/.claude/settings.json`.

135* **Project scope**: plugin diaktifkan untuk semua orang yang bekerja di repository ini. Entri masuk di `.claude/settings.json`, yang Anda commit. Melakukan commit entri itu mengaktifkan plugin untuk kolaborator Anda tetapi tidak mengunduhnya ke mesin mereka, jadi setiap kolaborator juga menjalankan `claude plugin install <name>@<marketplace> --scope project` sekali; lihat [Enabled in project settings but not installed](https://code.claude.com/docs/id/plugins/loading.md#enabled-in-project-settings-but-not-installed).135* **Project scope**: plugin diaktifkan untuk semua orang yang bekerja di repositori ini. Entri masuk di `.claude/settings.json`, yang Anda commit. Melakukan commit entri itu mengaktifkan plugin untuk kolaborator Anda tetapi tidak mengunduhnya ke mesin mereka. Setiap kolaborator juga menjalankan `claude plugin install <name>@<marketplace> --scope project` sekali per clone; lihat [Enabled in project settings but not installed](https://code.claude.com/docs/id/plugins/loading.md#enabled-in-project-settings-but-not-installed).

136* **Local scope**: plugin diaktifkan untuk Anda di repository ini saja. Entri masuk di `.claude/settings.local.json`.136* **Local scope**: plugin diaktifkan untuk Anda di repository ini saja. Entri masuk di `.claude/settings.local.json`.

137 137 

138Beberapa plugin diatur oleh penulis mereka untuk mulai dimatikan, melalui bidang [`defaultEnabled`](https://code.claude.com/docs/id/plugins/manifest-reference#defaultenabled). Plugin seperti itu diinstal tetapi tetap mati sampai Anda mengaktifkannya dengan `claude plugin enable <name>` di shell Anda, atau dari tab **Installed** dari `/plugin` dalam sesi.138Beberapa plugin diatur oleh penulis mereka untuk mulai dimatikan, melalui bidang [`defaultEnabled`](https://code.claude.com/docs/id/plugins/manifest-reference#defaultenabled). Plugin seperti itu diinstal tetapi tetap mati sampai Anda mengaktifkannya dengan `claude plugin enable <name>` di shell Anda, atau dari tab **Installed** dari `/plugin` dalam sesi.

Details

173 173 

174Untuk keluar dari plugin yang diaktifkan proyek di mesin Anda, atur id ke `false` dalam `.claude/settings.local.json`, yang memiliki preseden lebih tinggi daripada file proyek.174Untuk keluar dari plugin yang diaktifkan proyek di mesin Anda, atur id ke `false` dalam `.claude/settings.local.json`, yang memiliki preseden lebih tinggi daripada file proyek.

175 175 

176### Diaktifkan dalam direktori `--add-dir` tetapi tidak dimuat

177 

178Claude Code membaca entri `enabledPlugins` bernilai `true` di salah satu file direktori yang ditambahkan hanya ketika sumber pengaturan untuk file tersebut aktif:

179 

180* **`.claude/settings.json`**: `project`

181* **`.claude/settings.local.json`**: `project` dan `local`

182 

183Periksa sumber pengaturan mana yang dimuat oleh sesi. Anda mengaturnya dengan [`--setting-sources`](https://code.claude.com/docs/id/cli-reference#cli-flags). Di CLI, `user`, `project`, dan `local` semuanya aktif secara default.

184 

185Misalnya, jika Anda menjalankan `claude --setting-sources user --add-dir ./shared` di shell Anda, Claude Code tidak membaca kedua file di `./shared`. Teruskan flag untuk file yang berisi `true`:

186 

187* **`settings.json`**: `--setting-sources user,project`

188* **`settings.local.json`**: `--setting-sources user,project,local`

189 

176### Diaktifkan dalam pengaturan proyek tetapi tidak terinstal190### Diaktifkan dalam pengaturan proyek tetapi tidak terinstal

177 191 

178Ketika satu-satunya `true` plugin dalam `.claude/settings.json` proyek, Claude Code tidak mengambilnya ke mesin di mana plugin tidak terinstal, kecuali entri marketplace-nya memiliki [sumber jalur relatif](https://code.claude.com/docs/id/plugins/marketplace-reference.md#plugin-sources) atau [direktori seed](https://code.claude.com/docs/id/plugins/org.md#seed-containers-and-ci) sudah menyimpannya. Sebagai gantinya, tab **Errors** `/plugin` menampilkan `Plugin "<name>" is enabled in project settings but isn't installed here`.192Secara default, plugin yang hanya diaktifkan dalam `.claude/settings.json` proyek Anda tidak dimuat saat sesi dimulai sampai Anda menginstalnya di mesin Anda. Dengan marketplace ada di mesin Anda, tab **Errors** `/plugin` menampilkan [`Plugin "<name>" is enabled in project settings but isn't installed here`](https://code.claude.com/docs/id/plugins/troubleshooting#plugin-is-enabled-in-project-settings-but-isnt-installed-here) atau [`Plugin "<name>" not cached at <path>`](https://code.claude.com/docs/id/plugins/troubleshooting#plugin-not-cached-at).

193 

194> [!NOTE]

195>

196> Jika tab tidak menampilkan kedua pesan tersebut, [tambahkan marketplace](https://code.claude.com/docs/id/plugins/install.md#add-a-marketplace) sebelum Anda menginstal. Temukan sumbernya dalam pengaturan `extraKnownMarketplaces` di `.claude/settings.json`, atau tanyakan kepada maintainer Anda.

197 

198Untuk menginstal, jalankan perintah ini di shell dari proyek, menggunakan kunci plugin dalam `enabledPlugins`:

199 

200```shell theme={null}

201claude plugin install <name>@<marketplace> --scope project

202```

203 

204Untuk memuat plugin, jalankan `/reload-plugins` dalam sesi Anda atau mulai sesi baru. Ulangi instalasi di setiap klona Anda, atau gunakan `--scope user` untuk mencakup semua proyek Anda.

205 

206Anda dapat memuat plugin tanpa instalasi dalam kasus-kasus berikut:

179 207 

180Plugin jalur relatif tidak memerlukan catatan install karena dimuat dari marketplace itu sendiri.208* **Dalam [direktori seed](https://code.claude.com/docs/id/plugins/org.md#seed-containers-and-ci)**: tidak ada yang perlu Anda jalankan

209* **Dicantumkan dengan [jalur relatif](https://code.claude.com/docs/id/plugins/marketplace-reference.md#plugin-sources) dalam marketplace yang Anda tambahkan dari jalur lokal**: tidak ada yang perlu Anda jalankan, karena plugin dimuat saat sesi dimulai

210* **Dicantumkan dengan jalur relatif, seperti `./plugins/formatter`, dalam `marketplace.json` dari marketplace git yang telah Anda tambahkan**: jalankan `/reload-plugins` untuk memuatnya hanya untuk sesi saat ini. Untuk memuatnya untuk satu [eksekusi `-p` non-interaktif](https://code.claude.com/docs/id/headless), atur [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL=1`](https://code.claude.com/docs/id/env-vars).

181 211 

182Claude Code mengambil plugin dengan sumber eksternal hanya ketika salah satu sumber ini mengaturnya ke `true`:212Claude Code mengambil plugin dengan sumber eksternal hanya ketika salah satu sumber ini mengatur plugin tersebut ke `true`:

183 213 

184* Pengaturan pengguna Anda214* Pengaturan pengguna Anda

185* `.claude/settings.local.json` yang tidak dilacak git215* `.claude/settings.local.json` yang tidak dilacak git

Details

115* **Errors**: entri yang Claude Code akan hapus saat memuat plugin, referensi `${user_config.KEY}` ke opsi yang tidak dideklarasikan manifest, dan `url` jarak jauh yang bukan URL absolut yang valid115* **Errors**: entri yang Claude Code akan hapus saat memuat plugin, referensi `${user_config.KEY}` ke opsi yang tidak dideklarasikan manifest, dan `url` jarak jauh yang bukan URL absolut yang valid

116* **Warnings**: `http://` atau `ws://` URL ke host non-loopback, dan nilai header yang terlihat seperti kredensial literal116* **Warnings**: `http://` atau `ws://` URL ke host non-loopback, dan nilai header yang terlihat seperti kredensial literal

117 117 

118## Fields118## Field

119 119 

120Tabel mencantumkan kunci tingkat atas dalam `plugin.json`. `name` adalah satu-satunya kunci yang diperlukan. Jika nama field adalah tautan, bagian yang ditautkan memiliki aturan lengkapnya.120Tabel berikut mencantumkan kunci tingkat atas dalam `plugin.json`. `name` adalah satu-satunya kunci yang wajib. Jika nama field berupa tautan, bagian yang ditautkan memuat aturan lengkapnya.

121 121 

122Untuk kunci komponen seperti `commands` dan `hooks`, [Component path forms](#component-path-forms) menunjukkan setiap bentuk yang diterima dengan contoh, dan setiap path mengikuti [path rules](#path-rules) untuk awalan `./`, ekstensi, dan containment.122Untuk kunci komponen seperti `commands` dan `hooks`, [Bentuk path komponen](#component-path-forms) menunjukkan setiap bentuk yang diterima beserta contohnya, dan setiap path mengikuti [aturan path](#path-rules) untuk prefiks `./`, ekstensi, dan batasan cakupan.

123 123 

124| Field | Type | Description |124| Field | Tipe | Deskripsi |

125| :- | :- | :- |125| :- | :- | :- |

126| `$schema` | String | JSON Schema URL untuk autocomplete editor. Claude Code mengabaikannya saat waktu muat |126| `$schema` | String | URL JSON Schema untuk pelengkapan otomatis editor. Claude Code mengabaikannya saat pemuatan |

127| [`name`](#name) | String | Identifier plugin, diperlukan. Gunakan kebab-case. Setiap komponen di-namespace di bawahnya |127| [`name`](#name) | String | Pengenal plugin, wajib. Gunakan kebab-case. Setiap komponen diberi namespace di bawahnya |

128| [`displayName`](#displayname) | String | Nama yang ditampilkan di UI sebagai pengganti `name` |128| [`displayName`](#displayname) | String | Nama yang ditampilkan di UI sebagai pengganti `name` |

129| [`version`](#version) | String | String versi. Menetapkannya membuat pengguna tetap pada versi itu sampai Anda mengubahnya |129| [`version`](#version) | String | String versi. Menetapkannya membuat pengguna tetap pada versi tersebut hingga Anda mengubahnya |

130| `description` | String | Penjelasan singkat tentang apa yang disediakan plugin |130| `description` | String | Penjelasan singkat tentang apa yang disediakan plugin |

131| `author` | Object | `name`, yang diperlukan, ditambah `email` dan `url` opsional |131| `author` | Object | `name`, yang wajib, ditambah `email` dan `url` opsional |

132| `homepage` | String | URL dokumentasi. Harus diparse sebagai URL, atau plugin gagal dimuat |132| `homepage` | String | URL dokumentasi. Harus dapat diurai sebagai URL, jika tidak plugin gagal dimuat |

133| `repository` | String | URL repositori sumber. Tidak divalidasi |133| `repository` | String | URL repositori sumber. Tidak divalidasi |

134| `license` | String | Identifier SPDX seperti `MIT` atau `Apache-2.0` |134| `license` | String | Pengenal SPDX seperti `MIT` atau `Apache-2.0` |

135| `keywords` | Array of strings | Tag penemuan |135| `keywords` | Array of strings | Tag penemuan |

136| [`metadata`](#metadata) | Object | Objek bentuk bebas untuk data Anda sendiri. Claude Code tidak membacanya |136| [`metadata`](#metadata) | Object | Objek bebas untuk data Anda sendiri. Claude Code tidak membacanya |

137| [`icon`](#directory-listing-fields) | String | Ikon untuk daftar plugin di direktori Anthropic. Claude Code tidak membacanya |137| [`icon`](#directory-listing-fields) | String | Ikon untuk listing plugin di direktori Anthropic. Claude Code tidak membacanya |

138| [`documentationUrl`](#directory-listing-fields) | String | Tautan dokumentasi untuk daftar plugin di direktori Anthropic. Claude Code tidak membacanya |138| [`documentationUrl`](#directory-listing-fields) | String | Tautan dokumentasi untuk listing plugin di direktori Anthropic. Claude Code tidak membacanya |

139| [`supportUrl`](#directory-listing-fields) | String | Tautan dukungan untuk daftar plugin di direktori Anthropic. Claude Code tidak membacanya |139| [`supportUrl`](#directory-listing-fields) | String | Tautan dukungan untuk listing plugin di direktori Anthropic. Claude Code tidak membacanya |

140| [`privacyPolicyUrl`](#directory-listing-fields) | String | Tautan kebijakan privasi untuk daftar plugin di direktori Anthropic. Claude Code tidak membacanya |140| [`privacyPolicyUrl`](#directory-listing-fields) | String | Tautan kebijakan privasi untuk listing plugin di direktori Anthropic. Claude Code tidak membacanya |

141| [`termsOfServiceUrl`](#directory-listing-fields) | String | Tautan ketentuan layanan untuk daftar plugin di direktori Anthropic. Claude Code tidak membacanya |141| [`termsOfServiceUrl`](#directory-listing-fields) | String | Tautan ketentuan layanan untuk listing plugin di direktori Anthropic. Claude Code tidak membacanya |

142| [`defaultEnabled`](#defaultenabled) | Boolean | Apakah plugin dimulai diaktifkan saat pengguna belum menetapkannya. Default ke `true` |142| [`defaultEnabled`](#defaultenabled) | Boolean | Apakah plugin dimulai dalam keadaan aktif ketika pengguna belum mengaturnya. Default-nya `true` |

143| [`dependencies`](#dependencies) | Array of strings or objects | Plugin yang harus diaktifkan agar yang ini berfungsi |143| [`dependencies`](#dependencies) | Array of strings or objects | Plugin yang harus diaktifkan agar plugin ini berfungsi |

144| [`settings`](#settings) | Object | Pengaturan yang Claude Code terapkan saat plugin diaktifkan. Hanya `agent` dan `subagentStatusLine` yang berlaku |144| [`settings`](#settings) | Object | Pengaturan yang diterapkan Claude Code selama plugin aktif. Hanya `agent` dan `subagentStatusLine` yang berlaku |

145| [`userConfig`](#user-configuration) | Object | Nilai yang Claude Code minta kepada pengguna saat plugin diaktifkan |145| [`userConfig`](#user-configuration) | Object | Nilai yang diminta Claude Code dari pengguna ketika plugin diaktifkan |

146| `types` | Path | File `.d.ts` yang mendeklarasikan nilai `$.state` dan kata benda `$` dari [mod](https://code.claude.com/docs/id/plugins/mods/reference.md#files) |146| `types` | Path | File `.d.ts` yang mendeklarasikan nilai `$.state` dan nomina `$` dari sebuah [mod](https://code.claude.com/docs/id/plugins/mods/reference.md#files) |

147| [`channels`](#channels) | Array of objects | Saluran pesan yang disediakan plugin, masing-masing terikat ke salah satu server MCP-nya |147| [`channels`](#channels) | Array of objects | Channel pesan yang disediakan plugin, masing-masing terikat ke salah satu server MCP-nya |

148| `skills` | Path, or array of paths | Direktori untuk dipindai untuk skills, masing-masing direktori folder `<name>/SKILL.md` atau satu folder yang menyimpan `SKILL.md` secara langsung. `"."` menamai root plugin. Menambah pemindaian default `skills/` |148| `skills` | Path, or array of paths | Direktori yang dipindai untuk skill, masing-masing berupa direktori berisi folder `<name>/SKILL.md` atau satu folder yang langsung memuat `SKILL.md`. `"."` menunjuk root plugin. Menambah pemindaian default `skills/` |

149| [`commands`](#commands) | Path, array of paths, or object | File perintah `.md` datar, direktori mereka, atau peta objek nama perintah ke `source` atau `content`. Menggantikan pemindaian default `commands/` |149| [`commands`](#commands) | Path, array of paths, or object | File perintah `.md` datar, direktori yang berisi file tersebut, atau peta objek dari nama perintah ke `source` atau `content`. Menggantikan pemindaian default `commands/` |

150| `agents` | Path, or array of paths | File agent `.md`. Direktori tidak diterima. Menggantikan pemindaian default `agents/` |150| `agents` | Path, or array of paths | File agent `.md`. Direktori tidak diterima. Menggantikan pemindaian default `agents/` |

151| [`hooks`](#hooks) | Path, object, or array of either | File hook `.json` atau config hook inline. Dimuat bersama dengan `hooks/hooks.json` |151| [`hooks`](#hooks) | Path, object, or array of either | File hook `.json` atau konfigurasi hook inline. Dimuat bersama `hooks/hooks.json` |

152| [`mcpServers`](#mcpservers) | Path, object, or array of either | File config MCP `.json`, bundle `.mcpb` atau `.dxt`, atau config server inline yang di-key berdasarkan nama. Dimuat bersama dengan `.mcp.json`; nama server yang dideklarasikan kemudian menggantikan yang sebelumnya |152| [`mcpServers`](#mcpservers) | Path, object, or array of either | File konfigurasi MCP `.json`, bundel `.mcpb` atau `.dxt`, atau konfigurasi server inline yang dikunci berdasarkan nama. Dimuat bersama `.mcp.json`; nama server yang dideklarasikan belakangan menggantikan yang lebih awal |

153| [`lspServers`](#lspservers) | Path, object, or array of either | File config LSP `.json` atau config server inline yang di-key berdasarkan nama. Dimuat bersama dengan `.lsp.json` |153| [`lspServers`](#lspservers) | Path, object, or array of either | File konfigurasi LSP `.json` atau konfigurasi server inline yang dikunci berdasarkan nama. Dimuat bersama `.lsp.json` |

154| `outputStyles` | Path, or array of paths | File gaya output atau direktori. Menggantikan pemindaian default `output-styles/` |154| `outputStyles` | Path, or array of paths | File atau direktori gaya output. Menggantikan pemindaian default `output-styles/` |

155| `workflows` | Path, or array of paths | File [Workflow](https://code.claude.com/docs/id/workflows.md#distribute-a-workflow-in-a-plugin) `.js` atau direktori. Menggantikan pemindaian default `workflows/` |155| `workflows` | Path, or array of paths | File atau direktori [workflow](https://code.claude.com/docs/id/workflows.md#distribute-a-workflow-in-a-plugin) `.js`. Menggantikan pemindaian default `workflows/` |

156| `experimental` | Object | Kontainer untuk `themes`, `monitors`, dan `evals`, yang bentuk manifestnya mungkin masih berubah |156| `experimental` | Object | Wadah untuk `themes`, `monitors`, dan `evals`, yang bentuk manifesnya masih dapat berubah |

157| `experimental.themes` | Path, or array of paths | File tema atau direktori. Menggantikan pemindaian default `themes/`. Kunci `themes` tingkat atas masih dimuat, dengan peringatan `claude plugin validate` |157| `experimental.themes` | Path, or array of paths | File atau direktori tema. Menggantikan pemindaian default `themes/`. Kunci `themes` tingkat atas tetap dimuat, dengan peringatan `claude plugin validate` |

158| [`experimental.monitors`](#monitors) | Path, or inline array | File `.json` yang menyimpan array monitors, atau array itu sendiri. Default ke `monitors/monitors.json`. Kunci `monitors` tingkat atas masih dimuat, dengan peringatan `claude plugin validate`. Monitor [tidak dimulai dengan flag `-p`](https://code.claude.com/docs/id/plugins/components#monitors) |158| [`experimental.monitors`](#monitors) | Path, or inline array | File `.json` yang memuat array monitor, atau array itu sendiri. Default-nya `monitors/monitors.json`. Kunci `monitors` tingkat atas tetap dimuat, dengan peringatan `claude plugin validate`. Monitor [tidak dimulai dengan flag `-p`](https://code.claude.com/docs/id/plugins/components#monitors) |

159| `experimental.evals` | Path, or array of paths | Direktori yang menyimpan [eval cases](https://code.claude.com/docs/id/plugin-evals.md#use-a-different-eval-directory) plugin saat bukan default `evals/`. `claude plugin eval --eval-dir` menimpanya |159| `experimental.evals` | Path, or array of paths | Direktori yang memuat [kasus eval](https://code.claude.com/docs/id/plugin-evals.md#use-a-different-eval-directory) plugin ketika bukan default `evals/`. `claude plugin eval --eval-dir` menimpanya |

160 160 

161Di kolom Type, path adalah string relatif terhadap root plugin, seperti `"./custom/commands"`.161Di kolom Tipe, path adalah string yang relatif terhadap root plugin, seperti `"./custom/commands"`.

162 162 

163### `name`163### `name`

164 164 

165Identifier plugin. Harus non-kosong, tanpa spasi, `@`, `:`, pemisah path, karakter kontrol, atau karakter pemformatan bidirectional; gunakan kebab-case.165Pengenal plugin. Nilainya tidak boleh kosong, tanpa spasi, `@`, `:`, pemisah path, karakter kontrol, atau karakter pemformatan dua arah; gunakan kebab-case.

166 166 

167Claude Code mem-namespace setiap komponen di bawahnya, jadi agent `reviewer` dalam plugin `deploy-tools` muncul sebagai `deploy-tools:reviewer`.167Claude Code memberi namespace pada setiap komponen di bawahnya, sehingga agent `reviewer` di plugin `deploy-tools` muncul sebagai `deploy-tools:reviewer`.

168 168 

169`claude plugin validate` juga memeriksa bahwa nama tidak lulus sebagai salah satu plugin Anthropic sendiri. Pemeriksaan mengabaikan kasus dan memperlakukan setiap rangkaian pemisah sebagai satu:169`claude plugin validate` juga memeriksa bahwa nama tersebut tidak menyamar sebagai salah satu plugin milik Anthropic sendiri. Pemeriksaan ini mengabaikan huruf besar/kecil dan memperlakukan rangkaian pemisah apa pun sebagai satu:

170 170 

171| Name | Result |171| Nama | Hasil |

172| :- | :- |172| :- | :- |

173| Dimulai dengan `claude-`, `anthropic-`, `anthropics-`, atau `cc-plugin-` | Error |173| Diawali dengan `claude-`, `anthropic-`, `anthropics-`, atau `cc-plugin-` | Error |

174| Adalah `claude`, `anthropic`, `anthropics`, `claude-code`, atau `claude-mods` | Error |174| Berupa `claude`, `anthropic`, `anthropics`, `claude-code`, atau `claude-mods` | Error |

175| Menempatkan `official` di samping `claude` atau `anthropic`, seperti `official-claude-tools` | Error |175| Menempatkan `official` di samping `claude` atau `anthropic`, seperti `official-claude-tools` | Error |

176| Memiliki `claude`, `anthropic`, atau `anthropics` sebagai kata utuh di mana pun, seperti `mcp-for-claude` | Warning |176| Memuat `claude`, `anthropic`, atau `anthropics` sebagai kata utuh di tempat lain, seperti `mcp-for-claude` | Peringatan |

177 177 

178Error berbunyi `Plugin name "<name>" is reserved: it passes as one of Anthropic's own`, dan warning berbunyi `Plugin name "<name>" reads as one of Anthropic's own`. `claude plugin init` dan `claude plugin tag` menolak nama yang menghasilkan error. Claude Code masih menginstal dan memuat plugin yang namanya ditolak oleh perintah-perintah tersebut.178Pesan error-nya berbunyi `Plugin name "<name>" is reserved: it passes as one of Anthropic's own`, dan peringatannya berbunyi `Plugin name "<name>" reads as one of Anthropic's own`. `claude plugin init` dan `claude plugin tag` menolak nama yang memicu error tersebut. Claude Code tetap menginstal dan memuat plugin yang namanya ditolak oleh keduanya.

179 179 

180### `displayName`180### `displayName`

181 181 

182Nama yang ditampilkan di UI sebagai pengganti `name`. Mungkin berisi spasi dan casing apa pun, dan tidak digunakan untuk namespacing atau pencarian.182Nama yang ditampilkan di UI sebagai pengganti `name`. Nama ini boleh memuat spasi dan huruf besar/kecil apa pun, dan tidak digunakan untuk namespace atau pencarian.

183 183 

184Untuk plugin yang diinstal dari marketplace, `displayName` di [entri marketplace](https://code.claude.com/docs/id/plugins/marketplace-reference.md#plugin-entries) mengambil alih nilai ini.184Untuk plugin yang diinstal dari marketplace, `displayName` pada [entri marketplace](https://code.claude.com/docs/id/plugins/marketplace-reference.md#plugin-entries) diutamakan daripada nilai ini.

185 185 

186### `version`186### `version`

187 187 

188String versi, tidak diperiksa terhadap semver. Menetapkannya mengunci plugin ke versi itu sampai Anda mengubahnya; lihat [Versions and updates](https://code.claude.com/docs/id/plugins/loading.md#versions-and-updates). Plugin dengan [`command` source](https://code.claude.com/docs/id/plugins/marketplace-reference), plugin dari [marketplace yang dihosting di claude.ai](https://code.claude.com/docs/id/plugins/install.md#add-from-claude-ai), dan plugin [dimuat di tempat](https://code.claude.com/docs/id/plugins/loading.md#find-plugins-on-disk) dari marketplace yang ditambahkan dari path lokal tidak dikunci oleh field ini.188String versi, tidak diperiksa terhadap semver. Menetapkannya akan mengunci plugin pada versi tersebut hingga Anda mengubahnya; lihat [Versi dan pembaruan](https://code.claude.com/docs/id/plugins/loading.md#versions-and-updates). Plugin dengan [sumber `command`](https://code.claude.com/docs/id/plugins/marketplace-reference), plugin dari [marketplace yang di-host di claude.ai](https://code.claude.com/docs/id/plugins/install.md#add-from-claude-ai), dan plugin yang [dimuat di tempat](https://code.claude.com/docs/id/plugins/loading.md#find-plugins-on-disk) dari marketplace yang ditambahkan dari path lokal tidak dikunci oleh field ini.

189 189 

190### `metadata`190### `metadata`

191 191 

192Objek bentuk bebas untuk data Anda sendiri, seperti field katalog atau hak. Claude Code tidak membacanya. Memerlukan Claude Code v2.1.222 atau lebih baru.192Objek bebas untuk data Anda sendiri, seperti field katalog atau hak akses. Claude Code tidak membacanya.

193 193 

194### Field daftar direktori194### Field listing direktori

195 195 

196Direktori Anthropic membaca field `icon`, `documentationUrl`, `supportUrl`, `privacyPolicyUrl`, dan `termsOfServiceUrl` dari `plugin.json` untuk daftar plugin Anda saat Anda [mengirimkan plugin](https://code.claude.com/docs/id/plugins/publish.md#submit-to-anthropics-directory). Claude Code mengabaikannya saat waktu muat. Tetapkan field tersebut hanya di `plugin.json`. Dalam [entri marketplace](#marketplace-entries-and-the-manifest), `claude plugin validate` melaporkan masing-masing sebagai field yang tidak dikenal.196Direktori Anthropic membaca field `icon`, `documentationUrl`, `supportUrl`, `privacyPolicyUrl`, dan `termsOfServiceUrl` dari `plugin.json` untuk listing plugin Anda ketika Anda [mengirimkan plugin](https://code.claude.com/docs/id/plugins/publish.md#submit-to-anthropics-directory). Claude Code mengabaikannya saat pemuatan. Tetapkan field tersebut hanya di `plugin.json`. Dalam [entri marketplace](#marketplace-entries-and-the-manifest), `claude plugin validate` melaporkan masing-masing sebagai field yang tidak dikenal.

197 197 

198Tetapkan `icon` ke path file gambar di dalam plugin, seperti `./logo.png`, dan masing-masing dari keempat field URL ke URL `https://`.198Tetapkan `icon` ke path file gambar di dalam plugin, seperti `./logo.png`, dan masing-masing dari keempat field URL ke URL `https://`.

199 199 

200> [!NOTE]200> [!NOTE]

201>201>

202> `claude plugin validate` tidak melaporkan field ini dalam `plugin.json` sebagai tidak dikenal pada Claude Code v2.1.281 atau lebih baru. Versi sebelumnya mencetak peringatan `Unknown field` untuk masing-masing, sehingga eksekusi `--strict` gagal pada versi tersebut.202> `claude plugin validate` tidak melaporkan field-field ini di `plugin.json` sebagai tidak dikenal pada Claude Code v2.1.281 atau yang lebih baru. Versi sebelumnya mencetak peringatan `Unknown field` untuk masing-masing field, sehingga eksekusi `--strict` gagal pada versi tersebut.

203 203 

204### `defaultEnabled`204### `defaultEnabled`

205 205 

206Apakah plugin dimulai diaktifkan saat pengguna belum menetapkannya di [`enabledPlugins`](https://code.claude.com/docs/id/settings-reference#enabledplugins). Default ke `true`. Plugin yang diaktifkan plugin tergantung dimulai diaktifkan terlepas dari itu. Field yang sama di entri marketplace menimpanya.206Apakah plugin dimulai dalam keadaan aktif ketika pengguna belum mengaturnya di [`enabledPlugins`](https://code.claude.com/docs/id/settings-reference#enabledplugins). Default-nya `true`. Plugin yang menjadi dependensi dari plugin yang aktif tetap dimulai dalam keadaan aktif apa pun nilainya. Field yang sama di entri marketplace menimpa field ini.

207 207 

208Setelah entri `enabledPlugins` pengguna ditulis, itu bertahan di seluruh pembaruan plugin, jadi mengubah `defaultEnabled` dalam rilis kemudian tidak mengubah pengaturan untuk pengguna yang ada.208Setelah entri `enabledPlugins` pengguna ditulis, entri tersebut tetap bertahan di seluruh pembaruan plugin, sehingga mengubah `defaultEnabled` di rilis berikutnya tidak mengubah pengaturan untuk pengguna yang sudah ada.

209 209 

210### `dependencies`210### `dependencies`

211 211 

212Plugin yang harus diaktifkan agar yang ini berfungsi. Setiap entri adalah `"name"`, `"name@marketplace"`, atau `{ "name": "...", "marketplace": "...", "version": "..." }`. Nama bare diselesaikan terhadap marketplace plugin ini sendiri. Lihat [dependency constraints](https://code.claude.com/docs/id/plugins/dependencies.md).212Plugin yang harus diaktifkan agar plugin ini berfungsi. Setiap entri berupa `"name"`, `"name@marketplace"`, atau `{ "name": "...", "marketplace": "...", "version": "..." }`. Nama tanpa kualifikasi di-resolve ke marketplace milik plugin ini sendiri. Lihat [batasan dependensi](https://code.claude.com/docs/id/plugins/dependencies.md).

213 213 

214### `settings`214### `settings`

215 215 

216Pengaturan yang Claude Code terapkan saat plugin diaktifkan. Hanya `agent` dan `subagentStatusLine` yang berlaku; kunci lain dihapus saat muat. `settings.json` di root plugin mengambil alih kunci ini. Lihat [Default settings](https://code.claude.com/docs/id/plugins/components.md#default-settings).216Pengaturan yang diterapkan Claude Code selama plugin aktif. Hanya `agent` dan `subagentStatusLine` yang berlaku; kunci lainnya dibuang saat pemuatan. `settings.json` di root plugin diutamakan daripada kunci ini. Lihat [Pengaturan default](https://code.claude.com/docs/id/plugins/components.md#default-settings).

217 217 

218## Component path forms218## Component path forms

219 219 


394 394 

395Setiap path komponen dalam manifest relatif terhadap root plugin dan harus dimulai dengan `./`. Path seperti `commands/foo.md` gagal validasi. `skills` dan `mcpServers` masing-masing menerima satu bentuk di luar aturan itu:395Setiap path komponen dalam manifest relatif terhadap root plugin dan harus dimulai dengan `./`. Path seperti `commands/foo.md` gagal validasi. `skills` dan `mcpServers` masing-masing menerima satu bentuk di luar aturan itu:

396 396 

397* **`skills`**: juga menerima `"."`. Baik `"."` maupun `"./"` menunjukkan root plugin. Sebelum v2.1.221, `"."` gagal validasi manifest, jadi gunakan `"./"` saat plugin harus dimuat di versi sebelumnya397* **`skills`**: juga menerima `"."`. Baik `"."` maupun `"./"` menunjukkan root plugin

398* **`mcpServers`**: juga menerima URL bundle `https://`398* **`mcpServers`**: juga menerima URL bundle `https://`

399 399 

400`experimental.evals` bukan path komponen, sehingga aturan di bagian ini tidak mencakupnya, dan `claude plugin eval` memeriksa nilainya saat dijalankan. Nilai ini menamai direktori di bawah root plugin, seperti `"quality/evals"`, dengan atau tanpa awalan `./`. Dengan array, hanya entri pertama yang digunakan. Untuk nilai apa yang diterima dan apa yang terjadi dengan nilai yang tidak dapat digunakan, lihat [Use a different eval directory](https://code.claude.com/docs/id/plugin-evals.md#use-a-different-eval-directory).400`experimental.evals` bukan path komponen, sehingga aturan di bagian ini tidak mencakupnya, dan `claude plugin eval` memeriksa nilainya saat dijalankan. Nilai ini menamai direktori di bawah root plugin, seperti `"quality/evals"`, dengan atau tanpa awalan `./`. Dengan array, hanya entri pertama yang digunakan. Untuk nilai apa yang diterima dan apa yang terjadi dengan nilai yang tidak dapat digunakan, lihat [Use a different eval directory](https://code.claude.com/docs/id/plugin-evals.md#use-a-different-eval-directory).


403 403 

404Setiap path komponen harus diselesaikan di dalam root plugin dan harus ada. `claude plugin validate` memeriksa path di bawah setiap kunci komponen:404Setiap path komponen harus diselesaikan di dalam root plugin dan harus ada. `claude plugin validate` memeriksa path di bawah setiap kunci komponen:

405 405 

406* **Containment**: path yang diselesaikan di luar root plugin tidak dimuat, dan tab **Errors** `/plugin` menampilkan `<component> path escapes plugin directory: <path>`. Path yang berisi `..` adalah kasus biasa, dan `claude plugin validate` melaporkan kesalahan `Path contains ".." which could be a path traversal attempt`406* **Containment**: path yang diselesaikan di luar root plugin tidak dimuat, dan tab **Errors** `/plugin` menampilkan `<component> path escapes plugin directory: <path>`. Path yang berisi `..` adalah kasus biasa, dan `claude plugin validate` melaporkan kesalahan `Path contains ".." which could be a path traversal attempt`. Untuk file `mcpServers` atau `lspServers`, pesan [`path not read`](https://code.claude.com/docs/id/errors#server-file-path-not-read) berarti path tersebut absolut atau berisi `..`

407* **Existence**: path yang tidak ada tidak dimuat, dan tab **Errors** `/plugin` menampilkan `<component> path not found: <path>`. `claude plugin validate` melaporkan kesalahan `Path not found`407* **Existence**: path yang tidak ada tidak dimuat, dan tab **Errors** `/plugin` menampilkan `<component> path not found: <path>`. `claude plugin validate` melaporkan kesalahan `Path not found`

408 408 

409Untuk path `outputStyles`, `lspServers`, `monitors`, dan `themes`, pemeriksaan `claude plugin validate` memerlukan Claude Code v2.1.283 atau lebih baru.409Untuk path `outputStyles`, `lspServers`, `monitors`, dan `themes`, pemeriksaan `claude plugin validate` memerlukan Claude Code v2.1.283 atau lebih baru.

Details

94| `dependencies` | array | Plugin yang harus diaktifkan agar plugin ini berfungsi. Setiap item adalah `"name"`, `"name@marketplace"`, atau objek. Lihat [Dependensi plugin](https://code.claude.com/docs/id/plugins/dependencies.md) |94| `dependencies` | array | Plugin yang harus diaktifkan agar plugin ini berfungsi. Setiap item adalah `"name"`, `"name@marketplace"`, atau objek. Lihat [Dependensi plugin](https://code.claude.com/docs/id/plugins/dependencies.md) |

95| `defaultEnabled` | boolean | Default `true`. Apakah plugin dimulai diaktifkan ketika pengguna belum menetapkannya dalam [`enabledPlugins`](https://code.claude.com/docs/id/settings-reference#enabledplugins). Nilai entri diutamakan daripada `plugin.json` |95| `defaultEnabled` | boolean | Default `true`. Apakah plugin dimulai diaktifkan ketika pengguna belum menetapkannya dalam [`enabledPlugins`](https://code.claude.com/docs/id/settings-reference#enabledplugins). Nilai entri diutamakan daripada `plugin.json` |

96| `displayName` | string | Nama yang dapat dibaca manusia ditampilkan di UI. Ketika baik entri maupun `plugin.json` plugin tidak menetapkan satu, pengguna melihat `name` plugin |96| `displayName` | string | Nama yang dapat dibaca manusia ditampilkan di UI. Ketika baik entri maupun `plugin.json` plugin tidak menetapkan satu, pengguna melihat `name` plugin |

97| `metadata` | object | Objek bentuk bebas untuk field Anda sendiri. Claude Code tidak membacanya. Memerlukan Claude Code v2.1.222 atau lebih baru |97| `metadata` | object | Objek bentuk bebas untuk field Anda sendiri. Claude Code tidak membacanya |

98| `headers` | object | Header HTTP yang dikirim Claude Code saat mengunduh [arsip](#archive-plugin-source) entri ini. Header yang ditetapkan di sini menggantikan header dengan nama yang sama dari [`headers`](#fields-by-type) sumber marketplace. Memerlukan Claude Code v2.1.238 atau lebih baru |98| `headers` | object | Header HTTP yang dikirim Claude Code saat mengunduh [arsip](#archive-plugin-source) entri ini. Header yang ditetapkan di sini menggantikan header dengan nama yang sama dari [`headers`](#fields-by-type) sumber marketplace. Memerlukan Claude Code v2.1.238 atau lebih baru |

99| `headersHelper` | string | Perintah yang mencetak header unduhan arsip entri ini sebagai satu objek JSON, untuk kredensial yang kedaluwarsa. Entri juga harus menetapkan [`"strict": false`](#strict-mode). Memerlukan Claude Code v2.1.238 atau lebih baru. Lihat [Autentikasi unduhan arsip](https://code.claude.com/docs/id/plugins/host-marketplace.md#authenticate-archive-downloads) |99| `headersHelper` | string | Perintah yang mencetak header unduhan arsip entri ini sebagai satu objek JSON, untuk kredensial yang kedaluwarsa. Entri juga harus menetapkan [`"strict": false`](#strict-mode). Memerlukan Claude Code v2.1.238 atau lebih baru. Lihat [Autentikasi unduhan arsip](https://code.claude.com/docs/id/plugins/host-marketplace.md#authenticate-archive-downloads) |

100 100 


142| `url` | `url`, `ref`, `sha` | Repositori git apa pun menurut URL |142| `url` | `url`, `ref`, `sha` | Repositori git apa pun menurut URL |

143| `git-subdir` | `url`, `path`, `ref`, `sha` | Satu subdirektori repositori git, diambil dengan sparse checkout |143| `git-subdir` | `url`, `path`, `ref`, `sha` | Satu subdirektori repositori git, diambil dengan sparse checkout |

144| `npm` | `package`, `version`, `registry` | Paket registry npm atau tautan tarball, diambil dengan klien npm Anda dan dibuka tanpa menjalankan skrip install |144| `npm` | `package`, `version`, `registry` | Paket registry npm atau tautan tarball, diambil dengan klien npm Anda dan dibuka tanpa menjalankan skrip install |

145| `archive` | `url`, `sha256` | Arsip Zip melalui HTTPS. Memerlukan Claude Code v2.1.224 atau lebih baru |145| `archive` | `url`, `sha256` | Arsip Zip melalui HTTPS |

146| `command` | `command`, `timeout`, `mode` | Direktori yang dicetak oleh perintah yang Claude Code jalankan di mesin pengguna. Memerlukan Claude Code v2.1.229 atau lebih baru |146| `command` | `command`, `timeout`, `mode` | Direktori yang dicetak oleh perintah yang Claude Code jalankan di mesin pengguna. Memerlukan Claude Code v2.1.229 atau lebih baru |

147 147 

148Nama `url` dan `github` juga [tipe sumber marketplace](#marketplace-sources), di mana `url` berarti tautan langsung ke file `marketplace.json` daripada repositori git. `git` hanya ada sebagai sumber marketplace, dan `npm` ada sebagai keduanya. `git-subdir`, `archive`, dan `command` hanya ada sebagai sumber plugin.148Nama `url` dan `github` juga [tipe sumber marketplace](#marketplace-sources), di mana `url` berarti tautan langsung ke file `marketplace.json` daripada repositori git. `git` hanya ada sebagai sumber marketplace, dan `npm` ada sebagai keduanya. `git-subdir`, `archive`, dan `command` hanya ada sebagai sumber plugin.

Details

57* **Mod aktif.** Pengguna dapat memasang plugin yang berisi mod dari pasar apa pun yang diizinkan pengaturan plugin Anda, atau memuat satu dari direktori dengan `--plugin-dir`.57* **Mod aktif.** Pengguna dapat memasang plugin yang berisi mod dari pasar apa pun yang diizinkan pengaturan plugin Anda, atau memuat satu dari direktori dengan `--plugin-dir`.

58* **Penjaga bawaan berjalan terlebih dahulu.** Claude Code memuat mod bawaan bernama `sec-default@builtin` sebelum setiap mod yang dipasang pengguna. Pengguna tidak dapat mematikannya. `/plugin` dan log debug mencantumkannya sebagai `cc-plugin-sec-default`. Penjaga dimuat saat salah satu dari ini benar:58* **Penjaga bawaan berjalan terlebih dahulu.** Claude Code memuat mod bawaan bernama `sec-default@builtin` sebelum setiap mod yang dipasang pengguna. Pengguna tidak dapat mematikannya. `/plugin` dan log debug mencantumkannya sebagai `cc-plugin-sec-default`. Penjaga dimuat saat salah satu dari ini benar:

59 59 

60 * Mesin memiliki pengaturan terkelola60 * Mesin memiliki pengaturan terkelola atau file [`managed-mcp.json`](https://code.claude.com/docs/id/managed-mcp#deploy-managed-mcp-json)

61 * Sesi berjalan dengan [kredensial `/login`](https://code.claude.com/docs/id/authentication#authentication-precedence) untuk paket Team atau Enterprise61 * Sesi berjalan dengan [kredensial `/login`](https://code.claude.com/docs/id/authentication#authentication-precedence) untuk paket Team atau Enterprise

62 62 

63 Pengguna yang mengautentikasi dengan kunci API, atau melalui Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry, mendapatkan penjaga hanya di mesin yang memiliki pengaturan terkelola. Sesi yang berjalan dengan [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/id/authentication#generate-a-long-lived-token) berumur panjang juga tidak dihitung sebagai login tersebut, bahkan ketika login Team atau Enterprise tersimpan di mesin.63 Pengguna dengan kunci API, atau melalui Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry, mendapatkan penjaga hanya di mesin yang memiliki pengaturan terkelola atau `managed-mcp.json`. Sesi yang berjalan dengan [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/id/authentication#generate-a-long-lived-token) berumur panjang juga tidak dihitung sebagai login tersebut, bahkan ketika login Team atau Enterprise tersimpan di mesin.

64* **Penjaga melindungi apa yang Anda kelola.** Mod pengguna tidak dapat mengubah apa yang diterima atau diputuskan hook terkelola Anda, prompt sistem, `CLAUDE.md` terkelola Anda dan instruksi terkelola lainnya, apa yang dibaca mod apa pun sebagai pengaturan, atau alat dan deskripsi server MCP terkelola Anda.64* **Penjaga melindungi apa yang Anda kelola.** Mod pengguna tidak dapat mengubah apa yang diterima atau diputuskan hook terkelola Anda, prompt sistem, `CLAUDE.md` terkelola Anda dan instruksi terkelola lainnya, apa yang dibaca mod apa pun sebagai pengaturan, atau alat dan deskripsi server MCP terkelola Anda.

65* **Di luar apa yang Anda kelola, mod pengguna bertindak sebagai pengguna tersebut.** Mod mempertahankan izin pengguna tersebut: mod masih dapat membaca dan menulis file, memulai proses, dan membuat permintaan jaringan. Mod juga dapat menulis ulang panggilan tool dan prompt, menolak panggilan tool, dan menggambar di antarmuka.65* **Di luar apa yang Anda kelola, mod pengguna bertindak sebagai pengguna tersebut.** Mod mempertahankan izin pengguna tersebut: mod masih dapat membaca dan menulis file, memulai proses, dan membuat permintaan jaringan. Mod juga dapat menulis ulang panggilan tool dan prompt, menolak panggilan tool, dan menggambar di antarmuka.

66* **Aturan izin dan hook `PreToolUse` diutamakan daripada mod pengguna.** Dengan penjaga dimuat, secara default mod pengguna tidak dapat menyetujui panggilan yang ditolak aturan `deny` atau yang dimintakan izin oleh aturan `ask`, file pengaturan mana pun yang menyimpan aturan tersebut. Mod juga tidak dapat menyetujui panggilan yang diblokir hook `PreToolUse` mana pun.66* **Aturan izin dan hook `PreToolUse` diutamakan daripada mod pengguna.** Dengan penjaga dimuat, secara default mod pengguna tidak dapat menyetujui panggilan yang ditolak aturan `deny` atau yang dimintakan izin oleh aturan `ask`, file pengaturan mana pun yang menyimpan aturan tersebut. Mod juga tidak dapat menyetujui panggilan yang diblokir hook `PreToolUse` mana pun.


76 76 

77* **Hook pengaturan tetap berfungsi.** Hook perintah, HTTP, prompt, dan agent dalam file pengaturan dan dalam `hooks/hooks.json` plugin berjalan seperti sebelumnya, bersama mod.77* **Hook pengaturan tetap berfungsi.** Hook perintah, HTTP, prompt, dan agent dalam file pengaturan dan dalam `hooks/hooks.json` plugin berjalan seperti sebelumnya, bersama mod.

78* **Aturan penolakan memiliki prioritas di mana penjaga memuat.** Mod pengguna tidak dapat menyetujui panggilan yang ditolak aturan `deny`, kecuali Anda menetapkan [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).78* **Aturan penolakan memiliki prioritas di mana penjaga memuat.** Mod pengguna tidak dapat menyetujui panggilan yang ditolak aturan `deny`, kecuali Anda menetapkan [`allowModsToOverrideDenyRules`](#set-options-on-the-built-in-guard).

79* **Hook terkelola berjalan terlebih dahulu.** Hook `PreToolUse` dalam pengaturan terkelola berjalan sebelum hook [`tool.call`](https://code.claude.com/docs/id/plugins/mods/reference#tools) milik mod mana pun, dan ketika hook terkelola tersebut memblokir panggilan tool, tidak ada hook `tool.call` milik mod yang berjalan untuk panggilan tersebut. Jika panggilan dilanjutkan dan mod menulis ulang panggilan tersebut, hook terkelola Anda berjalan lagi pada panggilan yang ditulis ulang, sehingga hook tersebut masih dapat memblokirnya.79* **Hook terkelola berjalan terlebih dahulu.** Hook `PreToolUse` dalam pengaturan terkelola berjalan sebelum hook [`tool.call`](https://code.claude.com/docs/id/plugins/mods/reference#tools) milik mod mana pun, dan ketika hook terkelola tersebut memblokir panggilan tool, tidak ada hook `tool.call` milik mod yang berjalan untuk panggilan tersebut. Jika panggilan dilanjutkan dan mod menulis ulang panggilan tersebut, hook terkelola Anda berjalan lagi pada panggilan yang ditulis ulang, sehingga secara default hook tersebut masih dapat memblokirnya.

80 80 

81 Hook `PreToolUse` dari file pengaturan lain dan dari plugin berjalan setelah mod terakhir. Jika mod menjawab panggilan tool itu sendiri, tool tidak pernah berjalan dan hook tersebut juga tidak. Lihat [Urutan mod berjalan](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in).81 Hook `PreToolUse` dari file pengaturan lain dan dari plugin berjalan setelah mod terakhir. Jika mod menjawab panggilan tool itu sendiri, tool tidak pernah berjalan dan hook tersebut juga tidak. Lihat [Urutan mod berjalan](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in).

82* **Kebijakan jaringan mencakup `$.http.fetch`.**82* **Kebijakan jaringan mencakup `$.http.fetch`.**


260| Opsi | Tidak diatur | `true` |260| Opsi | Tidak diatur | `true` |

261| :- | :- | :- |261| :- | :- | :- |

262| `allowManagedModsOnly` | Mod milik pengguna sendiri berjalan | Hanya [mod organisasi Anda](#install-your-organizations-mods), dan mod yang dibangun ke dalam Claude Code, yang menjalankan hook mereka. Claude Code menolak setiap mod lainnya, termasuk yang dipasang pengguna atau dinamai dengan `--plugin-dir`. |262| `allowManagedModsOnly` | Mod milik pengguna sendiri berjalan | Hanya [mod organisasi Anda](#install-your-organizations-mods), dan mod yang dibangun ke dalam Claude Code, yang menjalankan hook mereka. Claude Code menolak setiap mod lainnya, termasuk yang dipasang pengguna atau dinamai dengan `--plugin-dir`. |

263| `allowModsToOverrideDenyRules` | Aturan penolakan diutamakan daripada mod pengguna | Mod pengguna yang menyetujui panggilan tool dapat menyetujui panggilan yang ditolak aturan `deny` |263| `allowModsToOverrideDenyRules` | Aturan penolakan diutamakan daripada mod pengguna | Mod pengguna yang menyetujui panggilan tool dapat menyetujui panggilan melewati sebagian besar [hasil yang tetap berlaku secara default](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods), termasuk aturan `deny` |

264 264 

265Aturan-aturan ini memutuskan apakah opsi berlaku:265Aturan-aturan ini memutuskan apakah opsi berlaku:

266 266 


350 350 

351* **Daftar menggantikan default**: saat Anda menetapkan `prependPlugins` dalam pengaturan terkelola, sebutkan `sec-default@builtin` di dalamnya untuk menjaga penjaga bawaan. Penjaga dibangun dan tidak memerlukan entri `enabledPlugins`.351* **Daftar menggantikan default**: saat Anda menetapkan `prependPlugins` dalam pengaturan terkelola, sebutkan `sec-default@builtin` di dalamnya untuk menjaga penjaga bawaan. Penjaga dibangun dan tidak memerlukan entri `enabledPlugins`.

352* **Id Anda sendiri harus dihitung sebagai milik Anda**: dalam pengaturan terkelola, Claude Code melewati id yang pluginnya tidak memenuhi kondisi untuk mod organisasi352* **Id Anda sendiri harus dihitung sebagai milik Anda**: dalam pengaturan terkelola, Claude Code melewati id yang pluginnya tidak memenuhi kondisi untuk mod organisasi

353* **Repositori tidak dapat menetapkannya**: Claude Code membaca kedua pengaturan dari pengaturan terkelola dan tidak pernah dari file pengaturan repositori. Pengguna dapat menetapkannya dalam `~/.claude/settings.json` untuk mengurutkan mod mereka sendiri hanya di mesin tanpa pengaturan terkelola, dan hanya saat kredensial sesi bukan `/login` Team atau Enterprise. Di tempat lain, Claude Code mengabaikan kedua kunci dalam pengaturan pengguna. Daftar di sana tidak menambah atau menghapus penjaga bawaan.353* **Repositori tidak dapat menetapkan kedua daftar**: Claude Code mengabaikan keduanya dalam file pengaturan repositori, jadi tetapkan keduanya dalam pengaturan terkelola.

354* **Pengguna dapat menetapkannya untuk mengurutkan mod mereka sendiri**: dalam `~/.claude/settings.json`, hanya di mesin tanpa pengaturan terkelola atau file `managed-mcp.json`, dan hanya saat kredensial sesi bukan `/login` Team atau Enterprise. Di tempat lain, Claude Code mengabaikan kedua kunci dalam pengaturan pengguna. Daftar di sana tidak menambah atau menghapus penjaga bawaan.

354 355 

355### Terapkan kebijakan dengan mod Anda sendiri356### Terapkan kebijakan dengan mod Anda sendiri

356 357 

Details

21 21 

22Jelaskan mod yang Anda inginkan dalam sesi Claude Code interaktif, dan Claude menulisnya. Claude bekerja dari [skill](https://code.claude.com/docs/id/skills.md) bawaan bernama `plugin-authoring`, yang memberitahu di mana menulis mod, peristiwa dan metode apa yang dimiliki versi Anda, dan bagaimana mod dimuat. Claude dapat memuat skill ketika Anda meminta mod, atau Anda dapat memuatnya sendiri dengan menjalankan `/plugin-authoring` di prompt Claude Code.22Jelaskan mod yang Anda inginkan dalam sesi Claude Code interaktif, dan Claude menulisnya. Claude bekerja dari [skill](https://code.claude.com/docs/id/skills.md) bawaan bernama `plugin-authoring`, yang memberitahu di mana menulis mod, peristiwa dan metode apa yang dimiliki versi Anda, dan bagaimana mod dimuat. Claude dapat memuat skill ketika Anda meminta mod, atau Anda dapat memuatnya sendiri dengan menjalankan `/plugin-authoring` di prompt Claude Code.

23 23 

24Mod berjalan setelah Anda menyetujuinya, kecuali dalam [sesi di mana mod yang ditulis Claude tidak dapat dimuat](#sessions-that-skip-the-approval).24Dalam [mode izin](https://code.claude.com/docs/id/permission-modes.md) `auto` dan `bypassPermissions`, mod dapat berjalan ketika giliran berakhir. Jika tidak, mod berjalan setelah Anda menyetujuinya, kecuali dalam [sesi di mana mod yang ditulis Claude tidak dapat dimuat](#sessions-that-skip-the-approval).

25 25 

26**1. Jelaskan mod**26**1. Jelaskan mod**

27 27 


33 33 

34**2. Setujui mod**34**2. Setujui mod**

35 35 

36Ketika Claude menyimpan file pertama, Claude Code menanyakan apakah akan mengaktifkan hot reloading untuk sesi. Hot reloading menjalankan mod yang ditulis Claude dalam sesi ini dan mengambil setiap perubahan kemudian.36Ketika Claude menyimpan file pertama, Claude Code menanyakan apakah akan mengaktifkan hot reloading untuk sesi. Hot reloading menjalankan mod yang ditulis Claude dalam sesi ini dan mengambil setiap perubahan kemudian. Jika tidak ada pertanyaan yang muncul, lewati langkah ini.

37 37 

38Pilih salah satu jawaban ini:38Pilih salah satu jawaban ini:

39 39 

40* **Aktifkan untuk sesi ini**: mod di folder mods sesi dimuat ketika giliran berakhir, dan dimuat ulang di akhir setiap giliran yang mengubahnya. Jawaban Anda berlaku untuk sesi, termasuk setelah Anda melanjutkannya.40* **Aktifkan**: mod di folder mods sesi dimuat ketika giliran berakhir, dan dimuat ulang di akhir setiap giliran yang mengubahnya. Jawaban Anda berlaku untuk sesi, termasuk setelah Anda melanjutkannya.

41* **Tidak sekarang**: tidak ada yang dimuat untuk sekarang. File tetap di tempat Claude menulisnya, dan mod dimuat saat sesi itu dimulai berikutnya. Untuk mencegah mod dimuat selamanya, hapus direktorinya.41* **Tidak sekarang**: tidak ada yang dimuat untuk sekarang. File tetap di tempat Claude menulisnya, dan mod dimuat saat sesi itu dimulai berikutnya. Untuk mencegah mod dimuat selamanya, hapus direktorinya.

42 42 

43**3. Periksa bahwa mod dimuat**43**3. Periksa bahwa mod dimuat**


59 59 

60### Sesi di mana mod yang ditulis Claude tidak dapat dimuat60### Sesi di mana mod yang ditulis Claude tidak dapat dimuat

61 61 

62Mod yang ditulis Claude hanya dimuat setelah Anda menyetujuinya, dalam workspace terpercaya di mana mod diizinkan untuk berjalan. Dalam sesi ini tidak dimuat:62Mod yang ditulis Claude dimuat dalam workspace terpercaya di mana mod diizinkan untuk berjalan, setelah Anda menyetujuinya dalam mode yang meminta persetujuan. Dalam sesi ini tidak dimuat:

63 63 

64* **Tidak ada yang ada untuk menyetujui**: sesi tidak dapat menampilkan prompt kepada Anda, seperti dalam run `claude -p` atau [mode `dontAsk`](https://code.claude.com/docs/id/permission-modes)64* **Tidak ada yang ada untuk menyetujui**: sesi tidak dapat menampilkan prompt kepada Anda, seperti dalam run `claude -p` di luar mode `auto` dan `bypassPermissions`, atau [mode `dontAsk`](https://code.claude.com/docs/id/permission-modes)

65* **Workspace tidak terpercaya**: Anda belum menerima prompt kepercayaan untuk direktori65* **Workspace tidak terpercaya**: Anda belum menerima prompt kepercayaan untuk direktori

66* **Mod dinonaktifkan**: Anda memulai dengan `--safe-mode` atau `--bare`, Anda menetapkan `disableAllHooks`, atau [pengaturan terkelola](https://code.claude.com/docs/id/plugins/mods/admin.md#choose-how-much-to-allow) organisasi Anda memblokirnya66* **Mod dinonaktifkan**: Anda memulai dengan `--safe-mode` atau `--bare`, Anda menetapkan `disableAllHooks`, atau [pengaturan terkelola](https://code.claude.com/docs/id/plugins/mods/admin.md#choose-how-much-to-allow) organisasi Anda memblokirnya

67 67 

Details

328 328 

329Periksa mod mana yang mendapatkan peristiwa ini dan versi Claude Code Anda:329Periksa mod mana yang mendapatkan peristiwa ini dan versi Claude Code Anda:

330 330 

331* **Penjaga bawaan**: dengan pengaturan terkelola, atau dengan [`/login`](https://code.claude.com/docs/id/authentication#authentication-precedence) Team atau Enterprise sebagai kredensial sesi, [penjaga bawaan](https://code.claude.com/docs/id/plugins/mods/admin.md#know-what-happens-by-default) dapat melewati hook ini dalam mod yang Anda instal atau muat dengan `--plugin-dir`. Untuk memeriksanya, cari `settings.read bypassed by cc-plugin-sec-default` di [log debug](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#read-the-debug-log). Jika baris dengan teks tersebut menyebutkan mod Anda, minta administrator organisasi Anda untuk [menginstal mod tersebut sebagai salah satu mod organisasi](https://code.claude.com/docs/id/plugins/mods/admin.md#install-your-organizations-mods).331* **Penjaga bawaan**: di tempat [penjaga bawaan](https://code.claude.com/docs/id/plugins/mods/admin.md#know-what-happens-by-default) dimuat, penjaga tersebut dapat melewati hook ini dalam mod yang Anda instal atau muat dengan `--plugin-dir`. Untuk memeriksanya, cari `settings.read bypassed by cc-plugin-sec-default` di [log debug](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#read-the-debug-log). Jika baris dengan teks tersebut menyebutkan mod Anda, minta administrator organisasi Anda untuk [menginstal mod tersebut sebagai salah satu mod organisasi](https://code.claude.com/docs/id/plugins/mods/admin.md#install-your-organizations-mods).

332* **Versi**: peristiwa yang diaktifkan pada pembacaan Claude Code sendiri, dan bidang `e.layers`, memerlukan Claude Code v2.1.304 atau yang lebih baru.332* **Versi**: peristiwa yang diaktifkan pada pembacaan Claude Code sendiri, dan bidang `e.layers`, memerlukan Claude Code v2.1.304 atau yang lebih baru.

333 333 

334#### Apa yang diterima hook `settings.read`334#### Apa yang diterima hook `settings.read`

Details

78 78 

79Mod tidak berjalan di dalam sandbox. Jika Anda mengaktifkan [sandboxing](https://code.claude.com/docs/id/sandboxing.md), sandbox mengisolasi perintah Bash yang dijalankan Claude, dan proses yang dimulai oleh mod berjalan di luarnya.79Mod tidak berjalan di dalam sandbox. Jika Anda mengaktifkan [sandboxing](https://code.claude.com/docs/id/sandboxing.md), sandbox mengisolasi perintah Bash yang dijalankan Claude, dan proses yang dimulai oleh mod berjalan di luarnya.

80 80 

81Dengan [pengaturan terkelola](https://code.claude.com/docs/id/settings.md#check-what-your-organization-enforces) atau [`/login`](https://code.claude.com/docs/id/authentication#authentication-precedence) Team atau Enterprise sebagai kredensial sesi, secara default persetujuan mod tidak dapat meloloskan panggilan melewati aturan `ask` atau hook `PreToolUse` Anda. Tanpa salah satu dari keduanya, mod dapat menyetujui panggilan yang akan dimintakan izinnya oleh aturan `ask`, atau yang diblokir oleh hook `PreToolUse` Anda. Untuk memeriksa kapan mod juga dapat menyetujui panggilan yang ditolak aturan `deny`, lihat [Perluas izin dengan hooks](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods).81Mod dapat menyetujui [banyak panggilan tool](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods) yang akan dihentikan oleh aturan `deny` atau `ask` atau hook `PreToolUse` Anda, kecuali [penjaga bawaan](https://code.claude.com/docs/id/plugins/mods/admin.md#know-what-happens-by-default) mencegahnya. Dengan penjaga dimuat, secara default mod milik pengguna tidak dapat melakukan ini. Dalam sesi terminal lokal, `cc-plugin-sec-default` pada tab **Installed** di `/plugin` berarti penjaga telah dimuat.

82 82 

83Mod dapat mengubah gaya banyak antarmuka Claude Code, tetapi bukan dialog izin. Mod tidak dapat mengubah apa yang ditampilkan dialog tersebut kepada Anda.83Mod dapat mengubah gaya banyak antarmuka Claude Code, tetapi bukan dialog izin. Mod tidak dapat mengubah apa yang ditampilkan dialog tersebut kepada Anda.

84 84 

Details

39| `next.origin` | `{ plugin, tier }` dari pihak yang memicu event. Claude Code sendiri adalah `{ plugin: 'engine', tier: 'core' }`. `tier` sebuah mod adalah grup prioritasnya dalam [urutan mod dijalankan](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in): `prepend`, `user`, `append`, atau `builtin`. |39| `next.origin` | `{ plugin, tier }` dari pihak yang memicu event. Claude Code sendiri adalah `{ plugin: 'engine', tier: 'core' }`. `tier` sebuah mod adalah grup prioritasnya dalam [urutan mod dijalankan](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in): `prepend`, `user`, `append`, atau `builtin`. |

40| `next.budget` | Batas waktu hook dalam milidetik: `next.budget.ms` adalah seluruh batas, dan `next.budget.remainingMs` adalah sisa waktu saat ini |40| `next.budget` | Batas waktu hook dalam milidetik: `next.budget.ms` adalah seluruh batas, dan `next.budget.remainingMs` adalah sisa waktu saat ini |

41| `next.to(e, tier)` | Melompat ke tier yang lebih belakang, yaitu `append`, `builtin`, atau `core`. `next.to(e, 'append')` melewati mod yang diinstal pengguna. Hanya mod di `prependPlugins` atau `appendPlugins` yang dapat memanggilnya. |41| `next.to(e, tier)` | Melompat ke tier yang lebih belakang, yaitu `append`, `builtin`, atau `core`. `next.to(e, 'append')` melewati mod yang diinstal pengguna. Hanya mod di `prependPlugins` atau `appendPlugins` yang dapat memanggilnya. |

42| `next.error` | Hanya di handler `.catch`. `kind` adalah `throw` atau `timeout` saat hook gagal, dan `message` adalah teks error. `kind` adalah `re-entry` saat hook dilewati karena event berasal dari dalam panggilan API mod oleh hook tersebut atau oleh kode mod Anda di luar hook-nya. `re-entry` memerlukan Claude Code v2.1.292 atau yang lebih baru. |42| `next.error` | Hanya di handler `.catch`. `kind` adalah `throw` atau `timeout`, dan `message` adalah teks error. |

43| `next.error.cause` | Hanya ditetapkan saat `kind` adalah `re-entry`. `rewritten` jika hook `tool.call` atau [`PreToolUse`](https://code.claude.com/docs/id/hooks#pretooluse) mengubah panggilan API mod yang menjadi asal event, atau hook `agent.spawn` mengubah agent yang dimulai oleh panggilan tersebut. `lent` jika sebuah metode yang ditambahkan mod lain ke API mod memicu event tersebut, kecuali `rewritten` juga berlaku. `lent` memerlukan Claude Code v2.1.292 atau yang lebih baru dan `rewritten` v2.1.300 atau yang lebih baru. |

44| `next.called` | Hanya di handler `.catch`. `true` saat hook telah memanggil `next`. |43| `next.called` | Hanya di handler `.catch`. `true` saat hook telah memanggil `next`. |

45 44 

46## Event45## Event


252| [`AbovePrompt`](https://code.claude.com/docs/id/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Satu instans | Terminal, Desktop |251| [`AbovePrompt`](https://code.claude.com/docs/id/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Satu instans | Terminal, Desktop |

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

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

255| `UserMessage` | `text`, `origin`, `isExpanded`, dan `task` atau `from` tergantung origin | id pesan | Terminal, Desktop, VS Code |254| `UserMessage` | `text`, `origin`, `isExpanded`, dan `task` atau `from` tergantung origin | id baris yang digambar | Terminal, Desktop, VS Code |

256| `AssistantMessage` | Teks balasan | id pesan | Terminal, Desktop, VS Code |255| `AssistantMessage` | Teks balasan | id baris yang digambar | Terminal, Desktop, VS Code |

257| `ToolUse`, `ToolResult`, `ToolGroup` | Nama, input, dan hasil tool | id panggilan tool | Terminal, Desktop, VS Code |256| `ToolUse`, `ToolResult`, `ToolGroup` | Nama, input, dan hasil tool | id panggilan tool | Terminal, Desktop, VS Code |

258| `CommandOutput` | `command`, `text` | id pesan | Terminal, Desktop |257| `CommandOutput` | `command`, `text` | id baris yang digambar | Terminal, Desktop |

259| [`AskUserQuestion`](https://code.claude.com/docs/id/plugins/mods/interface#change-what-claude-code-already-draws) | Pertanyaan dan opsi | id panggilan tool | Terminal, Desktop, VS Code |258| [`AskUserQuestion`](https://code.claude.com/docs/id/plugins/mods/interface#change-what-claude-code-already-draws) | Pertanyaan dan opsi | id panggilan tool | Terminal, Desktop, VS Code |

260| `ToolProgress` | `kind` | id panggilan tool | Terminal |259| `ToolProgress` | `kind` | id panggilan tool | Terminal |

261| [`Spinner`](https://code.claude.com/docs/id/plugins/mods/interface#change-what-claude-code-already-draws) | `word`, `message`, `suffix`, `mode` | id agent | Terminal, Desktop, VS Code |260| [`Spinner`](https://code.claude.com/docs/id/plugins/mods/interface#change-what-claude-code-already-draws) | `word`, `message`, `suffix`, `mode` | id agent | Terminal, Desktop, VS Code |

262| `TurnDuration` | `word`, `durationMs` | id pesan | Terminal |261| `TurnDuration` | `word`, `durationMs` | id baris yang digambar | Terminal |

263| `InfoNotice` | `text`, `command` | id pesan | Terminal |262| `InfoNotice` | `text`, `command` | `text` pemberitahuan dengan awalan `notice:` | Terminal |

264| `SessionMode` | `modes` | Satu instans | Terminal, Desktop |263| `SessionMode` | `modes` | Satu instans | Terminal, Desktop |

265| `PromptHint` | `isDraft`, `isWorking`, `hint` | Satu instans | Terminal, Desktop |264| `PromptHint` | `isDraft`, `isWorking`, `hint` | Satu instans | Terminal, Desktop |

266 265 


424| :- | :- | :- |423| :- | :- | :- |

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

426| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Environment | `1` membuat sesi non-interaktif yang berjalan lama memuat ulang mod `--plugin-dir` saat disimpan |425| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Environment | `1` membuat sesi non-interaktif yang berjalan lama memuat ulang mod `--plugin-dir` saat disimpan |

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

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

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

430| `allowManagedHooksOnly` | Pengaturan terkelola | Memblokir hook dan mod terinstal yang bukan milik organisasi Anda. Lihat [apa yang tetap berjalan](https://code.claude.com/docs/id/settings-reference.md#what-runs-under-allowmanagedhooksonly). |429| `allowManagedHooksOnly` | Pengaturan terkelola | Memblokir hook dan mod terinstal yang bukan milik organisasi Anda. Lihat [apa yang tetap berjalan](https://code.claude.com/docs/id/settings-reference.md#what-runs-under-allowmanagedhooksonly). |

431| `disableAllHooks` | File pengaturan apa pun | Di pengaturan terkelola, tidak ada mod atau hook dari plugin terinstal yang berjalan. Di pengaturan Anda sendiri, apa yang dikelola organisasi Anda tetap berjalan. Lihat [`disableAllHooks`](https://code.claude.com/docs/id/settings-reference#disableallhooks). |430| `disableAllHooks` | File pengaturan apa pun | Di pengaturan terkelola, tidak ada mod atau hook dari plugin terinstal yang berjalan. Di pengaturan Anda sendiri, apa yang dikelola organisasi Anda tetap berjalan. Lihat [`disableAllHooks`](https://code.claude.com/docs/id/settings-reference#disableallhooks). |

432| `disableSideloadFlags` | Pengaturan terkelola | Menolak `--plugin-dir` dan `--plugin-url` saat startup |431| `disableSideloadFlags` | Pengaturan terkelola | Menolak `--plugin-dir` dan `--plugin-url` saat startup |

433| `pluginConfigs` | Pengaturan pengguna atau terkelola | Memuat nilai `userConfig` untuk sebuah mod, dengan kunci berupa id plugin, seperti `acme-guard@acme-tools`, atau namanya dan `@inline`, seperti `first-mod@inline`, untuk mod yang dimuat dengan `--plugin-dir` |432| `pluginConfigs` | Pengaturan pengguna atau terkelola | Memuat nilai `userConfig` untuk sebuah mod, dengan kunci berupa id plugin, seperti `acme-guard@acme-tools`, atau namanya dan `@inline`, seperti `first-mod@inline`, untuk mod yang dimuat dengan `--plugin-dir` |

434 433 

435`sec-default@builtin` adalah penjaga bawaan Claude Code, tercantum sebagai `cc-plugin-sec-default` di `/plugin` dan log debug. Penjaga ini dimuat sebelum setiap mod yang diinstal seseorang pada mesin dengan pengaturan terkelola, atau dalam sesi yang kredensialnya adalah [`/login`](https://code.claude.com/docs/id/authentication#authentication-precedence) Team atau Enterprise. Jika `prependPlugins` terkelola ditetapkan, penjaga ini hanya dimuat jika daftar tersebut menyebutkannya, pada posisi yang tercantum.434`sec-default@builtin` adalah penjaga bawaan Claude Code, tercantum sebagai `cc-plugin-sec-default` di `/plugin` dan log debug. [Di tempat penjaga ini dimuat](https://code.claude.com/docs/id/plugins/mods/admin.md#know-what-happens-by-default), penjaga ini berjalan sebelum setiap mod yang diinstal seseorang. Jika `prependPlugins` terkelola ditetapkan, penjaga ini hanya dimuat jika daftar tersebut menyebutkannya, pada posisi yang tercantum.

436 435 

437Sumbernya ada di [direktori `mods/sec-default` dari repositori Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).436Sumbernya ada di [direktori `mods/sec-default` dari repositori Claude Code](https://github.com/anthropics/claude-code/tree/main/mods/sec-default).

438 437 

Details

14 14 

15Ketika modul tidak dimuat, hook dilewati, atau mod lain menolak milik Anda, Claude Code menulis satu baris yang menyebutkan mod Anda. Di mana Anda membaca baris itu tergantung pada sesi:15Ketika modul tidak dimuat, hook dilewati, atau mod lain menolak milik Anda, Claude Code menulis satu baris yang menyebutkan mod Anda. Di mana Anda membaca baris itu tergantung pada sesi:

16 16 

17* **Sesi yang hot-reload direktori plugin**: baris redup dalam transkrip. Itu adalah sesi interaktif yang Anda mulai dengan `--plugin-dir`, atau sesi di mana Anda [mengaktifkan hot reloading](https://code.claude.com/docs/id/plugins/mods/create.md#ask-claude-for-a-mod) untuk mod yang ditulis Claude.17* **Sesi yang hot-reload direktori plugin**: baris redup dalam transkrip. Itu adalah sesi interaktif yang Anda mulai dengan `--plugin-dir`, atau sesi di mana [hot reloading aktif](https://code.claude.com/docs/id/plugins/mods/create.md#ask-claude-for-a-mod) untuk mod yang ditulis Claude.

18* **Sesi interaktif lainnya, seperti sesi yang menjalankan mod yang Anda instal dari marketplace**: [debug log](#read-the-debug-log) saja. Untuk mendapatkannya, mulai sesi dengan `claude --debug`.18* **Sesi interaktif lainnya, seperti sesi yang menjalankan mod yang Anda instal dari marketplace**: [debug log](#read-the-debug-log) saja. Untuk mendapatkannya, mulai sesi dengan `claude --debug`.

19* **Jalankan `claude -p` dengan `--plugin-dir`**: stderr, dalam format output teks default. Penolakan oleh mod lain hanya masuk ke debug log.19* **Jalankan `claude -p` dengan `--plugin-dir`**: stderr, dalam format output teks default. Penolakan oleh mod lain hanya masuk ke debug log.

20 20 


68 68 

69### Pesan dari built-in guard69### Pesan dari built-in guard

70 70 

71Pada mesin dengan pengaturan terkelola, atau dalam sesi yang kredensialnya berupa `/login` Team atau Enterprise, [penjaga bawaan](https://code.claude.com/docs/id/plugins/mods/admin.md#know-what-happens-by-default) dapat menolak mod atau salah satu jawabannya. Setiap pesan menyebutkan opsi yang ditetapkan administrator organisasi Anda untuk mengubah aturan.71Di tempat [penjaga bawaan](https://code.claude.com/docs/id/plugins/mods/admin.md#know-what-happens-by-default) dimuat, penjaga tersebut dapat menolak mod atau salah satu jawabannya. Setiap pesan menyebutkan opsi yang ditetapkan administrator organisasi Anda untuk mengubah aturan.

72 72 

73| Pesan berisi | Artinya | Di mana muncul |73| Pesan berisi | Artinya | Di mana muncul |

74| :- | :- | :- |74| :- | :- | :- |

plugins/org.md +1 −1

Details

89* **Sesi interaktif**: Claude Code mendaftarkan marketplace hanya setelah kontributor menerima [dialog kepercayaan workspace](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) untuk folder itu.89* **Sesi interaktif**: Claude Code mendaftarkan marketplace hanya setelah kontributor menerima [dialog kepercayaan workspace](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) untuk folder itu.

90* **[Lari `-p` non-interaktif](https://code.claude.com/docs/id/headless)**: entri hanya berlaku dalam folder yang kepercayaannya sudah diterima pengguna secara interaktif, atau yang bendera `hasTrustDialogAccepted` Anda tetapkan dalam `~/.claude.json`.90* **[Lari `-p` non-interaktif](https://code.claude.com/docs/id/headless)**: entri hanya berlaku dalam folder yang kepercayaannya sudah diterima pengguna secara interaktif, atau yang bendera `hasTrustDialogAccepted` Anda tetapkan dalam `~/.claude.json`.

91 91 

92Plugin yang marketplace cantumkan dengan jalur relatif dimuat dari salinan marketplace setelah entri `extraKnownMarketplaces` repositori berlaku. Plugin yang entri marketplace-nya menunjuk ke sumber eksternal sebagai gantinya, seperti repositori GitHub plugin sendiri, tidak diinstal dari pengaturan repositori saja. Setiap kontributor melihat `Plugin "<name>" is enabled in project settings but isn't installed` sampai mereka menjalankan `claude plugin install <name>@<marketplace> --scope project`, seperti yang dijelaskan [Install plugins](https://code.claude.com/docs/id/plugins/install.md).92Menetapkan `enabledPlugins` di repositori tidak menginstal plugin. Setelah marketplace terdaftar, minta setiap kontributor untuk menjalankan `claude plugin install <name>@<marketplace> --scope project`. Sampai mereka melakukannya, tab **Errors** di `/plugin` dapat menampilkan `Plugin "<name>" is enabled in project settings but isn't installed here` atau [`not cached`](https://code.claude.com/docs/id/plugins/troubleshooting#plugin-not-cached-at). Kontributor tidak memerlukan instalasi ketika marketplace `directory` atau `file` lokal mencantumkan plugin dengan [`source` jalur relatif](https://code.claude.com/docs/id/plugins/marketplace-reference#plugin-sources).

93 93 

94Jika Anda menggunakan sumber `directory` atau `file` lokal dengan jalur relatif, jalur diselesaikan terhadap checkout utama repositori Anda. Ketika Anda menjalankan Claude Code dari git worktree, jalur masih menunjuk ke checkout utama, jadi semua worktrees berbagi lokasi marketplace yang sama.94Jika Anda menggunakan sumber `directory` atau `file` lokal dengan jalur relatif, jalur diselesaikan terhadap checkout utama repositori Anda. Ketika Anda menjalankan Claude Code dari git worktree, jalur masih menunjuk ke checkout utama, jadi semua worktrees berbagi lokasi marketplace yang sama.

95 95 

Details

322 322 

323### Marketplace updates keep failing offline323### Marketplace updates keep failing offline

324 324 

325Anda bekerja di lingkungan di mana host git marketplace tidak dapat dijangkau, dan setiap sesi mengulangi refresh yang gagal di latar belakang. Checkout marketplace Anda yang ada tetap di tempat dan startup tidak tertunda.325Anda bekerja di lingkungan di mana host git marketplace tidak dapat dijangkau, dan setiap sesi mengulangi refresh yang gagal di latar belakang. Checkout marketplace Anda yang ada tetap di tempat.

326 326 

327Setiap sesi, untuk marketplace dengan [auto-update on](https://code.claude.com/docs/id/plugins/loading.md#which-marketplaces-and-plugins-auto-update), Claude Code memeriksa host git marketplace untuk commit baru di latar belakang. Ketika pemeriksaan itu tidak dapat menjangkau host, itu mencoba mengklon marketplace lagi, dan offline klon itu juga gagal.327Setiap sesi, untuk marketplace dengan [auto-update on](https://code.claude.com/docs/id/plugins/loading.md#which-marketplaces-and-plugins-auto-update), Claude Code memeriksa host git marketplace untuk commit baru di latar belakang. Ketika pemeriksaan itu tidak dapat menjangkau host, itu mencoba mengklon marketplace lagi, dan offline klon itu juga gagal.

328 328 


675 675 

676### `Plugin "<name>" not cached at <path>`676### `Plugin "<name>" not cached at <path>`

677 677 

678Tab **Errors** menunjukkan baris ini dengan panduan `Run /plugin to refresh the plugin cache`. Claude Code memiliki catatan instalasi untuk plugin, tetapi direktori yang ditunjuk catatan hilang, misalnya setelah Anda menghapus cache.678Tab **Errors** menunjukkan baris ini dengan panduan `Run /plugin to refresh the plugin cache`. Artinya Claude Code tidak menemukan salinan plugin yang dapat digunakan. Misalnya, Anda menghapus cache, sehingga direktori yang ditunjuk catatan instalasinya hilang. Atau Anda membuka repositori yang pengaturannya mengaktifkan plugin tersebut, dan Anda belum menginstalnya.

679 679 

680Instal ulang plugin dari shell Anda. `claude plugin install <name>@<marketplace>` mengunduh ulang plugin yang direktori instalasi-nya hilang meskipun catatan ada:680Instal plugin dari shell Anda. Jika Anda membuka repositori yang `.claude/settings.json`-nya mengaktifkan plugin tersebut, jalankan perintah ini dari proyek dengan kunci plugin dari `enabledPlugins`, seperti yang dijelaskan di [Enabled in project settings but not installed](https://code.claude.com/docs/id/plugins/loading.md#enabled-in-project-settings-but-not-installed):

681 

682```shell theme={null}

683claude plugin install <name>@<marketplace> --scope project

684```

685 

686Jika tidak, jalankan perintah ini, yang mengunduh ulang plugin yang direktori instalasinya hilang meskipun catatannya ada:

681 687 

682```shell theme={null}688```shell theme={null}

683claude plugin install <name>@<marketplace>689claude plugin install <name>@<marketplace>

684```690```

685 691 

686Kemudian jalankan `/reload-plugins` dalam sesi Anda. Entri tab **Errors** menghilang dan plugin kembali di bawah **Installed**.692Kemudian jalankan `/reload-plugins` dalam sesi Anda. Entri tab **Errors** menghilang dan plugin tercantum di bawah **Installed**.

687 693 

688### `installed_plugins.json holds a record under "<id>" that this version of Claude Code cannot read`694### `installed_plugins.json holds a record under "<id>" that this version of Claude Code cannot read`

689 695 

Details

103[Fast mode](https://code.claude.com/docs/id/fast-mode.md) dan kecepatan standar menyimpan cache yang terpisah, sehingga setelah Anda mengaktifkan atau menonaktifkan fast mode, permintaan berikutnya tidak dapat menggunakan apa yang di-cache oleh kecepatan lainnya. Pertama kali Anda mengaktifkan fast mode dalam suatu percakapan, permintaan berikutnya membaca seluruh percakapan sejauh ini tanpa cache dengan [tarif fast mode](https://code.claude.com/docs/id/fast-mode.md#understand-the-cost-tradeoff). Agar biaya tersebut tetap kecil, aktifkan fast mode di awal sesi.103[Fast mode](https://code.claude.com/docs/id/fast-mode.md) dan kecepatan standar menyimpan cache yang terpisah, sehingga setelah Anda mengaktifkan atau menonaktifkan fast mode, permintaan berikutnya tidak dapat menggunakan apa yang di-cache oleh kecepatan lainnya. Pertama kali Anda mengaktifkan fast mode dalam suatu percakapan, permintaan berikutnya membaca seluruh percakapan sejauh ini tanpa cache dengan [tarif fast mode](https://code.claude.com/docs/id/fast-mode.md#understand-the-cost-tradeoff). Agar biaya tersebut tetap kecil, aktifkan fast mode di awal sesi.

104 104 

105* Jika Anda mengaktifkannya saat Claude sedang bekerja, giliran tersebut selesai dengan kecepatan standar, dan Anda membayar pembacaan tanpa cache apa pun pada permintaan pertama giliran Anda berikutnya.105* Jika Anda mengaktifkannya saat Claude sedang bekerja, giliran tersebut selesai dengan kecepatan standar, dan Anda membayar pembacaan tanpa cache apa pun pada permintaan pertama giliran Anda berikutnya.

106* Jika model Anda saat ini tidak mendukung fast mode, menjalankan `/fast` juga [mengganti model Anda ke Opus](https://code.claude.com/docs/id/fast-mode.md#toggle-fast-mode). [Pergantian model](#switching-models) itu dengan sendirinya memulai cache baru sejak permintaan berikutnya dalam giliran yang sedang berjalan.106* Jika model Anda saat ini tidak mendukung fast mode, menjalankan `/fast` juga [mengganti model Anda](https://code.claude.com/docs/id/fast-mode.md#toggle-fast-mode). [Pergantian model](#switching-models) itu dengan sendirinya memulai cache baru sejak permintaan berikutnya dalam giliran yang sedang berjalan.

107 107 

108Setiap peralihan berikutnya membaca tanpa cache apa pun yang belum di-cache oleh kecepatan tujuan Anda. Perubahan kecepatan yang dilakukan Claude Code dengan sendirinya, seperti [fallback ke kecepatan standar](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits) setelah rate limit dan kembalinya ke fast mode nanti, juga dihitung sebagai peralihan.108Setiap peralihan berikutnya membaca tanpa cache apa pun yang belum di-cache oleh kecepatan tujuan Anda. Perubahan kecepatan yang dilakukan Claude Code dengan sendirinya, seperti [fallback ke kecepatan standar](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits) setelah rate limit dan kembalinya ke fast mode nanti, juga dihitung sebagai peralihan.

109 109 

Details

185* **Effort level**: saat Anda menetapkan [effort level](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) dari perangkat yang terhubung, dengan `/effort` atau kontrol effort perangkat, Claude Code menerapkannya ke sesi di mesin Anda. Jika Anda menyematkan level dengan `CLAUDE_CODE_EFFORT_LEVEL`, sesi menyimpan level itu, dan Claude Code menolak pilihan berbeda dari kontrol effort. Memilih level dari kontrol effort memerlukan Claude Code v2.1.234 atau lebih baru di mesin Anda.185* **Effort level**: saat Anda menetapkan [effort level](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) dari perangkat yang terhubung, dengan `/effort` atau kontrol effort perangkat, Claude Code menerapkannya ke sesi di mesin Anda. Jika Anda menyematkan level dengan `CLAUDE_CODE_EFFORT_LEVEL`, sesi menyimpan level itu, dan Claude Code menolak pilihan berbeda dari kontrol effort. Memilih level dari kontrol effort memerlukan Claude Code v2.1.234 atau lebih baru di mesin Anda.

186* **Reconnecting after a connection failure**: jalankan `/remote-control` untuk terhubung kembali. Jika compaction menulis ulang percakapan atau Anda beralih percakapan dengan `/resume` sementara itu, Claude Code mengarsipkan sesi server yang digunakannya bukan meninggalkannya dalam daftar sesi. Anda masih dapat menemukan sesi itu di antara [sesi yang diarsipkan](https://code.claude.com/docs/id/claude-code-on-the-web.md#find-an-archived-session) Anda di claude.ai/code. Beralih percakapan saat perangkat masih terhubung tidak mengarsipkan sesi.186* **Reconnecting after a connection failure**: jalankan `/remote-control` untuk terhubung kembali. Jika compaction menulis ulang percakapan atau Anda beralih percakapan dengan `/resume` sementara itu, Claude Code mengarsipkan sesi server yang digunakannya bukan meninggalkannya dalam daftar sesi. Anda masih dapat menemukan sesi itu di antara [sesi yang diarsipkan](https://code.claude.com/docs/id/claude-code-on-the-web.md#find-an-archived-session) Anda di claude.ai/code. Beralih percakapan saat perangkat masih terhubung tidak mengarsipkan sesi.

187 187 

188### Fork sesi dari browser Anda

189 

190Untuk mencoba arah yang berbeda tanpa mengganggu sesi, buka sesi tersebut di [claude.ai/code](https://claude.ai/code) dan pilih **Fork** di menu sesi, atau lakukan fork dari pesan sebelumnya dalam transkrip. Fork terbuka sebagai sesi baru di daftar sesi Anda dan melanjutkan percakapan dari titik itu sementara sesi asli terus berjalan. Fork memerlukan Claude Code v2.1.277 atau lebih baru di mesin Anda.

191 

192Server `claude remote-control` yang dimulai dengan `--spawn session` hanya memiliki ruang untuk satu sesinya, sehingga tidak dapat menjalankan fork.

193 

194Claude Code menolak fork dalam kasus seperti berikut:

195 

196* Sesi sedang sibuk. Lakukan fork saat sesi dalam keadaan idle.

197* Sesi di-host oleh ekstensi VS Code atau aplikasi lain yang dibangun di atas [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md).

198 

188### Enable Remote Control for all sessions199### Enable Remote Control for all sessions

189 200 

190Remote Control hanya diaktifkan saat Anda secara eksplisit menjalankan `claude remote-control`, `claude --remote-control`, atau `/remote-control`, kecuali auto-connect diaktifkan. Untuk mengaktifkan auto-connect untuk setiap sesi interaktif, jalankan `/config` di dalam Claude Code dan atur **Enable Remote Control for all sessions**. Toggle mengambil tiga nilai:201Remote Control hanya diaktifkan saat Anda secara eksplisit menjalankan `claude remote-control`, `claude --remote-control`, atau `/remote-control`, kecuali auto-connect diaktifkan. Untuk mengaktifkan auto-connect untuk setiap sesi interaktif, jalankan `/config` di dalam Claude Code dan atur **Enable Remote Control for all sessions**. Toggle mengambil tiga nilai:

191 202 

192* **`true`**: terhubung secara otomatis saat sesi interaktif dimulai.203* **`true`**: terhubung secara otomatis saat sesi interaktif dimulai.

193* **`false`**: matikan auto-connect, meskipun `true` dari [managed settings](https://code.claude.com/docs/id/managed-settings.md) mengalahkannya, karena Claude Code menyimpan pilihan ke pengaturan pengguna Anda. Sebuah `false` dalam pengaturan proyek atau lokal (`.claude/settings.json`, `.claude/settings.local.json`) mematikan auto-connect bahkan di atas `true` yang dikelola.204* **`false`**: matikan auto-connect, meskipun `true` dari [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) mengalahkannya, karena Claude Code menyimpan pilihan ke pengaturan pengguna Anda. Sebuah `false` dalam pengaturan proyek atau lokal (`.claude/settings.json`, `.claude/settings.local.json`) mematikan auto-connect bahkan di atas `true` terkelola.

194* **`default`**: hapus pilihan Anda dan ikuti default admin organisasi Anda jika ada yang ditetapkan, jika tidak Claude Code default saat ini. Jika Anda mengatur `DISABLE_TELEMETRY` atau `DO_NOT_TRACK`, lihat [Auto-connect dengan `DISABLE_TELEMETRY` atau `DO_NOT_TRACK` diatur](#auto-connect-with-disable-telemetry-or-do-not-track).205* **`default`**: hapus pilihan Anda dan ikuti default admin organisasi Anda jika ada yang ditetapkan, jika tidak Claude Code default saat ini. Jika Anda mengatur `DISABLE_TELEMETRY` atau `DO_NOT_TRACK`, lihat [Auto-connect dengan `DISABLE_TELEMETRY` atau `DO_NOT_TRACK` diatur](#auto-connect-with-disable-telemetry-or-do-not-track).

195 206 

196Ekstensi VS Code dan aplikasi Desktop juga memiliki toggle auto-connect:207Ekstensi VS Code dan aplikasi Desktop juga memiliki toggle auto-connect:


198* **VS Code extension**: **Enable Remote Control for all sessions** dalam bagian Settings [command menu](https://code.claude.com/docs/id/vs-code.md#use-the-prompt-box).209* **VS Code extension**: **Enable Remote Control for all sessions** dalam bagian Settings [command menu](https://code.claude.com/docs/id/vs-code.md#use-the-prompt-box).

199* **Desktop app**: **Connect new sessions to Remote Control** di **Settings > Code** atau **Settings > Claude Code**. Lihat [Mengontrol sesi mana yang muncul di perangkat Anda yang lain](https://code.claude.com/docs/id/desktop.md#control-which-sessions-appear-on-your-other-devices).210* **Desktop app**: **Connect new sessions to Remote Control** di **Settings > Code** atau **Settings > Claude Code**. Lihat [Mengontrol sesi mana yang muncul di perangkat Anda yang lain](https://code.claude.com/docs/id/desktop.md#control-which-sessions-appear-on-your-other-devices).

200 211 

201Untuk mengaktifkan auto-connect dari file pengaturan, atur [`remoteControlAtStartup`](https://code.claude.com/docs/id/settings-reference#remotecontrolatstartup) ke `true` dalam `~/.claude/settings.json` pengguna Anda atau dalam [managed settings](https://code.claude.com/docs/id/managed-settings.md). Dalam pengaturan proyek atau lokal (`.claude/settings.json`, `.claude/settings.local.json`), Claude Code menghormati `false` dan mematikan auto-connect untuk repositori itu, tetapi mengabaikan `true`, sehingga file yang diperiksa tidak dapat mengaktifkan Remote Control untuk semua orang yang membuka repositori.212Untuk mengaktifkan auto-connect dari file pengaturan, atur [`remoteControlAtStartup`](https://code.claude.com/docs/id/settings-reference#remotecontrolatstartup) ke `true` dalam `~/.claude/settings.json` pengguna Anda atau dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md). Dalam pengaturan proyek atau lokal (`.claude/settings.json`, `.claude/settings.local.json`), Claude Code menghormati `false` dan mematikan auto-connect untuk repositori itu. Claude Code mengabaikan `true`, sehingga Anda tidak dapat menggunakan file yang di-commit ke repositori untuk mengaktifkan Remote Control bagi semua orang yang membuka repositori tersebut.

202 213 

203Auto-connect masuk dengan akun claude.ai Anda sendiri, jadi sesi yang dimulainya hanya muncul di aplikasi Claude akun Anda sendiri dan tidak memberikan akses kepada siapa pun.214Auto-connect masuk dengan akun claude.ai Anda sendiri, jadi sesi yang dimulainya hanya muncul di aplikasi Claude akun Anda sendiri dan tidak memberikan akses kepada siapa pun.

204 215 

routines.md +1 −1

Details

528* [`/loop` dan penjadwalan dalam sesi](https://code.claude.com/docs/id/scheduled-tasks): jadwalkan tugas lokal dalam sesi CLI yang terbuka528* [`/loop` dan penjadwalan dalam sesi](https://code.claude.com/docs/id/scheduled-tasks): jadwalkan tugas lokal dalam sesi CLI yang terbuka

529* [Tugas terjadwal Desktop](https://code.claude.com/docs/id/desktop-scheduled-tasks.md): tugas terjadwal lokal yang berjalan di mesin Anda dengan akses ke file lokal529* [Tugas terjadwal Desktop](https://code.claude.com/docs/id/desktop-scheduled-tasks.md): tugas terjadwal lokal yang berjalan di mesin Anda dengan akses ke file lokal

530* [Lingkungan cloud](https://code.claude.com/docs/id/cloud-environments.md): konfigurasikan akses jaringan, environment variable, dan skrip penyiapan untuk sesi cloud530* [Lingkungan cloud](https://code.claude.com/docs/id/cloud-environments.md): konfigurasikan akses jaringan, environment variable, dan skrip penyiapan untuk sesi cloud

531* [Projects](https://code.claude.com/docs/id/claude-projects.md): pekerjaan berkelanjutan yang dikoordinasikan Claude di berbagai sesi cloud paralel; tugas terjadwal yang dibuat dari sebuah proyek muncul di tab **Scheduled tasks**531* [Projects](https://code.claude.com/docs/id/claude-projects.md): pekerjaan berkelanjutan yang dikoordinasikan Claude di berbagai sesi cloud paralel; tugas terjadwal yang dibuat dari sebuah proyek muncul di tampilan **Scheduled tasks** proyek tersebut

532* [Konektor MCP](https://code.claude.com/docs/id/mcp.md): hubungkan layanan eksternal seperti Slack, Linear, dan Google Drive532* [Konektor MCP](https://code.claude.com/docs/id/mcp.md): hubungkan layanan eksternal seperti Slack, Linear, dan Google Drive

533* [GitHub Actions](https://code.claude.com/docs/id/github-actions.md): jalankan Claude di pipeline CI Anda pada peristiwa repositori533* [GitHub Actions](https://code.claude.com/docs/id/github-actions.md): jalankan Claude di pipeline CI Anda pada peristiwa repositori

sandboxing.md +4 −0

Details

903 903 

904Setelah kegagalan, Claude mungkin [menawarkan untuk menjalankan kembali perintah di luar sandbox](#the-unsandboxed-retry-escape-hatch). Setujui retry itu, atau jalankan perintah git sendiri di terminal lain. Jika Anda telah menetapkan `allowUnsandboxedCommands` ke `false`, Claude tidak dapat menawarkan retry, jadi jalankan perintah sendiri.904Setelah kegagalan, Claude mungkin [menawarkan untuk menjalankan kembali perintah di luar sandbox](#the-unsandboxed-retry-escape-hatch). Setujui retry itu, atau jalankan perintah git sendiri di terminal lain. Jika Anda telah menetapkan `allowUnsandboxedCommands` ke `false`, Claude tidak dapat menawarkan retry, jadi jalankan perintah sendiri.

905 905 

906### Perintah git gagal dengan `Unable to create '…/index.lock'`

907 

908Jika Anda memulai Claude Code di subdirektori sebuah repositori, kesalahan ini dapat berarti `.git` berada di luar [lokasi yang dapat ditulisi oleh perintah sandboxed](#filesystem-isolation). Mulai Claude Code dari root repositori sebagai gantinya, atau dari root worktree dalam [linked worktree](https://code.claude.com/docs/id/worktrees.md).

909 

906### Folder bernama `objects` atau `refs` menghilang setelah sebuah perintah910### Folder bernama `objects` atau `refs` menghilang setelah sebuah perintah

907 911 

908Folder `objects` atau `refs` tingkat atas yang muncul selama sesi dapat [dihapus setelah perintah sandboxed selesai](#when-the-sandbox-deletes-head-objects-or-refs). Tidak menjadi soal apakah folder itu dibuat oleh perintah, Claude, atau Anda. Untuk mempertahankan folder, tinggalkan sesuatu di dalamnya. Jika file atau symlink `HEAD` pernah berada di tingkat atas selama sesi, pindahkan file tersebut, lalu mulai ulang setiap sesi Claude Code yang terbuka di sana.912Folder `objects` atau `refs` tingkat atas yang muncul selama sesi dapat [dihapus setelah perintah sandboxed selesai](#when-the-sandbox-deletes-head-objects-or-refs). Tidak menjadi soal apakah folder itu dibuat oleh perintah, Claude, atau Anda. Untuk mempertahankan folder, tinggalkan sesuatu di dalamnya. Jika file atau symlink `HEAD` pernah berada di tingkat atas selama sesi, pindahkan file tersebut, lalu mulai ulang setiap sesi Claude Code yang terbuka di sana.

Details

54}54}

55```55```

56 56 

57Setiap rekan kerja juga [menjalankan `claude plugin install security-guidance@claude-plugins-official --scope project`](https://code.claude.com/docs/id/plugins/loading#enabled-in-project-settings-but-not-installed) satu kali per clone.

58 

57Administrator dapat mengaktifkan plugin di seluruh organisasi dengan menetapkan [`enabledPlugins`](https://code.claude.com/docs/id/settings-reference#enabledplugins) dalam [pengaturan terkelola](https://code.claude.com/docs/id/admin-setup.md).59Administrator dapat mengaktifkan plugin di seluruh organisasi dengan menetapkan [`enabledPlugins`](https://code.claude.com/docs/id/settings-reference#enabledplugins) dalam [pengaturan terkelola](https://code.claude.com/docs/id/admin-setup.md).

58 60 

59## Apa yang diperiksa plugin61## Apa yang diperiksa plugin

Details

235set -u235set -u

236export GIT_ALLOW_PROTOCOL=${GIT_ALLOW_PROTOCOL:-https:http:ssh}236export GIT_ALLOW_PROTOCOL=${GIT_ALLOW_PROTOCOL:-https:http:ssh}

237IFS=':'237IFS=':'

238rc=0 # becomes 1 when a step fails; a non-zero exit makes the runner log it

238# -c overrides beat repo-local settings, blocking session-written fsmonitor,239# -c overrides beat repo-local settings, blocking session-written fsmonitor,

239# hook-path, and gpg-program config from executing code with the hook's240# hook-path, and gpg-program config from executing code with the hook's

240# privileges. -c commit.gpgsign=false also leaves these rescue commits241# privileges. -c commit.gpgsign=false also leaves these rescue commits


245g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \246g() { git -c core.fsmonitor=false -c core.hooksPath=/dev/null \

246 -c commit.gpgsign=false "$@"; }247 -c commit.gpgsign=false "$@"; }

247for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do248for ws in $CLAUDE_RUNNER_WORKSPACE_PATHS; do

248 cd "$ws" 2>/dev/null || continue249 cd "$ws" || { rc=1; continue; }

249 [ -z "$(g status --porcelain 2>/dev/null)" ] && continue250 g add -A || rc=1

250 g add -A251 g diff-index --cached --quiet HEAD && continue # nothing to save

251 g commit -q -m "runner snapshot: $CLAUDE_RUNNER_SESSION_ID ($CLAUDE_RUNNER_EXIT_REASON)" || continue252 g commit -q -m "runner snapshot: $CLAUDE_RUNNER_SESSION_ID ($CLAUDE_RUNNER_EXIT_REASON)" || { rc=1; continue; }

252 g push -q origin "HEAD:refs/heads/rescue/$CLAUDE_RUNNER_SESSION_ID" || true253 g push -q origin "HEAD:refs/heads/rescue/$CLAUDE_RUNNER_SESSION_ID" || rc=1

253done254done

255exit "$rc"

254```256```

255 257 

256Baris `GIT_ALLOW_PROTOCOL` dalam skrip membatasi git pada remote HTTPS, HTTP, dan SSH. Jika lingkungan runner sudah menetapkan daftar `GIT_ALLOW_PROTOCOL` sendiri yang tidak kosong, skrip mempertahankan daftar tersebut.258Baris `GIT_ALLOW_PROTOCOL` dalam skrip membatasi git pada remote HTTPS, HTTP, dan SSH. Jika lingkungan runner sudah menetapkan daftar `GIT_ALLOW_PROTOCOL` sendiri yang tidak kosong, skrip mempertahankan daftar tersebut.

Details

23 * **Dengan [git yang dikelola Anthropic](#use-the-anthropic-git-proxy)**: dengan kredensial semacam itu, Claude menjangkau GitHub secara langsung alih-alih melalui git yang dikelola Anthropic.23 * **Dengan [git yang dikelola Anthropic](#use-the-anthropic-git-proxy)**: dengan kredensial semacam itu, Claude menjangkau GitHub secara langsung alih-alih melalui git yang dikelola Anthropic.

24 * **Tanpa git yang dikelola Anthropic**: kredensial clone dapat tetap berada di dalam image jika Anda membatasinya seketat yang dijelaskan di [Sertakan konfigurasi git di image Anda](#ship-git-config-in-your-image).24 * **Tanpa git yang dikelola Anthropic**: kredensial clone dapat tetap berada di dalam image jika Anda membatasinya seketat yang dijelaskan di [Sertakan konfigurasi git di image Anda](#ship-git-config-in-your-image).

25* **Jauhkan secret lingkungan dari host yang menjalankan sesi**: secret lingkungan dapat mendaftarkan runner dan mengambil sesi apa pun yang diantrekan pada lingkungan tersebut. Pada armada tetap, secret ini berada di setiap host runner, tempat kode sesi mana pun dapat membaca file secret. Utamakan [runner on-demand](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#on-demand-runners), di mana secret tetap berada di host orkestrator, yang tidak pernah menjalankan kode pengguna, dan setiap runner menerima work order sekali pakai yang mendaftarkan tepat satu runner. Pada armada tetap, perlakukan file secret lingkungan sebagai dapat dibaca oleh setiap sesi dan rotasi secret setelah adanya dugaan kompromi sesi.25* **Jauhkan secret lingkungan dari host yang menjalankan sesi**: secret lingkungan dapat mendaftarkan runner dan mengambil sesi apa pun yang diantrekan pada lingkungan tersebut. Pada armada tetap, secret ini berada di setiap host runner, tempat kode sesi mana pun dapat membaca file secret. Utamakan [runner on-demand](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#on-demand-runners), di mana secret tetap berada di host orkestrator, yang tidak pernah menjalankan kode pengguna, dan setiap runner menerima work order sekali pakai yang mendaftarkan tepat satu runner. Pada armada tetap, perlakukan file secret lingkungan sebagai dapat dibaca oleh setiap sesi dan rotasi secret setelah adanya dugaan kompromi sesi.

26 * **Setelah dugaan kompromi**: minta seorang [Owner](https://code.claude.com/docs/id/cloud-environments.md#organization-shared-environments) membuat secret baru dan mencabut secret lama dari tab **Configuration** lingkungan, lalu luncurkan secret baru tersebut. Anthropic menolak setiap orkestrator dan runner yang menggunakan secret lama, termasuk runner on-demand dari work order-nya. Runner Anda akan keluar, sehingga menginterupsi sesinya.26 * **Setelah dugaan kompromi, cabut terlebih dahulu sesi yang dicurigai**: sebelum Anda menghentikan runner-nya atau mencabut secret, pilih **Revoke token** di menu sesi pada tab **Activity**. Setelah itu, tidak ada runner yang dapat melanjutkan sesi tersebut.

27 * **Lalu ganti secret**: minta seorang [Owner](https://code.claude.com/docs/id/cloud-environments.md#organization-shared-environments) membuat secret baru dan mencabut secret lama dari tab **Configuration** lingkungan, lalu luncurkan secret baru tersebut. Anthropic menolak setiap orkestrator dan runner yang menggunakan secret lama, termasuk runner on-demand dari work order-nya. Runner Anda akan keluar, sehingga menginterupsi sesinya.

27* **Tolak egress jaringan secara default**: batasi lalu lintas keluar runner dan container sesi di batas jaringan Anda sendiri pada setiap lingkungan; [Tolak egress secara default](#default-deny-egress) menjelaskan apa yang perlu diizinkan dan alasannya.28* **Tolak egress jaringan secara default**: batasi lalu lintas keluar runner dan container sesi di batas jaringan Anda sendiri pada setiap lingkungan; [Tolak egress secara default](#default-deny-egress) menjelaskan apa yang perlu diizinkan dan alasannya.

28* **IAM host dengan hak akses minimal**: identitas komputasi yang terpasang pada host runner, seperti instance profile atau akun layanan node, sebaiknya hanya memberikan apa yang dibutuhkan oleh runner itu sendiri. Sesi sebaiknya memperoleh kredensialnya sendiri melalui skrip wrapper Anda alih-alih mewarisi kredensial host.29* **IAM host dengan hak akses minimal**: identitas komputasi yang terpasang pada host runner, seperti instance profile atau akun layanan node, sebaiknya hanya memberikan apa yang dibutuhkan oleh runner itu sendiri. Sesi sebaiknya memperoleh kredensialnya sendiri melalui skrip wrapper Anda alih-alih mewarisi kredensial host.

29* **Blokir endpoint metadata cloud dari sesi**: menjauhkan sesi dari identitas host memerlukan pemblokiran akses mereka ke endpoint metadata cloud, dan kebijakan egress tingkat subnet tidak mencegat lalu lintas metadata link-local, jadi blokir di dalam container itu sendiri:30* **Blokir endpoint metadata cloud dari sesi**: menjauhkan sesi dari identitas host memerlukan pemblokiran akses mereka ke endpoint metadata cloud, dan kebijakan egress tingkat subnet tidak mencegat lalu lintas metadata link-local, jadi blokir di dalam container itu sendiri:


243 244 

244Untuk setiap sesi, runner dengan Claude Code v2.1.267 atau lebih baru juga mencatat baris `[runner:session]` yang berisi `governed git ACTIVE` ketika Anthropic melayani git sesi tersebut, atau satu baris `[runner:warn]` yang berisi `the server withheld Anthropic-managed git for this session` ketika tidak. Temukan baris yang Anda lihat di antara kasus-kasus berikut:245Untuk setiap sesi, runner dengan Claude Code v2.1.267 atau lebih baru juga mencatat baris `[runner:session]` yang berisi `governed git ACTIVE` ketika Anthropic melayani git sesi tersebut, atau satu baris `[runner:warn]` yang berisi `the server withheld Anthropic-managed git for this session` ketika tidak. Temukan baris yang Anda lihat di antara kasus-kasus berikut:

245 246 

246* **Baik `governed git ACTIVE` maupun baris `withheld` tidak ada**: runner yang lebih lama dari Claude Code v2.1.267 tidak mencatat kedua baris tersebut, dan Anthropic tidak melayani sesi-sesinya. Perbarui runner ke v2.1.267 atau lebih baru dengan mengikuti [Pin the version](#pin-the-version).247* **Baik `governed git ACTIVE` maupun baris `withheld` tidak ada**: jika runner lebih lama dari Claude Code v2.1.267, Anthropic tidak melayani sesi-sesinya. Perbarui runner ke v2.1.267 atau lebih baru dengan mengikuti [Pin the version](#pin-the-version).

247* **Baris `withheld`**: Anthropic tidak melayani sesi tersebut. Runner yang sebelumnya bekerja dengan proxy git dapat gagal dengan cara ini tanpa perubahan apa pun di pihak Anda.248* **Baris `withheld`**: Anthropic tidak melayani sesi tersebut. Runner yang sebelumnya bekerja dengan proxy git dapat gagal dengan cara ini tanpa perubahan apa pun di pihak Anda.

248 * **Sebuah repositori tidak berada di github.com**: sesi dengan satu repositori saja di host git lain, seperti GitHub Enterprise Server, tidak dilayani, termasuk repositori github.com-nya. [Nonaktifkan proxy git Anthropic](#turn-the-anthropic-git-proxy-off) untuk runner di lingkungan tersebut.249 * **Sebuah repositori tidak berada di github.com**: sesi dengan satu repositori saja di host git lain, seperti GitHub Enterprise Server, tidak dilayani, termasuk repositori github.com-nya. [Nonaktifkan proxy git Anthropic](#turn-the-anthropic-git-proxy-off) untuk runner di lingkungan tersebut.

249 * **Setiap repositori berada di github.com**: laporkan kegagalan tersebut ke [tim akun Anthropic Anda](#report-an-issue) dengan ID sesi dari baris `withheld`. Anthropic mencatat alasannya di sisinya.250 * **Setiap repositori berada di github.com**: laporkan kegagalan tersebut ke [tim akun Anthropic Anda](#report-an-issue) dengan ID sesi dari baris `withheld`. Anthropic mencatat alasannya di sisinya.


396Tukar `linux-x64` untuk `linux-arm64` jika node Anda adalah ARM, atau untuk `linux-x64-musl` atau `linux-arm64-musl` pada gambar berbasis musl seperti Alpine; lihat [Alpine Linux setup](https://code.claude.com/docs/id/setup.md#alpine-linux-and-musl-based-distributions) untuk paket tambahan yang dibutuhkan gambar musl. URL adalah lokasi rilis Claude Code standar, jadi Anda dapat memverifikasi biner yang diunduh terhadap manifes yang ditandatangani rilis seperti yang dijelaskan dalam [Binary integrity and code signing](https://code.claude.com/docs/id/setup.md#binary-integrity-and-code-signing). Runner memerlukan Claude Code versi 2.1.224 atau lebih baru, atau 2.1.229 atau lebih baru untuk melayani sesi Claude Tag. Bangun gambar, kemudian dorong ke registri Anda dan referensikan dalam resep di bawah:397Tukar `linux-x64` untuk `linux-arm64` jika node Anda adalah ARM, atau untuk `linux-x64-musl` atau `linux-arm64-musl` pada gambar berbasis musl seperti Alpine; lihat [Alpine Linux setup](https://code.claude.com/docs/id/setup.md#alpine-linux-and-musl-based-distributions) untuk paket tambahan yang dibutuhkan gambar musl. URL adalah lokasi rilis Claude Code standar, jadi Anda dapat memverifikasi biner yang diunduh terhadap manifes yang ditandatangani rilis seperti yang dijelaskan dalam [Binary integrity and code signing](https://code.claude.com/docs/id/setup.md#binary-integrity-and-code-signing). Runner memerlukan Claude Code versi 2.1.224 atau lebih baru, atau 2.1.229 atau lebih baru untuk melayani sesi Claude Tag. Bangun gambar, kemudian dorong ke registri Anda dan referensikan dalam resep di bawah:

397 398 

398```bash theme={null}399```bash theme={null}

400# If your model needs a newer release, change stable to latest in the URL

399docker build \401docker build \

400 --build-arg CLAUDE_CODE_VERSION="$(curl -fsSL https://downloads.claude.ai/claude-code-releases/stable)" \402 --build-arg CLAUDE_CODE_VERSION="$(curl -fsSL https://downloads.claude.ai/claude-code-releases/stable)" \

401 -t <your-registry>/claude-runner:latest .403 -t <your-registry>/claude-runner:latest .


429Runner menggunakan `--capacity` untuk membatasi berapa banyak sesi yang dijalankannya sekaligus. Itu tidak membagi CPU atau memori di antara mereka, jadi sesi pada runner berbagi CPU dan memori kontainer. Agar penggunaan memori satu sesi tidak mengakhiri sesi lainnya, jalankan satu sesi per runner dengan [batas memorinya sendiri](#give-each-session-its-own-memory-limit).431Runner menggunakan `--capacity` untuk membatasi berapa banyak sesi yang dijalankannya sekaligus. Itu tidak membagi CPU atau memori di antara mereka, jadi sesi pada runner berbagi CPU dan memori kontainer. Agar penggunaan memori satu sesi tidak mengakhiri sesi lainnya, jalankan satu sesi per runner dengan [batas memorinya sendiri](#give-each-session-its-own-memory-limit).

430 432 

431* **Satu sesi per runner**: berikan setiap kontainer nilai satu sesi. Gunakan ukuran ini pada `--capacity 1`, yang [bagian pengerasan](#harden-your-deployment) rekomendasikan, dan untuk [runner on-demand](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#on-demand-runners), di mana Anda menetapkan nilai pada workload yang [`spawn-runner` hook](https://code.claude.com/docs/id/self-hosted-environments-configuration#the-spawn-runner-hook) Anda kirimkan, seperti template pod Job Kubernetes.433* **Satu sesi per runner**: berikan setiap kontainer nilai satu sesi. Gunakan ukuran ini pada `--capacity 1`, yang [bagian pengerasan](#harden-your-deployment) rekomendasikan, dan untuk [runner on-demand](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#on-demand-runners), di mana Anda menetapkan nilai pada workload yang [`spawn-runner` hook](https://code.claude.com/docs/id/self-hosted-environments-configuration#the-spawn-runner-hook) Anda kirimkan, seperti template pod Job Kubernetes.

432* **Beberapa sesi per runner**: pada `--capacity` di atas satu, kalikan nilai satu sesi dengan kapasitas, karena hingga banyak sesi dapat berjalan dalam kontainer sekaligus. Resep [Kubernetes](#kubernetes) dan [Docker Compose](#docker-compose) menjalankan `--capacity 4` tanpa batas CPU atau memori, jadi tambahkan batas yang diukur untuk kapasitas yang Anda jalankan.434* **Beberapa sesi per runner**: pada `--capacity` di atas satu, kalikan nilai satu sesi dengan kapasitas, karena hingga sebanyak itu sesi dapat berjalan dalam kontainer secara bersamaan, [termasuk sesi yang idle](#release-idle-sessions-on-a-fixed-fleet). Resep [Kubernetes](#kubernetes) dan [Docker Compose](#docker-compose) menjalankan `--capacity 4` tanpa batas CPU atau memori, jadi tambahkan batas yang diukur untuk kapasitas yang Anda jalankan.

433* **Beberapa kontainer runner pada satu host**: ukur host untuk jumlah kapasitas semua runner, karena setiap runner hanya menghitung sesinya sendiri terhadap `--capacity`:435* **Beberapa kontainer runner pada satu host**: ukur host untuk jumlah kapasitas semua runner, karena setiap runner hanya menghitung sesinya sendiri terhadap `--capacity`:

434 436 

435 * **Memori**: kalikan memori satu sesi dengan jumlah tersebut, lalu tambahkan apa yang digunakan oleh proses host itu sendiri437 * **Memori**: kalikan memori satu sesi dengan jumlah tersebut, lalu tambahkan apa yang digunakan oleh proses host itu sendiri

Details

56| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Berapa lama menunggu proses Claude keluar dengan bersih setelah session berakhir, sebelum force-killing. Naikkan nilai jika hook `SessionEnd` child sendiri memerlukan lebih banyak waktu. |56| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Berapa lama menunggu proses Claude keluar dengan bersih setelah session berakhir, sebelum force-killing. Naikkan nilai jika hook `SessionEnd` child sendiri memerlukan lebih banyak waktu. |

57| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Berapa lama menunggu proses child yang belum diinisialisasi sebelum melepaskan slot sesi. Lihat [Timeout startup sesi](#session-startup-timeout) untuk kapan penghitungan dimulai dan sesi mana yang tetap dibiarkan berjalan. `0` menonaktifkan timeout. |57| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Berapa lama menunggu proses child yang belum diinisialisasi sebelum melepaskan slot sesi. Lihat [Timeout startup sesi](#session-startup-timeout) untuk kapan penghitungan dimulai dan sesi mana yang tetap dibiarkan berjalan. `0` menonaktifkan timeout. |

58| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Seed kepercayaan yang bertahan untuk setiap path repositori session sehingga `permissions.allow` dan `additionalDirectories` yang berkomitmen repo dihormati. Atur `false` untuk menghapus hibah izin yang berkomitmen repo dan mengonfigurasi aturan allow dalam `settings.json` konfigurasi host sebagai gantinya; pengaturan `sandbox.*` yang berkomitmen repo masih berlaku baik cara, itulah mengapa [repo-settings guard](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#harden-your-deployment) memindainya terlepas dari flag ini. |58| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Seed kepercayaan yang bertahan untuk setiap path repositori session sehingga `permissions.allow` dan `additionalDirectories` yang berkomitmen repo dihormati. Atur `false` untuk menghapus hibah izin yang berkomitmen repo dan mengonfigurasi aturan allow dalam `settings.json` konfigurasi host sebagai gantinya; pengaturan `sandbox.*` yang berkomitmen repo masih berlaku baik cara, itulah mengapa [repo-settings guard](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#harden-your-deployment) memindainya terlepas dari flag ini. |

59| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clone repositori di github.com melalui [Anthropic git proxy](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#use-the-anthropic-git-proxy) alih-alih auth git yang dikelola pelanggan. Memerlukan `--capacity 1` dan git 2.32 atau lebih baru; jika tidak, runner menolak untuk dimulai. Menggantikan flag rewrite. |59| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clone repositori di github.com melalui [Anthropic git proxy](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#use-the-anthropic-git-proxy) alih-alih auth git yang dikelola pelanggan. Memerlukan `--capacity 1` dan git 2.32 atau lebih baru; jika tidak, runner menolak untuk dimulai. Juga memerlukan Claude Code v2.1.267 atau lebih baru. Menggantikan flag rewrite. |

60 60 

61Sebagian besar flag durasi memiliki maksimum, dipilih untuk menjaga setiap timeout di dalam ceiling timer 32-bit runtime sekitar 24,85 hari. Flag `--*-min` cap pada 10080 menit, 7 hari; `--drain-grace-sec` pada 604800 detik, juga 7 hari; dan `--drain-wait-sec` pada 86400 detik, 24 jam. `--session-stop-grace-sec` dan `--post-session-hook-timeout-sec` tidak terbatas. Melampaui cap berperilaku berbeda per surface:61Sebagian besar flag durasi memiliki maksimum, dipilih untuk menjaga setiap timeout di dalam ceiling timer 32-bit runtime sekitar 24,85 hari. Flag `--*-min` cap pada 10080 menit, 7 hari; `--drain-grace-sec` pada 604800 detik, juga 7 hari; dan `--drain-wait-sec` pada 86400 detik, 24 jam. `--session-stop-grace-sec` dan `--post-session-hook-timeout-sec` tidak terbatas. Melampaui cap berperilaku berbeda per surface:

62 62 

Details

12 12 

13Dalam [lingkungan self-hosted](https://code.claude.com/docs/id/self-hosted-environments), Claude Code [cloud sessions](https://code.claude.com/docs/id/claude-code-on-the-web.md) berjalan pada gambar runner yang Anda bangun dan pertahankan. Sebelum meluncurkan gambar baru ke lingkungan produksi Anda, jalankan sesi lengkap terhadap lingkungan uji dari skrip: buat sesi, baca balasan Claude, kirim follow-up, dan baca balasan itu juga. Ini adalah bentuk uji smoke CI yang memverifikasi gambar runner Anda, akses git, dan alat kustom apa pun sebelum Anda mempromosikan perubahan.13Dalam [lingkungan self-hosted](https://code.claude.com/docs/id/self-hosted-environments), Claude Code [cloud sessions](https://code.claude.com/docs/id/claude-code-on-the-web.md) berjalan pada gambar runner yang Anda bangun dan pertahankan. Sebelum meluncurkan gambar baru ke lingkungan produksi Anda, jalankan sesi lengkap terhadap lingkungan uji dari skrip: buat sesi, baca balasan Claude, kirim follow-up, dan baca balasan itu juga. Ini adalah bentuk uji smoke CI yang memverifikasi gambar runner Anda, akses git, dan alat kustom apa pun sebelum Anda mempromosikan perubahan.

14 14 

15Resep ini mengasumsikan Anda telah [menyiapkan lingkungan dan runner](https://code.claude.com/docs/id/self-hosted-environments-quickstart.md#set-up-an-environment-and-runner), dan bahwa pekerjaan CI Anda memulai proses runner pada host yang sama dengan skrip uji, setup alami untuk menguji gambar runner baru. Hook Stop yang Anda instal pada runner menulis balasan akhir setiap giliran ke file lokal, dan skrip membacanya dari sana, jadi satu-satunya panggilan ke API Anthropic adalah dua dispatch itu sendiri. Jika runner uji Anda berada pada infrastruktur terpisah, lihat [Remote test runners](#remote-test-runners).15Resep ini mengasumsikan Anda telah [menyiapkan lingkungan dan runner](https://code.claude.com/docs/id/self-hosted-environments-quickstart.md#set-up-an-environment-and-runner), dan bahwa pekerjaan CI Anda memulai proses runner pada host yang sama dengan skrip uji. Hook Stop yang Anda instal pada runner menulis balasan akhir setiap giliran ke file lokal, dan skrip membacanya dari sana. Jika runner uji Anda berada pada infrastruktur terpisah, lihat [Remote test runners](#remote-test-runners).

16 16 

17## Instal hook capture pada runner uji Anda17## Instal hook capture pada runner uji Anda

18 18 

Details

62 62 

63Hooks menggunakan format yang sama seperti di `settings.json`.63Hooks menggunakan format yang sama seperti di `settings.json`.

64 64 

65Contoh ini menjalankan skrip audit setelah setiap pengeditan file di seluruh organisasi:65Contoh ini menjalankan skrip audit setelah panggilan tool `Edit` dan `Write` di seluruh organisasi:

66 66 

67```json theme={null}67```json theme={null}

68{68{


95 95 

96Untuk mengonfirmasi bahwa pengaturan sedang diterapkan, minta pengguna untuk memulai ulang Claude Code. Jika konfigurasi mencakup pengaturan yang memicu [dialog persetujuan keamanan](#security-approval-dialogs), pengguna melihat prompt yang menjelaskan pengaturan terkelola pada waktu Claude Code mengambilnya berikutnya: pada startup berikutnya, atau dalam satu jam dalam sesi interaktif yang sedang berjalan. Anda juga dapat memverifikasi bahwa aturan izin terkelola aktif dengan meminta pengguna menjalankan `/permissions` untuk melihat aturan izin efektif mereka.96Untuk mengonfirmasi bahwa pengaturan sedang diterapkan, minta pengguna untuk memulai ulang Claude Code. Jika konfigurasi mencakup pengaturan yang memicu [dialog persetujuan keamanan](#security-approval-dialogs), pengguna melihat prompt yang menjelaskan pengaturan terkelola pada waktu Claude Code mengambilnya berikutnya: pada startup berikutnya, atau dalam satu jam dalam sesi interaktif yang sedang berjalan. Anda juga dapat memverifikasi bahwa aturan izin terkelola aktif dengan meminta pengguna menjalankan `/permissions` untuk melihat aturan izin efektif mereka.

97 97 

98Dalam sesi, minta pengguna menjalankan `/status`. [Baris `Setting sources`](https://code.claude.com/docs/id/managed-settings#read-the-source-in-/status) mencantumkan `Enterprise managed settings` dengan `remote` di dalam tanda kurung ketika pengaturan yang dikelola server berlaku.

99 

98Untuk memeriksa hasil pengambilan pada mesin tertentu, minta pengguna menjalankan `claude doctor` dan baca baris `Managed settings (remote)`. Memerlukan Claude Code v2.1.248 atau lebih baru. Baris ini melaporkan salah satu dari empat hasil:100Untuk memeriksa hasil pengambilan pada mesin tertentu, minta pengguna menjalankan `claude doctor` dan baca baris `Managed settings (remote)`. Memerlukan Claude Code v2.1.248 atau lebih baru. Baris ini melaporkan salah satu dari empat hasil:

99 101 

100* Pengaturan yang dikirimkan dimuat102* Pengaturan yang dikirimkan dimuat


247* Jika gateway menjawab peluncuran interaktif yang diawasi dengan `401` dan pengaturan ini nonaktif, gateway telah mengakhiri proses masuk tersebut. Claude Code mencetak [`Cloud gateway session expired — run /login to reconnect.`](https://code.claude.com/docs/id/errors#cloud-gateway-session-expired) dan membuka sesi dalam keadaan keluar dari gateway hingga pengguna menjalankan `/login`.249* Jika gateway menjawab peluncuran interaktif yang diawasi dengan `401` dan pengaturan ini nonaktif, gateway telah mengakhiri proses masuk tersebut. Claude Code mencetak [`Cloud gateway session expired — run /login to reconnect.`](https://code.claude.com/docs/id/errors#cloud-gateway-session-expired) dan membuka sesi dalam keadaan keluar dari gateway hingga pengguna menjalankan `/login`.

248* Ketika pengambilan gagal dengan cara lain, atau pada jenis peluncuran lainnya kecuali subperintah `claude auth`, klien keluar dengan kesalahan.250* Ketika pengambilan gagal dengan cara lain, atau pada jenis peluncuran lainnya kecuali subperintah `claude auth`, klien keluar dengan kesalahan.

249 251 

250Ketika pengaturan ini aktif dalam sesi yang mengambil pengaturan yang dikelola server, CLI memblokir saat startup hingga pengaturan jarak jauh berhasil diambil ulang. Jika pengambilan gagal, CLI keluar alih-alih melanjutkan tanpa kebijakan. Pengaturan ini melanggengkan dirinya sendiri: setelah dikirim dari server, pengaturan ini juga di-cache secara lokal sehingga startup berikutnya menerapkan perilaku yang sama bahkan sebelum pengambilan pertama yang berhasil pada sesi baru. Sesi yang [tidak mengambil pengaturan yang dikelola server](#platform-availability) dimulai tanpa menunggu.252Ketika pengaturan ini aktif dalam sesi yang mengambil pengaturan yang dikelola server, CLI memblokir saat startup hingga pengaturan jarak jauh berhasil diambil ulang. Jika pengambilan gagal, CLI keluar alih-alih melanjutkan tanpa kebijakan. Sesi yang [tidak mengambil pengaturan yang dikelola server](#platform-availability) dimulai tanpa menunggu.

251 253 

252Untuk mengaktifkannya, tambahkan key tersebut ke konfigurasi pengaturan terkelola Anda:254Untuk mengaktifkannya, tambahkan key tersebut ke konfigurasi pengaturan terkelola Anda:

253 255 


259 261 

260Anda juga dapat menetapkan key ini dalam profil MDM [yang dikelola endpoint](https://code.claude.com/docs/id/managed-settings.md#delivery-mechanisms) atau file `managed-settings.json` sistem untuk menerapkan perilaku fail-closed pada peluncuran pertama, sebelum payload server apa pun tiba. Flag ini merupakan pengecualian terhadap [aturan prioritas](#settings-precedence) di atas: Claude Code mematuhinya ketika sumber terkelola mana pun yang dikendalikan admin menetapkannya, bahkan jika payload yang dikelola server dan di-cache juga ada, sehingga Claude Code tidak mengabaikan nilai yang dikirim MDM ketika pengaturan yang dikelola server ada.262Anda juga dapat menetapkan key ini dalam profil MDM [yang dikelola endpoint](https://code.claude.com/docs/id/managed-settings.md#delivery-mechanisms) atau file `managed-settings.json` sistem untuk menerapkan perilaku fail-closed pada peluncuran pertama, sebelum payload server apa pun tiba. Flag ini merupakan pengecualian terhadap [aturan prioritas](#settings-precedence) di atas: Claude Code mematuhinya ketika sumber terkelola mana pun yang dikendalikan admin menetapkannya, bahkan jika payload yang dikelola server dan di-cache juga ada, sehingga Claude Code tidak mengabaikan nilai yang dikirim MDM ketika pengaturan yang dikelola server ada.

261 263 

264Pada startup berikutnya, Claude Code membaca nilai yang dikirim server dari pengaturan yang di-cache, sehingga pengaturan ini sudah aktif sebelum pengambilan pertama pada sesi baru. Agar pengaturan ini tetap aktif tanpa bergantung pada salinan yang di-cache, tetapkan juga key tersebut di sumber yang dikelola endpoint.

265 

262Ketika [`policyHelper`](https://code.claude.com/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola, output-nya menggantikan setiap sumber terkelola lainnya untuk key yang dibaca Claude Code setelah startup. Untuk sumber tempat Claude Code membaca key ini, lihat [entri pengaturannya](https://code.claude.com/docs/id/settings-reference.md#forceremotesettingsrefresh). Entri `policyHelper` menjelaskan dari sumber mana Claude Code membaca helper dan kapan helper dijalankan.266Ketika [`policyHelper`](https://code.claude.com/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola, output-nya menggantikan setiap sumber terkelola lainnya untuk key yang dibaca Claude Code setelah startup. Untuk sumber tempat Claude Code membaca key ini, lihat [entri pengaturannya](https://code.claude.com/docs/id/settings-reference.md#forceremotesettingsrefresh). Entri `policyHelper` menjelaskan dari sumber mana Claude Code membaca helper dan kapan helper dijalankan.

263 267 

264Pengambilan pengaturan juga mengirimkan header `Cache-Control: no-cache` agar proxy HTTP perantara tidak menyajikan respons yang kedaluwarsa.268Pengambilan pengaturan juga mengirimkan header `Cache-Control: no-cache` agar proxy HTTP perantara tidak menyajikan respons yang kedaluwarsa.

settings.md +2 −2

Details

66 66 

67### Bagikan pengaturan dengan tim Anda67### Bagikan pengaturan dengan tim Anda

68 68 

69Commit `.claude/settings.json` sehingga semua orang yang mengkloning repositori mendapatkan izin, hook, dan plugin yang sama. Setiap rekan kerja masih dapat menggantikannya untuk diri mereka sendiri di `.claude/settings.local.json` mereka sendiri, sehingga pengecualian pribadi tidak perlu commit. Untuk file tim lengkap, lihat [pengaturan bersama tim](https://code.claude.com/docs/id/settings-example.md#a-teams-shared-settings).69Lakukan commit pada `.claude/settings.json` agar setiap orang yang meng-clone repositori mendapatkan izin, hook, dan pengaturan plugin yang sama. Setiap anggota tim tetap dapat menimpanya untuk diri sendiri di `.claude/settings.local.json` milik masing-masing, sehingga pengecualian pribadi tidak memerlukan commit. Untuk contoh file tim yang lengkap, lihat [pengaturan bersama tim](https://code.claude.com/docs/id/settings-example.md#a-teams-shared-settings).

70 70 

71Beberapa dari apa yang Anda commit menunggu sampai setiap rekan kerja [mempercayai folder](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust), dan beberapa kunci tidak pernah berlaku dari file repositori; [Troubleshoot a setting that doesn't apply](#common-cases) mencakup keduanya.71Beberapa dari apa yang Anda commit menunggu sampai setiap rekan kerja [mempercayai folder](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust), dan beberapa kunci tidak pernah berlaku dari file repositori; [Troubleshoot a setting that doesn't apply](#common-cases) mencakup keduanya.

72 72 


199* **Kesalahan Pengaturan**: file pengguna, proyek, atau lokal memiliki JSON tidak valid atau nilai yang ditolak skema. Saat awal sesi interaktif Claude Code menampilkan dialog yang memungkinkan Anda memperbaiki file dengan bantuan Claude, keluar, atau lanjutkan tanpa pengaturan yang rusak.199* **Kesalahan Pengaturan**: file pengguna, proyek, atau lokal memiliki JSON tidak valid atau nilai yang ditolak skema. Saat awal sesi interaktif Claude Code menampilkan dialog yang memungkinkan Anda memperbaiki file dengan bantuan Claude, keluar, atau lanjutkan tanpa pengaturan yang rusak.

200* **Peringatan Pengaturan**: hanya entri individual yang gagal, seperti aturan izin yang salah bentuk atau nama acara hook yang tidak dikenal. Claude Code melewati nilai-nilai itu dan menjaga sisa file tetap berlaku.200* **Peringatan Pengaturan**: hanya entri individual yang gagal, seperti aturan izin yang salah bentuk atau nama acara hook yang tidak dikenal. Claude Code melewati nilai-nilai itu dan menjaga sisa file tetap berlaku.

201* **Pengaturan yang dikelola**: Claude Code terus menegakkan sisa file. [Entri tidak valid dalam pengaturan yang dikelola](https://code.claude.com/docs/id/managed-settings.md#invalid-entries-in-managed-settings) mengatakan apa yang dijatuhkan dan kunci mana yang kembali ke nilai yang lebih ketat sampai Anda memperbaikinya. Untuk dokumen pengaturan yang dikelola yang bukan JSON valid, lihat [Dokumen pengaturan yang dikelola tidak dapat diuraikan](https://code.claude.com/docs/id/errors.md#managed-settings-document-could-not-be-parsed).201* **Pengaturan yang dikelola**: Claude Code terus menegakkan sisa file. [Entri tidak valid dalam pengaturan yang dikelola](https://code.claude.com/docs/id/managed-settings.md#invalid-entries-in-managed-settings) mengatakan apa yang dijatuhkan dan kunci mana yang kembali ke nilai yang lebih ketat sampai Anda memperbaikinya. Untuk dokumen pengaturan yang dikelola yang bukan JSON valid, lihat [Dokumen pengaturan yang dikelola tidak dapat diuraikan](https://code.claude.com/docs/id/errors.md#managed-settings-document-could-not-be-parsed).

202* **Kesalahan konfigurasi**: [`~/.claude.json`](https://code.claude.com/docs/id/claude-directory#ce-claude-json) tidak dapat diuraikan. Run `claude -p` akan keluar, dan file Anda tidak berubah. Lihat [Configuration error in \~/.claude.json](https://code.claude.com/docs/id/errors.md#configuration-error-in-claude-json) untuk memulihkan salinan sebelumnya. Claude Code menyalin file yang rusak ke `~/.claude/backups/.claude.json.corrupted.<timestamp>`, dan dalam sesi interaktif menanyakan apakah akan keluar dan memperbaikinya atau mengatur ulang ke konfigurasi default. Ketika file kosong dan tidak ada cadangan untuk dipulihkan, Claude Code dimulai dengan pengaturan default.202* **Kesalahan konfigurasi**: [`~/.claude.json`](https://code.claude.com/docs/id/claude-directory#ce-claude-json) tidak dapat diuraikan. Run `claude -p` akan keluar. Lihat [Configuration error in \~/.claude.json](https://code.claude.com/docs/id/errors.md#configuration-error-in-claude-json) untuk memulihkan salinan sebelumnya. Claude Code menyalin file yang rusak ke `~/.claude/backups/.claude.json.corrupted.<timestamp>`, dan dalam sesi interaktif menanyakan apakah akan keluar dan memperbaikinya atau mengatur ulang ke konfigurasi default. Ketika file kosong dan tidak ada cadangan untuk dipulihkan, Claude Code dimulai dengan pengaturan default.

203 203 

204Setelah Anda lanjutkan, jalankan `/status` untuk melihat file yang terpengaruh dan `claude doctor` untuk detail setiap kesalahan.204Setelah Anda lanjutkan, jalankan `/status` untuk melihat file yang terpengaruh dan `claude doctor` untuk detail setiap kesalahan.

205 205 

skills.md +10 −10

Details

22 22 

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

24 24 

25Anda memanggil skill bawaan dengan cara yang sama seperti skill lainnya, yaitu dengan mengetik `/` diikuti nama skill. Claude memanggil beberapa skill bawaan secara otomatis saat relevan; skill lainnya, termasuk `/verify`, hanya berjalan saat Anda memanggilnya, sehingga Anda tetap memegang kendali atas kapan pemeriksaan yang berjalan lebih lama ini menghabiskan waktu dan token.25Anda memanggil skill bawaan dengan mengetik `/` diikuti nama skill. Claude memanggil beberapa skill bawaan secara otomatis saat relevan; skill lainnya, termasuk [`/verify`](#run-and-verify-your-app), hanya berjalan saat Anda memanggilnya.

26 26 

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

28 28 


1017 1017 

1018# Codebase Visualizer1018# Codebase Visualizer

1019 1019 

1020Hasilkan tampilan pohon HTML interaktif yang menunjukkan struktur file proyek Anda dengan direktori yang dapat diciutkan.1020Generate an interactive HTML tree view that shows your project's file structure with collapsible directories.

1021 1021 

1022## Penggunaan1022## Usage

1023 1023 

1024Jalankan skrip visualisasi dari root proyek Anda:1024Run the visualization script from your project root:

1025 1025 

1026```bash1026```bash

1027python3 ${CLAUDE_SKILL_DIR}/scripts/visualize.py .1027python3 ${CLAUDE_SKILL_DIR}/scripts/visualize.py .

1028```1028```

1029 1029 

1030Ini membuat `codebase-map.html` di direktori saat ini dan membukanya di browser default Anda.1030This creates `codebase-map.html` in the current directory and opens it in your default browser.

1031 1031 

1032## Apa yang ditampilkan visualisasi1032## What the visualization shows

1033 1033 

1034- **Direktori yang dapat diciutkan**: Klik folder untuk memperluas/menciutkan1034- **Collapsible directories**: Click folders to expand/collapse

1035- **Ukuran file**: Ditampilkan di sebelah setiap file1035- **File sizes**: Displayed next to each file

1036- **Warna**: Warna berbeda untuk jenis file berbeda1036- **Colors**: Different colors for different file types

1037- **Total direktori**: Menunjukkan ukuran agregat setiap folder1037- **Directory totals**: Shows aggregate size of each folder

1038````1038````

1039 1039 

1040Simpan ini ke `~/.claude/skills/codebase-visualizer/scripts/visualize.py`. Skrip ini memindai pohon direktori dan menghasilkan file HTML yang mandiri dengan:1040Simpan ini ke `~/.claude/skills/codebase-visualizer/scripts/visualize.py`. Skrip ini memindai pohon direktori dan menghasilkan file HTML yang mandiri dengan:

Details

346 346 

347Claude Code menyimpan konten di balik setiap placeholder `[Pasted text #N]` di bawah `~/.claude/paste-cache/`, sehingga ketika Anda mengingat kembali prompt dari [riwayat perintah](https://code.claude.com/docs/id/interactive-mode.md#command-history) dan mengirimkannya kembali, konten tempel lengkap dikirimkan lagi, termasuk dalam sesi yang lebih baru.347Claude Code menyimpan konten di balik setiap placeholder `[Pasted text #N]` di bawah `~/.claude/paste-cache/`, sehingga ketika Anda mengingat kembali prompt dari [riwayat perintah](https://code.claude.com/docs/id/interactive-mode.md#command-history) dan mengirimkannya kembali, konten tempel lengkap dikirimkan lagi, termasuk dalam sesi yang lebih baru.

348 348 

349File cache yang lebih lama dari [`cleanupPeriodDays`](https://code.claude.com/docs/id/settings-reference#cleanupperioddays) dihapus di bawah [aturan penyapuan retensi](https://code.claude.com/docs/id/claude-directory.md#cleaned-up-automatically), sehingga prompt yang diingat kembali dapat mereferensikan teks tempel yang tidak lagi ada. Ketika Anda mengirimkan prompt seperti itu, Claude Code tidak pernah mengirimkan string literal `[Pasted text #N]`, dan menampilkan notifikasi yang menamai tempel yang hilang:349File cache yang lebih lama dari [`cleanupPeriodDays`](https://code.claude.com/docs/id/settings-reference#cleanupperioddays) dihapus di bawah [aturan penyapuan retensi](https://code.claude.com/docs/id/claude-directory.md#cleaned-up-automatically), sehingga prompt yang diingat kembali dapat mereferensikan teks tempel yang tidak lagi ada. Ketika Anda mengirimkan prompt seperti itu, Claude Code tidak mengirimkan string literal `[Pasted text #N]`, dan menampilkan notifikasi yang menamai tempel yang hilang:

350 350 

351* Dalam prompt biasa dengan teks yang tersisa, Claude Code menghapus placeholder dan mengirimkan teks yang tersisa.351* Dalam prompt biasa dengan teks yang tersisa, Claude Code menghapus placeholder dan mengirimkan teks yang tersisa.

352* Dalam perintah [shell mode](https://code.claude.com/docs/id/interactive-mode.md#shell-mode-with-prefix) atau perintah `/`, di mana penghapusan akan mengubah apa yang berjalan, dan dalam prompt apa pun penghapusan meninggalkan kosong, Claude Code membatalkan pengiriman dan menyimpan teks asli di input, dengan placeholder masih di dalamnya. Hapus placeholder atau edit perintah, kemudian kirim ulang.352* Dalam perintah [shell mode](https://code.claude.com/docs/id/interactive-mode.md#shell-mode-with-prefix) atau perintah `/`, di mana penghapusan akan mengubah apa yang berjalan, dan dalam prompt apa pun penghapusan meninggalkan kosong, Claude Code membatalkan pengiriman dan menyimpan teks asli di input, dengan placeholder masih di dalamnya. Hapus placeholder atau edit perintah, kemudian kirim ulang.

Details

29| `EACCES: permission denied` selama instalasi | [Perbaiki hak akses direktori instalasi](#permission-errors-during-installation) |29| `EACCES: permission denied` selama instalasi | [Perbaiki hak akses direktori instalasi](#permission-errors-during-installation) |

30| `TLS connect error` atau `SSL/TLS secure channel` | [Perbarui sertifikat CA](#tls-or-ssl-connection-errors) |30| `TLS connect error` atau `SSL/TLS secure channel` | [Perbarui sertifikat CA](#tls-or-ssl-connection-errors) |

31| `CRYPT_E_NO_REVOCATION_CHECK` atau `CRYPT_E_REVOCATION_OFFLINE` | [Atasi pemeriksaan pencabutan yang diblokir](#tls-or-ssl-connection-errors) |31| `CRYPT_E_NO_REVOCATION_CHECK` atau `CRYPT_E_REVOCATION_OFFLINE` | [Atasi pemeriksaan pencabutan yang diblokir](#tls-or-ssl-connection-errors) |

32| `Failed to fetch version` atau tidak dapat menjangkau server download | [Periksa pengaturan jaringan dan proxy](#check-network-connectivity) |32| `Failed to fetch version` atau tidak dapat menjangkau server download | [Periksa pengaturan jaringan dan proxy](#check-network-connectivity), atau untuk kesalahan sertifikat, [konfigurasi sertifikat CA perusahaan](#tls-or-ssl-connection-errors) |

33| `The connection dropped while downloading the update` atau `Download timed out: exceeded the total deadline` | [Jalankan update lagi atau atur proxy Anda](#the-connection-dropped-while-downloading-the-update) |33| `The connection dropped while downloading the update` atau `Download timed out: exceeded the total deadline` | [Jalankan update lagi atau atur proxy Anda](#the-connection-dropped-while-downloading-the-update) |

34| `Release verification failed for Claude Code` | [Jalankan `claude update` atau `claude install` lagi](#release-verification-failed) |34| `Release verification failed for Claude Code` | [Jalankan `claude update` atau `claude install` lagi](#release-verification-failed) |

35| `Auto-update failed · Run claude doctor` berwarna merah di footer sesi | [Jalankan `claude update` dari shell Anda](#auto-update-failed) |35| `Auto-update failed · Run claude doctor` berwarna merah di footer sesi | [Jalankan `claude update` dari shell Anda](#auto-update-failed) |


94* `403`: biasanya proxy atau filter jaringan memblokir host, atau Claude Code [tidak tersedia di wilayah Anda](https://www.anthropic.com/supported-countries)94* `403`: biasanya proxy atau filter jaringan memblokir host, atau Claude Code [tidak tersedia di wilayah Anda](https://www.anthropic.com/supported-countries)

95* `5xx`: biasanya masalah layanan sementara; tunggu beberapa menit dan coba lagi95* `5xx`: biasanya masalah layanan sementara; tunggu beberapa menit dan coba lagi

96 96 

97Jika Anda tidak melihat output, `Could not resolve host`, atau connection timeout, jaringan Anda memblokir koneksi. Penyebab umum:97Jika Anda tidak melihat output, atau installer menampilkan `Could not resolve host` atau connection timeout, koneksi gagal, jadi periksa penyebab berikut:

98 98 

99* Corporate firewalls atau proxies memblokir `downloads.claude.ai`99* Corporate firewalls atau proxies memblokir `downloads.claude.ai`

100* Pembatasan jaringan regional: coba VPN atau jaringan alternatif100* Pembatasan jaringan regional: coba VPN atau jaringan alternatif

101* Masalah TLS/SSL: perbarui sertifikat CA sistem Anda, atau periksa apakah `HTTPS_PROXY` dikonfigurasi101* Masalah TLS/SSL: lihat [Error koneksi TLS atau SSL](#tls-or-ssl-connection-errors)

102 102 

103Jika Anda berada di belakang corporate proxy, atur `HTTPS_PROXY` dan `HTTP_PROXY` ke alamat proxy Anda sebelum menginstal. Tanyakan tim IT Anda untuk URL proxy jika Anda tidak mengetahuinya, atau periksa pengaturan proxy browser Anda.103Jika Anda berada di belakang corporate proxy, atur `HTTPS_PROXY` dan `HTTP_PROXY` ke alamat proxy Anda sebelum menginstal. Tanyakan tim IT Anda untuk URL proxy jika Anda tidak mengetahuinya, atau periksa pengaturan proxy browser Anda.

104 104 


566 irm https://claude.ai/install.ps1 | iex566 irm https://claude.ai/install.ps1 | iex

567 ```567 ```

568 568 

5693. **Periksa gangguan proxy atau firewall**: proxy perusahaan yang melakukan TLS inspection dapat menyebabkan error ini, termasuk `unable to get local issuer certificate` dan `SELF_SIGNED_CERT_IN_CHAIN`. Untuk langkah instalasi, arahkan download install untuk mempercayai CA proxy perusahaan Anda:5693. **Periksa gangguan proxy atau firewall**: proxy perusahaan yang melakukan TLS inspection dapat menyebabkan error ini, termasuk `unable to get local issuer certificate`, `unable to verify the first certificate`, dan `SELF_SIGNED_CERT_IN_CHAIN`. Buat download install mempercayai CA proxy perusahaan Anda:

570 570 

571 > [tab] macOS/Linux571 > [tab] macOS/Linux

572 >572 >

573 > Atur `CURL_CA_BUNDLE` untuk download `curl` milik script install, dan [`NODE_EXTRA_CA_CERTS`](https://code.claude.com/docs/id/network-config#custom-ca-certificates) untuk perintah `claude install` yang kemudian dijalankan oleh script. Minta file PEM berisi sertifikat root CA proxy Anda kepada tim IT jika Anda belum memilikinya. Contoh ini mengatur keduanya ke file CA proxy Anda dan menjalankan script di terminal yang sama:

574 >

573 > ```bash theme={null}575 > ```bash theme={null}

574 > curl --cacert /path/to/corporate-ca.pem -fsSL https://claude.ai/install.sh | bash576 > export CURL_CA_BUNDLE=/path/to/corporate-ca.pem

577 > export NODE_EXTRA_CA_CERTS=/path/to/corporate-ca.pem

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

575 > ```579 > ```

580 >

581 > Jika instalasi masih gagal dengan salah satu error sertifikat tersebut, minta tim IT Anda untuk file yang berisi root certificate publik sekaligus rantai CA lengkap proxy Anda. Kemudian atur kedua variabel ke file tersebut.

576 582 

577 > [tab] Windows PowerShell583 > [tab] Windows PowerShell

578 >584 >


596 > $env:NODE_EXTRA_CA_CERTS = 'C:\path\to\corporate-ca.pem'602 > $env:NODE_EXTRA_CA_CERTS = 'C:\path\to\corporate-ca.pem'

597 > ```603 > ```

598 604 

599 Tanyakan tim IT Anda untuk file sertifikat jika Anda tidak memilikinya. Anda juga dapat mencoba koneksi langsung untuk mengonfirmasi proxy adalah penyebabnya.

600 

6014. **Di Windows, lewati pemeriksaan revokasi sertifikat yang diblokir**. Error `CRYPT_E_NO_REVOCATION_CHECK (0x80092012)` dan `CRYPT_E_REVOCATION_OFFLINE (0x80092013)` berarti curl menjangkau server tetapi jaringan Anda memblokir pencarian revokasi sertifikat, yang umum di belakang firewall perusahaan. Jika perintah yang gagal adalah `curl` yang mengunduh `install.cmd`, jalankan ulang dari Command Prompt dengan `--ssl-revoke-best-effort` ditambahkan:6054. **Di Windows, lewati pemeriksaan revokasi sertifikat yang diblokir**. Error `CRYPT_E_NO_REVOCATION_CHECK (0x80092012)` dan `CRYPT_E_REVOCATION_OFFLINE (0x80092013)` berarti curl menjangkau server tetapi jaringan Anda memblokir pencarian revokasi sertifikat, yang umum di belakang firewall perusahaan. Jika perintah yang gagal adalah `curl` yang mengunduh `install.cmd`, jalankan ulang dari Command Prompt dengan `--ssl-revoke-best-effort` ditambahkan:

602 ```batch theme={null}606 ```batch theme={null}

603 curl --ssl-revoke-best-effort -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd607 curl --ssl-revoke-best-effort -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd


610 614 

611### `Failed to fetch version from downloads.claude.ai`615### `Failed to fetch version from downloads.claude.ai`

612 616 

613Installer tidak dapat menjangkau server download. Ini biasanya berarti `downloads.claude.ai` diblokir di jaringan Anda. Lihat [Check network connectivity](#check-network-connectivity).617Bagian akhir pesan menyebutkan alasannya. Jika alasannya adalah error sertifikat seperti `unable to verify the first certificate`, lihat [TLS or SSL connection errors](#tls-or-ssl-connection-errors). Untuk alasan lainnya, lihat [Check network connectivity](#check-network-connectivity).

614 618 

615### The connection dropped while downloading the update619### The connection dropped while downloading the update

616 620 

workflows.md +10 −4

Details

375 375 

376 Sebelum v2.1.305, agent yang sudah selesai juga dapat berjalan lagi saat Anda meluncurkan ulang skrip yang tidak diedit yang item `pipeline()` atau tugas `parallel()`-nya masing-masing menjalankan lebih dari satu agent. Untuk menghentikan run ulang tersebut pada run baru, perbarui Claude Code.376 Sebelum v2.1.305, agent yang sudah selesai juga dapat berjalan lagi saat Anda meluncurkan ulang skrip yang tidak diedit yang item `pipeline()` atau tugas `parallel()`-nya masing-masing menjalankan lebih dari satu agent. Untuk menghentikan run ulang tersebut pada run baru, perbarui Claude Code.

377* **Masih berjalan saat Anda menghentikan**: dimulai ulang. Menghentikan seluruh run tidak menghitung agen apa pun sebagai gagal.377* **Masih berjalan saat Anda menghentikan**: dimulai ulang. Menghentikan seluruh run tidak menghitung agen apa pun sebagai gagal.

378* **[Gagal karena batas penggunaan](#when-a-run-hits-your-usage-limit) pada v2.1.318 atau lebih baru**: berjalan lagi, dan agent yang sudah selesai mengembalikan hasil yang disimpannya. Jika skrip Anda memanggil agent lain setelah kegagalan tersebut dan agent itu mengembalikan hasil, setiap agent yang dimulai skrip setelah agent yang gagal juga berjalan lagi.

378* **Gagal**: berjalan lagi, begitu juga setiap agent yang dimulai skrip setelahnya, bahkan yang sudah selesai. Menghentikan satu agent saja, dengan memilihnya di [`/workflows`](#watch-the-run) dan menekan `x`, dihitung sebagai gagal.379* **Gagal**: berjalan lagi, begitu juga setiap agent yang dimulai skrip setelahnya, bahkan yang sudah selesai. Menghentikan satu agent saja, dengan memilihnya di [`/workflows`](#watch-the-run) dan menekan `x`, dihitung sebagai gagal.

379 380 

380Kasus terakhir berarti kegagalan di tengah fan-out yang menjalankan ulang pekerjaan yang sudah selesai. Jika skrip memulai A, B, C, dan D dalam urutan itu dan B gagal, meluncurkan ulang mengembalikan A dari cache dan menjalankan B, C, dan D lagi.381Kasus terakhir berarti agent yang **Gagal** di tengah fan-out menjalankan ulang pekerjaan yang sudah selesai. Jika skrip memulai A, B, C, dan D dalam urutan itu dan B **Gagal**, peluncuran ulang mengembalikan A dari cache dan menjalankan B, C, dan D lagi.

381 382 

382Jika Anda mengedit skrip yang memulai A, B, C, dan D sehingga skrip tersebut memulai A, C, B, dan D, agent kedua yang dimulai sekarang adalah C, sedangkan run sebelumnya memulai B. Peluncuran ulang mengembalikan A dari cache dan menjalankan C, B, dan D lagi.383Jika Anda mengedit skrip yang memulai A, B, C, dan D sehingga skrip tersebut memulai A, C, B, dan D, agent kedua yang dimulai sekarang adalah C, sedangkan run sebelumnya memulai B. Peluncuran ulang mengembalikan A dari cache dan menjalankan C, B, dan D lagi.

383 384 


395 396 

396### Ketika run mencapai batas penggunaan Anda397### Ketika run mencapai batas penggunaan Anda

397 398 

398Ketika agen mencapai [batas penggunaan](https://code.claude.com/docs/id/interactive-mode.md#wait-for-a-usage-limit-to-reset) claude.ai Anda, run dijeda daripada agen itu gagal: agen yang mencapai batas menunggu reset, dan tidak ada agen baru yang dimulai. Tidak lama setelah batas direset, agen yang menunggu berjalan lagi dan run berlanjut dengan sendirinya. Memerlukan Claude Code v2.1.271 atau lebih baru; pada versi sebelumnya, agen yang terpengaruh gagal.399Ketika agent mencapai [batas penggunaan](https://code.claude.com/docs/id/interactive-mode.md#wait-for-a-usage-limit-to-reset) claude.ai Anda, run dijeda alih-alih membuat agent itu gagal. Agent yang mencapai batas menunggu reset, dan tidak ada agent baru yang dimulai. Tidak lama setelah batas direset, agent yang menunggu berjalan lagi dan run berlanjut dengan sendirinya. Memerlukan Claude Code v2.1.271 atau lebih baru, atau [v2.1.319 atau lebih baru](https://code.claude.com/docs/id/desktop.md#claude-code-version-in-the-code-tab) di [tab Code](https://code.claude.com/docs/id/desktop.md) Desktop. Pada versi sebelumnya, agent yang terpengaruh gagal.

399 400 

400Saat run menunggu, baris kemajuannya di panel tugas dan header [`/workflows`](#watch-the-run) menunjukkan kapan batas direset.401Saat run menunggu, baris kemajuannya di panel tugas dan header [`/workflows`](#watch-the-run) menunjukkan kapan batas direset. Di tab Code, run menampilkan baris seperti `Paused at usage limit · continues after 3:45 PM if the app stays open`. Biarkan aplikasi tetap terbuka.

401 402 

402Run hanya dijeda ketika semua ini berlaku; ketika salah satu tidak, agen yang terpengaruh gagal sebagai gantinya:403Run hanya dijeda ketika semua ini berlaku; ketika salah satu tidak, agen yang terpengaruh gagal sebagai gantinya:

403 404 

404* Sesi bersifat interaktif dan masuk dengan langganan claude.ai. Run tidak dijeda dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan `claude -p` atau [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), dalam [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), atau dalam sesi rekan [Remote Control](https://code.claude.com/docs/id/remote-control.md) atau [agent team](https://code.claude.com/docs/id/agent-teams.md).405* Sesi masuk dengan langganan claude.ai tanpa [penagihan berbasis penggunaan](https://code.claude.com/docs/id/interactive-mode.md#start-a-wait-yourself), dan merupakan salah satu jenis sesi berikut:

406 * Sesi terminal interaktif. Run tidak dijeda dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan `claude -p` atau [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), dalam [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), atau dalam sesi rekan [Remote Control](https://code.claude.com/docs/id/remote-control.md) atau [tim agent](https://code.claude.com/docs/id/agent-teams.md).

407 * Sesi lokal yang Anda mulai di tab Code. Run tidak dijeda dalam sesi SSH, WSL, [Dispatch](https://code.claude.com/docs/id/desktop.md#sessions-from-dispatch), atau [tugas terjadwal](https://code.claude.com/docs/id/desktop-scheduled-tasks.md), dalam sesi yang dimulai dari Remote Control atau melalui [corporate launcher](https://code.claude.com/docs/id/corporate-launcher.md), atau saat [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/id/env-vars#variables) diatur.

405* [`autoContinueAtUsageLimit`](https://code.claude.com/docs/id/settings-reference#autocontinueatusagelimit) aktif, pengaturan yang sama yang memungkinkan sesi itu sendiri [menunggu batas penggunaan direset](https://code.claude.com/docs/id/interactive-mode.md#wait-for-a-usage-limit-to-reset). Jika Anda mematikannya selama menunggu, menunggu berakhir dan agen yang menunggu gagal.408* [`autoContinueAtUsageLimit`](https://code.claude.com/docs/id/settings-reference#autocontinueatusagelimit) aktif, pengaturan yang sama yang memungkinkan sesi itu sendiri [menunggu batas penggunaan direset](https://code.claude.com/docs/id/interactive-mode.md#wait-for-a-usage-limit-to-reset). Jika Anda mematikannya selama menunggu, menunggu berakhir dan agen yang menunggu gagal.

409* Di tab Code, kotak centang **Auto-continue when limits reset** pada [kartu batas sesi](https://code.claude.com/docs/id/errors.md#youve-hit-your-session-limit) dicentang, seperti secara default. Jika Anda menghapus centangnya, run di sesi tab Code Anda berhenti dijeda, kecuali pengaturan terkelola mengatur `autoContinueAtUsageLimit` ke `true`.

406* Batas direset dalam 24 jam. Batas mingguan dapat direset lebih jauh.410* Batas direset dalam 24 jam. Batas mingguan dapat direset lebih jauh.

407* Run belum menunggu dua kali. Ketika mencapai batas untuk ketiga kalinya, agen gagal.411* Run belum menunggu dua kali. Ketika mencapai batas untuk ketiga kalinya, agen gagal.

408 412 

413Untuk menyelesaikan run yang agent-nya gagal karena batas, minta Claude untuk [meluncurkan kembali alur kerja](#which-agents-run-again) setelah batas direset.

414 

409### Ketika agent macet dan dimulai ulang415### Ketika agent macet dan dimulai ulang

410 416 

411Agent yang outputnya berhenti datang cukup lama akan dimulai ulang dari prompt yang sama. Di [`/workflows`](#watch-the-run), namanya mendapat akhiran `(retry 1)` dan detailnya menampilkan `attempt 2 (stalled)`. Mulai ulang terjadi secara otomatis, jadi Anda tidak perlu melakukan apa pun.417Agent yang outputnya berhenti datang cukup lama akan dimulai ulang dari prompt yang sama. Di [`/workflows`](#watch-the-run), namanya mendapat akhiran `(retry 1)` dan detailnya menampilkan `attempt 2 (stalled)`. Mulai ulang terjadi secara otomatis, jadi Anda tidak perlu melakukan apa pun.

worktrees.md +1 −1

Details

253 253 

254Worktree mendapatkan file dan cabang sendiri, tetapi berbagi hal-hal berikut dengan checkout utama:254Worktree mendapatkan file dan cabang sendiri, tetapi berbagi hal-hal berikut dengan checkout utama:

255 255 

256* **Direktori `.git` repositori**: perintah git dalam worktree menulis ke direktori `.git` bersama repositori utama, dan [sandboxing](https://code.claude.com/docs/id/sandboxing.md#filesystem-isolation) memungkinkan penulisan tersebut, jadi perintah seperti `git commit` bekerja dari dalam worktree dengan sandbox diaktifkan.256* **Direktori `.git` repositori**: perintah git dalam worktree menulis ke direktori `.git` bersama milik repositori utama. Dengan [sandbox](https://code.claude.com/docs/id/sandboxing.md#filesystem-isolation) diaktifkan, perintah seperti `git commit` bekerja dalam sesi di root worktree, yaitu tempat `--worktree` memulai sesi. Secara default, perintah tersebut [gagal dengan error `index.lock` jika Anda menjalankan `claude` di subdirektori worktree](https://code.claude.com/docs/id/sandboxing#git-index-lock).

257* **Plugins**: plugin yang diinstal pada [cakupan proyek](https://code.claude.com/docs/id/plugins/loading.md#find-where-a-plugin-is-enabled) dari checkout utama juga dimuat dalam worktrees dari repositori yang sama, jadi Anda tidak perlu menginstal ulang per worktree.257* **Plugins**: plugin yang diinstal pada [cakupan proyek](https://code.claude.com/docs/id/plugins/loading.md#find-where-a-plugin-is-enabled) dari checkout utama juga dimuat dalam worktrees dari repositori yang sama, jadi Anda tidak perlu menginstal ulang per worktree.

258* **Persetujuan izin**: memilih "Yes, and don't ask again" untuk perintah Bash dalam sesi worktree menyimpan aturan ke `.claude/settings.local.json` checkout utama. Aturan tersebut berlaku dalam checkout utama dan di setiap worktree lain dari repositori, dan tetap bertahan setelah worktree dihapus.258* **Persetujuan izin**: memilih "Yes, and don't ask again" untuk perintah Bash dalam sesi worktree menyimpan aturan ke `.claude/settings.local.json` checkout utama. Aturan tersebut berlaku dalam checkout utama dan di setiap worktree lain dari repositori, dan tetap bertahan setelah worktree dihapus.

259 259 

Details

41 41 

42### Apa yang tidak dicakup ZDR42### Apa yang tidak dicakup ZDR

43 43 

44ZDR tidak berlaku untuk hal-hal berikut, bahkan untuk organisasi dengan ZDR diaktifkan. Fitur-fitur ini mengikuti [kebijakan retensi data standar](https://code.claude.com/docs/id/data-usage.md#data-retention):44ZDR tidak berlaku untuk hal-hal berikut, bahkan untuk organisasi dengan ZDR diaktifkan. Kecuali jika suatu baris menyatakan lain, fitur-fitur ini mengikuti [kebijakan retensi data standar](https://code.claude.com/docs/id/data-usage.md#data-retention):

45 45 

46| Fitur | Detail |46| Fitur | Detail |

47| - | - |47| - | - |

48| Chat di claude.ai | Percakapan chat melalui antarmuka web Claude for Enterprise tidak dicakup oleh ZDR. |48| Chat di claude.ai | Percakapan chat melalui antarmuka web Claude for Enterprise tidak dicakup oleh ZDR. |

49| Cowork | Sesi Cowork tidak dicakup oleh ZDR. |49| Cowork | Sesi Cowork tidak dicakup oleh ZDR. |

50| Artifact | Artifact dalam percakapan chat dan sesi Cowork tidak dicakup oleh ZDR, dan disimpan hingga dihapus kecuali organisasi Anda menetapkan periode retensi untuk artifact tersebut. Artifact tidak tersedia di Claude Code dengan ZDR. |

50| Claude Code Analytics | Tidak menyimpan prompt atau respons model, tetapi mengumpulkan metadata produktivitas seperti email akun dan statistik penggunaan. Metrik kontribusi tidak tersedia untuk organisasi ZDR; [dashboard analytics](https://code.claude.com/docs/id/analytics.md) menampilkan metrik penggunaan saja. |51| Claude Code Analytics | Tidak menyimpan prompt atau respons model, tetapi mengumpulkan metadata produktivitas seperti email akun dan statistik penggunaan. Metrik kontribusi tidak tersedia untuk organisasi ZDR; [dashboard analytics](https://code.claude.com/docs/id/analytics.md) menampilkan metrik penggunaan saja. |

51| Manajemen pengguna dan kursi | Data administratif seperti email akun dan penugasan kursi disimpan di bawah kebijakan standar. |52| Manajemen pengguna dan kursi | Data administratif seperti email akun dan penugasan kursi disimpan di bawah kebijakan standar. |

52| Integrasi pihak ketiga | Data yang diproses oleh alat pihak ketiga, MCP servers, atau integrasi eksternal lainnya tidak dicakup oleh ZDR. Tinjau praktik penanganan data layanan tersebut secara independen. |53| Integrasi pihak ketiga | Data yang diproses oleh alat pihak ketiga, MCP servers, atau integrasi eksternal lainnya tidak dicakup oleh ZDR. Tinjau praktik penanganan data layanan tersebut secara independen. |


60| [Cloud sessions](https://code.claude.com/docs/id/claude-code-on-the-web.md), termasuk yang dimulai dari [aplikasi Desktop](https://code.claude.com/docs/id/desktop.md#cloud-sessions) | Memerlukan penyimpanan data sesi di sisi server, termasuk riwayat percakapan dengan prompt dan completion. |61| [Cloud sessions](https://code.claude.com/docs/id/claude-code-on-the-web.md), termasuk yang dimulai dari [aplikasi Desktop](https://code.claude.com/docs/id/desktop.md#cloud-sessions) | Memerlukan penyimpanan data sesi di sisi server, termasuk riwayat percakapan dengan prompt dan completion. |

61| [Chat dan Cowork terpadu](https://support.claude.com/en/articles/17444462-set-up-and-manage-the-new-unified-claude-experience-for-your-enterprise-organization) | Memerlukan sesi cloud. |62| [Chat dan Cowork terpadu](https://support.claude.com/en/articles/17444462-set-up-and-manage-the-new-unified-claude-experience-for-your-enterprise-organization) | Memerlukan sesi cloud. |

62| [Claude Tag](https://claude.com/docs/claude-tag) | Mempertahankan memori saluran dan transkrip sesi. |63| [Claude Tag](https://claude.com/docs/claude-tag) | Mempertahankan memori saluran dan transkrip sesi. |

63| [Artifacts](https://code.claude.com/docs/id/artifacts.md) | Memerlukan penyimpanan konten halaman yang dipublikasikan di infrastruktur yang dioperasikan Anthropic. |64| [Artifacts](https://code.claude.com/docs/id/artifacts.md) di Claude Code | Memerlukan penyimpanan konten halaman yang dipublikasikan di infrastruktur yang dioperasikan Anthropic. |

65| [Claude Docs](https://support.claude.com/en/articles/16923645-get-started-with-claude-docs) | Memerlukan penyimpanan konten dokumen di infrastruktur yang dioperasikan Anthropic. |

64| Pengiriman umpan balik (`/feedback`, `/bug`, `/share`) | Mengirimkan umpan balik mengirimkan data percakapan ke Anthropic. |66| Pengiriman umpan balik (`/feedback`, `/bug`, `/share`) | Mengirimkan umpan balik mengirimkan data percakapan ke Anthropic. |

65| [Remote Control](https://code.claude.com/docs/id/remote-control.md) | Menyimpan transkrip sesi di server Anthropic untuk menyinkronkan percakapan di seluruh perangkat. |67| [Remote Control](https://code.claude.com/docs/id/remote-control.md) | Menyimpan transkrip sesi di server Anthropic untuk menyinkronkan percakapan di seluruh perangkat. |

66 68