SpyBara
Go Premium

Documentation 2026-05-05 23:00 UTC to 2026-05-07 22:59 UTC

32 files changed +1,435 −206. View all changes and history on the product overview
2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

agent-sdk/custom-tools.md +833 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Berikan Claude alat kustom

6 

7> Tentukan alat kustom dengan server MCP dalam proses SDK Agent sehingga Claude dapat memanggil fungsi Anda, mengakses API Anda, dan melakukan operasi khusus domain.

8 

9Alat kustom memperluas SDK Agent dengan memungkinkan Anda menentukan fungsi Anda sendiri yang dapat dipanggil Claude selama percakapan. Menggunakan server MCP dalam proses SDK, Anda dapat memberikan Claude akses ke database, API eksternal, logika khusus domain, atau kemampuan lain yang dibutuhkan aplikasi Anda.

10 

11Panduan ini mencakup cara menentukan alat dengan skema input dan penangan, membundel mereka ke dalam server MCP, meneruskannya ke `query`, dan mengontrol alat mana yang dapat diakses Claude. Ini juga mencakup penanganan kesalahan, anotasi alat, dan mengembalikan konten non-teks seperti gambar.

12 

13## Referensi cepat

14 

15| Jika Anda ingin... | Lakukan ini |

16| :-------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

17| Menentukan alat | Gunakan [`@tool`](/id/agent-sdk/python#tool) (Python) atau [`tool()`](/id/agent-sdk/typescript#tool) (TypeScript) dengan nama, deskripsi, skema, dan penangan. Lihat [Buat alat kustom](#create-a-custom-tool). |

18| Mendaftarkan alat dengan Claude | Bungkus dalam `create_sdk_mcp_server` / `createSdkMcpServer` dan teruskan ke `mcpServers` dalam `query()`. Lihat [Panggil alat kustom](#call-a-custom-tool). |

19| Pra-setujui alat | Tambahkan ke alat yang diizinkan Anda. Lihat [Konfigurasi alat yang diizinkan](#configure-allowed-tools). |

20| Hapus alat bawaan dari konteks Claude | Teruskan array `tools` yang hanya mencantumkan bawaan yang Anda inginkan. Lihat [Konfigurasi alat yang diizinkan](#configure-allowed-tools). |

21| Biarkan Claude memanggil alat secara paralel | Atur `readOnlyHint: true` pada alat tanpa efek samping. Lihat [Tambahkan anotasi alat](#add-tool-annotations). |

22| Tangani kesalahan tanpa menghentikan loop | Kembalikan `isError: true` alih-alih melempar. Lihat [Tangani kesalahan](#handle-errors). |

23| Kembalikan gambar atau file | Gunakan blok `image` atau `resource` dalam array konten. Lihat [Kembalikan gambar dan sumber daya](#return-images-and-resources). |

24| Kembalikan hasil JSON yang dapat dibaca mesin | Atur `structuredContent` pada hasilnya. Lihat [Kembalikan data terstruktur](#return-structured-data). |

25| Skalakan ke banyak alat | Gunakan [pencarian alat](/id/agent-sdk/tool-search) untuk memuat alat sesuai permintaan. |

26 

27## Buat alat kustom

28 

29Alat didefinisikan oleh empat bagian, diteruskan sebagai argumen ke pembantu [`tool()`](/id/agent-sdk/typescript#tool) di TypeScript atau dekorator [`@tool`](/id/agent-sdk/python#tool) di Python:

30 

31* **Nama:** pengidentifikasi unik yang digunakan Claude untuk memanggil alat.

32* **Deskripsi:** apa yang dilakukan alat. Claude membaca ini untuk memutuskan kapan memanggilnya.

33* **Skema input:** argumen yang harus disediakan Claude. Di TypeScript ini selalu [skema Zod](https://zod.dev/), dan `args` penangan diketik darinya secara otomatis. Di Python ini adalah dict yang memetakan nama ke tipe, seperti `{"latitude": float}`, yang dikonversi SDK ke JSON Schema untuk Anda. Dekorator Python juga menerima dict [JSON Schema](https://json-schema.org/understanding-json-schema/about) lengkap secara langsung ketika Anda membutuhkan enum, rentang, bidang opsional, atau objek bersarang.

34* **Penangan:** fungsi async yang berjalan ketika Claude memanggil alat. Ini menerima argumen yang divalidasi dan harus mengembalikan objek dengan:

35 * `content` (diperlukan): array blok hasil, masing-masing dengan `type` dari `"text"`, `"image"`, atau `"resource"`. Lihat [Kembalikan gambar dan sumber daya](#return-images-and-resources) untuk blok non-teks.

36 * `structuredContent` (opsional): objek JSON yang menyimpan hasil sebagai data yang dapat dibaca mesin, dikembalikan bersama `content`. Lihat [Kembalikan data terstruktur](#return-structured-data).

37 * `isError` (opsional): atur ke `true` untuk menandakan kegagalan alat sehingga Claude dapat bereaksi terhadapnya. Lihat [Tangani kesalahan](#handle-errors).

38 

39Setelah menentukan alat, bungkus dalam server dengan [`createSdkMcpServer`](/id/agent-sdk/typescript#createsdkmcpserver) (TypeScript) atau [`create_sdk_mcp_server`](/id/agent-sdk/python#create_sdk_mcp_server) (Python). Server berjalan dalam proses di dalam aplikasi Anda, bukan sebagai proses terpisah.

40 

41### Contoh alat cuaca

42 

43Contoh ini menentukan alat `get_temperature` dan membungkusnya dalam server MCP. Ini hanya menyiapkan alat; untuk meneruskannya ke `query` dan menjalankannya, lihat [Panggil alat kustom](#call-a-custom-tool) di bawah.

44 

45<CodeGroup>

46 ```python Python theme={null}

47 from typing import Any

48 import httpx

49 from claude_agent_sdk import tool, create_sdk_mcp_server

50 

51 

52 # Define a tool: name, description, input schema, handler

53 @tool(

54 "get_temperature",

55 "Get the current temperature at a location",

56 {"latitude": float, "longitude": float},

57 )

58 async def get_temperature(args: dict[str, Any]) -> dict[str, Any]:

59 async with httpx.AsyncClient() as client:

60 response = await client.get(

61 "https://api.open-meteo.com/v1/forecast",

62 params={

63 "latitude": args["latitude"],

64 "longitude": args["longitude"],

65 "current": "temperature_2m",

66 "temperature_unit": "fahrenheit",

67 },

68 )

69 data = response.json()

70 

71 # Return a content array - Claude sees this as the tool result

72 return {

73 "content": [

74 {

75 "type": "text",

76 "text": f"Temperature: {data['current']['temperature_2m']}°F",

77 }

78 ]

79 }

80 

81 

82 # Wrap the tool in an in-process MCP server

83 weather_server = create_sdk_mcp_server(

84 name="weather",

85 version="1.0.0",

86 tools=[get_temperature],

87 )

88 ```

89 

90 ```typescript TypeScript theme={null}

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

92 import { z } from "zod";

93 

94 // Define a tool: name, description, input schema, handler

95 const getTemperature = tool(

96 "get_temperature",

97 "Get the current temperature at a location",

98 {

99 latitude: z.number().describe("Latitude coordinate"), // .describe() adds a field description Claude sees

100 longitude: z.number().describe("Longitude coordinate")

101 },

102 async (args) => {

103 // args is typed from the schema: { latitude: number; longitude: number }

104 const response = await fetch(

105 `https://api.open-meteo.com/v1/forecast?latitude=${args.latitude}&longitude=${args.longitude}&current=temperature_2m&temperature_unit=fahrenheit`

106 );

107 const data: any = await response.json();

108 

109 // Return a content array - Claude sees this as the tool result

110 return {

111 content: [{ type: "text", text: `Temperature: ${data.current.temperature_2m}°F` }]

112 };

113 }

114 );

115 

116 // Wrap the tool in an in-process MCP server

117 const weatherServer = createSdkMcpServer({

118 name: "weather",

119 version: "1.0.0",

120 tools: [getTemperature]

121 });

122 ```

123</CodeGroup>

124 

125Lihat referensi TypeScript [`tool()`](/id/agent-sdk/typescript#tool) atau referensi Python [`@tool`](/id/agent-sdk/python#tool) untuk detail parameter lengkap, termasuk format input JSON Schema dan struktur nilai pengembalian.

126 

127<Tip>

128 Untuk membuat parameter opsional: di TypeScript, tambahkan `.default()` ke bidang Zod. Di Python, skema dict memperlakukan setiap kunci sebagai wajib, jadi tinggalkan parameter dari skema, sebutkan dalam string deskripsi, dan baca dengan `args.get()` dalam penangan. Alat [`get_precipitation_chance` di bawah](#add-more-tools) menunjukkan kedua pola.

129</Tip>

130 

131### Panggil alat kustom

132 

133Teruskan server MCP yang Anda buat ke `query` melalui opsi `mcpServers`. Kunci dalam `mcpServers` menjadi segmen `{server_name}` dalam nama lengkap setiap alat: `mcp__{server_name}__{tool_name}`. Cantumkan nama itu dalam `allowedTools` sehingga alat berjalan tanpa prompt izin.

134 

135Cuplikan ini menggunakan kembali `weatherServer` dari [contoh di atas](#weather-tool-example) untuk menanyakan Claude tentang cuaca di lokasi tertentu.

136 

137<CodeGroup>

138 ```python Python theme={null}

139 import asyncio

140 from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

141 

142 

143 async def main():

144 options = ClaudeAgentOptions(

145 mcp_servers={"weather": weather_server},

146 allowed_tools=["mcp__weather__get_temperature"],

147 )

148 

149 async for message in query(

150 prompt="What's the temperature in San Francisco?",

151 options=options,

152 ):

153 # ResultMessage is the final message after all tool calls complete

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

155 print(message.result)

156 

157 

158 asyncio.run(main())

159 ```

160 

161 ```typescript TypeScript theme={null}

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

163 

164 for await (const message of query({

165 prompt: "What's the temperature in San Francisco?",

166 options: {

167 mcpServers: { weather: weatherServer },

168 allowedTools: ["mcp__weather__get_temperature"]

169 }

170 })) {

171 // "result" is the final message after all tool calls complete

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

173 console.log(message.result);

174 }

175 }

176 ```

177</CodeGroup>

178 

179### Tambahkan lebih banyak alat

180 

181Server menyimpan sebanyak alat yang Anda cantumkan dalam array `tools` nya. Dengan lebih dari satu alat di server, Anda dapat mencantumkan masing-masing dalam `allowedTools` secara individual atau menggunakan wildcard `mcp__weather__*` untuk mencakup setiap alat yang diekspos server.

182 

183Contoh di bawah menambahkan alat kedua, `get_precipitation_chance`, ke `weatherServer` dari [contoh alat cuaca](#weather-tool-example) dan membangunnya kembali dengan kedua alat dalam array.

184 

185<CodeGroup>

186 ```python Python theme={null}

187 # Define a second tool for the same server

188 @tool(

189 "get_precipitation_chance",

190 "Get the hourly precipitation probability for a location. "

191 "Optionally pass 'hours' (1-24) to control how many hours to return.",

192 {"latitude": float, "longitude": float},

193 )

194 async def get_precipitation_chance(args: dict[str, Any]) -> dict[str, Any]:

195 # 'hours' isn't in the schema - read it with .get() to make it optional

196 hours = args.get("hours", 12)

197 async with httpx.AsyncClient() as client:

198 response = await client.get(

199 "https://api.open-meteo.com/v1/forecast",

200 params={

201 "latitude": args["latitude"],

202 "longitude": args["longitude"],

203 "hourly": "precipitation_probability",

204 "forecast_days": 1,

205 },

206 )

207 data = response.json()

208 chances = data["hourly"]["precipitation_probability"][:hours]

209 

210 return {

211 "content": [

212 {

213 "type": "text",

214 "text": f"Next {hours} hours: {'%, '.join(map(str, chances))}%",

215 }

216 ]

217 }

218 

219 

220 # Rebuild the server with both tools in the array

221 weather_server = create_sdk_mcp_server(

222 name="weather",

223 version="1.0.0",

224 tools=[get_temperature, get_precipitation_chance],

225 )

226 ```

227 

228 ```typescript TypeScript theme={null}

229 // Define a second tool for the same server

230 const getPrecipitationChance = tool(

231 "get_precipitation_chance",

232 "Get the hourly precipitation probability for a location",

233 {

234 latitude: z.number(),

235 longitude: z.number(),

236 hours: z

237 .number()

238 .int()

239 .min(1)

240 .max(24)

241 .default(12) // .default() makes the parameter optional

242 .describe("How many hours of forecast to return")

243 },

244 async (args) => {

245 const response = await fetch(

246 `https://api.open-meteo.com/v1/forecast?latitude=${args.latitude}&longitude=${args.longitude}&hourly=precipitation_probability&forecast_days=1`

247 );

248 const data: any = await response.json();

249 const chances = data.hourly.precipitation_probability.slice(0, args.hours);

250 

251 return {

252 content: [{ type: "text", text: `Next ${args.hours} hours: ${chances.join("%, ")}%` }]

253 };

254 }

255 );

256 

257 // Rebuild the server with both tools in the array

258 const weatherServer = createSdkMcpServer({

259 name: "weather",

260 version: "1.0.0",

261 tools: [getTemperature, getPrecipitationChance]

262 });

263 ```

264</CodeGroup>

265 

266Setiap alat dalam array ini mengonsumsi ruang jendela konteks pada setiap giliran. Jika Anda menentukan puluhan alat, lihat [pencarian alat](/id/agent-sdk/tool-search) untuk memuat mereka sesuai permintaan.

267 

268### Tambahkan anotasi alat

269 

270[Anotasi alat](https://modelcontextprotocol.io/docs/concepts/tools#tool-annotations) adalah metadata opsional yang menggambarkan perilaku alat. Teruskan sebagai argumen kelima ke pembantu `tool()` di TypeScript atau melalui argumen kata kunci `annotations` untuk dekorator `@tool` di Python. Semua bidang hint adalah Boolean.

271 

272| Bidang | Default | Arti |

273| :---------------- | :------ | :-------------------------------------------------------------------------------------------------------------------------- |

274| `readOnlyHint` | `false` | Alat tidak memodifikasi lingkungannya. Mengontrol apakah alat dapat dipanggil secara paralel dengan alat baca-saja lainnya. |

275| `destructiveHint` | `true` | Alat dapat melakukan pembaruan destruktif. Hanya informatif. |

276| `idempotentHint` | `false` | Panggilan berulang dengan argumen yang sama tidak memiliki efek tambahan. Hanya informatif. |

277| `openWorldHint` | `true` | Alat menjangkau sistem di luar proses Anda. Hanya informatif. |

278 

279Anotasi adalah metadata, bukan penegakan. Alat yang ditandai `readOnlyHint: true` masih dapat menulis ke disk jika itulah yang dilakukan penangan. Jaga anotasi akurat dengan penangan.

280 

281Contoh ini menambahkan `readOnlyHint` ke alat `get_temperature` dari [contoh alat cuaca](#weather-tool-example).

282 

283<CodeGroup>

284 ```python Python theme={null}

285 from claude_agent_sdk import tool, ToolAnnotations

286 

287 

288 @tool(

289 "get_temperature",

290 "Get the current temperature at a location",

291 {"latitude": float, "longitude": float},

292 annotations=ToolAnnotations(

293 readOnlyHint=True

294 ), # Lets Claude batch this with other read-only calls

295 )

296 async def get_temperature(args):

297 return {"content": [{"type": "text", "text": "..."}]}

298 ```

299 

300 ```typescript TypeScript theme={null}

301 tool(

302 "get_temperature",

303 "Get the current temperature at a location",

304 { latitude: z.number(), longitude: z.number() },

305 async (args) => ({ content: [{ type: "text", text: `...` }] }),

306 { annotations: { readOnlyHint: true } } // Lets Claude batch this with other read-only calls

307 );

308 ```

309</CodeGroup>

310 

311Lihat `ToolAnnotations` dalam referensi [TypeScript](/id/agent-sdk/typescript#toolannotations) atau [Python](/id/agent-sdk/python#toolannotations).

312 

313## Kontrol akses alat

314 

315[Contoh alat cuaca](#weather-tool-example) mendaftarkan server dan mencantumkan alat dalam `allowedTools`. Bagian ini mencakup cara nama alat dibangun dan cara membatasi akses ketika Anda memiliki beberapa alat atau ingin membatasi bawaan.

316 

317### Format nama alat

318 

319Ketika alat MCP diekspos ke Claude, nama mereka mengikuti format tertentu:

320 

321* Pola: `mcp__{server_name}__{tool_name}`

322* Contoh: Alat bernama `get_temperature` di server `weather` menjadi `mcp__weather__get_temperature`

323 

324### Konfigurasi alat yang diizinkan

325 

326Opsi `tools` dan daftar izin/larangan yang diizinkan beroperasi pada lapisan terpisah. `tools` mengontrol alat bawaan mana yang muncul dalam konteks Claude. Daftar alat yang diizinkan dan dilarang mengontrol apakah panggilan disetujui atau ditolak setelah Claude mencoba mereka.

327 

328| Opsi | Lapisan | Efek |

329| :------------------------ | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |

330| `tools: ["Read", "Grep"]` | Ketersediaan | Hanya bawaan yang tercantum ada dalam konteks Claude. Bawaan yang tidak tercantum dihapus. Alat MCP tidak terpengaruh. |

331| `tools: []` | Ketersediaan | Semua bawaan dihapus. Claude hanya dapat menggunakan alat MCP Anda. |

332| alat yang diizinkan | Izin | Alat yang tercantum berjalan tanpa prompt izin. Alat yang tidak tercantum tetap tersedia; panggilan melalui [alur izin](/id/agent-sdk/permissions). |

333| alat yang dilarang | Izin | Setiap panggilan ke alat yang tercantum ditolak. Alat tetap dalam konteks Claude, jadi Claude mungkin masih mencoba sebelum panggilan ditolak. |

334 

335Untuk membatasi alat bawaan mana yang dapat digunakan Claude, lebih suka `tools` daripada alat yang dilarang. Menghilangkan alat dari `tools` menghapusnya dari konteks sehingga Claude tidak pernah mencobanya; mencantumkannya dalam `disallowedTools` (Python: `disallowed_tools`) memblokir panggilan tetapi membiarkan alat terlihat, jadi Claude mungkin membuang giliran mencobanya. Lihat [Konfigurasi izin](/id/agent-sdk/permissions) untuk urutan evaluasi lengkap.

336 

337## Tangani kesalahan

338 

339Cara penangan Anda melaporkan kesalahan menentukan apakah loop agen berlanjut atau berhenti:

340 

341| Apa yang terjadi | Hasil |

342| :------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------- |

343| Penangan melempar pengecualian yang tidak tertangkap | Loop agen berhenti. Claude tidak pernah melihat kesalahan, dan panggilan `query` gagal. |

344| Penangan menangkap kesalahan dan mengembalikan `isError: true` (TS) / `"is_error": True` (Python) | Loop agen berlanjut. Claude melihat kesalahan sebagai data dan dapat mencoba lagi, mencoba alat berbeda, atau menjelaskan kegagalan. |

345 

346Contoh di bawah menangkap dua jenis kegagalan di dalam penangan alih-alih membiarkan mereka melempar. Status HTTP non-200 ditangkap dari respons dan dikembalikan sebagai hasil kesalahan. Kesalahan jaringan atau JSON yang tidak valid ditangkap oleh `try/except` (Python) atau `try/catch` (TypeScript) sekitarnya dan juga dikembalikan sebagai hasil kesalahan. Dalam kedua kasus penangan mengembalikan secara normal dan loop agen berlanjut.

347 

348<CodeGroup>

349 ```python Python theme={null}

350 import json

351 import httpx

352 from typing import Any

353 

354 

355 @tool(

356 "fetch_data",

357 "Fetch data from an API",

358 {"endpoint": str}, # Simple schema

359 )

360 async def fetch_data(args: dict[str, Any]) -> dict[str, Any]:

361 try:

362 async with httpx.AsyncClient() as client:

363 response = await client.get(args["endpoint"])

364 if response.status_code != 200:

365 # Return the failure as a tool result so Claude can react to it.

366 # is_error marks this as a failed call rather than odd-looking data.

367 return {

368 "content": [

369 {

370 "type": "text",

371 "text": f"API error: {response.status_code} {response.reason_phrase}",

372 }

373 ],

374 "is_error": True,

375 }

376 

377 data = response.json()

378 return {"content": [{"type": "text", "text": json.dumps(data, indent=2)}]}

379 except Exception as e:

380 # Catching here keeps the agent loop alive. An uncaught exception

381 # would end the whole query() call.

382 return {

383 "content": [{"type": "text", "text": f"Failed to fetch data: {str(e)}"}],

384 "is_error": True,

385 }

386 ```

387 

388 ```typescript TypeScript theme={null}

389 tool(

390 "fetch_data",

391 "Fetch data from an API",

392 {

393 endpoint: z.string().url().describe("API endpoint URL")

394 },

395 async (args) => {

396 try {

397 const response = await fetch(args.endpoint);

398 

399 if (!response.ok) {

400 // Return the failure as a tool result so Claude can react to it.

401 // isError marks this as a failed call rather than odd-looking data.

402 return {

403 content: [

404 {

405 type: "text",

406 text: `API error: ${response.status} ${response.statusText}`

407 }

408 ],

409 isError: true

410 };

411 }

412 

413 const data = await response.json();

414 return {

415 content: [

416 {

417 type: "text",

418 text: JSON.stringify(data, null, 2)

419 }

420 ]

421 };

422 } catch (error) {

423 // Catching here keeps the agent loop alive. An uncaught throw

424 // would end the whole query() call.

425 return {

426 content: [

427 {

428 type: "text",

429 text: `Failed to fetch data: ${error instanceof Error ? error.message : String(error)}`

430 }

431 ],

432 isError: true

433 };

434 }

435 }

436 );

437 ```

438</CodeGroup>

439 

440## Kembalikan gambar dan sumber daya

441 

442Array `content` dalam hasil alat menerima blok `text`, `image`, dan `resource`. Anda dapat mencampurnya dalam respons yang sama.

443 

444### Gambar

445 

446Blok gambar membawa byte gambar secara inline, dikodekan sebagai base64. Tidak ada bidang URL. Untuk mengembalikan gambar yang berada di URL, ambil dalam penangan, baca byte respons, dan kodekan base64 sebelum mengembalikan. Hasilnya diproses sebagai input visual.

447 

448| Bidang | Tipe | Catatan |

449| :--------- | :-------- | :------------------------------------------------------------------------------------- |

450| `type` | `"image"` | |

451| `data` | `string` | Byte yang dikodekan Base64. Hanya base64 mentah, tanpa awalan `data:image/...;base64,` |

452| `mimeType` | `string` | Diperlukan. Misalnya `image/png`, `image/jpeg`, `image/webp`, `image/gif` |

453 

454<CodeGroup>

455 ```python Python theme={null}

456 import base64

457 import httpx

458 

459 

460 # Define a tool that fetches an image from a URL and returns it to Claude

461 @tool("fetch_image", "Fetch an image from a URL and return it to Claude", {"url": str})

462 async def fetch_image(args):

463 async with httpx.AsyncClient() as client: # Fetch the image bytes

464 response = await client.get(args["url"])

465 

466 return {

467 "content": [

468 {

469 "type": "image",

470 "data": base64.b64encode(response.content).decode(

471 "ascii"

472 ), # Base64-encode the raw bytes

473 "mimeType": response.headers.get(

474 "content-type", "image/png"

475 ), # Read MIME type from the response

476 }

477 ]

478 }

479 ```

480 

481 ```typescript TypeScript theme={null}

482 tool(

483 "fetch_image",

484 "Fetch an image from a URL and return it to Claude",

485 {

486 url: z.string().url()

487 },

488 async (args) => {

489 const response = await fetch(args.url); // Fetch the image bytes

490 const buffer = Buffer.from(await response.arrayBuffer()); // Read into a Buffer for base64 encoding

491 const mimeType = response.headers.get("content-type") ?? "image/png";

492 

493 return {

494 content: [

495 {

496 type: "image",

497 data: buffer.toString("base64"), // Base64-encode the raw bytes

498 mimeType

499 }

500 ]

501 };

502 }

503 );

504 ```

505</CodeGroup>

506 

507### Sumber daya

508 

509Blok sumber daya menyematkan sepotong konten yang diidentifikasi oleh URI. URI adalah label untuk Claude referensikan; konten aktual berada dalam bidang `text` atau `blob` blok. Gunakan ini ketika alat Anda menghasilkan sesuatu yang masuk akal untuk ditangani berdasarkan nama nanti, seperti file yang dihasilkan atau catatan dari sistem eksternal.

510 

511| Bidang | Tipe | Catatan |

512| :------------------ | :----------- | :---------------------------------------------------------- |

513| `type` | `"resource"` | |

514| `resource.uri` | `string` | Pengidentifikasi untuk konten. Skema URI apa pun |

515| `resource.text` | `string` | Konten, jika teks. Sediakan ini atau `blob`, bukan keduanya |

516| `resource.blob` | `string` | Konten yang dikodekan base64, jika biner |

517| `resource.mimeType` | `string` | Opsional |

518 

519Contoh ini menunjukkan blok sumber daya yang dikembalikan dari dalam penangan alat. URI `file:///tmp/report.md` adalah label yang dapat direferensikan Claude nanti; SDK tidak membaca dari jalur itu.

520 

521<CodeGroup>

522 ```typescript TypeScript theme={null}

523 return {

524 content: [

525 {

526 type: "resource",

527 resource: {

528 uri: "file:///tmp/report.md", // Label for Claude to reference, not a path the SDK reads

529 mimeType: "text/markdown",

530 text: "# Report\n..." // The actual content, inline

531 }

532 }

533 ]

534 };

535 ```

536 

537 ```python Python theme={null}

538 return {

539 "content": [

540 {

541 "type": "resource",

542 "resource": {

543 "uri": "file:///tmp/report.md", # Label for Claude to reference, not a path the SDK reads

544 "mimeType": "text/markdown",

545 "text": "# Report\n...", # The actual content, inline

546 },

547 }

548 ]

549 }

550 ```

551</CodeGroup>

552 

553Bentuk blok ini berasal dari tipe MCP `CallToolResult`. Lihat [spesifikasi MCP](https://modelcontextprotocol.io/specification/2025-06-18/server/tools#tool-result) untuk definisi lengkap.

554 

555## Kembalikan data terstruktur

556 

557`structuredContent` adalah objek JSON opsional pada hasil, terpisah dari array `content`. Gunakan untuk mengembalikan nilai mentah yang dapat dibaca Claude sebagai bidang tepat alih-alih menguraikannya dari string teks atau gambar.

558 

559Ketika `structuredContent` diatur, Claude menerima JSON plus blok gambar atau sumber daya apa pun dari `content`. Blok teks dalam `content` tidak diteruskan, karena diasumsikan menduplikasi data terstruktur. Contoh di bawah merender bagan sebagai blok gambar dan mengembalikan titik data di baliknya dalam `structuredContent` dari penangan yang sama.

560 

561```typescript TypeScript theme={null}

562return {

563 content: [

564 {

565 type: "image",

566 data: chartPngBuffer.toString("base64"),

567 mimeType: "image/png"

568 }

569 ],

570 structuredContent: {

571 series: "temperature_2m",

572 unit: "fahrenheit",

573 points: [62.1, 63.4, 65.0, 64.2]

574 }

575};

576```

577 

578<Note>

579 Dekorator Python `@tool` hanya meneruskan `content` dan `is_error` dari dict pengembalian penangan. Untuk mengembalikan `structuredContent` dari Python, jalankan [server MCP mandiri](/id/agent-sdk/mcp) alih-alih server SDK dalam proses.

580</Note>

581 

582## Contoh: konverter unit

583 

584Alat ini mengonversi nilai antara unit panjang, suhu, dan berat. Pengguna dapat menanyakan "konversi 100 kilometer ke mil" atau "berapa 72°F dalam Celsius," dan Claude memilih tipe unit dan unit yang tepat dari permintaan.

585 

586Ini menunjukkan dua pola:

587 

588* **Skema enum:** `unit_type` dibatasi pada set nilai tetap. Di TypeScript, gunakan `z.enum()`. Di Python, skema dict tidak mendukung enum, jadi dict JSON Schema lengkap diperlukan.

589* **Penanganan input yang tidak didukung:** ketika pasangan konversi tidak ditemukan, penangan mengembalikan `isError: true` sehingga Claude dapat memberi tahu pengguna apa yang salah alih-alih memperlakukan kegagalan sebagai hasil normal.

590 

591<CodeGroup>

592 ```python Python theme={null}

593 from typing import Any

594 from claude_agent_sdk import tool, create_sdk_mcp_server

595 

596 

597 # z.enum() in TypeScript becomes an "enum" constraint in JSON Schema.

598 # The dict schema has no equivalent, so full JSON Schema is required.

599 @tool(

600 "convert_units",

601 "Convert a value from one unit to another",

602 {

603 "type": "object",

604 "properties": {

605 "unit_type": {

606 "type": "string",

607 "enum": ["length", "temperature", "weight"],

608 "description": "Category of unit",

609 },

610 "from_unit": {

611 "type": "string",

612 "description": "Unit to convert from, e.g. kilometers, fahrenheit, pounds",

613 },

614 "to_unit": {"type": "string", "description": "Unit to convert to"},

615 "value": {"type": "number", "description": "Value to convert"},

616 },

617 "required": ["unit_type", "from_unit", "to_unit", "value"],

618 },

619 )

620 async def convert_units(args: dict[str, Any]) -> dict[str, Any]:

621 conversions = {

622 "length": {

623 "kilometers_to_miles": lambda v: v * 0.621371,

624 "miles_to_kilometers": lambda v: v * 1.60934,

625 "meters_to_feet": lambda v: v * 3.28084,

626 "feet_to_meters": lambda v: v * 0.3048,

627 },

628 "temperature": {

629 "celsius_to_fahrenheit": lambda v: (v * 9) / 5 + 32,

630 "fahrenheit_to_celsius": lambda v: (v - 32) * 5 / 9,

631 "celsius_to_kelvin": lambda v: v + 273.15,

632 "kelvin_to_celsius": lambda v: v - 273.15,

633 },

634 "weight": {

635 "kilograms_to_pounds": lambda v: v * 2.20462,

636 "pounds_to_kilograms": lambda v: v * 0.453592,

637 "grams_to_ounces": lambda v: v * 0.035274,

638 "ounces_to_grams": lambda v: v * 28.3495,

639 },

640 }

641 

642 key = f"{args['from_unit']}_to_{args['to_unit']}"

643 fn = conversions.get(args["unit_type"], {}).get(key)

644 

645 if not fn:

646 return {

647 "content": [

648 {

649 "type": "text",

650 "text": f"Unsupported conversion: {args['from_unit']} to {args['to_unit']}",

651 }

652 ],

653 "is_error": True,

654 }

655 

656 result = fn(args["value"])

657 return {

658 "content": [

659 {

660 "type": "text",

661 "text": f"{args['value']} {args['from_unit']} = {result:.4f} {args['to_unit']}",

662 }

663 ]

664 }

665 

666 

667 converter_server = create_sdk_mcp_server(

668 name="converter",

669 version="1.0.0",

670 tools=[convert_units],

671 )

672 ```

673 

674 ```typescript TypeScript theme={null}

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

676 import { z } from "zod";

677 

678 const convert = tool(

679 "convert_units",

680 "Convert a value from one unit to another",

681 {

682 unit_type: z.enum(["length", "temperature", "weight"]).describe("Category of unit"),

683 from_unit: z

684 .string()

685 .describe("Unit to convert from, e.g. kilometers, fahrenheit, pounds"),

686 to_unit: z.string().describe("Unit to convert to"),

687 value: z.number().describe("Value to convert")

688 },

689 async (args) => {

690 type Conversions = Record<string, Record<string, (v: number) => number>>;

691 

692 const conversions: Conversions = {

693 length: {

694 kilometers_to_miles: (v) => v * 0.621371,

695 miles_to_kilometers: (v) => v * 1.60934,

696 meters_to_feet: (v) => v * 3.28084,

697 feet_to_meters: (v) => v * 0.3048

698 },

699 temperature: {

700 celsius_to_fahrenheit: (v) => (v * 9) / 5 + 32,

701 fahrenheit_to_celsius: (v) => ((v - 32) * 5) / 9,

702 celsius_to_kelvin: (v) => v + 273.15,

703 kelvin_to_celsius: (v) => v - 273.15

704 },

705 weight: {

706 kilograms_to_pounds: (v) => v * 2.20462,

707 pounds_to_kilograms: (v) => v * 0.453592,

708 grams_to_ounces: (v) => v * 0.035274,

709 ounces_to_grams: (v) => v * 28.3495

710 }

711 };

712 

713 const key = `${args.from_unit}_to_${args.to_unit}`;

714 const fn = conversions[args.unit_type]?.[key];

715 

716 if (!fn) {

717 return {

718 content: [

719 {

720 type: "text",

721 text: `Unsupported conversion: ${args.from_unit} to ${args.to_unit}`

722 }

723 ],

724 isError: true

725 };

726 }

727 

728 const result = fn(args.value);

729 return {

730 content: [

731 {

732 type: "text",

733 text: `${args.value} ${args.from_unit} = ${result.toFixed(4)} ${args.to_unit}`

734 }

735 ]

736 };

737 }

738 );

739 

740 const converterServer = createSdkMcpServer({

741 name: "converter",

742 version: "1.0.0",

743 tools: [convert]

744 });

745 ```

746</CodeGroup>

747 

748Setelah server didefinisikan, teruskan ke `query` dengan cara yang sama seperti contoh cuaca. Contoh ini mengirim tiga prompt berbeda dalam loop untuk menunjukkan alat yang sama menangani tipe unit berbeda. Untuk setiap respons, ia memeriksa objek `AssistantMessage` (yang berisi panggilan alat yang dibuat Claude selama giliran itu) dan mencetak setiap `ToolUseBlock` sebelum mencetak teks `ResultMessage` akhir. Ini memungkinkan Anda melihat kapan Claude menggunakan alat versus menjawab dari pengetahuannya sendiri.

749 

750<CodeGroup>

751 ```python Python theme={null}

752 import asyncio

753 from claude_agent_sdk import (

754 query,

755 ClaudeAgentOptions,

756 ResultMessage,

757 AssistantMessage,

758 ToolUseBlock,

759 )

760 

761 

762 async def main():

763 options = ClaudeAgentOptions(

764 mcp_servers={"converter": converter_server},

765 allowed_tools=["mcp__converter__convert_units"],

766 )

767 

768 prompts = [

769 "Convert 100 kilometers to miles.",

770 "What is 72°F in Celsius?",

771 "How many pounds is 5 kilograms?",

772 ]

773 

774 for prompt in prompts:

775 async for message in query(prompt=prompt, options=options):

776 if isinstance(message, AssistantMessage):

777 for block in message.content:

778 if isinstance(block, ToolUseBlock):

779 print(f"[tool call] {block.name}({block.input})")

780 elif isinstance(message, ResultMessage) and message.subtype == "success":

781 print(f"Q: {prompt}\nA: {message.result}\n")

782 

783 

784 asyncio.run(main())

785 ```

786 

787 ```typescript TypeScript theme={null}

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

789 

790 const prompts = [

791 "Convert 100 kilometers to miles.",

792 "What is 72°F in Celsius?",

793 "How many pounds is 5 kilograms?"

794 ];

795 

796 for (const prompt of prompts) {

797 for await (const message of query({

798 prompt,

799 options: {

800 mcpServers: { converter: converterServer },

801 allowedTools: ["mcp__converter__convert_units"]

802 }

803 })) {

804 if (message.type === "assistant") {

805 for (const block of message.message.content) {

806 if (block.type === "tool_use") {

807 console.log(`[tool call] ${block.name}`, block.input);

808 }

809 }

810 } else if (message.type === "result" && message.subtype === "success") {

811 console.log(`Q: ${prompt}\nA: ${message.result}\n`);

812 }

813 }

814 }

815 ```

816</CodeGroup>

817 

818## Langkah berikutnya

819 

820Alat kustom membungkus fungsi async dalam antarmuka standar. Anda dapat mencampur pola di halaman ini di server yang sama: server tunggal dapat menyimpan alat database, alat gateway API, dan renderer gambar bersama-sama.

821 

822Dari sini:

823 

824* Jika server Anda tumbuh menjadi puluhan alat, lihat [pencarian alat](/id/agent-sdk/tool-search) untuk menunda pemuatan mereka sampai Claude membutuhkannya.

825* Untuk terhubung ke server MCP eksternal (sistem file, GitHub, Slack) alih-alih membangun milik Anda sendiri, lihat [Hubungkan server MCP](/id/agent-sdk/mcp).

826* Untuk mengontrol alat mana yang berjalan secara otomatis versus memerlukan persetujuan, lihat [Konfigurasi izin](/id/agent-sdk/permissions).

827 

828## Dokumentasi terkait

829 

830* [Referensi SDK TypeScript](/id/agent-sdk/typescript)

831* [Referensi SDK Python](/id/agent-sdk/python)

832* [Dokumentasi MCP](https://modelcontextprotocol.io)

833* [Ikhtisar SDK](/id/agent-sdk/overview)

Details

757 allowed_tools: list[str] = field(default_factory=list)757 allowed_tools: list[str] = field(default_factory=list)

758 system_prompt: str | SystemPromptPreset | None = None758 system_prompt: str | SystemPromptPreset | None = None

759 mcp_servers: dict[str, McpServerConfig] | str | Path = field(default_factory=dict)759 mcp_servers: dict[str, McpServerConfig] | str | Path = field(default_factory=dict)

760 strict_mcp_config: bool = False

760 permission_mode: PermissionMode | None = None761 permission_mode: PermissionMode | None = None

761 continue_conversation: bool = False762 continue_conversation: bool = False

762 resume: str | None = None763 resume: str | None = None


781 hooks: dict[HookEvent, list[HookMatcher]] | None = None782 hooks: dict[HookEvent, list[HookMatcher]] | None = None

782 user: str | None = None783 user: str | None = None

783 include_partial_messages: bool = False784 include_partial_messages: bool = False

785 include_hook_events: bool = False

784 fork_session: bool = False786 fork_session: bool = False

785 agents: dict[str, AgentDefinition] | None = None787 agents: dict[str, AgentDefinition] | None = None

786 setting_sources: list[SettingSource] | None = None788 setting_sources: list[SettingSource] | None = None


788 plugins: list[SdkPluginConfig] = field(default_factory=list)790 plugins: list[SdkPluginConfig] = field(default_factory=list)

789 max_thinking_tokens: int | None = None # Deprecated: use thinking instead791 max_thinking_tokens: int | None = None # Deprecated: use thinking instead

790 thinking: ThinkingConfig | None = None792 thinking: ThinkingConfig | None = None

791 effort: Literal["low", "medium", "high", "max"] | None = None793 effort: Literal["low", "medium", "high", "xhigh", "max"] | None = None

792 enable_file_checkpointing: bool = False794 enable_file_checkpointing: bool = False

793 session_store: SessionStore | None = None795 session_store: SessionStore | None = None

794 session_store_flush: SessionStoreFlushMode = "batched"796 session_store_flush: SessionStoreFlushMode = "batched"


800| `allowed_tools` | `list[str]` | `[]` | Tools untuk auto-approve tanpa prompt. Ini tidak membatasi Claude hanya pada tools ini; tools yang tidak terdaftar jatuh ke `permission_mode` dan `can_use_tool`. Gunakan `disallowed_tools` untuk memblokir tools. Lihat [Permissions](/id/agent-sdk/permissions#allow-and-deny-rules) |802| `allowed_tools` | `list[str]` | `[]` | Tools untuk auto-approve tanpa prompt. Ini tidak membatasi Claude hanya pada tools ini; tools yang tidak terdaftar jatuh ke `permission_mode` dan `can_use_tool`. Gunakan `disallowed_tools` untuk memblokir tools. Lihat [Permissions](/id/agent-sdk/permissions#allow-and-deny-rules) |

801| `system_prompt` | `str \| SystemPromptPreset \| None` | `None` | Konfigurasi system prompt. Teruskan string untuk prompt kustom, atau gunakan `{"type": "preset", "preset": "claude_code"}` untuk system prompt Claude Code. Tambahkan `"append"` untuk memperluas preset |803| `system_prompt` | `str \| SystemPromptPreset \| None` | `None` | Konfigurasi system prompt. Teruskan string untuk prompt kustom, atau gunakan `{"type": "preset", "preset": "claude_code"}` untuk system prompt Claude Code. Tambahkan `"append"` untuk memperluas preset |

802| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Konfigurasi server MCP atau jalur ke file konfigurasi |804| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Konfigurasi server MCP atau jalur ke file konfigurasi |

805| `strict_mcp_config` | `bool` | `False` | Ketika `True`, gunakan hanya server yang diteruskan dalam `mcp_servers` dan abaikan `.mcp.json` proyek, pengaturan pengguna, dan server MCP yang disediakan plugin. Memetakan ke flag CLI `--strict-mcp-config` |

803| `permission_mode` | `PermissionMode \| None` | `None` | Mode izin untuk penggunaan tool |806| `permission_mode` | `PermissionMode \| None` | `None` | Mode izin untuk penggunaan tool |

804| `continue_conversation` | `bool` | `False` | Lanjutkan percakapan terbaru |807| `continue_conversation` | `bool` | `False` | Lanjutkan percakapan terbaru |

805| `resume` | `str \| None` | `None` | ID sesi untuk dilanjutkan |808| `resume` | `str \| None` | `None` | ID sesi untuk dilanjutkan |


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

817| `settings` | `str \| None` | `None` | Jalur ke file pengaturan |820| `settings` | `str \| None` | `None` | Jalur ke file pengaturan |

818| `add_dirs` | `list[str \| Path]` | `[]` | Direktori tambahan yang dapat diakses Claude |821| `add_dirs` | `list[str \| Path]` | `[]` | Direktori tambahan yang dapat diakses Claude |

819| `env` | `dict[str, str]` | `{}` | Variabel lingkungan yang digabungkan di atas lingkungan proses yang diwarisi. Lihat [Environment variables](/id/env-vars) untuk variabel yang dibaca CLI yang mendasar |822| `env` | `dict[str, str]` | `{}` | Variabel lingkungan yang digabungkan di atas lingkungan proses yang diwarisi. Lihat [Environment variables](/id/env-vars) untuk variabel yang dibaca CLI yang mendasar, dan [Handle slow or stalled API responses](#handle-slow-or-stalled-api-responses) untuk variabel terkait timeout |

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

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

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


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

826| `user` | `str \| None` | `None` | Pengenal pengguna |829| `user` | `str \| None` | `None` | Pengenal pengguna |

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

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

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

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

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


832| `setting_sources` | `list[SettingSource] \| None` | `None` (CLI defaults: all sources) | Kontrol pengaturan filesystem mana yang akan dimuat. Teruskan `[]` untuk menonaktifkan pengaturan pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola dimuat terlepas dari itu. Lihat [Use Claude Code features](/id/agent-sdk/claude-code-features#what-settingsources-does-not-control) |836| `setting_sources` | `list[SettingSource] \| None` | `None` (CLI defaults: all sources) | Kontrol pengaturan filesystem mana yang akan dimuat. Teruskan `[]` untuk menonaktifkan pengaturan pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola dimuat terlepas dari itu. Lihat [Use Claude Code features](/id/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

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

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

835| `effort` | `Literal["low", "medium", "high", "max"] \| None` | `None` | Tingkat usaha untuk kedalaman thinking |839| `effort` | `Literal["low", "medium", "high", "xhigh", "max"] \| None` | `None` | Tingkat usaha untuk kedalaman thinking |

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

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

838 842 

843#### Menangani respons API yang lambat atau terhenti

844 

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

846 

847```python theme={null}

848options = ClaudeAgentOptions(

849 env={

850 "API_TIMEOUT_MS": "120000",

851 "CLAUDE_CODE_MAX_RETRIES": "2",

852 "CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS": "120000",

853 },

854)

855```

856 

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

858* `CLAUDE_CODE_MAX_RETRIES`: maksimal retry API. Default `10`. Setiap retry mendapat jendela `API_TIMEOUT_MS` sendiri, jadi waktu dinding terburuk kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` ditambah backoff.

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

860* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: membatalkan permintaan ketika header telah tiba tetapi badan respons berhenti streaming. Dimatikan secara default. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` default ke `300000` dan diklem ke minimum itu. Permintaan yang dibatalkan melalui jalur retry normal.

861 

839### `OutputFormat`862### `OutputFormat`

840 863 

841Konfigurasi untuk validasi output terstruktur. Teruskan ini sebagai `dict` ke field `output_format` pada `ClaudeAgentOptions`:864Konfigurasi untuk validasi output terstruktur. Teruskan ini sebagai `dict` ke field `output_format` pada `ClaudeAgentOptions`:


1015 initialPrompt: str | None = None1038 initialPrompt: str | None = None

1016 maxTurns: int | None = None1039 maxTurns: int | None = None

1017 background: bool | None = None1040 background: bool | None = None

1018 effort: Literal["low", "medium", "high", "max"] | int | None = None1041 effort: Literal["low", "medium", "high", "xhigh", "max"] | int | None = None

1019 permissionMode: PermissionMode | None = None1042 permissionMode: PermissionMode | None = None

1020```1043```

1021 1044 


1080class ToolPermissionContext:1103class ToolPermissionContext:

1081 signal: Any | None = None # Future: abort signal support1104 signal: Any | None = None # Future: abort signal support

1082 suggestions: list[PermissionUpdate] = field(default_factory=list)1105 suggestions: list[PermissionUpdate] = field(default_factory=list)

1106 blocked_path: str | None = None

1107 decision_reason: str | None = None

1108 title: str | None = None

1109 display_name: str | None = None

1110 description: str | None = None

1083```1111```

1084 1112 

1085| Field | Tipe | Deskripsi |1113| Field | Tipe | Deskripsi |

1086| :------------ | :----------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1114| :---------------- | :----------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1087| `signal` | `Any \| None` | Dicadangkan untuk dukungan sinyal abort di masa depan |1115| `signal` | `Any \| None` | Dicadangkan untuk dukungan sinyal abort di masa depan |

1088| `suggestions` | `list[PermissionUpdate]` | Saran pembaruan izin dari CLI. Prompt Bash menyertakan saran dengan destinasi `localSettings`, jadi mengembalikannya dalam `updated_permissions` menulis aturan ke `.claude/settings.local.json` dan bertahan di seluruh sesi. |1116| `suggestions` | `list[PermissionUpdate]` | Saran pembaruan izin dari CLI. Prompt Bash menyertakan saran dengan destinasi `localSettings`, jadi mengembalikannya dalam `updated_permissions` menulis aturan ke `.claude/settings.local.json` dan bertahan di seluruh sesi. |

1117| `blocked_path` | `str \| None` | Jalur file yang memicu permintaan izin, jika berlaku. Misalnya, ketika perintah Bash mencoba mengakses jalur di luar direktori yang diizinkan |

1118| `decision_reason` | `str \| None` | Alasan permintaan izin ini dipicu. Diteruskan dari `permissionDecisionReason` hook PreToolUse ketika hook mengembalikan `"ask"` |

1119| `title` | `str \| None` | Kalimat prompt izin lengkap, seperti `Claude wants to read foo.txt`. Gunakan sebagai teks prompt utama ketika ada |

1120| `display_name` | `str \| None` | Frasa kata benda pendek untuk aksi tool, seperti `Read file`, cocok untuk label tombol |

1121| `description` | `str \| None` | Subtitle yang dapat dibaca manusia untuk UI izin |

1089 1122 

1090### `PermissionResult`1123### `PermissionResult`

1091 1124 


1466 is_error: bool1499 is_error: bool

1467 num_turns: int1500 num_turns: int

1468 session_id: str1501 session_id: str

1502 stop_reason: str | None = None

1469 total_cost_usd: float | None = None1503 total_cost_usd: float | None = None

1470 usage: dict[str, Any] | None = None1504 usage: dict[str, Any] | None = None

1471 result: str | None = None1505 result: str | None = None

1472 stop_reason: str | None = None

1473 structured_output: Any = None1506 structured_output: Any = None

1474 model_usage: dict[str, Any] | None = None1507 model_usage: dict[str, Any] | None = None

1508 permission_denials: list[Any] | None = None

1509 deferred_tool_use: DeferredToolUse | None = None

1510 errors: list[str] | None = None

1511 api_error_status: int | None = None

1512 uuid: str | None = None

1475```1513```

1476 1514 

1477Dict `usage` berisi kunci berikut ketika ada:1515Dict `usage` berisi kunci berikut ketika ada:


2128```python theme={null}2166```python theme={null}

2129class PreToolUseHookSpecificOutput(TypedDict):2167class PreToolUseHookSpecificOutput(TypedDict):

2130 hookEventName: Literal["PreToolUse"]2168 hookEventName: Literal["PreToolUse"]

2131 permissionDecision: NotRequired[Literal["allow", "deny", "ask"]]2169 permissionDecision: NotRequired[Literal["allow", "deny", "ask", "defer"]]

2132 permissionDecisionReason: NotRequired[str]2170 permissionDecisionReason: NotRequired[str]

2133 updatedInput: NotRequired[dict[str, Any]]2171 updatedInput: NotRequired[dict[str, Any]]

2134 additionalContext: NotRequired[str]2172 additionalContext: NotRequired[str]


2137class PostToolUseHookSpecificOutput(TypedDict):2175class PostToolUseHookSpecificOutput(TypedDict):

2138 hookEventName: Literal["PostToolUse"]2176 hookEventName: Literal["PostToolUse"]

2139 additionalContext: NotRequired[str]2177 additionalContext: NotRequired[str]

2178 updatedToolOutput: NotRequired[Any]

2140 updatedMCPToolOutput: NotRequired[Any]2179 updatedMCPToolOutput: NotRequired[Any]

2141 2180 

2142 2181 

Details

8 8 

9<script src="/components/typescript-sdk-type-links.js" defer />9<script src="/components/typescript-sdk-type-links.js" defer />

10 10 

11<Note>

12 **Coba antarmuka V2 baru (pratinjau):** Antarmuka yang disederhanakan dengan pola `send()` dan `stream()` kini tersedia, membuat percakapan multi-putaran lebih mudah. [Pelajari lebih lanjut tentang pratinjau TypeScript V2](/id/agent-sdk/typescript-v2-preview)

13</Note>

14 

15## Instalasi11## Instalasi

16 12 

17```bash theme={null}13```bash theme={null}


335| `disallowedTools` | `string[]` | `[]` | Tool untuk selalu tolak. Aturan tolak diperiksa terlebih dahulu dan mengganti `allowedTools` dan `permissionMode` (termasuk `bypassPermissions`) |331| `disallowedTools` | `string[]` | `[]` | Tool untuk selalu tolak. Aturan tolak diperiksa terlebih dahulu dan mengganti `allowedTools` dan `permissionMode` (termasuk `bypassPermissions`) |

336| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `'high'` | Mengontrol seberapa banyak usaha yang Claude masukkan ke dalam responsnya. Bekerja dengan pemikiran adaptif untuk memandu kedalaman pemikiran |332| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `'high'` | Mengontrol seberapa banyak usaha yang Claude masukkan ke dalam responsnya. Bekerja dengan pemikiran adaptif untuk memandu kedalaman pemikiran |

337| `enableFileCheckpointing` | `boolean` | `false` | Aktifkan pelacakan perubahan file untuk rewinding. Lihat [File checkpointing](/id/agent-sdk/file-checkpointing) |333| `enableFileCheckpointing` | `boolean` | `false` | Aktifkan pelacakan perubahan file untuk rewinding. Lihat [File checkpointing](/id/agent-sdk/file-checkpointing) |

338| `env` | `Record<string, string \| undefined>` | `process.env` | Variabel lingkungan. Lihat [Variabel lingkungan](/id/env-vars) untuk variabel yang dibaca CLI yang mendasarinya. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |334| `env` | `Record<string, string \| undefined>` | `process.env` | Variabel lingkungan. Lihat [Variabel lingkungan](/id/env-vars) untuk variabel yang dibaca CLI yang mendasarinya, dan [Tangani respons API yang lambat atau terhenti](#handle-slow-or-stalled-api-responses) untuk variabel terkait timeout. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |

339| `executable` | `'bun' \| 'deno' \| 'node'` | Auto-detected | Runtime JavaScript yang akan digunakan |335| `executable` | `'bun' \| 'deno' \| 'node'` | Auto-detected | Runtime JavaScript yang akan digunakan |

340| `executableArgs` | `string[]` | `[]` | Argumen untuk diteruskan ke executable |336| `executableArgs` | `string[]` | `[]` | Argumen untuk diteruskan ke executable |

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


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

345| `includePartialMessages` | `boolean` | `false` | Sertakan event pesan parsial |341| `includePartialMessages` | `boolean` | `false` | Sertakan event pesan parsial |

346| `maxBudgetUsd` | `number` | `undefined` | Hentikan query ketika estimasi biaya sisi klien mencapai nilai USD ini. Dibandingkan dengan estimasi yang sama seperti `total_cost_usd`; lihat [Lacak biaya dan penggunaan](/id/agent-sdk/cost-tracking) untuk peringatan akurasi |342| `maxBudgetUsd` | `number` | `undefined` | Hentikan query ketika estimasi biaya sisi klien mencapai nilai USD ini. Dibandingkan dengan estimasi yang sama seperti `total_cost_usd`; lihat [Lacak biaya dan penggunaan](/id/agent-sdk/cost-tracking) untuk peringatan akurasi |

347| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Gunakan opsi `thinking` sebagai gantinya. Token maksimum untuk proses pemikiran |343| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Gunakan `thinking` sebagai gantinya. Token maksimum untuk proses pemikiran |

348| `maxTurns` | `number` | `undefined` | Putaran agen maksimum (perjalanan round-trip penggunaan tool) |344| `maxTurns` | `number` | `undefined` | Putaran agen maksimum (perjalanan round-trip penggunaan tool) |

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

350| `model` | `string` | Default dari CLI | Model Claude yang akan digunakan |346| `model` | `string` | Default dari CLI | Model Claude yang akan digunakan |


360| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Konfigurasi perilaku sandbox secara terprogram. Lihat [Pengaturan sandbox](#sandboxsettings) untuk detail |356| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Konfigurasi perilaku sandbox secara terprogram. Lihat [Pengaturan sandbox](#sandboxsettings) untuk detail |

361| `sessionId` | `string` | Auto-generated | Gunakan UUID tertentu untuk sesi alih-alih auto-generate |357| `sessionId` | `string` | Auto-generated | Gunakan UUID tertentu untuk sesi alih-alih auto-generate |

362| `sessionStore` | [`SessionStore`](/id/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | Cerminkan transkrip sesi ke backend eksternal sehingga host apa pun dapat melanjutkannya. Lihat [Pertahankan sesi ke penyimpanan eksternal](/id/agent-sdk/session-storage) |358| `sessionStore` | [`SessionStore`](/id/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | Cerminkan transkrip sesi ke backend eksternal sehingga host apa pun dapat melanjutkannya. Lihat [Pertahankan sesi ke penyimpanan eksternal](/id/agent-sdk/session-storage) |

359| `settings` | `string \| Settings` | `undefined` | Objek [pengaturan](/id/settings) inline atau jalur ke file pengaturan. Mengisi lapisan flag-settings dalam [urutan preseden](/id/settings#settings-precedence). Ubah saat runtime dengan [`applyFlagSettings()`](#applyflagsettings) |

363| `settingSources` | [`SettingSource`](#settingsource)`[]` | CLI defaults (all sources) | Kontrol pengaturan filesystem mana yang akan dimuat. Lewatkan `[]` untuk menonaktifkan pengaturan pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola dimuat terlepas dari itu. Lihat [Gunakan fitur Claude Code](/id/agent-sdk/claude-code-features#what-settingsources-does-not-control) |360| `settingSources` | [`SettingSource`](#settingsource)`[]` | CLI defaults (all sources) | Kontrol pengaturan filesystem mana yang akan dimuat. Lewatkan `[]` untuk menonaktifkan pengaturan pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola dimuat terlepas dari itu. Lihat [Gunakan fitur Claude Code](/id/agent-sdk/claude-code-features#what-settingsources-does-not-control) |

364| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Fungsi kustom untuk spawn proses Claude Code. Gunakan untuk menjalankan Claude Code di VM, kontainer, atau lingkungan jarak jauh |361| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Fungsi kustom untuk spawn proses Claude Code. Gunakan untuk menjalankan Claude Code di VM, kontainer, atau lingkungan jarak jauh |

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


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

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

371 368 

369#### Tangani respons API yang lambat atau terhenti

370 

371Subprocess CLI membaca beberapa variabel lingkungan yang mengontrol timeout API dan deteksi stall. Lewatkan melalui opsi `env`:

372 

373```typescript theme={null}

374const result = query({

375 prompt: "Analyze this code",

376 options: {

377 env: {

378 ...process.env,

379 API_TIMEOUT_MS: "120000",

380 CLAUDE_CODE_MAX_RETRIES: "2",

381 CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: "120000",

382 },

383 },

384});

385```

386 

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

388* `CLAUDE_CODE_MAX_RETRIES`: maksimum retry API. Default `10`. Setiap retry mendapatkan jendela `API_TIMEOUT_MS` sendiri, jadi waktu dinding terburuk kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` ditambah backoff.

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

390* `CLAUDE_ENABLE_STREAM_WATCHDOG=1` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: membatalkan request ketika header telah tiba tetapi body respons berhenti streaming. Dimatikan secara default. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` default ke `300000` dan diklem ke minimum itu. Request yang dibatalkan melalui jalur retry normal.

391 

372### Objek `Query`392### Objek `Query`

373 393 

374Antarmuka yang dikembalikan oleh fungsi `query()`.394Antarmuka yang dikembalikan oleh fungsi `query()`.


383 setPermissionMode(mode: PermissionMode): Promise<void>;403 setPermissionMode(mode: PermissionMode): Promise<void>;

384 setModel(model?: string): Promise<void>;404 setModel(model?: string): Promise<void>;

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

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

386 initializationResult(): Promise<SDKControlInitializeResponse>;407 initializationResult(): Promise<SDKControlInitializeResponse>;

387 supportedCommands(): Promise<SlashCommand[]>;408 supportedCommands(): Promise<SlashCommand[]>;

388 supportedModels(): Promise<ModelInfo[]>;409 supportedModels(): Promise<ModelInfo[]>;


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

408| `setModel()` | Mengubah model (hanya tersedia dalam mode input streaming) |429| `setModel()` | Mengubah model (hanya tersedia dalam mode input streaming) |

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

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

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

411| `supportedCommands()` | Mengembalikan perintah slash yang tersedia |433| `supportedCommands()` | Mengembalikan perintah slash yang tersedia |

412| `supportedModels()` | Mengembalikan model yang tersedia dengan info tampilan |434| `supportedModels()` | Mengembalikan model yang tersedia dengan info tampilan |


420| `stopTask(taskId)` | Hentikan tugas latar belakang yang sedang berjalan berdasarkan ID |442| `stopTask(taskId)` | Hentikan tugas latar belakang yang sedang berjalan berdasarkan ID |

421| `close()` | Tutup query dan hentikan proses yang mendasarinya. Secara paksa mengakhiri query dan membersihkan semua sumber daya |443| `close()` | Tutup query dan hentikan proses yang mendasarinya. Secara paksa mengakhiri query dan membersihkan semua sumber daya |

422 444 

445#### `applyFlagSettings()`

446 

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

448 

449Nilai ditulis ke lapisan flag-settings, lapisan yang sama yang opsi `settings` inline dari `query()` isi saat startup. Flag settings duduk di dekat bagian atas [urutan preseden pengaturan](/id/settings#settings-precedence): mereka mengganti pengaturan pengguna, proyek, dan lokal, dan hanya pengaturan kebijakan terkelola yang dapat mengganti mereka. Ini adalah tier yang sama yang [bagian preseden di halaman](#settings-precedence) sebut opsi terprogram.

450 

451Panggilan berturut-turut shallow-merge kunci tingkat atas. Panggilan kedua dengan `{ permissions: {...} }` mengganti seluruh objek `permissions` dari panggilan sebelumnya daripada deep-merging ke dalamnya. Untuk menghapus kunci dari lapisan flag dan kembali ke sumber preseden lebih rendah, lewatkan `null` untuk kunci itu. Melewatkan `undefined` tidak memiliki efek karena serialisasi JSON menjatuhkannya.

452 

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

454 

455Contoh di bawah beralih model aktif di tengah sesi, kemudian menghapus override sehingga model kembali ke apa pun yang ditentukan pengaturan pengguna atau proyek.

456 

457```typescript theme={null}

458const q = query({ prompt: messageStream });

459 

460// Override model untuk sisa sesi

461await q.applyFlagSettings({ model: "claude-opus-4-6" });

462 

463// Nanti: hapus override dan kembali ke pengaturan preseden lebih rendah

464await q.applyFlagSettings({ model: null });

465```

466 

467<Note>

468 `applyFlagSettings()` adalah TypeScript-only. SDK Python tidak mengekspos metode setara.

469</Note>

470 

423### `WarmQuery`471### `WarmQuery`

424 472 

425Handle yang dikembalikan oleh [`startup()`](#startup). Subprocess sudah dispawn dan diinisialisasi, jadi memanggil `query()` pada handle ini menulis prompt langsung ke proses yang siap tanpa latensi startup.473Handle yang dikembalikan oleh [`startup()`](#startup). Subprocess sudah dispawn dan diinisialisasi, jadi memanggil `query()` pada handle ini menulis prompt langsung ke proses yang siap tanpa latensi startup.


6172. Pengaturan proyek (`.claude/settings.json`)6652. Pengaturan proyek (`.claude/settings.json`)

6183. Pengaturan pengguna (`~/.claude/settings.json`)6663. Pengaturan pengguna (`~/.claude/settings.json`)

619 667 

620Opsi terprogram seperti `agents` dan `allowedTools` mengganti pengaturan filesystem pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola mengambil preseden atas opsi terprogram.668Opsi terprogram seperti `agents`, `allowedTools`, dan `settings` mengganti pengaturan filesystem pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola mengambil preseden atas opsi terprogram.

621 669 

622### `PermissionMode`670### `PermissionMode`

623 671 


2443 2491 

2444### `CallToolResult`2492### `CallToolResult`

2445 2493 

2446Tipe hasil tool MCP (dari `@modelcontextprotocol/sdk/types.js`).2494Tipe hasil tool MCP (dari `@modelcontextprotocol/sdk/types.js`). `structuredContent` adalah objek JSON yang dapat dikembalikan bersama `content`, termasuk blok gambar. Lihat [Kembalikan data terstruktur](/id/agent-sdk/custom-tools#return-structured-data).

2447 2495 

2448```typescript theme={null}2496```typescript theme={null}

2449type CallToolResult = {2497type CallToolResult = {


2451 type: "text" | "image" | "resource";2499 type: "text" | "image" | "resource";

2452 // Field tambahan bervariasi menurut tipe2500 // Field tambahan bervariasi menurut tipe

2453 }>;2501 }>;

2502 structuredContent?: Record<string, unknown>;

2454 isError?: boolean;2503 isError?: boolean;

2455};2504};

2456```2505```

Details

361 361 

362```bash theme={null}362```bash theme={null}

363# Menggunakan ID profil inferensi363# Menggunakan ID profil inferensi

364export ANTHROPIC_MODEL='global.anthropic.claude-sonnet-4-6'364export ANTHROPIC_MODEL='us.anthropic.claude-sonnet-4-6'

365export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'365export ANTHROPIC_DEFAULT_HAIKU_MODEL='us.anthropic.claude-haiku-4-5-20251001-v1:0'

366 366 

367# Menggunakan ARN profil inferensi aplikasi367# Menggunakan ARN profil inferensi aplikasi


462 462 

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

464 464 

465## Tingkat layanan

466 

467[Tingkat layanan Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html) memungkinkan Anda menukar biaya terhadap latensi. Atur `ANTHROPIC_BEDROCK_SERVICE_TIER` ke `default`, `flex`, atau `priority`:

468 

469```bash theme={null}

470export ANTHROPIC_BEDROCK_SERVICE_TIER=priority

471```

472 

473Claude Code mengirimkan ini sebagai header `X-Amzn-Bedrock-Service-Tier` pada setiap permintaan. Ketersediaan tingkat bervariasi menurut model dan wilayah. Kapasitas yang dicadangkan menggunakan [throughput yang disediakan](https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html) ARN sebagai ID model alih-alih pengaturan ini.

474 

465## AWS Guardrails475## AWS Guardrails

466 476 

467[Amazon Bedrock Guardrails](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) memungkinkan Anda menerapkan penyaringan konten untuk Claude Code. Buat Guardrail di [konsol Amazon Bedrock](https://console.aws.amazon.com/bedrock/), publikasikan versi, kemudian tambahkan header Guardrail ke [file pengaturan](/id/settings) Anda. Aktifkan inferensi Cross-Region pada Guardrail Anda jika Anda menggunakan profil inferensi lintas wilayah.477[Amazon Bedrock Guardrails](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html) memungkinkan Anda menerapkan penyaringan konten untuk Claude Code. Buat Guardrail di [konsol Amazon Bedrock](https://console.aws.amazon.com/bedrock/), publikasikan versi, kemudian tambahkan header Guardrail ke [file pengaturan](/id/settings) Anda. Aktifkan inferensi Cross-Region pada Guardrail Anda jika Anda menggunakan profil inferensi lintas wilayah.

Details

113 113 

114Claude Code mengelola kredensial autentikasi Anda dengan aman:114Claude Code mengelola kredensial autentikasi Anda dengan aman:

115 115 

116* **Lokasi penyimpanan**: di macOS, kredensial disimpan di Keychain macOS yang terenkripsi. Di Linux dan Windows, kredensial disimpan di `~/.claude/.credentials.json`, atau di bawah `$CLAUDE_CONFIG_DIR` jika variabel tersebut diatur. Di Linux, file ditulis dengan mode `0600`; di Windows, file mewarisi kontrol akses dari direktori profil pengguna Anda.116* **Lokasi penyimpanan**:

117 * Di macOS, kredensial disimpan di Keychain macOS yang terenkripsi.

118 * Di Linux, kredensial disimpan di `~/.claude/.credentials.json` dengan mode file `0600`.

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

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

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

117* **Jenis autentikasi yang didukung**: kredensial Claude.ai, kredensial API Claude, Azure Auth, Bedrock Auth, dan Vertex Auth.122* **Jenis autentikasi yang didukung**: kredensial Claude.ai, kredensial API Claude, Azure Auth, Bedrock Auth, dan Vertex Auth.

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

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

Details

113 113 

114Setiap sesi cloud memiliki URL transkrip di claude.ai, dan sesi dapat membaca ID-nya sendiri dari variabel lingkungan `CLAUDE_CODE_REMOTE_SESSION_ID`. Gunakan ini untuk menempatkan tautan yang dapat dilacak di badan PR, pesan komit, posting Slack, atau laporan yang dihasilkan sehingga pengulas dapat membuka jalannya yang menghasilkannya.114Setiap sesi cloud memiliki URL transkrip di claude.ai, dan sesi dapat membaca ID-nya sendiri dari variabel lingkungan `CLAUDE_CODE_REMOTE_SESSION_ID`. Gunakan ini untuk menempatkan tautan yang dapat dilacak di badan PR, pesan komit, posting Slack, atau laporan yang dihasilkan sehingga pengulas dapat membuka jalannya yang menghasilkannya.

115 115 

116Minta Claude untuk membuat tautan dari variabel lingkungan. Perintah berikut mencetak URL:116Nilai variabel menggunakan awalan `cse_`, sementara jalur URL transkrip mengambil ID yang sama dengan awalan `session_`. Substitusikan awalan saat membangun tautan. Perintah berikut mencetak URL:

117 117 

118```bash theme={null}118```bash theme={null}

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

120```120```

121 121 

122### Jalankan tes, mulai layanan, dan tambahkan paket122### Jalankan tes, mulai layanan, dan tambahkan paket


156| Tindakan | Cara |156| Tindakan | Cara |

157| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |157| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

158| Tambahkan lingkungan | Pilih lingkungan saat ini untuk membuka pemilih, kemudian pilih **Tambahkan lingkungan**. Dialog mencakup nama, tingkat akses jaringan, variabel lingkungan, dan skrip setup. |158| Tambahkan lingkungan | Pilih lingkungan saat ini untuk membuka pemilih, kemudian pilih **Tambahkan lingkungan**. Dialog mencakup nama, tingkat akses jaringan, variabel lingkungan, dan skrip setup. |

159| Edit lingkungan | Pilih ikon pengaturan di sebelah kanan nama lingkungan. |159| Edit lingkungan | Pilih ikon cloud yang menunjukkan nama lingkungan saat ini untuk membuka pemilih, arahkan ke lingkungan, dan klik ikon pengaturan yang muncul di sebelah kanan. |

160| Arsipkan lingkungan | Buka lingkungan untuk pengeditan dan pilih **Arsipkan**. Lingkungan yang diarsipkan disembunyikan dari pemilih tetapi sesi yang ada terus berjalan. |160| Arsipkan lingkungan | Buka lingkungan untuk pengeditan dan pilih **Arsipkan**. Lingkungan yang diarsipkan disembunyikan dari pemilih tetapi sesi yang ada terus berjalan. |

161| Atur default untuk `--remote` | Jalankan `/remote-env` di terminal Anda. Jika Anda memiliki satu lingkungan, perintah ini menunjukkan konfigurasi saat ini Anda. `/remote-env` hanya memilih default; tambahkan, edit, dan arsipkan lingkungan dari antarmuka web. |161| Atur default untuk `--remote` | Jalankan `/remote-env` di terminal Anda. Jika Anda memiliki satu lingkungan, perintah ini menunjukkan konfigurasi saat ini Anda. `/remote-env` hanya memilih default; tambahkan, edit, dan arsipkan lingkungan dari antarmuka web. |

162 162 


185 185 

186Jika skrip keluar dengan non-zero, sesi gagal dimulai. Tambahkan `|| true` ke perintah non-kritis untuk menghindari pemblokiran sesi pada kegagalan instalasi yang tidak stabil.186Jika skrip keluar dengan non-zero, sesi gagal dimulai. Tambahkan `|| true` ke perintah non-kritis untuk menghindari pemblokiran sesi pada kegagalan instalasi yang tidak stabil.

187 187 

188Jaga total runtime skrip di bawah kira-kira lima menit sehingga [cache lingkungan](#environment-caching) dapat dibangun. Jalankan instalasi independen secara paralel dengan `&` dan `wait`. Jika satu unduhan tidak akan cocok dalam batas lima menit, pindahkan ke hook [SessionStart](#setup-scripts-vs-sessionstart-hooks) yang meluncurkannya di latar belakang.

189 

188<Note>190<Note>

189 Skrip setup yang menginstal paket memerlukan akses jaringan untuk menjangkau registri. Akses jaringan **Trusted** default memungkinkan koneksi ke [domain paket umum](#default-allowed-domains) termasuk npm, PyPI, RubyGems, dan crates.io. Skrip akan gagal menginstal paket jika lingkungan Anda menggunakan akses jaringan **None**.191 Skrip setup yang menginstal paket memerlukan akses jaringan untuk menjangkau registri. Akses jaringan **Trusted** default memungkinkan koneksi ke [domain paket umum](#default-allowed-domains) termasuk npm, PyPI, RubyGems, dan crates.io. Skrip akan gagal menginstal paket jika lingkungan Anda menggunakan akses jaringan **None**.

190</Note>192</Note>


265 267 

266Akses jaringan mengontrol koneksi keluar dari lingkungan cloud. Setiap lingkungan menentukan satu tingkat akses, dan Anda dapat memperluas dengan domain yang diizinkan khusus. Default adalah **Trusted**, yang memungkinkan registri paket dan [domain yang diizinkan](#default-allowed-domains) lainnya.268Akses jaringan mengontrol koneksi keluar dari lingkungan cloud. Setiap lingkungan menentukan satu tingkat akses, dan Anda dapat memperluas dengan domain yang diizinkan khusus. Default adalah **Trusted**, yang memungkinkan registri paket dan [domain yang diizinkan](#default-allowed-domains) lainnya.

267 269 

270Untuk mengubah akses jaringan lingkungan, [buka untuk pengeditan](#configure-your-environment) dan gunakan pemilih **Akses jaringan** di dialog. Tidak ada halaman Environments terpisah. Ikon cloud muncul di mana pun Anda memulai sesi cloud atau mengonfigurasi [routine](/id/routines#environments-and-network-access).

271 

272<Note>

273 Lalu lintas konektor MCP dirutekan melalui server Anthropic, jadi konektor yang Anda aktifkan pada sesi atau routine berfungsi tanpa menambahkan host mereka ke **Domain yang diizinkan**. Konektor dikonfigurasi per sesi atau per routine; hapus yang tidak Anda butuhkan untuk membatasi alat mana yang dapat dijangkau Claude. Ini bergantung pada saluran terikat Anthropic yang sama yang dicatat di bawah [Keamanan dan isolasi](#security-and-isolation).

274</Note>

275 

268### Tingkat akses276### Tingkat akses

269 277 

270Pilih tingkat akses saat Anda membuat atau mengedit lingkungan:278Pilih tingkat akses saat Anda membuat atau mengedit lingkungan:


754* **Perlindungan kredensial**: kredensial sensitif seperti kredensial git atau kunci penandatanganan tidak pernah ada di dalam sandbox dengan Claude Code. Autentikasi ditangani melalui proxy aman menggunakan kredensial bersistem.762* **Perlindungan kredensial**: kredensial sensitif seperti kredensial git atau kunci penandatanganan tidak pernah ada di dalam sandbox dengan Claude Code. Autentikasi ditangani melalui proxy aman menggunakan kredensial bersistem.

755* **Analisis aman**: kode dianalisis dan dimodifikasi dalam VM terisolasi sebelum membuat PR763* **Analisis aman**: kode dianalisis dan dimodifikasi dalam VM terisolasi sebelum membuat PR

756 764 

765## Troubleshooting

766 

767Untuk kesalahan API runtime yang muncul dalam percakapan seperti `API Error: 500`, `529 Overloaded`, `429`, atau `Prompt is too long`, lihat [referensi Error](/id/errors). Kesalahan tersebut dan perbaikannya dibagikan dengan CLI dan Desktop app. Bagian di bawah mencakup masalah khusus untuk sesi cloud.

768 

769### Pembuatan sesi gagal

770 

771Jika sesi baru gagal dimulai dengan `Session creation failed` atau macet di provisioning, Claude Code tidak dapat mengalokasikan lingkungan cloud.

772 

773* Periksa [status.claude.com](https://status.claude.com) untuk insiden sesi cloud

774* Coba lagi setelah satu menit, karena kapasitas disediakan sesuai permintaan

775* Konfirmasi repositori Anda dapat dijangkau. Repositori pribadi memerlukan GitHub App yang diinstal dengan akses ke repositori itu, atau token `gh` yang disinkronkan melalui `/web-setup`. Lihat [Opsi autentikasi GitHub](#github-authentication-options).

776 

777### Sesi Remote Control kedaluwarsa atau akses ditolak

778 

779`--teleport` terhubung melalui infrastruktur sesi Remote Control yang sama yang digunakan sesi cloud, jadi kesalahan autentikasi dan kedaluwarsa sesi muncul dengan wording Remote Control. Anda mungkin melihat `Remote Control session has expired` atau `Access denied`. Token koneksi berumur pendek dan dibatasi pada akun Anda.

780 

781* Jalankan `/login` secara lokal untuk menyegarkan kredensial Anda, kemudian sambungkan kembali

782* Konfirmasi Anda masuk ke akun yang sama yang memiliki sesi

783* Jika Anda melihat `Remote Control may not be available for this organization`, admin Anda belum mengaktifkan sesi jarak jauh untuk rencana Anda

784 

785### Lingkungan kedaluwarsa

786 

787Sesi cloud berhenti setelah periode inaktivitas dan lingkungan yang mendasarinya diambil kembali. Dari terminal lokal, ini muncul sebagai `Could not resume session ... its environment has expired. Creating a fresh session instead.` Di web, sesi ditandai kedaluwarsa dalam daftar sesi.

788 

789Buka kembali sesi dari [claude.ai/code](https://claude.ai/code) untuk menyediakan lingkungan segar dengan riwayat percakapan Anda dipulihkan.

790 

757## Batasan791## Batasan

758 792 

759Sebelum mengandalkan sesi cloud untuk alur kerja, pertimbangkan batasan ini:793Sebelum mengandalkan sesi cloud untuk alur kerja, pertimbangkan batasan ini:


761* **Batas laju**: Claude Code di web berbagi batas laju dengan semua penggunaan Claude dan Claude Code lainnya dalam akun Anda. Menjalankan beberapa tugas secara paralel mengonsumsi lebih banyak batas laju secara proporsional. Tidak ada biaya komputasi terpisah untuk VM cloud.795* **Batas laju**: Claude Code di web berbagi batas laju dengan semua penggunaan Claude dan Claude Code lainnya dalam akun Anda. Menjalankan beberapa tugas secara paralel mengonsumsi lebih banyak batas laju secara proporsional. Tidak ada biaya komputasi terpisah untuk VM cloud.

762* **Autentikasi repositori**: Anda hanya dapat memindahkan sesi dari web ke lokal saat Anda diautentikasi ke akun yang sama796* **Autentikasi repositori**: Anda hanya dapat memindahkan sesi dari web ke lokal saat Anda diautentikasi ke akun yang sama

763* **Pembatasan platform**: kloning repositori dan pembuatan pull request memerlukan GitHub. Instans [GitHub Enterprise Server](/id/github-enterprise-server) yang di-host sendiri didukung untuk rencana Team dan Enterprise. Repositori GitLab, Bitbucket, dan non-GitHub lainnya dapat dikirim ke sesi cloud sebagai [bundle lokal](#send-local-repositories-without-github), tetapi sesi tidak dapat mendorong hasil kembali ke remote797* **Pembatasan platform**: kloning repositori dan pembuatan pull request memerlukan GitHub. Instans [GitHub Enterprise Server](/id/github-enterprise-server) yang di-host sendiri didukung untuk rencana Team dan Enterprise. Repositori GitLab, Bitbucket, dan non-GitHub lainnya dapat dikirim ke sesi cloud sebagai [bundle lokal](#send-local-repositories-without-github), tetapi sesi tidak dapat mendorong hasil kembali ke remote

798* **Daftar putih IP organisasi**: sesi cloud memanggil API Anthropic dari infrastruktur yang dikelola Anthropic, bukan jaringan Anda. 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 gagal dengan kesalahan autentikasi. Hal yang sama berlaku untuk [Code Review](/id/code-review) dan [Routines](/id/routines). Hubungi [dukungan Anthropic](https://support.claude.com/) untuk mengecualikan layanan yang di-host Anthropic dari daftar putih IP organisasi Anda.

764 799 

765## Sumber daya terkait800## Sumber daya terkait

766 801 

cli-reference.md +11 −10

Details

40Sesuaikan perilaku Claude Code dengan flag baris perintah ini. `claude --help` tidak mencantumkan setiap flag, jadi ketiadaan flag dari `--help` tidak berarti flag tersebut tidak tersedia.40Sesuaikan perilaku Claude Code dengan flag baris perintah ini. `claude --help` tidak mencantumkan setiap flag, jadi ketiadaan flag dari `--help` tidak berarti flag tersebut tidak tersedia.

41 41 

42| Flag | Deskripsi | Contoh |42| Flag | Deskripsi | Contoh |

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

44| `--add-dir` | Tambahkan direktori kerja tambahan untuk Claude membaca dan mengedit file. Memberikan akses file; sebagian besar konfigurasi `.claude/` [tidak ditemukan](/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori ini. Memvalidasi setiap jalur ada sebagai direktori | `claude --add-dir ../apps ../lib` |44| `--add-dir` | Tambahkan direktori kerja tambahan untuk Claude membaca dan mengedit file. Memberikan akses file; sebagian besar konfigurasi `.claude/` [tidak ditemukan](/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori ini. Memvalidasi setiap jalur ada sebagai direktori. Untuk mempertahankan direktori ini di seluruh sesi, atur [`permissions.additionalDirectories`](/id/settings#permission-settings) dalam pengaturan | `claude --add-dir ../apps ../lib` |

45| `--agent` | Tentukan agen untuk sesi saat ini (menimpa pengaturan `agent`) | `claude --agent my-custom-agent` |45| `--agent` | Tentukan agen untuk sesi saat ini (menimpa pengaturan `agent`) | `claude --agent my-custom-agent` |

46| `--agents` | Tentukan subagents kustom secara dinamis melalui JSON. Menggunakan nama field yang sama dengan [frontmatter](/id/sub-agents#supported-frontmatter-fields) subagent, ditambah field `prompt` untuk instruksi agen | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |46| `--agents` | Tentukan subagents kustom secara dinamis melalui JSON. Menggunakan nama field yang sama dengan [frontmatter](/id/sub-agents#supported-frontmatter-fields) subagent, ditambah field `prompt` untuk instruksi agen | `claude --agents '{"reviewer":{"description":"Reviews code","prompt":"You are a code reviewer"}}'` |

47| `--allow-dangerously-skip-permissions` | Tambahkan `bypassPermissions` ke siklus mode `Shift+Tab` tanpa memulai di dalamnya. Memungkinkan Anda memulai dalam mode berbeda seperti `plan` dan beralih ke `bypassPermissions` nanti. Lihat [mode izin](/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |47| `--allow-dangerously-skip-permissions` | Tambahkan `bypassPermissions` ke siklus mode `Shift+Tab` tanpa memulai di dalamnya. Memungkinkan Anda memulai dalam mode berbeda seperti `plan` dan beralih ke `bypassPermissions` nanti. Lihat [mode izin](/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) | `claude --permission-mode plan --allow-dangerously-skip-permissions` |


59| `--debug-file <path>` | Tulis log debug ke jalur file tertentu. Secara implisit mengaktifkan mode debug. Mengambil prioritas atas `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |59| `--debug-file <path>` | Tulis log debug ke jalur file tertentu. Secara implisit mengaktifkan mode debug. Mengambil prioritas atas `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |

60| `--disable-slash-commands` | Nonaktifkan semua skills dan perintah untuk sesi ini | `claude --disable-slash-commands` |60| `--disable-slash-commands` | Nonaktifkan semua skills dan perintah untuk sesi ini | `claude --disable-slash-commands` |

61| `--disallowedTools` | Tools yang dihapus dari konteks model dan tidak dapat digunakan | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |61| `--disallowedTools` | Tools yang dihapus dari konteks model dan tidak dapat digunakan | `"Bash(git log *)" "Bash(git diff *)" "Edit"` |

62| `--effort` | Atur [tingkat upaya](/id/model-config#adjust-effort-level) untuk sesi saat ini. Opsi: `low`, `medium`, `high`, `xhigh`, `max`; tingkat yang tersedia tergantung pada model. Lingkup sesi dan tidak bertahan ke pengaturan | `claude --effort high` |62| `--effort` | Atur [tingkat upaya](/id/model-config#adjust-effort-level) untuk sesi saat ini. Opsi: `low`, `medium`, `high`, `xhigh`, `max`; tingkat yang tersedia tergantung pada model. Menimpa pengaturan [`effortLevel`](/id/settings#available-settings) untuk sesi ini dan tidak bertahan | `claude --effort high` |

63| `--enable-auto-mode` | {/* max-version: 2.1.110 */}Dihapus di v2.1.111. Auto mode sekarang dalam siklus `Shift+Tab` secara default; gunakan `--permission-mode auto` untuk memulai di dalamnya | `claude --permission-mode auto` |63| `--enable-auto-mode` | {/* max-version: 2.1.110 */}Dihapus di v2.1.111. Auto mode sekarang dalam siklus `Shift+Tab` secara default; gunakan `--permission-mode auto` untuk memulai di dalamnya | `claude --permission-mode auto` |

64| `--exclude-dynamic-system-prompt-sections` | Pindahkan bagian per-mesin dari prompt sistem (direktori kerja, informasi lingkungan, jalur memori, status git) ke pesan pengguna pertama. Meningkatkan reuse prompt-cache di berbagai pengguna dan mesin yang menjalankan tugas yang sama. Hanya berlaku dengan prompt sistem default; diabaikan ketika `--system-prompt` atau `--system-prompt-file` diatur. Gunakan dengan `-p` untuk beban kerja multi-pengguna yang ditulis skrip | `claude -p --exclude-dynamic-system-prompt-sections "query"` |64| `--exclude-dynamic-system-prompt-sections` | Pindahkan bagian per-mesin dari prompt sistem (direktori kerja, informasi lingkungan, jalur memori, status git) ke pesan pengguna pertama. Meningkatkan reuse prompt-cache di berbagai pengguna dan mesin yang menjalankan tugas yang sama. Hanya berlaku dengan prompt sistem default; diabaikan ketika `--system-prompt` atau `--system-prompt-file` diatur. Gunakan dengan `-p` untuk beban kerja multi-pengguna yang ditulis skrip | `claude -p --exclude-dynamic-system-prompt-sections "query"` |

65| `--fallback-model` | Aktifkan fallback otomatis ke model yang ditentukan ketika model default kelebihan beban (mode cetak saja) | `claude -p --fallback-model sonnet "query"` |65| `--fallback-model` | Aktifkan fallback otomatis ke model yang ditentukan ketika model default kelebihan beban (mode cetak saja) | `claude -p --fallback-model sonnet "query"` |


76| `--max-budget-usd` | Jumlah dolar maksimum untuk dihabiskan pada panggilan API sebelum berhenti (mode cetak saja) | `claude -p --max-budget-usd 5.00 "query"` |76| `--max-budget-usd` | Jumlah dolar maksimum untuk dihabiskan pada panggilan API sebelum berhenti (mode cetak saja) | `claude -p --max-budget-usd 5.00 "query"` |

77| `--max-turns` | Batasi jumlah putaran agentic (mode cetak saja). Keluar dengan kesalahan saat batas tercapai. Tidak ada batas secara default | `claude -p --max-turns 3 "query"` |77| `--max-turns` | Batasi jumlah putaran agentic (mode cetak saja). Keluar dengan kesalahan saat batas tercapai. Tidak ada batas secara default | `claude -p --max-turns 3 "query"` |

78| `--mcp-config` | Muat server MCP dari file JSON atau string (dipisahkan spasi) | `claude --mcp-config ./mcp.json` |78| `--mcp-config` | Muat server MCP dari file JSON atau string (dipisahkan spasi) | `claude --mcp-config ./mcp.json` |

79| `--model` | Menetapkan model untuk sesi saat ini dengan alias untuk model terbaru (`sonnet` atau `opus`) atau nama lengkap model | `claude --model claude-sonnet-4-6` |79| `--model` | Menetapkan model untuk sesi saat ini dengan alias untuk model terbaru (`sonnet` atau `opus`) atau nama lengkap model. Menimpa pengaturan [`model`](/id/settings#available-settings) dan [`ANTHROPIC_MODEL`](/id/model-config#environment-variables) | `claude --model claude-sonnet-4-6` |

80| `--name`, `-n` | Atur nama tampilan untuk sesi, ditampilkan di `/resume` dan judul terminal. Anda dapat melanjutkan sesi bernama dengan `claude --resume <name>`. <br /><br />[`/rename`](/id/commands) mengubah nama di tengah sesi dan juga menampilkannya di bilah prompt | `claude -n "my-feature-work"` |80| `--name`, `-n` | Atur nama tampilan untuk sesi, ditampilkan di `/resume` dan judul terminal. Anda dapat melanjutkan sesi bernama dengan `claude --resume <name>`. <br /><br />[`/rename`](/id/commands) mengubah nama di tengah sesi dan juga menampilkannya di bilah prompt | `claude -n "my-feature-work"` |

81| `--no-chrome` | Nonaktifkan [integrasi browser Chrome](/id/chrome) untuk sesi ini | `claude --no-chrome` |81| `--no-chrome` | Nonaktifkan [integrasi browser Chrome](/id/chrome) untuk sesi ini | `claude --no-chrome` |

82| `--no-session-persistence` | Nonaktifkan persistensi sesi sehingga sesi tidak disimpan ke disk dan tidak dapat dilanjutkan (mode cetak saja) | `claude -p --no-session-persistence "query"` |82| `--no-session-persistence` | Nonaktifkan persistensi sesi sehingga sesi tidak disimpan ke disk dan tidak dapat dilanjutkan. Mode cetak saja. Variabel lingkungan [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/id/env-vars) melakukan hal yang sama dalam mode apa pun | `claude -p --no-session-persistence "query"` |

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

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

85| `--permission-prompt-tool` | Tentukan tool MCP untuk menangani prompt izin dalam mode non-interaktif | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |85| `--permission-prompt-tool` | Tentukan tool MCP untuk menangani prompt izin dalam mode non-interaktif | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

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

87| `--plugin-url` | Ambil arsip plugin `.zip` dari URL untuk sesi ini saja. Setiap flag mengambil satu URL. Ulangi flag untuk beberapa plugin | `claude --plugin-url https://example.com/plugin.zip` |

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

88| `--remote` | Buat sesi [web](/id/claude-code-on-the-web) baru di claude.ai dengan deskripsi tugas yang disediakan | `claude --remote "Fix the login bug"` |89| `--remote` | Buat sesi [web](/id/claude-code-on-the-web) baru di claude.ai dengan deskripsi tugas yang disediakan | `claude --remote "Fix the login bug"` |

89| `--remote-control`, `--rc` | Mulai sesi interaktif dengan [Remote Control](/id/remote-control#start-a-remote-control-session) diaktifkan sehingga Anda juga dapat mengontrolnya dari claude.ai atau aplikasi Claude. Secara opsional berikan nama untuk sesi | `claude --remote-control "My Project"` |90| `--remote-control`, `--rc` | Mulai sesi interaktif dengan [Remote Control](/id/remote-control#start-a-remote-control-session) diaktifkan sehingga Anda juga dapat mengontrolnya dari claude.ai atau aplikasi Claude. Secara opsional berikan nama untuk sesi | `claude --remote-control "My Project"` |


92| `--resume`, `-r` | Lanjutkan sesi tertentu berdasarkan ID atau nama, atau tampilkan pemilih interaktif untuk memilih sesi. Mencakup sesi yang menambahkan direktori ini dengan `/add-dir` | `claude --resume auth-refactor` |93| `--resume`, `-r` | Lanjutkan sesi tertentu berdasarkan ID atau nama, atau tampilkan pemilih interaktif untuk memilih sesi. Mencakup sesi yang menambahkan direktori ini dengan `/add-dir` | `claude --resume auth-refactor` |

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

94| `--setting-sources` | Daftar sumber pengaturan yang dipisahkan koma untuk dimuat (`user`, `project`, `local`) | `claude --setting-sources user,project` |95| `--setting-sources` | Daftar sumber pengaturan yang dipisahkan koma untuk dimuat (`user`, `project`, `local`) | `claude --setting-sources user,project` |

95| `--settings` | Jalur ke file JSON pengaturan atau string JSON untuk memuat pengaturan tambahan dari | `claude --settings ./settings.json` |96| `--settings` | Jalur ke file JSON pengaturan atau string JSON inline. Nilai yang Anda atur di sini menimpa kunci yang sama dalam file `settings.json` Anda untuk sesi ini. Kunci yang Anda lewatkan mempertahankan nilai berbasis file mereka. Lihat [precedence pengaturan](/id/settings#settings-precedence) | `claude --settings ./settings.json` |

96| `--strict-mcp-config` | Hanya gunakan server MCP dari `--mcp-config`, abaikan semua konfigurasi MCP lainnya | `claude --strict-mcp-config --mcp-config ./mcp.json` |97| `--strict-mcp-config` | Hanya gunakan server MCP dari `--mcp-config`, abaikan semua konfigurasi MCP lainnya | `claude --strict-mcp-config --mcp-config ./mcp.json` |

97| `--system-prompt` | Ganti seluruh prompt sistem dengan teks kustom | `claude --system-prompt "You are a Python expert"` |98| `--system-prompt` | Ganti seluruh prompt sistem dengan teks kustom | `claude --system-prompt "You are a Python expert"` |

98| `--system-prompt-file` | Muat prompt sistem dari file, mengganti prompt default | `claude --system-prompt-file ./custom-prompt.txt` |99| `--system-prompt-file` | Muat prompt sistem dari file, mengganti prompt default | `claude --system-prompt-file ./custom-prompt.txt` |

99| `--teleport` | Lanjutkan [sesi web](/id/claude-code-on-the-web) di terminal lokal Anda | `claude --teleport` |100| `--teleport` | Lanjutkan [sesi web](/id/claude-code-on-the-web) di terminal lokal Anda | `claude --teleport` |

100| `--teammate-mode` | Atur bagaimana [rekan tim agen](/id/agent-teams) ditampilkan: `auto` (default), `in-process`, atau `tmux`. Lihat [Pilih mode tampilan](/id/agent-teams#choose-a-display-mode) | `claude --teammate-mode in-process` |101| `--teammate-mode` | Atur bagaimana [rekan tim agen](/id/agent-teams) ditampilkan: `auto` (default), `in-process`, atau `tmux`. Menimpa pengaturan [`teammateMode`](/id/settings#available-settings) untuk sesi ini. Lihat [Pilih mode tampilan](/id/agent-teams#choose-a-display-mode) | `claude --teammate-mode in-process` |

101| `--tmux` | Buat sesi tmux untuk worktree. Memerlukan `--worktree`. Menggunakan pane native iTerm2 saat tersedia; berikan `--tmux=classic` untuk tmux tradisional | `claude -w feature-auth --tmux` |102| `--tmux` | Buat sesi tmux untuk worktree. Memerlukan `--worktree`. Menggunakan pane native iTerm2 saat tersedia; berikan `--tmux=classic` untuk tmux tradisional | `claude -w feature-auth --tmux` |

102| `--tools` | Batasi tools bawaan mana yang dapat digunakan Claude. Gunakan `""` untuk menonaktifkan semua, `"default"` untuk semua, atau nama tools seperti `"Bash,Edit,Read"` | `claude --tools "Bash,Edit,Read"` |103| `--tools` | Batasi tools bawaan mana yang dapat digunakan Claude. Gunakan `""` untuk menonaktifkan semua, `"default"` untuk semua, atau nama tools seperti `"Bash,Edit,Read"` | `claude --tools "Bash,Edit,Read"` |

103| `--verbose` | Aktifkan logging verbose, menampilkan output putaran penuh | `claude --verbose` |104| `--verbose` | Aktifkan logging verbose, menampilkan output putaran penuh. Menimpa pengaturan [`viewMode`](/id/settings#available-settings) untuk sesi ini | `claude --verbose` |

104| `--version`, `-v` | Keluarkan nomor versi | `claude -v` |105| `--version`, `-v` | Keluarkan nomor versi | `claude -v` |

105| `--worktree`, `-w` | Mulai Claude dalam [git worktree](/id/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) terisolasi di `<repo>/.claude/worktrees/<name>`. Jika tidak ada nama yang diberikan, satu akan dibuat secara otomatis | `claude -w feature-auth` |106| `--worktree`, `-w` | Mulai Claude dalam [git worktree](/id/worktrees) terisolasi di `<repo>/.claude/worktrees/<name>`. Jika tidak ada nama yang diberikan, satu akan dibuat secara otomatis | `claude -w feature-auth` |

106 107 

107### Flag prompt sistem108### Flag prompt sistem

108 109 

commands.md +7 −5

Details

10 10 

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

12 12 

13Sebuah perintah hanya dikenali di awal pesan Anda. Teks yang mengikuti nama perintah diteruskan kepadanya sebagai argumen.

14 

13Tabel di bawah mencantumkan semua perintah yang disertakan dalam Claude Code. Entri yang ditandai **[Skill](/id/skills#bundled-skills)** adalah skills bundel. Mereka menggunakan mekanisme yang sama dengan skills yang Anda tulis sendiri: prompt yang diberikan kepada Claude, yang juga dapat Claude panggil secara otomatis ketika relevan. Semuanya yang lain adalah perintah bawaan yang perilakunya dikodekan ke dalam CLI. Untuk menambahkan perintah Anda sendiri, lihat [skills](/id/skills).15Tabel di bawah mencantumkan semua perintah yang disertakan dalam Claude Code. Entri yang ditandai **[Skill](/id/skills#bundled-skills)** adalah skills bundel. Mereka menggunakan mekanisme yang sama dengan skills yang Anda tulis sendiri: prompt yang diberikan kepada Claude, yang juga dapat Claude panggil secara otomatis ketika relevan. Semuanya yang lain adalah perintah bawaan yang perilakunya dikodekan ke dalam CLI. Untuk menambahkan perintah Anda sendiri, lihat [skills](/id/skills).

14 16 

15Tidak setiap perintah muncul untuk setiap pengguna. Ketersediaan tergantung pada platform, paket, dan lingkungan Anda. Misalnya, `/desktop` hanya muncul di macOS dan Windows, dan `/upgrade` hanya muncul di paket Pro dan Max.17Tidak setiap perintah muncul untuk setiap pengguna. Ketersediaan tergantung pada platform, paket, dan lingkungan Anda. Misalnya, `/desktop` hanya muncul di macOS dan Windows, dan `/upgrade` hanya muncul di paket Pro dan Max.


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

22| `/agents` | Kelola konfigurasi [agent](/id/sub-agents) |24| `/agents` | Kelola konfigurasi [agent](/id/sub-agents) |

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

24| `/batch <instruction>` | **[Skill](/id/skills#bundled-skills).** Orkestrasi perubahan skala besar di seluruh codebase secara paralel. Meneliti codebase, menguraikan pekerjaan menjadi 5 hingga 30 unit independen, dan menyajikan rencana. Setelah disetujui, spawn satu agent latar belakang per unit dalam [git worktree](/id/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) yang terisolasi. Setiap agent mengimplementasikan unitnya, menjalankan tes, dan membuka pull request. Memerlukan repositori git. Contoh: `/batch migrate src/ from Solid to React` |26| `/batch <instruction>` | **[Skill](/id/skills#bundled-skills).** Orkestrasi perubahan skala besar di seluruh codebase secara paralel. Meneliti codebase, menguraikan pekerjaan menjadi 5 hingga 30 unit independen, dan menyajikan rencana. Setelah disetujui, spawn satu agent latar belakang per unit dalam [git worktree](/id/worktrees) yang terisolasi. Setiap agent mengimplementasikan unitnya, menjalankan tes, dan membuka pull request. Memerlukan repositori git. Contoh: `/batch migrate src/ from Solid to React` |

25| `/branch [name]` | Buat cabang dari percakapan saat ini pada titik ini. Beralih Anda ke cabang dan melestarikan yang asli, yang dapat Anda kembali dengan `/resume`. Alias: `/fork`. Ketika [`CLAUDE_CODE_FORK_SUBAGENT`](/id/env-vars) diatur, `/fork` malah spawn [forked subagent](/id/sub-agents#fork-the-current-conversation) dan tidak lagi menjadi alias untuk perintah ini |27| `/branch [name]` | Buat cabang dari percakapan saat ini pada titik ini. Beralih Anda ke cabang dan melestarikan yang asli, yang dapat Anda kembali dengan `/resume`. Alias: `/fork`. Ketika [`CLAUDE_CODE_FORK_SUBAGENT`](/id/env-vars) diatur, `/fork` malah spawn [forked subagent](/id/sub-agents#fork-the-current-conversation) dan tidak lagi menjadi alias untuk perintah ini |

26| `/btw <question>` | Ajukan [pertanyaan sampingan](/id/interactive-mode#side-questions-with-%2Fbtw) dengan cepat tanpa menambahkan ke percakapan |28| `/btw <question>` | Ajukan [pertanyaan sampingan](/id/interactive-mode#side-questions-with-%2Fbtw) dengan cepat tanpa menambahkan ke percakapan |

27| `/chrome` | Konfigurasi pengaturan [Claude in Chrome](/id/chrome) |29| `/chrome` | Konfigurasi pengaturan [Claude in Chrome](/id/chrome) |

28| `/claude-api [migrate\|managed-agents-onboard]` | **[Skill](/id/skills#bundled-skills).** Muat materi referensi Claude API untuk bahasa proyek Anda (Python, TypeScript, Java, Go, Ruby, C#, PHP, atau cURL) dan referensi Managed Agents. Mencakup tool use, streaming, batches, structured outputs, dan pitfalls umum. Juga mengaktifkan secara otomatis ketika kode Anda mengimpor `anthropic` atau `@anthropic-ai/sdk`. Jalankan `/claude-api migrate` untuk meningkatkan kode Claude API yang ada ke model yang lebih baru: Claude menanyakan file mana yang akan dipindai dan model mana yang akan ditargetkan, kemudian memperbarui ID model, konfigurasi thinking, dan parameter lain yang berubah antar versi. Jalankan `/claude-api managed-agents-onboard` untuk panduan interaktif yang membuat Managed Agent baru dari awal |30| `/claude-api [migrate\|managed-agents-onboard]` | **[Skill](/id/skills#bundled-skills).** Muat materi referensi Claude API untuk bahasa proyek Anda (Python, TypeScript, Java, Go, Ruby, C#, PHP, atau cURL) dan referensi Managed Agents. Mencakup tool use, streaming, batches, structured outputs, dan pitfalls umum. Juga mengaktifkan secara otomatis ketika kode Anda mengimpor `anthropic` atau `@anthropic-ai/sdk`. Jalankan `/claude-api migrate` untuk meningkatkan kode Claude API yang ada ke model yang lebih baru: Claude menanyakan file mana yang akan dipindai dan model mana yang akan ditargetkan, kemudian memperbarui ID model, konfigurasi thinking, dan parameter lain yang berubah antar versi. Jalankan `/claude-api managed-agents-onboard` untuk panduan interaktif yang membuat Managed Agent baru dari awal |

29| `/clear` | Mulai percakapan baru dengan konteks kosong. Percakapan sebelumnya tetap tersedia di `/resume`. Untuk membebaskan konteks sambil melanjutkan percakapan yang sama, gunakan `/compact` sebagai gantinya. Alias: `/reset`, `/new` |31| `/clear` | Mulai percakapan baru dengan konteks kosong. Percakapan sebelumnya tetap tersedia di `/resume`. Untuk membebaskan konteks sambil melanjutkan percakapan yang sama, gunakan `/compact` sebagai gantinya. Alias: `/reset`, `/new` |

30| `/color [color\|default]` | Atur warna bilah prompt untuk sesi saat ini. Warna yang tersedia: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Gunakan `default` untuk mengatur ulang. Ketika [Remote Control](/id/remote-control) terhubung, warna disinkronkan ke claude.ai/code |32| `/color [color\|default]` | Atur warna bilah prompt untuk sesi saat ini. Warna yang tersedia: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Gunakan `default` untuk mengatur ulang, atau jalankan tanpa argumen untuk memilih warna acak. Ketika [Remote Control](/id/remote-control) terhubung, warna disinkronkan ke claude.ai/code |

31| `/compact [instructions]` | Bebaskan konteks dengan merangkum percakapan sejauh ini. Secara opsional teruskan instruksi fokus untuk ringkasan. Lihat [bagaimana compaction menangani rules, skills, dan memory files](/id/context-window#what-survives-compaction) |33| `/compact [instructions]` | Bebaskan konteks dengan merangkum percakapan sejauh ini. Secara opsional teruskan instruksi fokus untuk ringkasan. Lihat [bagaimana compaction menangani rules, skills, dan memory files](/id/context-window#what-survives-compaction) |

32| `/config` | Buka antarmuka [Settings](/id/settings) untuk menyesuaikan tema, model, [output style](/id/output-styles), dan preferensi lainnya. Alias: `/settings` |34| `/config` | Buka antarmuka [Settings](/id/settings) untuk menyesuaikan tema, model, [output style](/id/output-styles), dan preferensi lainnya. Alias: `/settings` |

33| `/context` | Visualisasikan penggunaan konteks saat ini sebagai grid berwarna. Menampilkan saran optimasi untuk alat yang berat konteks, memory bloat, dan peringatan kapasitas |35| `/context` | Visualisasikan penggunaan konteks saat ini sebagai grid berwarna. Menampilkan saran optimasi untuk alat yang berat konteks, memory bloat, dan peringatan kapasitas |


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

45| `/feedback [report]` | Kirimkan umpan balik tentang Claude Code. Alias: `/bug` |47| `/feedback [report]` | Kirimkan umpan balik tentang Claude Code. Alias: `/bug` |

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

47| `/focus` | Alihkan focus view, yang menampilkan hanya prompt terakhir Anda, ringkasan tool-call satu baris dengan edit diffstats, dan respons final. Pilihan bertahan di seluruh sesi. Hanya tersedia dalam [fullscreen rendering](/id/fullscreen) |49| `/focus` | Alihkan focus view, yang menampilkan hanya prompt terakhir Anda, ringkasan tool-call satu baris dengan edit diffstats, dan respons final. Pilihan bertahan di seluruh sesi; atur [`viewMode`](/id/settings#available-settings) dalam pengaturan untuk menggantinya. Hanya tersedia dalam [fullscreen rendering](/id/fullscreen) |

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

49| `/help` | Tampilkan bantuan dan perintah yang tersedia |51| `/help` | Tampilkan bantuan dan perintah yang tersedia |

50| `/hooks` | Lihat konfigurasi [hook](/id/hooks) untuk peristiwa alat |52| `/hooks` | Lihat konfigurasi [hook](/id/hooks) untuk peristiwa alat |


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

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

85| `/simplify [focus]` | **[Skill](/id/skills#bundled-skills).** Tinjau file yang baru-baru ini diubah untuk reuse kode, kualitas, dan masalah efisiensi, kemudian perbaiki. Spawn tiga review agents secara paralel, agregat temuan mereka, dan terapkan perbaikan. Teruskan teks untuk fokus pada kekhawatiran spesifik: `/simplify focus on memory efficiency` |87| `/simplify [focus]` | **[Skill](/id/skills#bundled-skills).** Tinjau file yang baru-baru ini diubah untuk reuse kode, kualitas, dan masalah efisiensi, kemudian perbaiki. Spawn tiga review agents secara paralel, agregat temuan mereka, dan terapkan perbaikan. Teruskan teks untuk fokus pada kekhawatiran spesifik: `/simplify focus on memory efficiency` |

86| `/skills` | Daftar [skills](/id/skills) yang tersedia. Tekan `t` untuk mengurutkan berdasarkan token count |88| `/skills` | Daftar [skills](/id/skills) yang tersedia. Tekan `t` untuk mengurutkan berdasarkan token count. Tekan `Space` untuk [menyembunyikan skill dari Claude atau menu `/`](/id/skills#override-skill-visibility-from-settings), kemudian `Enter` untuk menyimpan |

87| `/stats` | Alias untuk `/usage`. Membuka pada tab Stats |89| `/stats` | Alias untuk `/usage`. Membuka pada tab Stats |

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

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

90| `/stickers` | Pesan stiker Claude Code |92| `/stickers` | Pesan stiker Claude Code |

91| `/tasks` | Daftar dan kelola tugas latar belakang. Juga tersedia sebagai `/bashes` |93| `/tasks` | Daftar dan kelola tugas latar belakang. Juga tersedia sebagai `/bashes` |

92| `/team-onboarding` | Hasilkan panduan onboarding tim dari riwayat penggunaan Claude Code Anda. Claude menganalisis sesi, perintah, dan penggunaan server MCP Anda dari 30 hari terakhir dan menghasilkan panduan markdown yang dapat ditempel rekan kerja sebagai pesan pertama untuk setup dengan cepat |94| `/team-onboarding` | Hasilkan panduan onboarding tim dari riwayat penggunaan Claude Code Anda. Claude menganalisis sesi, perintah, dan penggunaan server MCP Anda dari 30 hari terakhir dan menghasilkan panduan markdown yang dapat ditempel rekan kerja sebagai pesan pertama untuk setup dengan cepat. Untuk pelanggan claude.ai di paket Pro, Max, Team, dan Enterprise, juga mengembalikan link berbagi yang dapat dibuka rekan kerja langsung di Claude Code |

93| `/teleport` | Tarik sesi [Claude Code di web](/id/claude-code-on-the-web#from-web-to-terminal) ke terminal ini: membuka pemilih, kemudian mengambil cabang dan percakapan. Juga tersedia sebagai `/tp`. Memerlukan langganan claude.ai |95| `/teleport` | Tarik sesi [Claude Code di web](/id/claude-code-on-the-web#from-web-to-terminal) ke terminal ini: membuka pemilih, kemudian mengambil cabang dan percakapan. Juga tersedia sebagai `/tp`. Memerlukan langganan claude.ai |

94| `/terminal-setup` | Konfigurasi pintasan keyboard terminal untuk Shift+Enter dan pintasan lainnya. Hanya terlihat di terminal yang membutuhkannya, seperti VS Code, Cursor, Windsurf, Alacritty, atau Zed |96| `/terminal-setup` | Konfigurasi pintasan keyboard terminal untuk Shift+Enter dan pintasan lainnya. Hanya terlihat di terminal yang membutuhkannya, seperti VS Code, Cursor, Windsurf, Alacritty, atau Zed |

95| `/theme` | Ubah tema warna. Mencakup opsi `auto` yang mengikuti mode gelap atau terang terminal Anda, varian terang dan gelap, tema yang dapat diakses buta warna (daltonized), tema ANSI yang menggunakan palet warna terminal Anda, dan [custom themes](/id/terminal-config#create-a-custom-theme) apa pun dari `~/.claude/themes/` atau plugins. Pilih **New custom theme…** untuk membuat satu |97| `/theme` | Ubah tema warna. Mencakup opsi `auto` yang mengikuti mode gelap atau terang terminal Anda, varian terang dan gelap, tema yang dapat diakses buta warna (daltonized), tema ANSI yang menggunakan palet warna terminal Anda, dan [custom themes](/id/terminal-config#create-a-custom-theme) apa pun dari `~/.claude/themes/` atau plugins. Pilih **New custom theme…** untuk membuat satu |

Details

8 8 

9Ketika Claude mengabaikan instruksi atau fitur yang Anda konfigurasi tidak muncul, penyebabnya biasanya adalah file tidak dimuat, dimuat dari lokasi berbeda dari yang Anda harapkan, atau file lain menggantinya. Panduan ini menunjukkan cara memeriksa apa yang benar-benar dimuat oleh Claude Code sehingga Anda dapat mempersempit mana yang berlaku.9Ketika Claude mengabaikan instruksi atau fitur yang Anda konfigurasi tidak muncul, penyebabnya biasanya adalah file tidak dimuat, dimuat dari lokasi berbeda dari yang Anda harapkan, atau file lain menggantinya. Panduan ini menunjukkan cara memeriksa apa yang benar-benar dimuat oleh Claude Code sehingga Anda dapat mempersempit mana yang berlaku.

10 10 

11Untuk masalah instalasi, autentikasi, dan konektivitas, lihat [Troubleshooting](/id/troubleshoot-install) sebagai gantinya.11Untuk masalah instalasi, autentikasi, dan konektivitas, lihat [Troubleshoot installation and login](/id/troubleshoot-install) sebagai gantinya.

12 12 

13## Lihat apa yang dimuat ke dalam context13## Lihat apa yang dimuat ke dalam context

14 14 


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

18 18 

19| Perintah | Menampilkan |19| Perintah | Menampilkan |

20| :------------- | :------------------------------------------------------------------------------- |20| :--------------- | :---------------------------------------------------------------------------------------------------------------------- |

21| `/memory` | File `CLAUDE.md` dan rules mana yang dimuat, ditambah entri auto-memory |21| `/memory` | File `CLAUDE.md` dan rules mana yang dimuat, ditambah entri auto-memory |

22| `/skills` | Skill yang tersedia dari sumber proyek, pengguna, dan plugin |22| `/skills` | Skill yang tersedia dari sumber proyek, pengguna, dan plugin |

23| `/agents` | Subagent yang dikonfigurasi dan pengaturannya |23| `/agents` | Subagent yang dikonfigurasi dan pengaturannya |


25| `/mcp` | Server MCP yang terhubung dan statusnya |25| `/mcp` | Server MCP yang terhubung dan statusnya |

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

27| `/doctor` | Diagnostik konfigurasi: kunci tidak valid, kesalahan schema, kesehatan instalasi |27| `/doctor` | Diagnostik konfigurasi: kunci tidak valid, kesalahan schema, kesehatan instalasi |

28| `/debug [issue]` | Mengaktifkan debug logging untuk sesi dan meminta Claude untuk mendiagnosis menggunakan output log dan jalur pengaturan |

28| `/status` | Sumber pengaturan aktif, termasuk apakah pengaturan terkelola berlaku |29| `/status` | Sumber pengaturan aktif, termasuk apakah pengaturan terkelola berlaku |

29 30 

30Jika file memory hilang dari `/memory`, periksa lokasinya terhadap [bagaimana file CLAUDE.md dimuat](/id/memory#how-claude-md-files-load). File `CLAUDE.md` subdirektori dimuat sesuai permintaan ketika Claude membaca file di direktori itu dengan alat Read, bukan pada awal sesi.31Jika file memory hilang dari `/memory`, periksa lokasinya terhadap [bagaimana file CLAUDE.md dimuat](/id/memory#how-claude-md-files-load). File `CLAUDE.md` subdirektori dimuat sesuai permintaan ketika Claude membaca file di direktori itu dengan alat Read, bukan pada awal sesi.


41 42 

42Pengaturan menggabungkan di seluruh cakupan terkelola, pengguna, proyek, dan lokal. Pengaturan terkelola selalu menang ketika ada. Di antara sisanya, cakupan yang lebih dekat menggantikan yang lebih luas dalam urutan lokal, kemudian proyek, kemudian pengguna. Beberapa pengaturan juga dapat diatur oleh flag baris perintah atau [variabel lingkungan](/id/env-vars), yang bertindak sebagai lapisan penggantian lain. Ketika pengaturan tidak tampak berlaku, nilai yang Anda atur biasanya ditimpa oleh cakupan lain atau variabel lingkungan.43Pengaturan menggabungkan di seluruh cakupan terkelola, pengguna, proyek, dan lokal. Pengaturan terkelola selalu menang ketika ada. Di antara sisanya, cakupan yang lebih dekat menggantikan yang lebih luas dalam urutan lokal, kemudian proyek, kemudian pengguna. Beberapa pengaturan juga dapat diatur oleh flag baris perintah atau [variabel lingkungan](/id/env-vars), yang bertindak sebagai lapisan penggantian lain. Ketika pengaturan tidak tampak berlaku, nilai yang Anda atur biasanya ditimpa oleh cakupan lain atau variabel lingkungan.

43 44 

44Jalankan `/doctor` untuk memvalidasi file konfigurasi Anda dan permukaan kunci tidak valid atau kesalahan schema. Jalankan `/status` untuk melihat sumber pengaturan mana yang aktif, termasuk apakah pengaturan terkelola berlaku. Untuk memahami cakupan mana yang menang untuk kunci tertentu, lihat [Bagaimana cakupan berinteraksi](/id/settings#how-scopes-interact).45Jalankan `/doctor` untuk memvalidasi file konfigurasi Anda dan permukaan kunci tidak valid atau kesalahan schema. Ketika `/doctor` melaporkan masalah, tekan `f` untuk mengirim laporan diagnostik ke Claude dan biarkan itu memandu Anda melalui perbaikan.

46 

47Jalankan `/status` untuk melihat sumber pengaturan mana yang aktif, termasuk apakah pengaturan terkelola berlaku. Untuk memahami cakupan mana yang menang untuk kunci tertentu, lihat [Bagaimana cakupan berinteraksi](/id/settings#how-scopes-interact).

45 48 

46## Periksa server MCP49## Periksa server MCP

47 50 


63 66 

64Jika `/hooks` menampilkan hook tetapi masih tidak aktif, langkah berikutnya adalah menonton evaluasi hook secara langsung. Mulai sesi dengan `claude --debug hooks` dan picu panggilan alat. Log debug mencatat setiap acara, matcher mana yang diperiksa, dan kode keluar dan output hook. Lihat [Debug hooks](/id/hooks#debug-hooks) untuk format log dan [troubleshooting hooks](/id/hooks-guide#limitations-and-troubleshooting) untuk pola kegagalan umum.67Jika `/hooks` menampilkan hook tetapi masih tidak aktif, langkah berikutnya adalah menonton evaluasi hook secara langsung. Mulai sesi dengan `claude --debug hooks` dan picu panggilan alat. Log debug mencatat setiap acara, matcher mana yang diperiksa, dan kode keluar dan output hook. Lihat [Debug hooks](/id/hooks#debug-hooks) untuk format log dan [troubleshooting hooks](/id/hooks-guide#limitations-and-troubleshooting) untuk pola kegagalan umum.

65 68 

66## Penyebab umum69## Uji terhadap konfigurasi bersih

70 

71Jika pemeriksaan yang ditargetkan tidak mengisolasi penyebab, atau konfigurasi Anda dalam keadaan yang tidak diketahui, bandingkan dengan sesi yang tidak memuat apa pun dari pengaturan biasa Anda. Arahkan [`CLAUDE_CONFIG_DIR`](/id/env-vars) ke direktori kosong untuk melewati semua yang ada di bawah `~/.claude`, dan luncurkan dari direktori yang tidak memiliki folder `.claude`, `.mcp.json`, atau `CLAUDE.md` sehingga konfigurasi proyek juga dilewati.

72 

73```bash theme={null}

74cd /tmp && CLAUDE_CONFIG_DIR=/tmp/claude-clean claude

75```

76 

77Sesi bersih tidak memiliki pengaturan pengguna atau proyek, hooks, server MCP, plugin, atau memory.

78 

79* Pengaturan terkelola masih berlaku jika organisasi Anda menerapkannya, karena mereka berada di jalur sistem di luar `~/.claude`

80* Di Linux dan Windows, Anda akan diminta untuk masuk lagi karena kredensial disimpan di bawah direktori konfigurasi

81* Di macOS, kredensial berada di Keychain dan terbawa ke sesi bersih

82 

83Jika masalah hilang di sini, penyebabnya ada di suatu tempat di file `~/.claude` atau proyek `.claude` Anda yang sebenarnya. Perkenalkan kembali satu per satu, dengan menyalin file ke direktori sementara atau dengan meluncurkan dari proyek Anda, untuk menemukan mana yang menjadi penyebabnya. Jika itu bertahan dalam sesi bersih, penyebabnya ada di luar konfigurasi pengguna dan proyek Anda. Jalankan `/status` untuk memeriksa apakah pengaturan terkelola berlaku, cari [variabel lingkungan](/id/env-vars) yang mempengaruhi Claude Code, kemudian lihat [Troubleshooting](/id/troubleshooting).

84 

85## Periksa penyebab umum

67 86 

68Sebagian besar kejutan konfigurasi dapat dilacak kembali ke serangkaian kecil aturan lokasi dan sintaks. Periksa ini sebelum menganggap bug:87Sebagian besar kejutan konfigurasi dapat dilacak kembali ke serangkaian kecil aturan lokasi dan sintaks. Periksa ini sebelum menganggap bug:

69 88 

70| Gejala | Penyebab | Perbaikan |89| Gejala | Penyebab | Perbaikan |

71| :--------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |90| :---------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

72| Hook tidak pernah aktif | `matcher` adalah array JSON bukan string | Gunakan string tunggal dengan `\|` untuk mencocokkan beberapa alat, misalnya `"Edit\|Write"`. Lihat [pola matcher](/id/hooks#matcher-patterns). |91| Hook tidak pernah aktif | `matcher` adalah array JSON bukan string | Gunakan string tunggal dengan `\|` untuk mencocokkan beberapa alat, misalnya `"Edit\|Write"`. Lihat [pola matcher](/id/hooks#matcher-patterns). |

73| Hook tidak pernah aktif | Nilai `matcher` adalah huruf kecil, misalnya `"bash"` | Pencocokan peka huruf besar-kecil. Nama alat dikapitalisasi: `Bash`, `Edit`, `Write`, `Read`. |92| Hook tidak pernah aktif | Nilai `matcher` adalah huruf kecil, misalnya `"bash"` | Pencocokan peka huruf besar-kecil. Nama alat dikapitalisasi: `Bash`, `Edit`, `Write`, `Read`. |

74| Hook tidak pernah aktif | Hook berada dalam file `.claude/hooks.json` mandiri | Tidak ada file hooks mandiri. Tentukan hooks di bawah kunci `"hooks"` di `settings.json`. Lihat [konfigurasi hook](/id/hooks). |93| Hook tidak pernah aktif | Hook berada dalam file `.claude/hooks.json` mandiri | Tidak ada file hooks mandiri. Tentukan hooks di bawah kunci `"hooks"` di `settings.json`. Lihat [konfigurasi hook](/id/hooks). |


80| Subagent mengabaikan instruksi `CLAUDE.md` | Subagent tidak selalu mewarisi memory proyek | Letakkan aturan penting di badan file agen, yang menjadi system prompt subagent. Lihat [konfigurasi subagent](/id/sub-agents). |99| Subagent mengabaikan instruksi `CLAUDE.md` | Subagent tidak selalu mewarisi memory proyek | Letakkan aturan penting di badan file agen, yang menjadi system prompt subagent. Lihat [konfigurasi subagent](/id/sub-agents). |

81| Logika pembersihan tidak pernah berjalan di akhir sesi | Tidak ada hook `SessionEnd` yang dikonfigurasi | Tambahkan hook `SessionEnd` di `settings.json`. Lihat [daftar acara hook](/id/hooks#hook-events). |100| Logika pembersihan tidak pernah berjalan di akhir sesi | Tidak ada hook `SessionEnd` yang dikonfigurasi | Tambahkan hook `SessionEnd` di `settings.json`. Lihat [daftar acara hook](/id/hooks#hook-events). |

82| Server MCP di `.mcp.json` tidak pernah dimuat | File berada di bawah `.claude/` atau menggunakan format konfigurasi Claude Desktop | Konfigurasi MCP proyek berada di akar repositori sebagai `.mcp.json`, bukan di dalam `.claude/`. Lihat [konfigurasi MCP](/id/mcp). |101| Server MCP di `.mcp.json` tidak pernah dimuat | File berada di bawah `.claude/` atau menggunakan format konfigurasi Claude Desktop | Konfigurasi MCP proyek berada di akar repositori sebagai `.mcp.json`, bukan di dalam `.claude/`. Lihat [konfigurasi MCP](/id/mcp). |

102| Server MCP ditambahkan di bawah `mcpServers` di `settings.json` tidak pernah muncul | `settings.json` tidak membaca kunci `mcpServers` | Tentukan server proyek di `.mcp.json` di akar repositori, atau jalankan `claude mcp add --scope user` untuk server berscopepengguna. Lihat [konfigurasi MCP](/id/mcp). |

83| Server MCP proyek ditambahkan tetapi tidak muncul | Prompt persetujuan satu kali ditutup | Server berscopeproyek memerlukan persetujuan. Jalankan `/mcp` untuk melihat status dan setujui. |103| Server MCP proyek ditambahkan tetapi tidak muncul | Prompt persetujuan satu kali ditutup | Server berscopeproyek memerlukan persetujuan. Jalankan `/mcp` untuk melihat status dan setujui. |

84| Server MCP gagal dimulai dari beberapa direktori | `command` atau `args` menggunakan jalur file relatif | Gunakan jalur absolut untuk skrip lokal. Executable di `PATH` Anda seperti `npx` atau `uvx` bekerja apa adanya. |104| Server MCP gagal dimulai dari beberapa direktori | `command` atau `args` menggunakan jalur file relatif | Gunakan jalur absolut untuk skrip lokal. Executable di `PATH` Anda seperti `npx` atau `uvx` bekerja apa adanya. |

85| Server MCP dimulai tanpa variabel lingkungan yang diharapkan | Variabel berada di `settings.json` `env`, yang tidak menyebar ke proses anak MCP | Atur `env` per-server di dalam `.mcp.json` sebagai gantinya. |105| Server MCP dimulai tanpa variabel lingkungan yang diharapkan | Variabel berada di `settings.json` `env`, yang tidak menyebar ke proses anak MCP | Atur `env` per-server di dalam `.mcp.json` sebagai gantinya. |

Details

4 4 

5# Temukan dan instal plugin yang sudah dibuat melalui marketplace5# Temukan dan instal plugin yang sudah dibuat melalui marketplace

6 6 

7> Temukan dan instal plugin dari marketplace untuk memperluas Claude Code dengan perintah, agen, dan kemampuan baru.7> Temukan dan instal plugin dari marketplace untuk memperluas Claude Code dengan skills, agen, dan kemampuan baru.

8 8 

9Plugin memperluas Claude Code dengan skills, agen, hooks, dan MCP servers. Plugin marketplace adalah katalog yang membantu Anda menemukan dan menginstal ekstensi ini tanpa membuatnya sendiri.9Plugin memperluas Claude Code dengan skills, agen, hooks, dan MCP servers. Plugin marketplace adalah katalog yang membantu Anda menemukan dan menginstal ekstensi ini tanpa membuatnya sendiri.

10 10 


36/plugin install github@claude-plugins-official36/plugin install github@claude-plugins-official

37```37```

38 38 

39Jika Claude Code melaporkan bahwa plugin tidak ditemukan di marketplace mana pun, marketplace Anda mungkin hilang atau ketinggalan zaman. Jalankan `/plugin marketplace update claude-plugins-official` untuk menyegarkannya, atau `/plugin marketplace add anthropics/claude-plugins-official` jika Anda belum menambahkannya sebelumnya. Kemudian coba instal lagi.

40 

39<Note>41<Note>

40 Official marketplace dikelola oleh Anthropic. Untuk mengirimkan plugin ke official marketplace, gunakan salah satu formulir pengajuan dalam aplikasi:42 Official marketplace dikelola oleh Anthropic. Untuk mengirimkan plugin ke official marketplace, gunakan salah satu formulir pengajuan dalam aplikasi:

41 43 


95 97 

96### Development workflows98### Development workflows

97 99 

98Plugin yang menambahkan perintah dan agen untuk tugas pengembangan umum:100Plugin yang menambahkan skills dan agen untuk tugas pengembangan umum:

99 101 

100* **commit-commands**: Git commit workflows termasuk commit, push, dan pembuatan PR102* **commit-commands**: Git commit workflows termasuk commit, push, dan pembuatan PR

101* **pr-review-toolkit**: Agen khusus untuk meninjau pull request103* **pr-review-toolkit**: Agen khusus untuk meninjau pull request


142 * **Project scope**: instal untuk semua kolaborator di repositori ini144 * **Project scope**: instal untuk semua kolaborator di repositori ini

143 * **Local scope**: instal untuk diri sendiri di repositori ini saja145 * **Local scope**: instal untuk diri sendiri di repositori ini saja

144 146 

145 Misalnya, pilih **commit-commands** (plugin yang menambahkan perintah alur kerja git) dan instal ke cakupan pengguna Anda.147 Misalnya, pilih **commit-commands** (plugin yang menambahkan skills alur kerja git) dan instal ke cakupan pengguna Anda.

146 148 

147 Anda juga dapat menginstal langsung dari baris perintah:149 Anda juga dapat menginstal langsung dari baris perintah:

148 150 


154 </Step>156 </Step>

155 157 

156 <Step title="Gunakan plugin baru Anda">158 <Step title="Gunakan plugin baru Anda">

157 Setelah menginstal, jalankan `/reload-plugins` untuk mengaktifkan plugin. Perintah plugin diberi namespace oleh nama plugin, jadi **commit-commands** menyediakan perintah seperti `/commit-commands:commit`.159 Setelah menginstal, jalankan `/reload-plugins` untuk mengaktifkan plugin. Skills plugin diberi namespace oleh nama plugin, jadi **commit-commands** menyediakan skills seperti `/commit-commands:commit`.

158 160 

159 Coba dengan membuat perubahan pada file dan menjalankan:161 Coba dengan membuat perubahan pada file dan menjalankan:

160 162 


164 166 

165 Ini menampilkan perubahan Anda, menghasilkan pesan commit, dan membuat commit.167 Ini menampilkan perubahan Anda, menghasilkan pesan commit, dan membuat commit.

166 168 

167 Setiap plugin bekerja berbeda. Periksa deskripsi plugin di tab **Discover** atau homepage-nya untuk mempelajari perintah dan kemampuan apa yang disediakan.169 Setiap plugin bekerja berbeda. Periksa deskripsi plugin di tab **Discover** atau homepage-nya untuk mempelajari skills dan kemampuan apa yang disediakan.

168 </Step>170 </Step>

169</Steps>171</Steps>

170 172 


195 197 

196### Tambahkan dari host Git lainnya198### Tambahkan dari host Git lainnya

197 199 

198Tambahkan repositori git apa pun dengan memberikan URL lengkap. Ini bekerja dengan host Git apa pun, termasuk GitLab, Bitbucket, dan server self-hosted:200Tambahkan repositori git apa pun dengan memberikan URL lengkap. Ini bekerja dengan host Git apa pun, termasuk GitLab, Bitbucket, dan server self-hosted. Sertakan akhiran `.git` sehingga Claude Code mengkloning repositori daripada memperlakukan URL sebagai tautan langsung ke file `marketplace.json` yang dihosting.

199 201 

200Menggunakan HTTPS:202Menggunakan HTTPS:

201 203 


257 259 

258Anda juga dapat melihat plugin dengan cakupan **managed**—ini diinstal oleh administrator melalui [managed settings](/id/settings#settings-files) dan tidak dapat dimodifikasi.260Anda juga dapat melihat plugin dengan cakupan **managed**—ini diinstal oleh administrator melalui [managed settings](/id/settings#settings-files) dan tidak dapat dimodifikasi.

259 261 

260Jalankan `/plugin` dan buka tab **Installed** untuk melihat plugin Anda dikelompokkan menurut cakupan.

261 

262<Warning>262<Warning>

263 Pastikan Anda mempercayai plugin sebelum menginstalnya. Anthropic tidak mengontrol MCP servers, file, atau perangkat lunak lain apa yang disertakan dalam plugin dan tidak dapat memverifikasi bahwa mereka bekerja seperti yang dimaksudkan. Periksa homepage setiap plugin untuk informasi lebih lanjut.263 Pastikan Anda mempercayai plugin sebelum menginstalnya. Anthropic tidak mengontrol MCP servers, file, atau perangkat lunak lain apa yang disertakan dalam plugin dan tidak dapat memverifikasi bahwa mereka bekerja seperti yang dimaksudkan. Periksa homepage setiap plugin untuk informasi lebih lanjut.

264</Warning>264</Warning>

265 265 

266## Kelola plugin yang diinstal266## Kelola plugin yang diinstal

267 267 

268Jalankan `/plugin` dan buka tab **Installed** untuk melihat, mengaktifkan, menonaktifkan, atau menghapus plugin Anda. Ketik untuk memfilter daftar berdasarkan nama atau deskripsi plugin.268Jalankan `/plugin` dan buka tab **Installed** untuk melihat, mengaktifkan, menonaktifkan, atau menghapus plugin Anda. Daftar dikelompokkan menurut cakupan dan diurutkan sehingga Anda melihat masalah terlebih dahulu: plugin dengan kesalahan pemuatan atau dependensi yang tidak terselesaikan muncul di bagian atas, diikuti oleh favorit Anda, dengan plugin yang dinonaktifkan dilipat di belakang header yang runtuh di bagian bawah.

269 

270Dari daftar Anda dapat:

271 

272* tekan `f` untuk menandai atau menghapus tanda favorit pada plugin yang dipilih

273* ketik untuk memfilter berdasarkan nama atau deskripsi plugin

274* tekan Enter untuk membuka tampilan detail plugin dan mengaktifkan, menonaktifkan, atau menghapusnya

275 

276Saat Anda menginstal plugin yang mendeklarasikan dependensi, output instalasi mencantumkan dependensi mana yang diinstal secara otomatis bersama dengannya.

269 277 

270Anda juga dapat mengelola plugin dengan perintah langsung.278Anda juga dapat mengelola plugin dengan perintah langsung.

271 279 


400 408 

4011. **Periksa versi Anda**: Jalankan `claude --version` untuk melihat apa yang diinstal.4091. **Periksa versi Anda**: Jalankan `claude --version` untuk melihat apa yang diinstal.

4022. **Perbarui Claude Code**:4102. **Perbarui Claude Code**:

403 * **Homebrew**: `brew upgrade claude-code`411 * **Homebrew**: `brew upgrade claude-code` (atau `brew upgrade claude-code@latest` jika Anda menginstal cask itu)

404 * **npm**: `npm update -g @anthropic-ai/claude-code`412 * **npm**: `npm install -g @anthropic-ai/claude-code@latest`

405 * **Native installer**: Jalankan kembali perintah install dari [Setup](/id/setup)413 * **Native installer**: Jalankan kembali perintah install dari [Setup](/id/setup)

4063. **Restart Claude Code**: Setelah memperbarui, restart terminal Anda dan jalankan `claude` lagi.4143. **Restart Claude Code**: Setelah memperbarui, restart terminal Anda dan jalankan `claude` lagi.

407 415 

env-vars.md +17 −11

Details

41| `ANTHROPIC_SMALL_FAST_MODEL` | \[DEPRECATED] Nama [model kelas Haiku untuk tugas latar belakang](/id/costs) |41| `ANTHROPIC_SMALL_FAST_MODEL` | \[DEPRECATED] Nama [model kelas Haiku untuk tugas latar belakang](/id/costs) |

42| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Ganti wilayah AWS untuk model kelas Haiku saat menggunakan Bedrock atau Bedrock Mantle |42| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Ganti wilayah AWS untuk model kelas Haiku saat menggunakan Bedrock atau Bedrock Mantle |

43| `ANTHROPIC_VERTEX_BASE_URL` | Ganti URL titik akhir Vertex AI. Gunakan untuk titik akhir Vertex kustom atau saat merutekan melalui [gateway LLM](/id/llm-gateway). Lihat [Google Vertex AI](/id/google-vertex-ai) |43| `ANTHROPIC_VERTEX_BASE_URL` | Ganti URL titik akhir Vertex AI. Gunakan untuk titik akhir Vertex kustom atau saat merutekan melalui [gateway LLM](/id/llm-gateway). Lihat [Google Vertex AI](/id/google-vertex-ai) |

44| `ANTHROPIC_VERTEX_PROJECT_ID` | ID proyek GCP untuk Vertex AI. Diperlukan saat menggunakan [Google Vertex AI](/id/google-vertex-ai) |44| `ANTHROPIC_VERTEX_PROJECT_ID` | ID proyek GCP untuk permintaan Vertex AI. Ditimpa oleh `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT`, atau proyek dalam file kredensial `GOOGLE_APPLICATION_CREDENTIALS` Anda. Lihat [Google Vertex AI](/id/google-vertex-ai) |

45| `API_TIMEOUT_MS` | Waktu tunggu untuk permintaan API dalam milidetik (default: 600000, atau 10 menit; maksimum: 2147483647). Tingkatkan ini saat permintaan habis waktu pada jaringan lambat atau saat merutekan melalui proxy. Nilai di atas maksimum akan meluap timer yang mendasar dan menyebabkan permintaan gagal segera |45| `API_TIMEOUT_MS` | Waktu tunggu untuk permintaan API dalam milidetik (default: 600000, atau 10 menit; maksimum: 2147483647). Tingkatkan ini saat permintaan habis waktu pada jaringan lambat atau saat merutekan melalui proxy. Nilai di atas maksimum akan meluap timer yang mendasar dan menyebabkan permintaan gagal segera |

46| `AWS_BEARER_TOKEN_BEDROCK` | Kunci API Bedrock untuk autentikasi (lihat [Kunci API Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |46| `AWS_BEARER_TOKEN_BEDROCK` | Kunci API Bedrock untuk autentikasi (lihat [Kunci API Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

47| `BASH_DEFAULT_TIMEOUT_MS` | Waktu tunggu default untuk perintah bash yang berjalan lama (default: 120000, atau 2 menit) |47| `BASH_DEFAULT_TIMEOUT_MS` | Waktu tunggu default untuk perintah bash yang berjalan lama (default: 120000, atau 2 menit) |


51| `CLAUDECODE` | Atur ke `1` di lingkungan shell yang Claude Code luncurkan (alat Bash, sesi tmux). Tidak diatur di perintah [hooks](/id/hooks) atau [baris status](/id/statusline). Gunakan untuk mendeteksi saat skrip berjalan di dalam shell yang diluncurkan oleh Claude Code |51| `CLAUDECODE` | Atur ke `1` di lingkungan shell yang Claude Code luncurkan (alat Bash, sesi tmux). Tidak diatur di perintah [hooks](/id/hooks) atau [baris status](/id/statusline). Gunakan untuk mendeteksi saat skrip berjalan di dalam shell yang diluncurkan oleh Claude Code |

52| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Atur ke `1` untuk menonaktifkan semua tipe [subagent](/id/sub-agents) bawaan seperti Explore dan Plan. Hanya berlaku dalam mode non-interaktif (flag `-p`). Berguna untuk pengguna SDK yang menginginkan slate kosong |52| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Atur ke `1` untuk menonaktifkan semua tipe [subagent](/id/sub-agents) bawaan seperti Explore dan Plan. Hanya berlaku dalam mode non-interaktif (flag `-p`). Berguna untuk pengguna SDK yang menginginkan slate kosong |

53| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Atur ke `1` untuk melewati awalan `mcp__<server>__` pada nama alat dari server MCP yang dibuat SDK. Alat menggunakan nama asli mereka. Penggunaan SDK saja |53| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Atur ke `1` untuk melewati awalan `mcp__<server>__` pada nama alat dari server MCP yang dibuat SDK. Alat menggunakan nama asli mereka. Penggunaan SDK saja |

54| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Waktu tunggu stall dalam milidetik untuk subagent latar belakang. Default `600000` (10 menit). Timer disetel ulang pada setiap peristiwa kemajuan streaming; jika tidak ada kemajuan yang tiba dalam jendela, subagent dibatalkan dan tugas ditandai gagal, menampilkan hasil parsial apa pun ke induk |

54| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Atur persentase kapasitas konteks (1-100) di mana pemadatan otomatis dipicu. Secara default, pemadatan otomatis dipicu pada kapasitas sekitar 95%. Gunakan nilai yang lebih rendah seperti `50` untuk memadatkan lebih awal. Nilai di atas ambang batas default tidak berpengaruh. Berlaku untuk percakapan utama dan subagent. Persentase ini selaras dengan bidang `context_window.used_percentage` yang tersedia di [baris status](/id/statusline) |55| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Atur persentase kapasitas konteks (1-100) di mana pemadatan otomatis dipicu. Secara default, pemadatan otomatis dipicu pada kapasitas sekitar 95%. Gunakan nilai yang lebih rendah seperti `50` untuk memadatkan lebih awal. Nilai di atas ambang batas default tidak berpengaruh. Berlaku untuk percakapan utama dan subagent. Persentase ini selaras dengan bidang `context_window.used_percentage` yang tersedia di [baris status](/id/statusline) |

55| `CLAUDE_AUTO_BACKGROUND_TASKS` | Atur ke `1` untuk memaksa pengaktifan backgrounding otomatis tugas agent yang berjalan lama. Saat diaktifkan, subagent dipindahkan ke latar belakang setelah berjalan selama sekitar dua menit |56| `CLAUDE_AUTO_BACKGROUND_TASKS` | Atur ke `1` untuk memaksa pengaktifan backgrounding otomatis tugas agent yang berjalan lama. Saat diaktifkan, subagent dipindahkan ke latar belakang setelah berjalan selama sekitar dua menit |

56| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Kembali ke direktori kerja asli setelah setiap perintah Bash atau PowerShell dalam sesi utama |57| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Kembali ke direktori kerja asli setelah setiap perintah Bash atau PowerShell dalam sesi utama |


59| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Interval dalam milidetik di mana kredensial harus disegarkan (saat menggunakan [`apiKeyHelper`](/id/settings#available-settings)) |60| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Interval dalam milidetik di mana kredensial harus disegarkan (saat menggunakan [`apiKeyHelper`](/id/settings#available-settings)) |

60| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Atur ke `0` untuk menghilangkan blok atribusi (versi klien dan sidik jari prompt) dari awal prompt sistem. Menonaktifkannya meningkatkan tingkat hit cache prompt saat merutekan melalui [gateway LLM](/id/llm-gateway). Caching API Anthropic tidak terpengaruh |61| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Atur ke `0` untuk menghilangkan blok atribusi (versi klien dan sidik jari prompt) dari awal prompt sistem. Menonaktifkannya meningkatkan tingkat hit cache prompt saat merutekan melalui [gateway LLM](/id/llm-gateway). Caching API Anthropic tidak terpengaruh |

61| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Atur kapasitas konteks dalam token yang digunakan untuk perhitungan pemadatan otomatis. Default ke jendela konteks model: 200K untuk model standar atau 1M untuk model [konteks diperluas](/id/model-config#extended-context). Gunakan nilai yang lebih rendah seperti `500000` pada model 1M untuk memperlakukan jendela sebagai 500K untuk tujuan pemadatan. Nilai dibatasi pada jendela konteks aktual model. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` diterapkan sebagai persentase dari nilai ini. Mengatur variabel ini memisahkan ambang batas pemadatan dari `used_percentage` baris status, yang selalu menggunakan jendela konteks penuh model |62| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Atur kapasitas konteks dalam token yang digunakan untuk perhitungan pemadatan otomatis. Default ke jendela konteks model: 200K untuk model standar atau 1M untuk model [konteks diperluas](/id/model-config#extended-context). Gunakan nilai yang lebih rendah seperti `500000` pada model 1M untuk memperlakukan jendela sebagai 500K untuk tujuan pemadatan. Nilai dibatasi pada jendela konteks aktual model. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` diterapkan sebagai persentase dari nilai ini. Mengatur variabel ini memisahkan ambang batas pemadatan dari `used_percentage` baris status, yang selalu menggunakan jendela konteks penuh model |

62| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Ganti [koneksi IDE](/id/vs-code) otomatis. Secara default, Claude Code terhubung secara otomatis saat diluncurkan di dalam terminal terintegrasi IDE yang didukung. Atur ke `false` untuk mencegah ini. Atur ke `true` untuk memaksa upaya koneksi saat deteksi otomatis gagal, seperti saat tmux mengaburkan terminal induk |63| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Ganti [koneksi IDE](/id/vs-code) otomatis. Secara default, Claude Code terhubung secara otomatis saat diluncurkan di dalam terminal terintegrasi IDE yang didukung. Atur ke `false` untuk mencegah ini. Atur ke `true` untuk memaksa upaya koneksi saat deteksi otomatis gagal, seperti saat tmux mengaburkan terminal induk. Mengambil alih pengaturan global [`autoConnectIde`](/id/settings#global-config-settings) |

63| `CLAUDE_CODE_CERT_STORE` | Daftar sumber sertifikat CA yang dipisahkan koma untuk koneksi TLS. `bundled` adalah set Mozilla CA yang dikirim dengan Claude Code. `system` adalah penyimpanan kepercayaan sistem operasi. Default adalah `bundled,system`. Distribusi biner asli diperlukan untuk integrasi penyimpanan sistem. Pada runtime Node.js, hanya set bundel yang digunakan terlepas dari nilai ini |64| `CLAUDE_CODE_CERT_STORE` | Daftar sumber sertifikat CA yang dipisahkan koma untuk koneksi TLS. `bundled` adalah set Mozilla CA yang dikirim dengan Claude Code. `system` adalah penyimpanan kepercayaan sistem operasi. Default adalah `bundled,system` |

64| `CLAUDE_CODE_CLIENT_CERT` | Jalur ke file sertifikat klien untuk autentikasi mTLS |65| `CLAUDE_CODE_CLIENT_CERT` | Jalur ke file sertifikat klien untuk autentikasi mTLS |

65| `CLAUDE_CODE_CLIENT_KEY` | Jalur ke file kunci pribadi klien untuk autentikasi mTLS |66| `CLAUDE_CODE_CLIENT_KEY` | Jalur ke file kunci pribadi klien untuk autentikasi mTLS |

66| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Frasa sandi untuk `CLAUDE_CODE_CLIENT_KEY` terenkripsi (opsional) |67| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Frasa sandi untuk `CLAUDE_CODE_CLIENT_KEY` terenkripsi (opsional) |


68| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Tingkat log minimum yang ditulis ke file log debug. Nilai: `verbose`, `debug` (default), `info`, `warn`, `error`. Atur ke `verbose` untuk menyertakan diagnostik volume tinggi seperti keluaran perintah baris status lengkap, atau naikkan ke `error` untuk mengurangi kebisingan |69| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Tingkat log minimum yang ditulis ke file log debug. Nilai: `verbose`, `debug` (default), `info`, `warn`, `error`. Atur ke `verbose` untuk menyertakan diagnostik volume tinggi seperti keluaran perintah baris status lengkap, atau naikkan ke `error` untuk mengurangi kebisingan |

69| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Atur ke `1` untuk menonaktifkan dukungan [jendela konteks 1M](/id/model-config#extended-context). Saat diatur, varian model 1M tidak tersedia di pemilih model. Berguna untuk lingkungan perusahaan dengan persyaratan kepatuhan |70| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Atur ke `1` untuk menonaktifkan dukungan [jendela konteks 1M](/id/model-config#extended-context). Saat diatur, varian model 1M tidak tersedia di pemilih model. Berguna untuk lingkungan perusahaan dengan persyaratan kepatuhan |

70| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Atur ke `1` untuk menonaktifkan [penalaran adaptif](/id/model-config#adjust-effort-level) pada Opus 4.6 dan Sonnet 4.6 dan kembali ke anggaran pemikiran tetap yang dikendalikan oleh `MAX_THINKING_TOKENS`. {/* min-version: 2.1.111 */}Tidak berpengaruh pada Opus 4.7, yang selalu menggunakan penalaran adaptif |71| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Atur ke `1` untuk menonaktifkan [penalaran adaptif](/id/model-config#adjust-effort-level) pada Opus 4.6 dan Sonnet 4.6 dan kembali ke anggaran pemikiran tetap yang dikendalikan oleh `MAX_THINKING_TOKENS`. {/* min-version: 2.1.111 */}Tidak berpengaruh pada Opus 4.7, yang selalu menggunakan penalaran adaptif |

72| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Atur ke `1` untuk menonaktifkan [rendering layar penuh](/id/fullscreen) dan menggunakan renderer layar utama klasik. Percakapan tetap berada di scrollback asli terminal Anda sehingga `Cmd+f` dan mode copy tmux bekerja seperti biasanya. Mengambil alih `CLAUDE_CODE_NO_FLICKER` dan pengaturan [`tui`](/id/settings#available-settings). Anda juga dapat beralih dengan `/tui default` |

71| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Atur ke `1` untuk menonaktifkan pemrosesan lampiran. Penyebutan file dengan sintaks `@` dikirim sebagai teks biasa alih-alih diperluas menjadi konten file |73| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Atur ke `1` untuk menonaktifkan pemrosesan lampiran. Penyebutan file dengan sintaks `@` dikirim sebagai teks biasa alih-alih diperluas menjadi konten file |

72| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Atur ke `1` untuk menonaktifkan [memori otomatis](/id/memory#auto-memory). Atur ke `0` untuk memaksa memori otomatis selama peluncuran bertahap. Saat dinonaktifkan, Claude tidak membuat atau memuat file memori otomatis |74| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Atur ke `1` untuk menonaktifkan [memori otomatis](/id/memory#auto-memory). Atur ke `0` untuk memaksa memori otomatis selama peluncuran bertahap. Saat dinonaktifkan, Claude tidak membuat atau memuat file memori otomatis |

73| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Atur ke `1` untuk menonaktifkan semua fungsi tugas latar belakang, termasuk parameter `run_in_background` pada alat Bash dan subagent, auto-backgrounding, dan pintasan Ctrl+B |75| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Atur ke `1` untuk menonaktifkan semua fungsi tugas latar belakang, termasuk parameter `run_in_background` pada alat Bash dan subagent, auto-backgrounding, dan pintasan Ctrl+B |


75| `CLAUDE_CODE_DISABLE_CRON` | Atur ke `1` untuk menonaktifkan [tugas terjadwal](/id/scheduled-tasks). Skill `/loop` dan alat cron menjadi tidak tersedia dan tugas yang sudah dijadwalkan berhenti berfungsi, termasuk tugas yang sudah berjalan di tengah sesi |77| `CLAUDE_CODE_DISABLE_CRON` | Atur ke `1` untuk menonaktifkan [tugas terjadwal](/id/scheduled-tasks). Skill `/loop` dan alat cron menjadi tidak tersedia dan tugas yang sudah dijadwalkan berhenti berfungsi, termasuk tugas yang sudah berjalan di tengah sesi |

76| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Atur ke `1` untuk menghapus header permintaan `anthropic-beta` spesifik Anthropic dan bidang skema alat beta (seperti `defer_loading` dan `eager_input_streaming`). Gunakan ini saat proxy gateway menolak permintaan dengan kesalahan seperti "Unexpected value(s) for the `anthropic-beta` header" atau "Extra inputs are not permitted". Bidang standar (`name`, `description`, `input_schema`, `cache_control`) dipertahankan. |78| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Atur ke `1` untuk menghapus header permintaan `anthropic-beta` spesifik Anthropic dan bidang skema alat beta (seperti `defer_loading` dan `eager_input_streaming`). Gunakan ini saat proxy gateway menolak permintaan dengan kesalahan seperti "Unexpected value(s) for the `anthropic-beta` header" atau "Extra inputs are not permitted". Bidang standar (`name`, `description`, `input_schema`, `cache_control`) dipertahankan. |

77| `CLAUDE_CODE_DISABLE_FAST_MODE` | Atur ke `1` untuk menonaktifkan [mode cepat](/id/fast-mode) |79| `CLAUDE_CODE_DISABLE_FAST_MODE` | Atur ke `1` untuk menonaktifkan [mode cepat](/id/fast-mode) |

78| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Atur ke `1` untuk menonaktifkan survei kualitas sesi "How is Claude doing?". Survei juga dinonaktifkan saat `DISABLE_TELEMETRY` atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur. Lihat [Survei kualitas sesi](/id/data-usage#session-quality-surveys) |80| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Atur ke `1` untuk menonaktifkan survei kualitas sesi "How is Claude doing?". Survei juga dinonaktifkan saat `DISABLE_TELEMETRY` atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur. Untuk mengatur tingkat sampel alih-alih menonaktifkan sepenuhnya, gunakan pengaturan [`feedbackSurveyRate`](/id/settings#available-settings). Lihat [Survei kualitas sesi](/id/data-usage#session-quality-surveys) |

79| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Atur ke `1` untuk menonaktifkan file [checkpointing](/id/checkpointing). Perintah `/rewind` tidak akan dapat mengembalikan perubahan kode |81| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Atur ke `1` untuk menonaktifkan file [checkpointing](/id/checkpointing). Perintah `/rewind` tidak akan dapat mengembalikan perubahan kode |

80| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Atur ke `1` untuk menghapus instruksi alur kerja commit dan PR bawaan dan snapshot status git dari prompt sistem Claude. Berguna saat menggunakan skill alur kerja git Anda sendiri. Mengambil alih pengaturan [`includeGitInstructions`](/id/settings#available-settings) saat diatur |82| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Atur ke `1` untuk menghapus instruksi alur kerja commit dan PR bawaan dan snapshot status git dari prompt sistem Claude. Berguna saat menggunakan skill alur kerja git Anda sendiri. Mengambil alih pengaturan [`includeGitInstructions`](/id/settings#available-settings) saat diatur |

81| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Atur ke `1` untuk mencegah pemetaan ulang otomatis Opus 4.0 dan 4.1 ke versi Opus saat ini di API Anthropic. Gunakan saat Anda ingin secara sengaja menyematkan model yang lebih lama. Pemetaan ulang tidak berjalan pada Bedrock, Vertex, atau Foundry |83| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Atur ke `1` untuk mencegah pemetaan ulang otomatis Opus 4.0 dan 4.1 ke versi Opus saat ini di API Anthropic. Gunakan saat Anda ingin secara sengaja menyematkan model yang lebih lama. Pemetaan ulang tidak berjalan pada Bedrock, Vertex, atau Foundry |


90| `CLAUDE_CODE_EFFORT_LEVEL` | Atur tingkat upaya untuk model yang didukung. Nilai: `low`, `medium`, `high`, `xhigh`, `max`, atau `auto` untuk menggunakan default model. Tingkat yang tersedia tergantung pada model. Mengambil alih `/effort` dan pengaturan `effortLevel`. Lihat [Sesuaikan tingkat upaya](/id/model-config#adjust-effort-level) |92| `CLAUDE_CODE_EFFORT_LEVEL` | Atur tingkat upaya untuk model yang didukung. Nilai: `low`, `medium`, `high`, `xhigh`, `max`, atau `auto` untuk menggunakan default model. Tingkat yang tersedia tergantung pada model. Mengambil alih `/effort` dan pengaturan `effortLevel`. Lihat [Sesuaikan tingkat upaya](/id/model-config#adjust-effort-level) |

91| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Ganti ketersediaan [session recap](/id/interactive-mode#session-recap). Atur ke `0` untuk memaksa recap mati terlepas dari toggle `/config`. Atur ke `1` untuk memaksa recap aktif saat [`awaySummaryEnabled`](/id/settings#available-settings) adalah `false`. Mengambil alih pengaturan dan toggle `/config` |93| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Ganti ketersediaan [session recap](/id/interactive-mode#session-recap). Atur ke `0` untuk memaksa recap mati terlepas dari toggle `/config`. Atur ke `1` untuk memaksa recap aktif saat [`awaySummaryEnabled`](/id/settings#available-settings) adalah `false`. Mengambil alih pengaturan dan toggle `/config` |

92| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Atur ke `1` untuk menyegarkan status plugin pada batas giliran dalam [mode non-interaktif](/id/headless) setelah instalasi latar belakang selesai. Dimatikan secara default karena penyegaran mengubah prompt sistem di tengah sesi, yang membatalkan [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) untuk giliran itu |94| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Atur ke `1` untuk menyegarkan status plugin pada batas giliran dalam [mode non-interaktif](/id/headless) setelah instalasi latar belakang selesai. Dimatikan secara default karena penyegaran mengubah prompt sistem di tengah sesi, yang membatalkan [prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) untuk giliran itu |

93| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Atur ke `1` untuk memaksa pengaktifan streaming input alat berbutir halus. Tanpa ini, API membuffer parameter input alat sepenuhnya sebelum mengirim peristiwa delta, yang dapat menunda tampilan pada input alat besar. API Anthropic saja: tidak berpengaruh pada Bedrock, Vertex, atau Foundry |95| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Mengontrol apakah input panggilan alat mengalir dari API saat Claude menghasilkannya. Tanpa ini, input alat besar seperti penulisan file panjang tiba hanya setelah Claude selesai menghasilkannya, yang dapat terlihat seperti sedang hang. Diaktifkan secara default untuk koneksi API Anthropic langsung. Atur ke `0` untuk menolak. Atur ke `1` untuk memaksa pengaktifan bahkan saat default sisi server mati. Tidak berpengaruh pada Bedrock, Vertex, Foundry, atau koneksi [gateway](/id/llm-gateway) |

96| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Atur ke `1` untuk mengisi pemilih `/model` dari titik akhir `/v1/models` gateway Anda saat `ANTHROPIC_BASE_URL` menunjuk ke gateway yang kompatibel dengan Anthropic seperti LiteLLM, Kong, atau proxy internal. Dimatikan secara default karena gateway yang didukung oleh kunci API bersama akan menampilkan setiap pengguna setiap model yang dapat diakses kunci. Model yang ditemukan masih disaring oleh daftar allowlist [`availableModels`](/id/settings#available-settings) |

94| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Atur ke `false` untuk menonaktifkan saran prompt (toggle "Prompt suggestions" di `/config`). Ini adalah prediksi yang diarsir yang muncul di input prompt Anda setelah Claude merespons. Lihat [Saran prompt](/id/interactive-mode#prompt-suggestions) |97| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Atur ke `false` untuk menonaktifkan saran prompt (toggle "Prompt suggestions" di `/config`). Ini adalah prediksi yang diarsir yang muncul di input prompt Anda setelah Claude merespons. Lihat [Saran prompt](/id/interactive-mode#prompt-suggestions) |

95| `CLAUDE_CODE_ENABLE_TASKS` | Atur ke `1` untuk mengaktifkan sistem pelacakan tugas dalam mode non-interaktif (flag `-p`). Tugas aktif secara default dalam mode interaktif. Lihat [Daftar tugas](/id/interactive-mode#task-list) |98| `CLAUDE_CODE_ENABLE_TASKS` | Atur ke `1` untuk mengaktifkan sistem pelacakan tugas dalam mode non-interaktif (flag `-p`). Tugas aktif secara default dalam mode interaktif. Lihat [Daftar tugas](/id/interactive-mode#task-list) |

96| `CLAUDE_CODE_ENABLE_TELEMETRY` | Atur ke `1` untuk mengaktifkan pengumpulan data OpenTelemetry untuk metrik dan logging. Diperlukan sebelum mengonfigurasi pengekspor OTel. Lihat [Monitoring](/id/monitoring-usage) |99| `CLAUDE_CODE_ENABLE_TELEMETRY` | Atur ke `1` untuk mengaktifkan pengumpulan data OpenTelemetry untuk metrik dan logging. Diperlukan sebelum mengonfigurasi pengekspor OTel. Lihat [Monitoring](/id/monitoring-usage) |


98| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Atur ke `1` untuk mengaktifkan [tim agent](/id/agent-teams). Tim agent bersifat eksperimental dan dinonaktifkan secara default |101| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Atur ke `1` untuk mengaktifkan [tim agent](/id/agent-teams). Tim agent bersifat eksperimental dan dinonaktifkan secara default |

99| `CLAUDE_CODE_EXTRA_BODY` | Objek JSON untuk digabungkan ke tingkat atas dari setiap badan permintaan API. Berguna untuk meneruskan parameter spesifik penyedia yang Claude Code tidak mengekspos secara langsung |102| `CLAUDE_CODE_EXTRA_BODY` | Objek JSON untuk digabungkan ke tingkat atas dari setiap badan permintaan API. Berguna untuk meneruskan parameter spesifik penyedia yang Claude Code tidak mengekspos secara langsung |

100| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Ganti batas token default untuk pembacaan file. Berguna saat Anda perlu membaca file yang lebih besar secara lengkap |103| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Ganti batas token default untuk pembacaan file. Berguna saat Anda perlu membaca file yang lebih besar secara lengkap |

104| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Atur ke `1` untuk memaksa pengaktifan mode privat DEC 2026 [synchronized output](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) saat terminal Anda mendukungnya tetapi tidak terdeteksi otomatis. Berguna untuk emulator seperti `eat` Emacs yang mengimplementasikan BSU/ESU tetapi tidak merespons probe kemampuan. Tidak berpengaruh di bawah tmux |

101| `CLAUDE_CODE_FORK_SUBAGENT` | Atur ke `1` untuk mengaktifkan [subagent yang di-fork](/id/sub-agents#fork-the-current-conversation). Subagent yang di-fork mewarisi konteks percakapan lengkap dari sesi utama alih-alih memulai dari awal. Saat diaktifkan, `/fork` meluncurkan subagent yang di-fork daripada bertindak sebagai alias untuk [`/branch`](/id/commands), dan semua peluncuran subagent berjalan di latar belakang. Bekerja dalam mode interaktif dan melalui SDK atau `claude -p` |105| `CLAUDE_CODE_FORK_SUBAGENT` | Atur ke `1` untuk mengaktifkan [subagent yang di-fork](/id/sub-agents#fork-the-current-conversation). Subagent yang di-fork mewarisi konteks percakapan lengkap dari sesi utama alih-alih memulai dari awal. Saat diaktifkan, `/fork` meluncurkan subagent yang di-fork daripada bertindak sebagai alias untuk [`/branch`](/id/commands), dan semua peluncuran subagent berjalan di latar belakang. Bekerja dalam mode interaktif dan melalui SDK atau `claude -p` |

102| `CLAUDE_CODE_GIT_BASH_PATH` | Hanya Windows: jalur ke executable Git Bash (`bash.exe`). Gunakan saat Git Bash diinstal tetapi tidak ada di PATH Anda. Lihat [Pengaturan Windows](/id/setup#set-up-on-windows) |106| `CLAUDE_CODE_GIT_BASH_PATH` | Hanya Windows: jalur ke executable Git Bash (`bash.exe`). Gunakan saat Git Bash diinstal tetapi tidak ada di PATH Anda. Lihat [Pengaturan Windows](/id/setup#set-up-on-windows) |

103| `CLAUDE_CODE_GLOB_HIDDEN` | Atur ke `false` untuk mengecualikan dotfile dari hasil saat Claude memanggil [alat Glob](/id/tools-reference). Disertakan secara default. Tidak mempengaruhi autocomplete file `@`, `ls`, Grep, atau Read |107| `CLAUDE_CODE_GLOB_HIDDEN` | Atur ke `false` untuk mengecualikan dotfile dari hasil saat Claude memanggil [alat Glob](/id/tools-reference). Disertakan secara default. Tidak mempengaruhi autocomplete file `@`, `ls`, Grep, atau Read |


120| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk menyiram span OpenTelemetry yang tertunda (default: 5000). Lihat [Monitoring](/id/monitoring-usage) |124| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk menyiram span OpenTelemetry yang tertunda (default: 5000). Lihat [Monitoring](/id/monitoring-usage) |

121| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Interval untuk menyegarkan header OpenTelemetry dinamis dalam milidetik (default: 1740000 / 29 menit). Lihat [Header dinamis](/id/monitoring-usage#dynamic-headers) |125| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Interval untuk menyegarkan header OpenTelemetry dinamis dalam milidetik (default: 1740000 / 29 menit). Lihat [Header dinamis](/id/monitoring-usage#dynamic-headers) |

122| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk pengekspor OpenTelemetry selesai saat shutdown (default: 2000). Tingkatkan jika metrik dijatuhkan saat keluar. Lihat [Monitoring](/id/monitoring-usage) |126| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk pengekspor OpenTelemetry selesai saat shutdown (default: 2000). Tingkatkan jika metrik dijatuhkan saat keluar. Lihat [Monitoring](/id/monitoring-usage) |

127| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Atur ke `1` untuk membiarkan Claude Code menjalankan perintah upgrade manajer paket Anda di latar belakang saat versi baru tersedia. Berlaku untuk instalasi Homebrew dan WinGet. Manajer paket lain terus menampilkan perintah upgrade tanpa menjalankannya. Lihat [Auto updates](/id/setup#auto-updates) |

123| `CLAUDE_CODE_PERFORCE_MODE` | Atur ke `1` untuk mengaktifkan perlindungan penulisan yang menyadari Perforce. Saat diatur, Edit, Write, dan NotebookEdit gagal dengan petunjuk `p4 edit <file>` jika file target tidak memiliki bit pemilik-tulis, yang Perforce hapus pada file yang disinkronkan sampai `p4 edit` membukanya. Ini mencegah Claude Code dari melewati pelacakan perubahan Perforce |128| `CLAUDE_CODE_PERFORCE_MODE` | Atur ke `1` untuk mengaktifkan perlindungan penulisan yang menyadari Perforce. Saat diatur, Edit, Write, dan NotebookEdit gagal dengan petunjuk `p4 edit <file>` jika file target tidak memiliki bit pemilik-tulis, yang Perforce hapus pada file yang disinkronkan sampai `p4 edit` membukanya. Ini mencegah Claude Code dari melewati pelacakan perubahan Perforce |

124| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Ganti direktori root plugin. Meskipun namanya, ini mengatur direktori induk, bukan cache itu sendiri: marketplace dan cache plugin berada di subdirektori di bawah jalur ini. Default ke `~/.claude/plugins` |129| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Ganti direktori root plugin. Meskipun namanya, ini mengatur direktori induk, bukan cache itu sendiri: marketplace dan cache plugin berada di subdirektori di bawah jalur ini. Default ke `~/.claude/plugins` |

125| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk operasi git saat memasang atau memperbarui plugin (default: 120000). Tingkatkan nilai ini untuk repositori besar atau koneksi jaringan lambat. Lihat [Operasi Git habis waktu](/id/plugin-marketplaces#git-operations-time-out) |130| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk operasi git saat memasang atau memperbarui plugin (default: 120000). Tingkatkan nilai ini untuk repositori besar atau koneksi jaringan lambat. Lihat [Operasi Git habis waktu](/id/plugin-marketplaces#git-operations-time-out) |


131| `CLAUDE_CODE_REMOTE_SESSION_ID` | Atur secara otomatis dalam [sesi cloud](/id/claude-code-on-the-web) ke ID sesi saat ini. Baca ini untuk membuat tautan kembali ke transkrip sesi. Lihat [Link artifacts back to the session](/id/claude-code-on-the-web#link-artifacts-back-to-the-session) |136| `CLAUDE_CODE_REMOTE_SESSION_ID` | Atur secara otomatis dalam [sesi cloud](/id/claude-code-on-the-web) ke ID sesi saat ini. Baca ini untuk membuat tautan kembali ke transkrip sesi. Lihat [Link artifacts back to the session](/id/claude-code-on-the-web#link-artifacts-back-to-the-session) |

132| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Atur ke `1` untuk melanjutkan secara otomatis jika sesi sebelumnya berakhir di tengah-tengah. Digunakan dalam mode SDK sehingga model melanjutkan tanpa memerlukan SDK untuk mengirim ulang prompt |137| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Atur ke `1` untuk melanjutkan secara otomatis jika sesi sebelumnya berakhir di tengah-tengah. Digunakan dalam mode SDK sehingga model melanjutkan tanpa memerlukan SDK untuk mengirim ulang prompt |

133| `CLAUDE_CODE_SCRIPT_CAPS` | Objek JSON yang membatasi berapa kali skrip spesifik dapat dipanggil per sesi saat `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` diatur. Kunci adalah substring yang cocok dengan teks perintah; nilai adalah batas panggilan integer. Misalnya, `{"deploy.sh": 2}` memungkinkan `deploy.sh` dipanggil paling banyak dua kali. Pencocokan berbasis substring sehingga trik ekspansi shell seperti `./scripts/deploy.sh $(evil)` masih dihitung terhadap batas. Fan-out runtime melalui `xargs` atau `find -exec` tidak terdeteksi; ini adalah kontrol pertahanan mendalam |138| `CLAUDE_CODE_SCRIPT_CAPS` | Objek JSON yang membatasi berapa kali skrip spesifik dapat dipanggil per sesi saat `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` diatur. Kunci adalah substring yang cocok dengan teks perintah; nilai adalah batas panggilan integer. Misalnya, `{"deploy.sh": 2}` memungkinkan `deploy.sh` dipanggil paling banyak dua kali. Pencocokan berbasis substring sehingga trik ekspansi shell seperti `./scripts/deploy.sh $(evil)` masih dihitung terhadap batas. Fan-out runtime melalui `xargs` atau `find -exec` tidak terdeteksi; ini adalah kontrol pertahanan mendalam |

134| `CLAUDE_CODE_SCROLL_SPEED` | Atur pengali pengguliran roda mouse dalam [rendering layar penuh](/id/fullscreen#mouse-wheel-scrolling). Menerima nilai dari 1 hingga 20. Atur ke `3` untuk mencocokkan `vim` jika terminal Anda mengirim satu peristiwa roda per takik tanpa amplifikasi |139| `CLAUDE_CODE_SCROLL_SPEED` | Atur pengali pengguliran roda mouse dalam [rendering layar penuh](/id/fullscreen#mouse-wheel-scrolling). Menerima nilai dari 1 hingga 20. Atur ke `3` untuk mencocokkan `vim` jika terminal Anda mengirim satu peristiwa roda per takik tanpa amplifikasi. Diabaikan di terminal IDE JetBrains, di mana Claude Code menggunakan penanganan pengguliran miliknya sendiri |

135| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Ganti anggaran waktu dalam milidetik untuk hook [SessionEnd](/id/hooks#sessionend). Berlaku untuk keluar sesi, `/clear`, dan beralih sesi melalui `/resume` interaktif. Secara default anggaran adalah 1,5 detik, secara otomatis dinaikkan ke `timeout` per-hook tertinggi yang dikonfigurasi dalam file pengaturan, hingga 60 detik. Timeout pada hook yang disediakan plugin tidak menaikkan anggaran |140| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Ganti anggaran waktu dalam milidetik untuk hook [SessionEnd](/id/hooks#sessionend). Berlaku untuk keluar sesi, `/clear`, dan beralih sesi melalui `/resume` interaktif. Secara default anggaran adalah 1,5 detik, secara otomatis dinaikkan ke `timeout` per-hook tertinggi yang dikonfigurasi dalam file pengaturan, hingga 60 detik. Timeout pada hook yang disediakan plugin tidak menaikkan anggaran |

141| `CLAUDE_CODE_SESSION_ID` | Atur secara otomatis dalam subprocess alat Bash dan PowerShell ke ID sesi saat ini. Cocok dengan bidang `session_id` yang diteruskan ke [hooks](/id/hooks). Diperbarui pada `/clear`. Gunakan untuk menghubungkan skrip dan alat eksternal dengan sesi Claude Code yang meluncurkannya |

136| `CLAUDE_CODE_SHELL` | Ganti deteksi shell otomatis. Berguna saat shell login Anda berbeda dari shell kerja pilihan Anda (misalnya, `bash` vs `zsh`) |142| `CLAUDE_CODE_SHELL` | Ganti deteksi shell otomatis. Berguna saat shell login Anda berbeda dari shell kerja pilihan Anda (misalnya, `bash` vs `zsh`) |

137| `CLAUDE_CODE_SHELL_PREFIX` | Awalan perintah yang membungkus perintah shell Claude Code luncurkan: panggilan alat Bash, perintah [hook](/id/hooks), dan perintah startup server [MCP](/id/mcp) stdio. Berguna untuk logging atau audit. Contoh: mengatur `/path/to/logger.sh` menjalankan setiap perintah sebagai `/path/to/logger.sh <command>` |143| `CLAUDE_CODE_SHELL_PREFIX` | Awalan perintah yang membungkus perintah shell Claude Code luncurkan: panggilan alat Bash, perintah [hook](/id/hooks), dan perintah startup server [MCP](/id/mcp) stdio. Berguna untuk logging atau audit. Contoh: mengatur `/path/to/logger.sh` menjalankan setiap perintah sebagai `/path/to/logger.sh <command>` |

138| `CLAUDE_CODE_SIMPLE` | Atur ke `1` untuk menjalankan dengan prompt sistem minimal dan hanya alat Bash, pembacaan file, dan pengeditan file. Alat MCP dari `--mcp-config` masih tersedia. Menonaktifkan penemuan otomatis hook, skill, plugin, server MCP, memori otomatis, dan CLAUDE.md. Flag CLI [`--bare`](/id/headless#start-faster-with-bare-mode) mengatur ini |144| `CLAUDE_CODE_SIMPLE` | Atur ke `1` untuk menjalankan dengan prompt sistem minimal dan hanya alat Bash, pembacaan file, dan pengeditan file. Alat MCP dari `--mcp-config` masih tersedia. Menonaktifkan penemuan otomatis hook, skill, plugin, server MCP, memori otomatis, dan CLAUDE.md. Flag CLI [`--bare`](/id/headless#start-faster-with-bare-mode) mengatur ini |


146| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Atur ke `1` untuk menghapus kredensial Anthropic dan penyedia cloud dari lingkungan subprocess (alat Bash, hook, server MCP stdio). Proses Claude induk menyimpan kredensial ini untuk panggilan API, tetapi proses anak tidak dapat membacanya, mengurangi paparan terhadap serangan injeksi prompt yang mencoba mengekstrak rahasia melalui ekspansi shell. Pada Linux, ini juga menjalankan subprocess Bash dalam namespace PID terisolasi sehingga mereka tidak dapat membaca lingkungan proses host melalui `/proc`; sebagai efek samping, `ps`, `pgrep`, dan `kill` tidak dapat melihat atau menandatangani proses host. `claude-code-action` mengatur ini secara otomatis saat `allowed_non_write_users` dikonfigurasi |152| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Atur ke `1` untuk menghapus kredensial Anthropic dan penyedia cloud dari lingkungan subprocess (alat Bash, hook, server MCP stdio). Proses Claude induk menyimpan kredensial ini untuk panggilan API, tetapi proses anak tidak dapat membacanya, mengurangi paparan terhadap serangan injeksi prompt yang mencoba mengekstrak rahasia melalui ekspansi shell. Pada Linux, ini juga menjalankan subprocess Bash dalam namespace PID terisolasi sehingga mereka tidak dapat membaca lingkungan proses host melalui `/proc`; sebagai efek samping, `ps`, `pgrep`, dan `kill` tidak dapat melihat atau menandatangani proses host. `claude-code-action` mengatur ini secara otomatis saat `allowed_non_write_users` dikonfigurasi |

147| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Atur ke `1` dalam mode non-interaktif (flag `-p`) untuk menunggu instalasi plugin selesai sebelum kueri pertama. Tanpa ini, plugin diinstal di latar belakang dan mungkin tidak tersedia pada giliran pertama. Gabungkan dengan `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` untuk membatasi waktu tunggu |153| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Atur ke `1` dalam mode non-interaktif (flag `-p`) untuk menunggu instalasi plugin selesai sebelum kueri pertama. Tanpa ini, plugin diinstal di latar belakang dan mungkin tidak tersedia pada giliran pertama. Gabungkan dengan `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` untuk membatasi waktu tunggu |

148| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk instalasi plugin sinkron. Saat terlampaui, Claude Code melanjutkan tanpa plugin dan mencatat kesalahan. Tidak ada default: tanpa variabel ini, instalasi sinkron menunggu sampai selesai |154| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Waktu tunggu dalam milidetik untuk instalasi plugin sinkron. Saat terlampaui, Claude Code melanjutkan tanpa plugin dan mencatat kesalahan. Tidak ada default: tanpa variabel ini, instalasi sinkron menunggu sampai selesai |

149| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Atur ke `false` untuk menonaktifkan penyorotan sintaks dalam keluaran diff. Berguna saat warna mengganggu pengaturan terminal Anda |155| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Atur ke `false` untuk menonaktifkan penyorotan sintaks dalam keluaran diff. Berguna saat warna mengganggu pengaturan terminal Anda. Untuk juga menonaktifkan penyorotan dalam blok kode dan pratinjau file, gunakan pengaturan [`syntaxHighlightingDisabled`](/id/settings) |

150| `CLAUDE_CODE_TASK_LIST_ID` | Bagikan daftar tugas di seluruh sesi. Atur ID yang sama di beberapa instans Claude Code untuk berkoordinasi pada daftar tugas bersama. Lihat [Daftar tugas](/id/interactive-mode#task-list) |156| `CLAUDE_CODE_TASK_LIST_ID` | Bagikan daftar tugas di seluruh sesi. Atur ID yang sama di beberapa instans Claude Code untuk berkoordinasi pada daftar tugas bersama. Lihat [Daftar tugas](/id/interactive-mode#task-list) |

151| `CLAUDE_CODE_TEAM_NAME` | Nama tim agent yang menjadi anggota rekan kerja ini. Atur secara otomatis pada anggota [tim agent](/id/agent-teams) |157| `CLAUDE_CODE_TEAM_NAME` | Nama tim agent yang menjadi anggota rekan kerja ini. Atur secara otomatis pada anggota [tim agent](/id/agent-teams) |

152| `CLAUDE_CODE_TMPDIR` | Ganti direktori temp yang digunakan untuk file temp internal. Claude Code menambahkan `/claude-{uid}/` (Unix) atau `/claude/` (Windows) ke jalur ini. Default: `/tmp` pada macOS, `os.tmpdir()` pada Linux/Windows |158| `CLAUDE_CODE_TMPDIR` | Ganti direktori temp yang digunakan untuk file temp internal. Claude Code menambahkan `/claude-{uid}/` (Unix) atau `/claude/` (Windows) ke jalur ini. Default: `/tmp` pada macOS, `os.tmpdir()` pada Linux/Windows |


181| `DISABLE_PROMPT_CACHING_HAIKU` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Haiku |187| `DISABLE_PROMPT_CACHING_HAIKU` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Haiku |

182| `DISABLE_PROMPT_CACHING_OPUS` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Opus |188| `DISABLE_PROMPT_CACHING_OPUS` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Opus |

183| `DISABLE_PROMPT_CACHING_SONNET` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Sonnet |189| `DISABLE_PROMPT_CACHING_SONNET` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Sonnet |

184| `DISABLE_TELEMETRY` | Atur ke `1` untuk menolak telemetri Statsig (perhatikan bahwa peristiwa Statsig tidak menyertakan data pengguna seperti kode, jalur file, atau perintah bash) |190| `DISABLE_TELEMETRY` | Atur ke `1` untuk menolak telemetri. Peristiwa telemetri tidak menyertakan data pengguna seperti kode, jalur file, atau perintah bash |

185| `DISABLE_UPDATES` | Atur ke `1` untuk memblokir semua pembaruan termasuk manual `claude update` dan `claude install`. Lebih ketat daripada `DISABLE_AUTOUPDATER`. Gunakan saat mendistribusikan Claude Code melalui saluran Anda sendiri dan pengguna tidak boleh memperbarui diri |191| `DISABLE_UPDATES` | Atur ke `1` untuk memblokir semua pembaruan termasuk manual `claude update` dan `claude install`. Lebih ketat daripada `DISABLE_AUTOUPDATER`. Gunakan saat mendistribusikan Claude Code melalui saluran Anda sendiri dan pengguna tidak boleh memperbarui diri |

186| `DISABLE_UPGRADE_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/upgrade` |192| `DISABLE_UPGRADE_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/upgrade` |

187| `ENABLE_CLAUDEAI_MCP_SERVERS` | Atur ke `false` untuk menonaktifkan [server MCP claude.ai](/id/mcp#use-mcp-servers-from-claude-ai) di Claude Code. Diaktifkan secara default untuk pengguna yang masuk |193| `ENABLE_CLAUDEAI_MCP_SERVERS` | Atur ke `false` untuk menonaktifkan [server MCP claude.ai](/id/mcp#use-mcp-servers-from-claude-ai) di Claude Code. Diaktifkan secara default untuk pengguna yang masuk |

188| `ENABLE_PROMPT_CACHING_1H` | Atur ke `1` untuk meminta TTL cache prompt 1 jam alih-alih default 5 menit. Dimaksudkan untuk pengguna kunci API, [Bedrock](/id/amazon-bedrock), [Vertex](/id/google-vertex-ai), dan [Foundry](/id/microsoft-foundry). Pengguna langganan menerima TTL 1 jam secara otomatis. Penulisan cache 1 jam ditagih dengan tarif yang lebih tinggi |194| `ENABLE_PROMPT_CACHING_1H` | Atur ke `1` untuk meminta TTL cache prompt 1 jam alih-alih default 5 menit. Dimaksudkan untuk pengguna kunci API, [Bedrock](/id/amazon-bedrock), [Vertex](/id/google-vertex-ai), dan [Foundry](/id/microsoft-foundry). Pengguna langganan menerima TTL 1 jam secara otomatis. Penulisan cache 1 jam ditagih dengan tarif yang lebih tinggi |

189| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Gunakan `ENABLE_PROMPT_CACHING_1H` sebagai gantinya |195| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Gunakan `ENABLE_PROMPT_CACHING_1H` sebagai gantinya |

190| `ENABLE_TOOL_SEARCH` | Kontrol [pencarian alat MCP](/id/mcp#scale-with-mcp-tool-search). Tidak diatur: semua alat MCP ditangguhkan secara default, tetapi dimuat di muka pada Vertex AI atau saat `ANTHROPIC_BASE_URL` menunjuk ke host non-pihak pertama. Nilai: `true` (selalu tangguhkan termasuk proxy), `auto` (mode ambang batas: muat di muka jika alat sesuai dalam 10% konteks), `auto:N` (ambang batas kustom, misalnya `auto:5` untuk 5%), `false` (muat semua di muka) |196| `ENABLE_TOOL_SEARCH` | Mengontrol [pencarian alat MCP](/id/mcp#scale-with-mcp-tool-search). Tidak diatur: semua alat MCP ditangguhkan secara default, tetapi dimuat di muka pada Vertex AI atau saat `ANTHROPIC_BASE_URL` menunjuk ke host non-pihak pertama. Nilai: `true` (selalu tangguhkan termasuk proxy), `auto` (mode ambang batas: muat di muka jika alat sesuai dalam 10% konteks), `auto:N` (ambang batas kustom, misalnya `auto:5` untuk 5%), `false` (muat semua di muka) |

191| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Atur ke nilai non-kosong apa pun untuk memicu fallback ke [`--fallback-model`](/id/cli-reference#cli-flags) setelah kesalahan overload berulang pada model primer apa pun. Secara default, hanya model Opus yang memicu fallback |197| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Atur ke nilai non-kosong apa pun untuk memicu fallback ke [`--fallback-model`](/id/cli-reference#cli-flags) setelah kesalahan overload berulang pada model primer apa pun. Secara default, hanya model Opus yang memicu fallback |

192| `FORCE_AUTOUPDATE_PLUGINS` | Atur ke `1` untuk memaksa pembaruan otomatis plugin bahkan saat auto-updater utama dinonaktifkan melalui `DISABLE_AUTOUPDATER` |198| `FORCE_AUTOUPDATE_PLUGINS` | Atur ke `1` untuk memaksa pembaruan otomatis plugin bahkan saat auto-updater utama dinonaktifkan melalui `DISABLE_AUTOUPDATER` |

193| `FORCE_PROMPT_CACHING_5M` | Atur ke `1` untuk memaksa TTL cache prompt 5 menit bahkan saat TTL 1 jam akan berlaku sebaliknya. Mengganti `ENABLE_PROMPT_CACHING_1H` |199| `FORCE_PROMPT_CACHING_5M` | Atur ke `1` untuk memaksa TTL cache prompt 5 menit bahkan saat TTL 1 jam akan berlaku sebaliknya. Mengganti `ENABLE_PROMPT_CACHING_1H` |


198| `MAX_STRUCTURED_OUTPUT_RETRIES` | Jumlah kali untuk mencoba ulang saat respons model gagal validasi terhadap [`--json-schema`](/id/cli-reference#cli-flags) dalam mode non-interaktif (flag `-p`). Default ke 5 |204| `MAX_STRUCTURED_OUTPUT_RETRIES` | Jumlah kali untuk mencoba ulang saat respons model gagal validasi terhadap [`--json-schema`](/id/cli-reference#cli-flags) dalam mode non-interaktif (flag `-p`). Default ke 5 |

199| `MAX_THINKING_TOKENS` | Ganti anggaran token [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Batas maksimal adalah [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) model dikurangi satu. Atur ke `0` untuk menonaktifkan pemikiran sepenuhnya. Pada model dengan [penalaran adaptif](/id/model-config#adjust-effort-level), anggaran diabaikan kecuali penalaran adaptif dinonaktifkan melalui `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` |205| `MAX_THINKING_TOKENS` | Ganti anggaran token [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Batas maksimal adalah [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison) model dikurangi satu. Atur ke `0` untuk menonaktifkan pemikiran sepenuhnya. Pada model dengan [penalaran adaptif](/id/model-config#adjust-effort-level), anggaran diabaikan kecuali penalaran adaptif dinonaktifkan melalui `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` |

200| `MCP_CLIENT_SECRET` | Rahasia klien OAuth untuk server MCP yang memerlukan [kredensial yang dikonfigurasi sebelumnya](/id/mcp#use-pre-configured-oauth-credentials). Menghindari prompt interaktif saat menambahkan server dengan `--client-secret` |206| `MCP_CLIENT_SECRET` | Rahasia klien OAuth untuk server MCP yang memerlukan [kredensial yang dikonfigurasi sebelumnya](/id/mcp#use-pre-configured-oauth-credentials). Menghindari prompt interaktif saat menambahkan server dengan `--client-secret` |

201| `MCP_CONNECTION_NONBLOCKING` | Atur ke `true` dalam mode non-interaktif (`-p`) untuk melewati penantian koneksi MCP sepenuhnya. Berguna untuk pipeline skrip di mana alat MCP tidak diperlukan. Tanpa variabel ini, kueri pertama menunggu hingga 5 detik untuk koneksi server `--mcp-config` |207| `MCP_CONNECTION_NONBLOCKING` | Atur ke `true` dalam mode non-interaktif (`-p`) untuk melewati penantian koneksi MCP sepenuhnya. Berguna untuk pipeline skrip di mana alat MCP tidak diperlukan. Tanpa variabel ini, kueri pertama menunggu hingga 5 detik untuk koneksi server `--mcp-config`. Server yang dikonfigurasi dengan [`alwaysLoad: true`](/id/mcp#exempt-a-server-from-deferral) selalu memblokir startup terlepas dari variabel ini, karena alat mereka harus ada saat prompt pertama dibangun |

202| `MCP_OAUTH_CALLBACK_PORT` | Port tetap untuk callback pengalihan OAuth, sebagai alternatif untuk `--callback-port` saat menambahkan server MCP dengan [kredensial yang dikonfigurasi sebelumnya](/id/mcp#use-pre-configured-oauth-credentials) |208| `MCP_OAUTH_CALLBACK_PORT` | Port tetap untuk callback pengalihan OAuth, sebagai alternatif untuk `--callback-port` saat menambahkan server MCP dengan [kredensial yang dikonfigurasi sebelumnya](/id/mcp#use-pre-configured-oauth-credentials) |

203| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Jumlah maksimal server MCP jarak jauh (HTTP/SSE) untuk terhubung secara paralel selama startup (default: 20) |209| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Jumlah maksimal server MCP jarak jauh (HTTP/SSE) untuk terhubung secara paralel selama startup (default: 20) |

204| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Jumlah maksimal server MCP lokal (stdio) untuk terhubung secara paralel selama startup (default: 3) |210| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Jumlah maksimal server MCP lokal (stdio) untuk terhubung secara paralel selama startup (default: 3) |

205| `MCP_TIMEOUT` | Waktu tunggu dalam milidetik untuk startup server MCP (default: 30000, atau 30 detik) |211| `MCP_TIMEOUT` | Waktu tunggu dalam milidetik untuk startup server MCP (default: 30000, atau 30 detik) |

206| `MCP_TOOL_TIMEOUT` | Waktu tunggu dalam milidetik untuk eksekusi alat MCP (default: 100000000, sekitar 28 jam) |212| `MCP_TOOL_TIMEOUT` | Waktu tunggu dalam milidetik untuk eksekusi alat MCP (default: 100000000, sekitar 28 jam) |

207| `NO_PROXY` | Daftar domain dan IP ke mana permintaan akan dikeluarkan secara langsung, melewati proxy |213| `NO_PROXY` | Daftar domain dan IP ke mana permintaan akan dikeluarkan secara langsung, melewati proxy |

208| `OTEL_LOG_RAW_API_BODIES` | Atur ke `1` untuk memancarkan permintaan dan respons JSON API Anthropic Messages lengkap sebagai peristiwa log `api_request_body` / `api_response_body`. Atur ke `file:<dir>` untuk menulis badan yang tidak dipotong ke disk dan memancarkan referensi `body_ref` sebagai gantinya. Dinonaktifkan secara default; badan menyertakan seluruh riwayat percakapan. Lihat [Monitoring](/id/monitoring-usage#api-request-body-event) |214| `OTEL_LOG_RAW_API_BODIES` | Memancarkan permintaan dan respons JSON API Anthropic Messages lengkap sebagai peristiwa log `api_request_body` / `api_response_body`. Atur ke `1` untuk badan inline dipotong pada 60 KB, atau `file:<dir>` untuk menulis badan yang tidak dipotong ke disk dan memancarkan referensi `body_ref` sebagai gantinya. Dinonaktifkan secara default; badan menyertakan seluruh riwayat percakapan. Lihat [Monitoring](/id/monitoring-usage#api-request-body-event) |

209| `OTEL_LOG_TOOL_CONTENT` | Atur ke `1` untuk menyertakan konten input dan output alat dalam peristiwa span OpenTelemetry. Dinonaktifkan secara default untuk melindungi data sensitif. Lihat [Monitoring](/id/monitoring-usage) |215| `OTEL_LOG_TOOL_CONTENT` | Atur ke `1` untuk menyertakan konten input dan output alat dalam peristiwa span OpenTelemetry. Dinonaktifkan secara default untuk melindungi data sensitif. Lihat [Monitoring](/id/monitoring-usage) |

210| `OTEL_LOG_TOOL_DETAILS` | Atur ke `1` untuk menyertakan argumen input alat, nama server MCP, string kesalahan mentah pada kegagalan alat, dan detail alat lainnya dalam jejak dan log OpenTelemetry. Dinonaktifkan secara default untuk melindungi PII. Lihat [Monitoring](/id/monitoring-usage) |216| `OTEL_LOG_TOOL_DETAILS` | Atur ke `1` untuk menyertakan argumen input alat, nama server MCP, string kesalahan mentah pada kegagalan alat, dan detail alat lainnya dalam jejak dan log OpenTelemetry. Dinonaktifkan secara default untuk melindungi PII. Lihat [Monitoring](/id/monitoring-usage) |

211| `OTEL_LOG_USER_PROMPTS` | Atur ke `1` untuk menyertakan teks prompt pengguna dalam jejak dan log OpenTelemetry. Dinonaktifkan secara default (prompt diredaksi). Lihat [Monitoring](/id/monitoring-usage) |217| `OTEL_LOG_USER_PROMPTS` | Atur ke `1` untuk menyertakan teks prompt pengguna dalam jejak dan log OpenTelemetry. Dinonaktifkan secara default (prompt diredaksi). Lihat [Monitoring](/id/monitoring-usage) |

errors.md +27 −5

Details

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

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

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

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

38| `Prompt is too long` | [Kesalahan permintaan](#prompt-is-too-long) |39| `Prompt is too long` | [Kesalahan permintaan](#prompt-is-too-long) |

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

40| `Request too large` | [Kesalahan permintaan](#request-too-large) |41| `Request too large` | [Kesalahan permintaan](#request-too-large) |


282 283 

283## Kesalahan jaringan dan koneksi284## Kesalahan jaringan dan koneksi

284 285 

285Kesalahan ini berarti Claude Code tidak dapat menjangkau API sama sekali. Mereka hampir selalu berasal dari jaringan lokal, proxy, atau firewall Anda daripada infrastruktur Anthropic.286Kesalahan ini berarti permintaan jaringan dari Claude Code gagal menjangkau tujuannya. Mereka biasanya berasal dari jaringan lokal, proxy, atau firewall Anda, atau dari kebijakan jaringan lingkungan cloud.

286 287 

287### Unable to connect to API288### Unable to connect to API

288 289 


307* Pastikan firewall Anda memungkinkan host yang tercantum dalam [Network access requirements](/id/network-config#network-access-requirements)308* Pastikan firewall Anda memungkinkan host yang tercantum dalam [Network access requirements](/id/network-config#network-access-requirements)

308* Kegagalan intermiten [dicoba ulang secara otomatis](#automatic-retries); kegagalan persisten menunjukkan masalah jaringan lokal309* Kegagalan intermiten [dicoba ulang secara otomatis](#automatic-retries); kegagalan persisten menunjukkan masalah jaringan lokal

309 310 

310Jika `curl` berhasil tetapi Claude Code masih gagal, penyebabnya biasanya sesuatu antara Node.js dan jaringan daripada jaringan itu sendiri:311Jika `curl` berhasil tetapi Claude Code masih gagal, penyebabnya biasanya sesuatu antara runtime dan jaringan daripada jaringan itu sendiri:

311 312 

312* Di Linux dan WSL, periksa `/etc/resolv.conf` untuk nameserver yang tidak dapat dijangkau. WSL khususnya dapat mewarisi resolver yang rusak dari host.313* Di Linux dan WSL, periksa `/etc/resolv.conf` untuk nameserver yang tidak dapat dijangkau. WSL khususnya dapat mewarisi resolver yang rusak dari host.

313* Di macOS, klien VPN yang terputus atau dihapus dapat meninggalkan antarmuka terowongan atau aturan perutean. Periksa `ifconfig` untuk antarmuka `utun` basi dan hapus ekstensi jaringan VPN di System Settings.314* Di macOS, klien VPN yang terputus atau dihapus dapat meninggalkan antarmuka terowongan atau aturan perutean. Periksa `ifconfig` untuk antarmuka `utun` basi dan hapus ekstensi jaringan VPN di System Settings.


315 316 

316### SSL certificate errors317### SSL certificate errors

317 318 

318Proxy atau perangkat keamanan di jaringan Anda mencegat lalu lintas TLS dengan sertifikatnya sendiri, dan Node.js tidak mempercayainya.319Proxy atau perangkat keamanan di jaringan Anda mencegat lalu lintas TLS dengan sertifikatnya sendiri, dan Claude Code tidak mempercayainya.

319 320 

320```text theme={null}321```text theme={null}

321Unable to connect to API: SSL certificate verification failed. Check your proxy or corporate SSL certificates322Unable to connect to API: SSL certificate verification failed. Check your proxy or corporate SSL certificates


324 325 

325**Yang harus dilakukan:**326**Yang harus dilakukan:**

326 327 

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

328* Lihat [Network configuration](/id/network-config#custom-ca-certificates) untuk instruksi penyiapan lengkap329* Lihat [Network configuration](/id/network-config#custom-ca-certificates) untuk instruksi penyiapan lengkap

329* Jangan atur `NODE_TLS_REJECT_UNAUTHORIZED=0`, yang menonaktifkan validasi sertifikat sepenuhnya330* Jangan atur `NODE_TLS_REJECT_UNAUTHORIZED=0`, yang menonaktifkan validasi sertifikat sepenuhnya

330 331 

332### Host not allowed in a cloud session

333 

334Permintaan HTTP keluar dari sesi cloud atau routine diblokir oleh kebijakan jaringan lingkungan.

335 

336```text theme={null}

337HTTP 403

338x-deny-reason: host_not_allowed

339```

340 

341Anda mungkin juga melihat sertifikat TLS yang tidak cocok dengan sertifikat asli tujuan. Lingkungan cloud merutekan lalu lintas keluar melalui proxy yang memberlakukan kebijakan jaringan, jadi sertifikat yang tidak cocok berarti proxy mengakhiri koneksi, bukan tujuan.

342 

343Ini bukan masalah jaringan sisi klien. Sesi cloud dan [routines](/id/routines) berjalan di dalam lingkungan sandbox yang lalu lintas keluarnya disaring ke daftar izin lingkungan. Lingkungan **Default** menggunakan akses **Trusted**, yang memungkinkan [daftar izin default](/id/claude-code-on-the-web#default-allowed-domains) dari registri paket, API penyedia cloud, registri kontainer, dan domain pengembangan umum tetapi memblokir semuanya.

344 

345**Yang harus dilakukan:**

346 

347* Buka routine untuk diedit, atau mulai sesi cloud. Pilih ikon cloud yang menampilkan nama lingkungan Anda, seperti **Default**, untuk membuka pemilih. Arahkan ke lingkungan Anda dan klik ikon pengaturan.

348* Dalam dialog **Update cloud environment**, ubah **Network access** dari **Trusted** ke **Custom**, kemudian tambahkan domain yang diblokir ke **Allowed domains**. Masukkan satu domain per baris. Centang **Also include default list of common package managers** untuk menyimpan [daftar izin default](/id/claude-code-on-the-web#default-allowed-domains) bersama domain kustom Anda. Pilih **Full** sebagai gantinya jika Anda menginginkan akses tanpa batas.

349* Klik **Save changes**. Jalankan berikutnya menggunakan daftar izin yang diperbarui.

350 

351Lihat [Network access](/id/claude-code-on-the-web#network-access) untuk tingkat akses dan daftar izin default. Sesi CLI lokal tidak terpengaruh oleh kebijakan ini.

352 

331## Kesalahan permintaan353## Kesalahan permintaan

332 354 

333Kesalahan ini berarti API menerima permintaan Anda tetapi menolak kontennya.355Kesalahan ini berarti API menerima permintaan Anda tetapi menolak kontennya.


487**Yang harus dilakukan:**509**Yang harus dilakukan:**

488 510 

489* Turunkan `MAX_THINKING_TOKENS`, atau naikkan [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/id/env-vars) di atas anggaran pemikiran511* Turunkan `MAX_THINKING_TOKENS`, atau naikkan [`CLAUDE_CODE_MAX_OUTPUT_TOKENS`](/id/env-vars) di atas anggaran pemikiran

490* Lihat [Pemikiran yang diperluas](/id/common-workflows#use-extended-thinking-thinking-mode) untuk cara anggaran berinteraksi dengan panjang output512* Lihat [Pemikiran yang diperluas](/id/model-config#extended-thinking) untuk cara anggaran berinteraksi dengan panjang output

491 513 

492### Tool use or thinking block mismatch514### Tool use or thinking block mismatch

493 515 

Details

219| **Subagents** | Ketika dispawn | Konteks segar dengan skills yang ditentukan | Terisolasi dari sesi utama |219| **Subagents** | Ketika dispawn | Konteks segar dengan skills yang ditentukan | Terisolasi dari sesi utama |

220| **Hooks** | Saat dipicu | Tidak ada (berjalan secara eksternal) | Nol, kecuali hook mengembalikan konteks tambahan |220| **Hooks** | Saat dipicu | Tidak ada (berjalan secara eksternal) | Nol, kecuali hook mengembalikan konteks tambahan |

221 221 

222\*Secara default, deskripsi skill dimuat saat awal sesi sehingga Claude dapat memutuskan kapan menggunakannya. Atur `disable-model-invocation: true` di frontmatter skill untuk menyembunyikannya dari Claude sepenuhnya sampai Anda memanggilnya secara manual. Ini mengurangi biaya konteks menjadi nol untuk skills yang hanya Anda picu sendiri.222\*Secara default, deskripsi skill dimuat saat awal sesi sehingga Claude dapat memutuskan kapan menggunakannya. Atur `disable-model-invocation: true` di frontmatter skill untuk menyembunyikannya dari Claude sepenuhnya sampai Anda memanggilnya secara manual. Ini mengurangi biaya konteks menjadi nol untuk skills yang hanya Anda picu sendiri. Untuk skill yang tidak Anda tulis, atur [`skillOverrides`](/id/skills#override-skill-visibility-from-settings) di settings untuk melakukan hal yang sama tanpa mengedit filenya.

223 223 

224### Pahami bagaimana fitur dimuat224### Pahami bagaimana fitur dimuat

225 225 


233 233 

234 **Apa yang dimuat:** Konten penuh semua file CLAUDE.md (tingkat terkelola, pengguna, dan proyek).234 **Apa yang dimuat:** Konten penuh semua file CLAUDE.md (tingkat terkelola, pengguna, dan proyek).

235 235 

236 **Warisan:** Claude membaca file CLAUDE.md dari direktori kerja Anda hingga ke root, dan menemukan yang tersarang di subdirektori saat mengakses file tersebut. Lihat [Bagaimana file CLAUDE.md dimuat](/id/memory#how-claudemd-files-load) untuk detail.236 **Warisan:** Claude membaca file CLAUDE.md dari direktori kerja Anda hingga ke root, dan menemukan yang tersarang di subdirektori saat mengakses file tersebut. Lihat [Bagaimana file CLAUDE.md dimuat](/id/memory#how-claude-md-files-load) untuk detail.

237 237 

238 <Tip>Jaga CLAUDE.md di bawah 200 baris. Pindahkan materi referensi ke skills, yang dimuat on-demand.</Tip>238 <Tip>Jaga CLAUDE.md di bawah 200 baris. Pindahkan materi referensi ke skills, yang dimuat on-demand.</Tip>

239 </Tab>239 </Tab>


282 </Tab>282 </Tab>

283 283 

284 <Tab title="Hooks">284 <Tab title="Hooks">

285 **Kapan:** Saat dipicu. Hooks berjalan pada acara siklus hidup tertentu seperti eksekusi alat, batas sesi, pengajuan prompt, permintaan izin, dan pemadatan. Lihat [Hooks](/id/hooks-guide) untuk daftar lengkap.285 **Kapan:** Saat dipicu. Hooks berjalan pada acara siklus hidup tertentu seperti eksekusi alat, batas sesi, pengajuan prompt, permintaan izin, dan pemadatan. Lihat [Hooks](/id/hooks) untuk daftar lengkap.

286 286 

287 **Apa yang dimuat:** Tidak ada secara default. Hooks berjalan di luar percakapan utama.287 **Apa yang dimuat:** Tidak ada secara default. Hooks berjalan di luar percakapan utama.

288 288 

fullscreen.md +10 −2

Details

93 93 

94Nilai `3` cocok dengan default di `vim` dan aplikasi serupa. Pengaturan menerima nilai dari 1 hingga 20.94Nilai `3` cocok dengan default di `vim` dan aplikasi serupa. Pengaturan menerima nilai dari 1 hingga 20.

95 95 

96### Scroll di terminal IDE JetBrains

97 

98Di terminal IDE JetBrains, Claude Code menerapkan penanganan scroll-nya sendiri dan mengabaikan `CLAUDE_CODE_SCROLL_SPEED`. Terminal mengirim peristiwa scroll pada tingkat yang jauh lebih tinggi daripada emulator lain, sehingga pengganda yang disesuaikan di tempat lain melampaui di sini.

99 

100Di 2025.2, terminal juga memiliki bug scroll-wheel yang menghasilkan tombol panah palsu dan peristiwa arah yang salah. Claude Code mendeteksi ini pada waktu runtime dan menguranginya secara otomatis, sehingga scrolling trackpad dan roda mouse berfungsi tanpa konfigurasi. Untuk pengalaman scroll terbaik, tingkatkan ke 2025.3 atau lebih baru. Claude Code menampilkan petunjuk pertama kali Anda scroll jika mendeteksi bug.

101 

96## Cari dan tinjau percakapan102## Cari dan tinjau percakapan

97 103 

98`Ctrl+o` mengalihkan antara prompt normal dan mode transkrip. Untuk tampilan yang lebih tenang yang menampilkan hanya prompt terakhir Anda, ringkasan satu baris panggilan alat dengan diffstat edit, dan respons akhir, jalankan `/focus`. Pengaturan bertahan di seluruh sesi. Jalankan `/focus` lagi untuk mematikannya.104`Ctrl+o` mengalihkan antara prompt normal dan mode transkrip. Untuk tampilan yang lebih tenang yang menampilkan hanya prompt terakhir Anda, ringkasan satu baris panggilan alat dengan diffstat edit, dan respons akhir, jalankan `/focus`. Pengaturan bertahan di seluruh sesi. Jalankan `/focus` lagi untuk mematikannya.


122 128 

123## Gunakan dengan tmux129## Gunakan dengan tmux

124 130 

125Rendering fullscreen bekerja di dalam tmux, dengan dua peringatan.131Rendering fullscreen bekerja di dalam tmux, dengan tiga peringatan.

126 132 

127Scrolling roda mouse memerlukan mode mouse tmux. Jika `~/.tmux.conf` Anda belum mengaktifkannya, tambahkan baris ini dan muat ulang konfigurasi Anda:133Scrolling roda mouse memerlukan mode mouse tmux. Jika `~/.tmux.conf` Anda belum mengaktifkannya, tambahkan baris ini dan muat ulang konfigurasi Anda:

128 134 


134 140 

135Rendering fullscreen tidak kompatibel dengan mode integrasi tmux iTerm2, yang merupakan mode yang Anda masuki dengan `tmux -CC`. Dalam mode integrasi, iTerm2 merender setiap panel tmux sebagai pemisah asli daripada membiarkan tmux menggambar ke terminal. Buffer layar alternatif dan pelacakan mouse tidak bekerja dengan benar di sana: roda mouse tidak melakukan apa pun, dan klik ganda dapat merusak status terminal. Jangan aktifkan rendering fullscreen di sesi `tmux -CC`. Tmux reguler di dalam iTerm2, tanpa `-CC`, bekerja dengan baik.141Rendering fullscreen tidak kompatibel dengan mode integrasi tmux iTerm2, yang merupakan mode yang Anda masuki dengan `tmux -CC`. Dalam mode integrasi, iTerm2 merender setiap panel tmux sebagai pemisah asli daripada membiarkan tmux menggambar ke terminal. Buffer layar alternatif dan pelacakan mouse tidak bekerja dengan benar di sana: roda mouse tidak melakukan apa pun, dan klik ganda dapat merusak status terminal. Jangan aktifkan rendering fullscreen di sesi `tmux -CC`. Tmux reguler di dalam iTerm2, tanpa `-CC`, bekerja dengan baik.

136 142 

143tmux tidak mendukung output yang disinkronkan, jadi Anda mungkin melihat lebih banyak flicker selama redraw dibandingkan saat menjalankan Claude Code langsung di terminal Anda. Jika flicker terlihat jelas, terutama melalui SSH, jalankan Claude Code di tab terminal terpisahnya sendiri di luar tmux.

144 

137## Pertahankan pemilihan teks asli145## Pertahankan pemilihan teks asli

138 146 

139Penangkapan mouse adalah titik gesekan paling umum, terutama melalui SSH atau di dalam tmux. Ketika Claude Code menangkap peristiwa mouse, copy-on-select asli terminal Anda berhenti bekerja. Pemilihan yang Anda buat dengan klik-dan-seret ada di dalam Claude Code, bukan di buffer pemilihan terminal Anda, sehingga mode salinan tmux, petunjuk Kitty, dan alat serupa tidak melihatnya.147Penangkapan mouse adalah titik gesekan paling umum, terutama melalui SSH atau di dalam tmux. Ketika Claude Code menangkap peristiwa mouse, copy-on-select asli terminal Anda berhenti bekerja. Pemilihan yang Anda buat dengan klik-dan-seret ada di dalam Claude Code, bukan di buffer pemilihan terminal Anda, sehingga mode salinan tmux, petunjuk Kitty, dan alat serupa tidak melihatnya.


156 164 

157Jika Anda mengalami masalah, jalankan `/feedback` di dalam Claude Code untuk melaporkannya, atau buka masalah di [repositori GitHub claude-code](https://github.com/anthropics/claude-code/issues). Sertakan nama dan versi emulator terminal Anda.165Jika Anda mengalami masalah, jalankan `/feedback` di dalam Claude Code untuk melaporkannya, atau buka masalah di [repositori GitHub claude-code](https://github.com/anthropics/claude-code/issues). Sertakan nama dan versi emulator terminal Anda.

158 166 

159Untuk mematikan rendering fullscreen, jalankan `/tui default`, atau batalkan pengaturan variabel lingkungan jika Anda mengaktifkannya dengan cara itu.167Untuk mematikan rendering fullscreen, jalankan `/tui default`, atau batalkan pengaturan `CLAUDE_CODE_NO_FLICKER` jika Anda mengaktifkannya dengan cara itu. Untuk memaksa renderer klasik terlepas dari pengaturan `tui` yang disimpan, atur `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1`. Renderer klasik menjaga percakapan dalam scrollback asli terminal Anda sehingga `Cmd+f` dan mode copy tmux berfungsi seperti biasanya.

Details

266Claude Code v2.1.121 atau lebih baru mendukung [Workload Identity Federation berbasis sertifikat X.509](https://cloud.google.com/iam/docs/workload-identity-federation-with-x509-certificates) melalui rantai Application Default Credentials yang sama. Atur `GOOGLE_APPLICATION_CREDENTIALS` ke jalur file konfigurasi kredensial Anda.266Claude Code v2.1.121 atau lebih baru mendukung [Workload Identity Federation berbasis sertifikat X.509](https://cloud.google.com/iam/docs/workload-identity-federation-with-x509-certificates) melalui rantai Application Default Credentials yang sama. Atur `GOOGLE_APPLICATION_CREDENTIALS` ke jalur file konfigurasi kredensial Anda.

267 267 

268<Note>268<Note>

269 Saat melakukan autentikasi, Claude Code akan secara otomatis menggunakan ID proyek dari variabel lingkungan `ANTHROPIC_VERTEX_PROJECT_ID`. Untuk menimpanya, atur salah satu variabel lingkungan ini: `GCLOUD_PROJECT`, `GOOGLE_CLOUD_PROJECT`, atau `GOOGLE_APPLICATION_CREDENTIALS`.269 Claude Code menggunakan `ANTHROPIC_VERTEX_PROJECT_ID` sebagai ID proyek untuk permintaan Vertex AI. Variabel lingkungan `GCLOUD_PROJECT` dan `GOOGLE_CLOUD_PROJECT` serta file kredensial yang dirujuk oleh `GOOGLE_APPLICATION_CREDENTIALS` memiliki prioritas lebih tinggi daripada itu. Jika tidak ada yang diatur, ID proyek diselesaikan dari konfigurasi `gcloud` Anda atau akun layanan yang terlampir.

270</Note>270</Note>

271 271 

272#### Konfigurasi kredensial lanjutan

273 

274Claude Code mendukung penyegaran kredensial otomatis untuk GCP melalui pengaturan `gcpAuthRefresh`. Ketika Claude Code mendeteksi bahwa kredensial GCP Anda telah kedaluwarsa atau tidak dapat dimuat, Claude Code menjalankan perintah yang dikonfigurasi untuk mendapatkan kredensial baru sebelum mencoba ulang permintaan.

275 

276```json theme={null}

277{

278 "gcpAuthRefresh": "gcloud auth application-default login",

279 "env": {

280 "ANTHROPIC_VERTEX_PROJECT_ID": "your-project-id"

281 }

282}

283```

284 

285Output perintah ditampilkan kepada pengguna, tetapi input interaktif tidak didukung. Ini berfungsi dengan baik untuk alur autentikasi berbasis browser di mana CLI menampilkan URL dan Anda menyelesaikan autentikasi di browser. Perintah penyegaran habis waktu setelah tiga menit jika autentikasi tidak selesai. Jika Anda mengatur `gcpAuthRefresh` dalam pengaturan proyek seperti `.claude/settings.json`, perintah hanya berjalan setelah Anda menerima prompt kepercayaan ruang kerja.

286 

272### 4. Konfigurasi Claude Code287### 4. Konfigurasi Claude Code

273 288 

274Atur variabel lingkungan berikut:289Atur variabel lingkungan berikut:


363 378 

364## Pemecahan masalah379## Pemecahan masalah

365 380 

381Jika Anda mengalami kesalahan "Could not load the default credentials":

382 

383* Jalankan `gcloud auth application-default login` untuk menyiapkan Application Default Credentials

384* Atur `GOOGLE_APPLICATION_CREDENTIALS` ke jalur file kunci akun layanan

385* Lihat [Configure GCP credentials](#3-configure-gcp-credentials) untuk semua opsi

386 

366Jika Anda mengalami masalah kuota:387Jika Anda mengalami masalah kuota:

367 388 

368* Periksa kuota saat ini atau minta peningkatan kuota melalui [Cloud Console](https://cloud.google.com/docs/quotas/view-manage)389* Periksa kuota saat ini atau minta peningkatan kuota melalui [Cloud Console](https://cloud.google.com/docs/quotas/view-manage)

headless.md +33 −3

Details

54| Pengaturan | `--settings <file-or-json>` |54| Pengaturan | `--settings <file-or-json>` |

55| Server MCP | `--mcp-config <file-or-json>` |55| Server MCP | `--mcp-config <file-or-json>` |

56| Agen kustom | `--agents <json>` |56| Agen kustom | `--agents <json>` |

57| Direktori plugin | `--plugin-dir <path>` |57| Plugin | `--plugin-dir <path>`, `--plugin-url <url>` |

58 58 

59Bare mode melewati pembacaan OAuth dan keychain. Autentikasi Anthropic harus berasal dari `ANTHROPIC_API_KEY` atau `apiKeyHelper` dalam JSON yang diteruskan ke `--settings`. Bedrock, Vertex, dan Foundry menggunakan kredensial penyedia biasa mereka.59Bare mode melewati pembacaan OAuth dan keychain. Autentikasi Anthropic harus berasal dari `ANTHROPIC_API_KEY` atau `apiKeyHelper` dalam JSON yang diteruskan ke `--settings`. Bedrock, Vertex, dan Foundry menggunakan kredensial penyedia biasa mereka.

60 60 


66 66 

67Contoh-contoh ini menyoroti pola CLI umum. Untuk CI dan panggilan skrip lainnya, tambahkan [`--bare`](#start-faster-with-bare-mode) sehingga mereka tidak mengambil apa pun yang kebetulan dikonfigurasi secara lokal.67Contoh-contoh ini menyoroti pola CLI umum. Untuk CI dan panggilan skrip lainnya, tambahkan [`--bare`](#start-faster-with-bare-mode) sehingga mereka tidak mengambil apa pun yang kebetulan dikonfigurasi secara lokal.

68 68 

69### Saluran data melalui Claude

70 

71Mode non-interaktif membaca stdin, sehingga Anda dapat menyalurkan data dan mengarahkan respons keluar seperti alat baris perintah lainnya.

72 

73Contoh ini menyalurkan log build ke Claude dan menulis penjelasan ke file:

74 

75```bash theme={null}

76cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt

77```

78 

79Dengan `--output-format json`, payload respons mencakup `total_cost_usd` dan rincian biaya per-model, sehingga pemanggil skrip dapat melacak pengeluaran per invokasi tanpa berkonsultasi dengan [dashboard penggunaan](/id/costs).

80 

81<Note>

82 Sejak Claude Code v2.1.128, stdin yang disalurkan dibatasi pada 10MB. Jika Anda melampaui batas, Claude Code keluar dengan kesalahan yang jelas dan status bukan nol. Untuk bekerja dengan input yang lebih besar, tulis konten ke file dan referensikan jalur file dalam prompt Anda alih-alih menyalurkannya.

83</Note>

84 

85### Tambahkan Claude ke skrip build

86 

87Anda dapat membungkus panggilan non-interaktif dalam skrip untuk menggunakan Claude sebagai linter atau reviewer khusus proyek.

88 

89Skrip `package.json` ini menyalurkan diff terhadap `main` ke Claude dan memintanya untuk melaporkan typo. Menyalurkan diff berarti Claude tidak memerlukan izin Bash untuk membacanya, dan tanda kutip ganda yang di-escape menjaga skrip portabel ke Windows:

90 

91```json theme={null}

92{

93 "scripts": {

94 "lint:claude": "git diff main | claude -p \"you are a typo linter. for each typo in this diff, report filename:line on one line and the issue on the next. return nothing else.\""

95 }

96}

97```

98 

69### Dapatkan output terstruktur99### Dapatkan output terstruktur

70 100 

71Gunakan `--output-format` untuk mengontrol bagaimana respons dikembalikan:101Gunakan `--output-format` untuk mengontrol bagaimana respons dikembalikan:


137Acara `system/init` melaporkan metadata sesi termasuk model, alat, server MCP, dan plugin yang dimuat. Ini adalah acara pertama dalam aliran kecuali [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/id/env-vars) diatur, dalam hal ini acara `plugin_install` mendahuluinya. Gunakan bidang plugin untuk gagal CI ketika plugin tidak dimuat:167Acara `system/init` melaporkan metadata sesi termasuk model, alat, server MCP, dan plugin yang dimuat. Ini adalah acara pertama dalam aliran kecuali [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/id/env-vars) diatur, dalam hal ini acara `plugin_install` mendahuluinya. Gunakan bidang plugin untuk gagal CI ketika plugin tidak dimuat:

138 168 

139| Bidang | Tipe | Deskripsi |169| Bidang | Tipe | Deskripsi |

140| --------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |170| --------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

141| `plugins` | array | plugin yang berhasil dimuat, masing-masing dengan `name` dan `path` |171| `plugins` | array | plugin yang berhasil dimuat, masing-masing dengan `name` dan `path` |

142| `plugin_errors` | array | kesalahan waktu muat plugin seperti versi dependensi yang tidak terpenuhi, masing-masing dengan `plugin`, `type`, dan `message`. Plugin yang terpengaruh diturunkan dan tidak ada di `plugins`. Kunci dihilangkan ketika tidak ada kesalahan |172| `plugin_errors` | array | kesalahan waktu muat plugin, masing-masing dengan `plugin`, `type`, dan `message`. Mencakup versi dependensi yang tidak terpenuhi dan kegagalan muat `--plugin-dir` seperti jalur yang hilang atau arsip yang tidak valid. Plugin yang terpengaruh diturunkan dan tidak ada di `plugins`. Kunci dihilangkan ketika tidak ada kesalahan |

143 173 

144Ketika [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/id/env-vars) diatur, Claude Code memancarkan acara `system/plugin_install` saat plugin marketplace dipasang sebelum giliran pertama. Gunakan ini untuk menampilkan kemajuan pemasangan di UI Anda sendiri.174Ketika [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/id/env-vars) diatur, Claude Code memancarkan acara `system/plugin_install` saat plugin marketplace dipasang sebelum giliran pertama. Gunakan ini untuk menampilkan kemajuan pemasangan di UI Anda sendiri.

145 175 

Details

94 94 

95## Bekerja dengan session95## Bekerja dengan session

96 96 

97Claude Code menyimpan percakapan Anda secara lokal saat Anda bekerja. Setiap pesan, penggunaan tool, dan hasil disimpan, yang memungkinkan [rewinding](#undo-changes-with-checkpoints), [resuming, dan forking](#resume-or-fork-sessions) session. Sebelum Claude membuat perubahan kode, Claude juga membuat snapshot file yang terpengaruh sehingga Anda dapat mengembalikan jika diperlukan.97Claude Code menyimpan percakapan Anda secara lokal saat Anda bekerja. Setiap pesan, penggunaan tool, dan hasil ditulis ke file plaintext JSONL di bawah `~/.claude/projects/`, yang memungkinkan [rewinding](#undo-changes-with-checkpoints), [resuming, dan forking](#resume-or-fork-sessions) session. Sebelum Claude membuat perubahan kode, Claude juga membuat snapshot file yang terpengaruh sehingga Anda dapat mengembalikan jika diperlukan. Untuk path, retention, dan cara menghapus data ini, lihat [application data in `~/.claude`](/id/claude-directory#application-data).

98 98 

99**Session bersifat independen.** Setiap session baru dimulai dengan context window segar, tanpa riwayat percakapan dari session sebelumnya. Claude dapat mempertahankan pembelajaran di seluruh session menggunakan [auto memory](/id/memory#auto-memory), dan Anda dapat menambahkan instruksi persisten Anda sendiri di [CLAUDE.md](/id/memory).99**Session bersifat independen.** Setiap session baru dimulai dengan context window segar, tanpa riwayat percakapan dari session sebelumnya. Claude dapat mempertahankan pembelajaran di seluruh session menggunakan [auto memory](/id/memory#auto-memory), dan Anda dapat menambahkan instruksi persisten Anda sendiri di [CLAUDE.md](/id/memory).

100 100 

101### Bekerja di seluruh branch101### Bekerja di seluruh branch

102 102 

103Setiap percakapan Claude Code adalah session yang terikat pada direktori saat ini Anda. Ketika Anda melanjutkan, Anda hanya melihat session dari direktori itu.103Setiap percakapan Claude Code adalah session yang terikat pada direktori saat ini Anda. Picker `/resume` menampilkan session dari worktree saat ini secara default, dengan pintasan keyboard untuk memperluas daftar ke worktree atau proyek lain. Lihat [Manage sessions](/id/sessions#use-the-session-picker) untuk daftar lengkap pintasan picker dan bagaimana name resolution bekerja.

104 104 

105Claude melihat file branch saat ini Anda. Ketika Anda beralih branch, Claude melihat file branch baru, tetapi riwayat percakapan Anda tetap sama. Claude mengingat apa yang Anda diskusikan bahkan setelah beralih.105Claude melihat file branch saat ini Anda. Ketika Anda beralih branch, Claude melihat file branch baru, tetapi riwayat percakapan Anda tetap sama. Claude mengingat apa yang Anda diskusikan bahkan setelah beralih.

106 106 

107Karena session terikat pada direktori, Anda dapat menjalankan session Claude paralel dengan menggunakan [git worktrees](/id/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees), yang membuat direktori terpisah untuk branch individual.107Karena session terikat pada direktori, Anda dapat menjalankan session Claude paralel dengan menggunakan [git worktrees](/id/worktrees), yang membuat direktori terpisah untuk branch individual.

108 108 

109### Resume atau fork session109### Resume atau fork session

110 110 

111Ketika Anda melanjutkan session dengan `claude --continue` atau `claude --resume`, Anda melanjutkan dari tempat Anda berhenti menggunakan session ID yang sama. Pesan baru ditambahkan ke percakapan yang ada. Riwayat percakapan lengkap Anda dipulihkan, tetapi izin session-scoped tidak. Anda perlu menyetujui ulang.111Melanjutkan session dengan `claude --continue` atau `claude --resume` membuka kembali session di bawah session ID yang sama dan menambahkan pesan baru ke percakapan yang ada. Forking dengan `--fork-session` atau `/branch` menyalin riwayat ke session ID baru, meninggalkan yang asli tidak berubah.

112 112 

113<img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/session-continuity.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=fa41d12bfb57579cabfeece907151d30" alt="Kontinuitas session: resume melanjutkan session yang sama, fork membuat branch baru dengan ID baru." width="560" height="280" data-path="images/session-continuity.svg" />113<img src="https://mintcdn.com/claude-code/c5r9_6tjPMzFdDDT/images/session-continuity.svg?fit=max&auto=format&n=c5r9_6tjPMzFdDDT&q=85&s=fa41d12bfb57579cabfeece907151d30" alt="Kontinuitas session: resume melanjutkan session yang sama, fork membuat branch baru dengan ID baru." width="560" height="280" data-path="images/session-continuity.svg" />

114 114 

115Untuk membuat cabang dan mencoba pendekatan berbeda tanpa mempengaruhi session asli, gunakan flag `--fork-session`:115Untuk flag resume, picker `/resume`, naming, dan apa yang terjadi ketika session yang sama terbuka di dua terminal, lihat [Manage sessions](/id/sessions).

116 

117```bash theme={null}

118claude --continue --fork-session

119```

120 

121Ini membuat session ID baru sambil mempertahankan riwayat percakapan hingga titik itu. Session asli tetap tidak berubah. Seperti resume, session yang di-fork tidak mewarisi izin session-scoped.

122 

123**Session yang sama di multiple terminal**: Jika Anda melanjutkan session yang sama di multiple terminal, kedua terminal menulis ke file session yang sama. Pesan dari keduanya saling tumpang tindih, seperti dua orang menulis di notebook yang sama. Tidak ada yang rusak, tetapi percakapan menjadi kacau. Setiap terminal hanya melihat pesan miliknya sendiri selama session, tetapi jika Anda melanjutkan session itu nanti, Anda akan melihat semuanya saling tumpang tindih. Untuk pekerjaan paralel dari titik awal yang sama, gunakan `--fork-session` untuk memberikan setiap terminal session bersihnya sendiri.

124 116 

125### Context window117### Context window

126 118 


134 126 

135Untuk mengontrol apa yang dipertahankan selama compacting, tambahkan bagian "Compact Instructions" ke CLAUDE.md atau jalankan `/compact` dengan fokus (seperti `/compact focus on the API changes`).127Untuk mengontrol apa yang dipertahankan selama compacting, tambahkan bagian "Compact Instructions" ke CLAUDE.md atau jalankan `/compact` dengan fokus (seperti `/compact focus on the API changes`).

136 128 

129Jika file tunggal atau output tool sangat besar sehingga konteks terisi kembali segera setelah setiap ringkasan, Claude Code berhenti auto-compacting setelah beberapa upaya dan menampilkan error sebagai gantinya dari looping. Lihat [Auto-compaction stops with a thrashing error](/id/troubleshooting#auto-compaction-stops-with-a-thrashing-error) untuk langkah pemulihan.

130 

137Jalankan `/context` untuk melihat apa yang menggunakan ruang. Definisi tool MCP ditunda secara default dan dimuat sesuai permintaan melalui [tool search](/id/mcp#scale-with-mcp-tool-search), jadi hanya nama tool yang mengonsumsi konteks sampai Claude menggunakan tool spesifik. Jalankan `/mcp` untuk memeriksa biaya per-server.131Jalankan `/context` untuk melihat apa yang menggunakan ruang. Definisi tool MCP ditunda secara default dan dimuat sesuai permintaan melalui [tool search](/id/mcp#scale-with-mcp-tool-search), jadi hanya nama tool yang mengonsumsi konteks sampai Claude menggunakan tool spesifik. Jalankan `/mcp` untuk memeriksa biaya per-server.

138 132 

139#### Kelola konteks dengan skills dan subagents133#### Kelola konteks dengan skills dan subagents

140 134 

141Selain compacting, Anda dapat menggunakan fitur lain untuk mengontrol apa yang dimuat ke dalam konteks.135Selain compacting, Anda dapat menggunakan fitur lain untuk mengontrol apa yang dimuat ke dalam konteks.

142 136 

143[Skills](/id/skills) dimuat sesuai permintaan. Claude melihat deskripsi skill pada awal session, tetapi konten lengkap hanya dimuat ketika skill digunakan. Untuk skill yang Anda panggil secara manual, atur `disable-model-invocation: true` untuk menjaga deskripsi keluar dari konteks sampai Anda membutuhkannya.137[Skills](/id/skills) dimuat sesuai permintaan. Claude melihat deskripsi skill pada awal session, tetapi konten lengkap hanya dimuat ketika skill digunakan. Untuk skill yang Anda panggil secara manual, atur `disable-model-invocation: true` untuk menjaga deskripsi keluar dari konteks sampai Anda membutuhkannya. Untuk skill yang tidak Anda tulis, gunakan [`skillOverrides`](/id/skills#override-skill-visibility-from-settings) untuk melakukan hal yang sama dari settings.

144 138 

145[Subagents](/id/sub-agents) mendapatkan konteks segar mereka sendiri, sepenuhnya terpisah dari percakapan utama Anda. Pekerjaan mereka tidak membengkak konteks Anda. Ketika selesai, mereka mengembalikan ringkasan. Isolasi ini adalah alasan mengapa subagents membantu dengan session yang panjang.139[Subagents](/id/sub-agents) mendapatkan konteks segar mereka sendiri, sepenuhnya terpisah dari percakapan utama Anda. Pekerjaan mereka tidak membengkak konteks Anda. Ketika selesai, mereka mengembalikan ringkasan. Isolasi ini adalah alasan mengapa subagents membantu dengan session yang panjang.

146 140 


161Tekan `Shift+Tab` untuk melakukan siklus melalui mode permission:155Tekan `Shift+Tab` untuk melakukan siklus melalui mode permission:

162 156 

163* **Default**: Claude bertanya sebelum edit file dan perintah shell157* **Default**: Claude bertanya sebelum edit file dan perintah shell

164* **Auto-accept edits**: Claude mengedit file tanpa bertanya, masih bertanya untuk perintah158* **Auto-accept edits**: Claude mengedit file dan menjalankan perintah filesystem umum seperti `mkdir` dan `mv` tanpa bertanya, masih bertanya untuk perintah lain

165* **Plan mode**: Claude hanya menggunakan tools read-only, membuat rencana yang dapat Anda setujui sebelum eksekusi159* **Plan mode**: Claude hanya menggunakan tools read-only, membuat rencana yang dapat Anda setujui sebelum eksekusi

166* **Auto mode**: Claude mengevaluasi semua tindakan dengan pemeriksaan keamanan latar belakang. Saat ini preview penelitian160* **Auto mode**: Claude mengevaluasi semua tindakan dengan pemeriksaan keamanan latar belakang. Saat ini preview penelitian

167 161 

Details

11<Note>11<Note>

12 Pintasan keyboard mungkin berbeda menurut platform dan terminal. Tekan `?` untuk melihat pintasan yang tersedia untuk lingkungan Anda.12 Pintasan keyboard mungkin berbeda menurut platform dan terminal. Tekan `?` untuk melihat pintasan yang tersedia untuk lingkungan Anda.

13 13 

14 **Pengguna macOS**: Pintasan tombol Option/Alt (`Alt+B`, `Alt+F`, `Alt+Y`, `Alt+M`, `Alt+P`, `Alt+T`) memerlukan konfigurasi Option sebagai Meta di terminal Anda:14 **Pengguna macOS**: Pintasan tombol Option/Alt (`Alt+B`, `Alt+F`, `Alt+Y`, `Alt+M`, `Alt+P`) memerlukan konfigurasi Option sebagai Meta di terminal Anda:

15 15 

16 * **iTerm2**: Settings → Profiles → Keys → General → atur Left/Right Option key ke "Esc+"16 * **iTerm2**: Settings → Profiles → Keys → General → atur Left/Right Option key ke "Esc+"

17 * **Apple Terminal**: Settings → Profiles → Keyboard → centang "Use Option as Meta Key"17 * **Apple Terminal**: Settings → Profiles → Keyboard → centang "Use Option as Meta Key"


39| `Esc` + `Esc` | Putar ulang atau ringkas | Kembalikan kode dan/atau percakapan ke titik sebelumnya, atau ringkas dari pesan yang dipilih |39| `Esc` + `Esc` | Putar ulang atau ringkas | Kembalikan kode dan/atau percakapan ke titik sebelumnya, atau ringkas dari pesan yang dipilih |

40| `Shift+Tab` atau `Alt+M` (beberapa konfigurasi) | Alihkan mode izin | Beralih antara `default`, `acceptEdits`, `plan`, dan mode apa pun yang telah Anda aktifkan, seperti `auto` atau `bypassPermissions`. Lihat [permission modes](/id/permission-modes). |40| `Shift+Tab` atau `Alt+M` (beberapa konfigurasi) | Alihkan mode izin | Beralih antara `default`, `acceptEdits`, `plan`, dan mode apa pun yang telah Anda aktifkan, seperti `auto` atau `bypassPermissions`. Lihat [permission modes](/id/permission-modes). |

41| `Option+P` (macOS) atau `Alt+P` (Windows/Linux) | Alihkan model | Alihkan model tanpa menghapus prompt Anda |41| `Option+P` (macOS) atau `Alt+P` (Windows/Linux) | Alihkan model | Alihkan model tanpa menghapus prompt Anda |

42| `Option+T` (macOS) atau `Alt+T` (Windows/Linux) | Alihkan extended thinking | Aktifkan atau nonaktifkan mode extended thinking. Di macOS, konfigurasi terminal Anda untuk mengirim Option sebagai Meta agar pintasan ini berfungsi |42| `Option+T` (macOS) atau `Alt+T` (Windows/Linux) | Alihkan extended thinking | Aktifkan atau nonaktifkan mode extended thinking. Mulai dari v2.1.132 pintasan ini berfungsi di macOS tanpa mengonfigurasi Option sebagai Meta |

43| `Option+O` (macOS) atau `Alt+O` (Windows/Linux) | Alihkan mode cepat | Aktifkan atau nonaktifkan [fast mode](/id/fast-mode) |43| `Option+O` (macOS) atau `Alt+O` (Windows/Linux) | Alihkan mode cepat | Aktifkan atau nonaktifkan [fast mode](/id/fast-mode) |

44 44 

45### Pengeditan teks45### Pengeditan teks


68| :------------- | :-------------- | :------------------------------------------------------------------------------------------------------- |68| :------------- | :-------------- | :------------------------------------------------------------------------------------------------------- |

69| Escape cepat | `\` + `Enter` | Berfungsi di semua terminal |69| Escape cepat | `\` + `Enter` | Berfungsi di semua terminal |

70| Tombol Option | `Option+Enter` | Setelah mengaktifkan [Option as Meta](/id/terminal-config#enable-option-key-shortcuts-on-macos) di macOS |70| Tombol Option | `Option+Enter` | Setelah mengaktifkan [Option as Meta](/id/terminal-config#enable-option-key-shortcuts-on-macos) di macOS |

71| Shift+Enter | `Shift+Enter` | Bawaan di iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal |71| Shift+Enter | `Shift+Enter` | Bawaan di iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal, Windows Terminal |

72| Urutan kontrol | `Ctrl+J` | Berfungsi di terminal apa pun tanpa konfigurasi |72| Urutan kontrol | `Ctrl+J` | Berfungsi di terminal apa pun tanpa konfigurasi |

73| Mode tempel | Tempel langsung | Untuk blok kode, log |73| Mode tempel | Tempel langsung | Untuk blok kode, log |

74 74 

75<Tip>75<Tip>

76 Shift+Enter berfungsi tanpa konfigurasi di iTerm2, WezTerm, Ghostty, Kitty, Warp, dan Apple Terminal. Untuk VS Code, Cursor, Windsurf, Alacritty, dan Zed, jalankan `/terminal-setup` untuk memasang binding.76 Shift+Enter berfungsi tanpa konfigurasi di iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal, dan Windows Terminal. Untuk VS Code, Cursor, Windsurf, Alacritty, dan Zed, jalankan `/terminal-setup` untuk memasang binding.

77</Tip>77</Tip>

78 78 

79### Perintah cepat79### Perintah cepat


130| Perintah | Tindakan |130| Perintah | Tindakan |

131| :-------------- | :---------------------------------------------------------- |131| :-------------- | :---------------------------------------------------------- |

132| `h`/`j`/`k`/`l` | Pindah kiri/bawah/atas/kanan |132| `h`/`j`/`k`/`l` | Pindah kiri/bawah/atas/kanan |

133| `Space` | Pindah ke kanan |

133| `w` | Kata berikutnya |134| `w` | Kata berikutnya |

134| `e` | Akhir kata |135| `e` | Akhir kata |

135| `b` | Kata sebelumnya |136| `b` | Kata sebelumnya |

llm-gateway.md +1 −1

Details

53 53 

54Secara default, Claude Code menggunakan nama model standar untuk format API yang dipilih.54Secara default, Claude Code menggunakan nama model standar untuk format API yang dipilih.

55 55 

56Ketika `ANTHROPIC_BASE_URL` menunjuk ke gateway yang mengekspos format Anthropic Messages, Claude Code menanyakan endpoint `/v1/models` gateway saat startup dan menambahkan model yang dikembalikan ke pemilih `/model`. Setiap entri yang ditemukan diberi label "From gateway" dan menggunakan field `display_name` dari respons ketika satu disediakan. Ini memerlukan Claude Code v2.1.126 atau lebih baru.56Ketika `ANTHROPIC_BASE_URL` menunjuk ke gateway yang mengekspos format Anthropic Messages, Claude Code dapat menanyakan endpoint `/v1/models` gateway saat startup dan menambahkan model yang dikembalikan ke pemilih `/model`. Atur `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1` untuk mengaktifkan ini. Penemuan dimatikan secara default sehingga gateway yang didukung oleh kunci API bersama tidak menampilkan setiap model yang dapat diakses kunci ke setiap pengguna. Setiap entri yang ditemukan diberi label "From gateway" dan menggunakan field `display_name` dari respons ketika satu disediakan. Ini memerlukan Claude Code v2.1.129 atau lebih baru.

57 57 

58Penemuan hanya berlaku untuk format Anthropic Messages. Ini tidak berjalan untuk endpoint pass-through Bedrock atau Vertex, dan tidak berjalan ketika `ANTHROPIC_BASE_URL` tidak diatur atau menunjuk ke `api.anthropic.com`.58Penemuan hanya berlaku untuk format Anthropic Messages. Ini tidak berjalan untuk endpoint pass-through Bedrock atau Vertex, dan tidak berjalan ketika `ANTHROPIC_BASE_URL` tidak diatur atau menunjuk ke `api.anthropic.com`.

59 59 

mcp.md +11 −1

Details

327/mcp327/mcp

328```328```

329 329 

330Panel `/mcp` menampilkan jumlah alat di sebelah setiap server yang terhubung dan menandai server yang mengiklankan kemampuan alat tetapi tidak mengekspos alat apa pun.

331 

332Nama server `workspace` dicadangkan untuk penggunaan internal. Jika konfigurasi Anda menentukan server dengan nama tersebut, Claude Code melewatinya saat waktu muat dan menampilkan peringatan yang meminta Anda untuk mengganti namanya.

333 

330### Pembaruan alat dinamis334### Pembaruan alat dinamis

331 335 

332Claude Code mendukung notifikasi `list_changed` MCP, memungkinkan server MCP untuk secara dinamis memperbarui alat, prompt, dan sumber daya yang tersedia tanpa memerlukan Anda untuk memutuskan dan menghubungkan kembali. Ketika server MCP mengirim notifikasi `list_changed`, Claude Code secara otomatis menyegarkan kemampuan yang tersedia dari server tersebut.336Claude Code mendukung notifikasi `list_changed` MCP, memungkinkan server MCP untuk secara dinamis memperbarui alat, prompt, dan sumber daya yang tersedia tanpa memerlukan Anda untuk memutuskan dan menghubungkan kembali. Ketika server MCP mengirim notifikasi `list_changed`, Claude Code secara otomatis menyegarkan kemampuan yang tersedia dari server tersebut.


423 427 

424## Cakupan instalasi MCP428## Cakupan instalasi MCP

425 429 

426Server MCP dapat dikonfigurasi pada tiga cakupan berbeda. Cakupan yang Anda pilih mengontrol proyek mana tempat server dimuat dan apakah konfigurasi dibagikan dengan tim Anda.430Server MCP dapat dikonfigurasi pada tiga cakupan berbeda. Cakupan yang Anda pilih mengontrol proyek mana tempat server dimuat dan apakah konfigurasi dibagikan dengan tim Anda. Administrator juga dapat menerapkan server di tingkat enterprise melalui [konfigurasi terkelola](#managed-mcp-configuration).

427 431 

428| Cakupan | Dimuat dalam | Dibagikan dengan tim | Disimpan dalam |432| Cakupan | Dimuat dalam | Dibagikan dengan tim | Disimpan dalam |

429| ------------------------ | --------------------- | ------------------------- | -------------------------- |433| ------------------------ | --------------------- | ------------------------- | -------------------------- |


944 </Step>948 </Step>

945</Steps>949</Steps>

946 950 

951Server yang telah Anda tambahkan di Claude Code mengambil [prioritas](#scope-hierarchy-and-precedence) atas konektor claude.ai yang menunjuk ke URL yang sama. Ketika ini terjadi, `/mcp` mencantumkan konektor sebagai tersembunyi dan menunjukkan cara menghapus duplikat jika Anda lebih suka menggunakan konektor.

952 

947Untuk menonaktifkan server MCP claude.ai di Claude Code, atur variabel lingkungan `ENABLE_CLAUDEAI_MCP_SERVERS` ke `false`:953Untuk menonaktifkan server MCP claude.ai di Claude Code, atur variabel lingkungan `ENABLE_CLAUDEAI_MCP_SERVERS` ke `false`:

948 954 

949```bash theme={null}955```bash theme={null}


1183 1189 

1184Field `alwaysLoad` tersedia di semua jenis server dan memerlukan Claude Code v2.1.121 atau lebih baru. Server MCP juga dapat menandai alat individual sebagai selalu-dimuat dengan menyertakan `"anthropic/alwaysLoad": true` dalam objek `_meta` alat, yang memiliki efek yang sama hanya untuk alat tersebut.1190Field `alwaysLoad` tersedia di semua jenis server dan memerlukan Claude Code v2.1.121 atau lebih baru. Server MCP juga dapat menandai alat individual sebagai selalu-dimuat dengan menyertakan `"anthropic/alwaysLoad": true` dalam objek `_meta` alat, yang memiliki efek yang sama hanya untuk alat tersebut.

1185 1191 

1192Pengaturan `alwaysLoad: true` juga memblokir startup sampai server terhubung, dibatasi pada timeout koneksi standar 5 detik. Ini berlaku bahkan ketika [`MCP_CONNECTION_NONBLOCKING=1`](/id/env-vars) diatur, karena alat harus ada saat prompt pertama dibangun. Server lain masih terhubung di latar belakang ketika nonblocking diaktifkan.

1193 

1186## Gunakan prompt MCP sebagai perintah1194## Gunakan prompt MCP sebagai perintah

1187 1195 

1188Server MCP dapat mengekspos prompt yang menjadi tersedia sebagai perintah di Claude Code.1196Server MCP dapat mengekspos prompt yang menjadi tersedia sebagai perintah di Claude Code.


1351* `https://*.example.com/*` - Izinkan subdomain apa pun dari example.com1359* `https://*.example.com/*` - Izinkan subdomain apa pun dari example.com

1352* `http://localhost:*/*` - Izinkan port apa pun di localhost1360* `http://localhost:*/*` - Izinkan port apa pun di localhost

1353 1361 

1362Pencocokan nama host tidak peka huruf besar-kecil dan mengabaikan titik FQDN yang tertinggal, sesuai dengan semantik DNS. Pola seperti `*://Mcp.Example.com/*` cocok dengan `https://mcp.example.com/api`, dan `https://mcp.example.com.` diperlakukan sama dengan `https://mcp.example.com`. Skema dan jalur tetap peka huruf besar-kecil.

1363 

1354**Perilaku server jarak jauh**:1364**Perilaku server jarak jauh**:

1355 1365 

1356* Ketika daftar putih berisi **entri** `serverUrl` apa pun, server jarak jauh **harus** cocok dengan salah satu pola URL tersebut1366* Ketika daftar putih berisi **entri** `serverUrl` apa pun, server jarak jauh **harus** cocok dengan salah satu pola URL tersebut

memory.md +3 −1

Details

378* Buat instruksi lebih spesifik. "Gunakan indentasi 2 spasi" bekerja lebih baik daripada "format kode dengan baik."378* Buat instruksi lebih spesifik. "Gunakan indentasi 2 spasi" bekerja lebih baik daripada "format kode dengan baik."

379* Cari instruksi yang bertentangan di seluruh file CLAUDE.md. Jika dua file memberikan panduan berbeda untuk perilaku yang sama, Claude mungkin memilih satu secara sembarangan.379* Cari instruksi yang bertentangan di seluruh file CLAUDE.md. Jika dua file memberikan panduan berbeda untuk perilaku yang sama, Claude mungkin memilih satu secara sembarangan.

380 380 

381Jika instruksi adalah sesuatu yang harus berjalan pada titik tertentu, seperti sebelum setiap commit atau setelah setiap pengeditan file, tulislah sebagai [hook](/id/hooks-guide) sebagai gantinya. Hook dieksekusi sebagai perintah shell pada peristiwa siklus hidup tetap dan berlaku terlepas dari apa yang Claude putuskan untuk lakukan.

382 

381Untuk instruksi yang Anda inginkan di tingkat prompt sistem, gunakan [`--append-system-prompt`](/id/cli-reference#system-prompt-flags). Ini harus dilewatkan setiap invokasi, jadi lebih cocok untuk skrip dan otomasi daripada penggunaan interaktif.383Untuk instruksi yang Anda inginkan di tingkat prompt sistem, gunakan [`--append-system-prompt`](/id/cli-reference#system-prompt-flags). Ini harus dilewatkan setiap invokasi, jadi lebih cocok untuk skrip dan otomasi daripada penggunaan interaktif.

382 384 

383<Tip>385<Tip>


394 396 

395### Instruksi tampak hilang setelah `/compact`397### Instruksi tampak hilang setelah `/compact`

396 398 

397CLAUDE.md root proyek bertahan dari pemadatan: setelah `/compact`, Claude membaca ulang CLAUDE.md dari disk dan menyuntikkannya kembali ke dalam sesi. File CLAUDE.md bersarang di subdirektori tidak disuntikkan kembali secara otomatis; mereka dimuat ulang saat berikutnya Claude membaca file di subdirektori tersebut.399CLAUDE.md root proyek bertahan dari pemadatan: setelah `/compact`, Claude membaca ulang dari disk dan menyuntikkannya kembali ke dalam sesi. File CLAUDE.md bersarang di subdirektori tidak disuntikkan kembali secara otomatis; mereka dimuat ulang saat berikutnya Claude membaca file di subdirektori tersebut.

398 400 

399Jika instruksi hilang setelah pemadatan, itu diberikan hanya dalam percakapan atau berada di CLAUDE.md bersarang yang belum dimuat ulang. Tambahkan instruksi percakapan ke CLAUDE.md untuk membuatnya bertahan. Lihat [Apa yang bertahan pemadatan](/id/context-window#what-survives-compaction) untuk rincian lengkap.401Jika instruksi hilang setelah pemadatan, itu diberikan hanya dalam percakapan atau berada di CLAUDE.md bersarang yang belum dimuat ulang. Tambahkan instruksi percakapan ke CLAUDE.md untuk membuatnya bertahan. Lihat [Apa yang bertahan pemadatan](/id/context-window#what-survives-compaction) untuk rincian lengkap.

400 402 

model-config.md +18 −4

Details

184 184 

185Skala usaha dikalibrasi per model, jadi nama tingkat yang sama tidak mewakili nilai yang sama di seluruh model.185Skala usaha dikalibrasi per model, jadi nama tingkat yang sama tidak mewakili nilai yang sama di seluruh model.

186 186 

187Untuk penalaran mendalam sekali tanpa mengubah pengaturan sesi Anda, sertakan "ultrathink" dalam prompt Anda. Ini menambahkan instruksi dalam konteks yang memberi tahu model untuk bernalar lebih pada giliran itu; ini tidak mengubah tingkat usaha yang dikirim ke API.187#### Gunakan ultrathink untuk penalaran mendalam sekali

188 

189Sertakan `ultrathink` di mana saja dalam prompt Anda untuk meminta penalaran lebih dalam pada giliran itu tanpa mengubah pengaturan usaha sesi Anda. Claude Code mengenali kata kunci dan menambahkan instruksi dalam konteks. Tingkat usaha yang dikirim ke API tidak berubah. Frasa lain seperti "think", "think hard", dan "think more" dilewatkan sebagai teks prompt biasa dan tidak dikenali sebagai kata kunci.

188 190 

189#### Atur tingkat usaha191#### Atur tingkat usaha

190 192 


209 211 

210Di Opus 4.6 dan Sonnet 4.6, Anda dapat mengatur `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` untuk kembali ke anggaran pemikiran tetap sebelumnya yang dikendalikan oleh `MAX_THINKING_TOKENS`. Lihat [variabel lingkungan](/id/env-vars).212Di Opus 4.6 dan Sonnet 4.6, Anda dapat mengatur `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` untuk kembali ke anggaran pemikiran tetap sebelumnya yang dikendalikan oleh `MAX_THINKING_TOKENS`. Lihat [variabel lingkungan](/id/env-vars).

211 213 

214### Pemikiran diperluas

215 

216Pemikiran diperluas adalah penalaran yang Claude keluarkan sebelum merespons. Pada model yang mendukung [penalaran adaptif](#adjust-effort-level), tingkat usaha adalah kontrol utama untuk berapa banyak pemikiran yang terjadi; pengaturan di bawah ini menghidupkan atau mematikan pemikiran dan mengontrol cara tampilannya.

217 

218| Kontrol | Cara menetapkannya |

219| :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------- |

220| Toggle untuk sesi saat ini | Tekan `Option+T` di macOS atau `Alt+T` di Windows dan Linux |

221| Atur default global | Jalankan `/config` dan toggle thinking mode. Disimpan sebagai `alwaysThinkingEnabled` dalam `~/.claude/settings.json` |

222| Nonaktifkan terlepas dari usaha | Atur [`MAX_THINKING_TOKENS=0`](/id/env-vars). Nilai lain berlaku hanya dengan [anggaran pemikiran tetap](#adaptive-reasoning-and-fixed-thinking-budgets) |

223 

224Output pemikiran dilipat secara default. Tekan `Ctrl+O` untuk toggle verbose mode dan lihat penalaran sebagai teks miring abu-abu. Sesi interaktif di Anthropic API menerima blok pemikiran yang diredaksi secara default, jadi atur `showThinkingSummaries: true` dalam [pengaturan](/id/settings) jika Anda menginginkan ringkasan lengkap yang tersedia saat Anda memperluas. Anda dikenakan biaya untuk semua token pemikiran yang dihasilkan, bahkan ketika dilipat atau diredaksi.

225 

212### Konteks diperluas226### Konteks diperluas

213 227 

214Opus 4.7, Opus 4.6, dan Sonnet 4.6 mendukung [jendela konteks 1 juta token](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) untuk sesi panjang dengan basis kode besar.228Opus 4.7, Opus 4.6, dan Sonnet 4.6 mendukung [jendela konteks 1 juta token](https://platform.claude.com/docs/en/build-with-claude/context-windows#1m-token-context-window) untuk sesi panjang dengan basis kode besar.


247 261 

248## Tambahkan opsi model kustom262## Tambahkan opsi model kustom

249 263 

250Gunakan `ANTHROPIC_CUSTOM_MODEL_OPTION` untuk menambahkan satu entri kustom ke pemilih `/model` tanpa mengganti alias bawaan. Ini berguna untuk pengujian ID model yang tidak tercantum Claude Code secara default. Untuk deployment gateway LLM, Claude Code mengisi pemilih secara otomatis dari endpoint `/v1/models` gateway, jadi variabel ini diperlukan hanya ketika penemuan tidak mengembalikan model yang Anda inginkan. Lihat [pemilihan model gateway LLM](/id/llm-gateway#model-selection).264Gunakan `ANTHROPIC_CUSTOM_MODEL_OPTION` untuk menambahkan satu entri kustom ke pemilih `/model` tanpa mengganti alias bawaan. Ini berguna untuk pengujian ID model yang tidak tercantum Claude Code secara default. Untuk deployment gateway LLM, Claude Code dapat mengisi pemilih dari endpoint `/v1/models` gateway ketika `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1` diatur, jadi variabel ini diperlukan hanya ketika penemuan dinonaktifkan atau tidak mengembalikan model yang Anda inginkan. Lihat [pemilihan model gateway LLM](/id/llm-gateway#model-selection).

251 265 

252Contoh ini menetapkan ketiga variabel untuk membuat deployment Opus yang dirutekan gateway dapat dipilih:266Contoh ini menetapkan ketiga variabel untuk membuat deployment Opus yang dirutekan gateway dapat dipilih:

253 267 


320 334 

321Akhiran `_NAME`, `_DESCRIPTION`, dan `_SUPPORTED_CAPABILITIES` yang sama tersedia untuk `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL`, dan `ANTHROPIC_CUSTOM_MODEL_OPTION`.335Akhiran `_NAME`, `_DESCRIPTION`, dan `_SUPPORTED_CAPABILITIES` yang sama tersedia untuk `ANTHROPIC_DEFAULT_SONNET_MODEL`, `ANTHROPIC_DEFAULT_HAIKU_MODEL`, dan `ANTHROPIC_CUSTOM_MODEL_OPTION`.

322 336 

323Claude Code mengaktifkan fitur seperti [tingkat usaha](#adjust-effort-level) dan [extended thinking](/id/common-workflows#use-extended-thinking-thinking-mode) dengan mencocokkan ID model terhadap pola yang dikenal. ID spesifik penyedia seperti ARN Bedrock atau nama deployment kustom sering kali tidak cocok dengan pola ini, meninggalkan fitur yang didukung dinonaktifkan. Atur `_SUPPORTED_CAPABILITIES` untuk memberi tahu Claude Code fitur mana yang benar-benar didukung model:337Claude Code mengaktifkan fitur seperti [tingkat usaha](#adjust-effort-level) dan [extended thinking](#extended-thinking) dengan mencocokkan ID model terhadap pola yang dikenal. ID spesifik penyedia seperti ARN Bedrock atau nama deployment kustom sering kali tidak cocok dengan pola ini, meninggalkan fitur yang didukung dinonaktifkan. Atur `_SUPPORTED_CAPABILITIES` untuk memberi tahu Claude Code fitur mana yang benar-benar didukung model:

324 338 

325| Nilai kemampuan | Mengaktifkan |339| Nilai kemampuan | Mengaktifkan |

326| ---------------------- | --------------------------------------------------------------------------------------------- |340| ---------------------- | --------------------------------------------------------------------------------------------- |

327| `effort` | [Tingkat usaha](#adjust-effort-level) dan perintah `/effort` |341| `effort` | [Tingkat usaha](#adjust-effort-level) dan perintah `/effort` |

328| `xhigh_effort` | {/* min-version: 2.1.111 */}Tingkat usaha `xhigh` |342| `xhigh_effort` | {/* min-version: 2.1.111 */}Tingkat usaha `xhigh` |

329| `max_effort` | Tingkat usaha `max` |343| `max_effort` | Tingkat usaha `max` |

330| `thinking` | [Extended thinking](/id/common-workflows#use-extended-thinking-thinking-mode) |344| `thinking` | [Extended thinking](#extended-thinking) |

331| `adaptive_thinking` | Penalaran adaptif yang secara dinamis mengalokasikan pemikiran berdasarkan kompleksitas tugas |345| `adaptive_thinking` | Penalaran adaptif yang secara dinamis mengalokasikan pemikiran berdasarkan kompleksitas tugas |

332| `interleaved_thinking` | Pemikiran antara panggilan alat |346| `interleaved_thinking` | Pemikiran antara panggilan alat |

333 347 

Details

64 Pengaturan terkelola dapat didistribusikan melalui MDM (Mobile Device Management) atau solusi manajemen perangkat lainnya. Variabel lingkungan yang ditentukan dalam file pengaturan terkelola memiliki prioritas tinggi dan tidak dapat ditimpa oleh pengguna.64 Pengaturan terkelola dapat didistribusikan melalui MDM (Mobile Device Management) atau solusi manajemen perangkat lainnya. Variabel lingkungan yang ditentukan dalam file pengaturan terkelola memiliki prioritas tinggi dan tidak dapat ditimpa oleh pengguna.

65</Note>65</Note>

66 66 

67Claude Code tidak meneruskan variabel lingkungan `OTEL_*` ke subproses yang dihasilkannya, termasuk alat Bash, hooks, server MCP, dan language servers. Aplikasi yang diinstrumentasi OpenTelemetry yang Anda jalankan melalui alat Bash tidak mewarisi titik akhir pengekspor atau header Claude Code, jadi atur variabel tersebut langsung dalam perintah jika aplikasi itu perlu mengekspor telemetrinya sendiri.

68 

67## Detail konfigurasi69## Detail konfigurasi

68 70 

69### Variabel konfigurasi umum71### Variabel konfigurasi umum


80| `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` | Protokol untuk log, menimpa pengaturan umum | `grpc`, `http/json`, `http/protobuf` |82| `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` | Protokol untuk log, menimpa pengaturan umum | `grpc`, `http/json`, `http/protobuf` |

81| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | Titik akhir log OTLP, menimpa pengaturan umum | `http://localhost:4318/v1/logs` |83| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | Titik akhir log OTLP, menimpa pengaturan umum | `http://localhost:4318/v1/logs` |

82| `OTEL_EXPORTER_OTLP_HEADERS` | Header autentikasi untuk OTLP | `Authorization=Bearer token` |84| `OTEL_EXPORTER_OTLP_HEADERS` | Header autentikasi untuk OTLP | `Authorization=Bearer token` |

83| `OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY` | Kunci klien untuk autentikasi mTLS | Jalur ke file kunci klien |

84| `OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE` | Sertifikat klien untuk autentikasi mTLS | Jalur ke file sertifikat klien |

85| `OTEL_METRIC_EXPORT_INTERVAL` | Interval ekspor dalam milidetik (default: 60000) | `5000`, `60000` |85| `OTEL_METRIC_EXPORT_INTERVAL` | Interval ekspor dalam milidetik (default: 60000) | `5000`, `60000` |

86| `OTEL_LOGS_EXPORT_INTERVAL` | Interval ekspor log dalam milidetik (default: 5000) | `1000`, `10000` |86| `OTEL_LOGS_EXPORT_INTERVAL` | Interval ekspor log dalam milidetik (default: 5000) | `1000`, `10000` |

87| `OTEL_LOG_USER_PROMPTS` | Aktifkan pencatatan konten prompt pengguna (default: dinonaktifkan) | `1` untuk mengaktifkan |87| `OTEL_LOG_USER_PROMPTS` | Aktifkan pencatatan konten prompt pengguna (default: dinonaktifkan) | `1` untuk mengaktifkan |


91| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Preferensi temporalitas metrik (default: `delta`). Atur ke `cumulative` jika backend Anda mengharapkan temporalitas kumulatif | `delta`, `cumulative` |91| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | Preferensi temporalitas metrik (default: `delta`). Atur ke `cumulative` jika backend Anda mengharapkan temporalitas kumulatif | `delta`, `cumulative` |

92| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Interval untuk menyegarkan header dinamis (default: 1740000ms / 29 menit) | `900000` |92| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Interval untuk menyegarkan header dinamis (default: 1740000ms / 29 menit) | `900000` |

93 93 

94### Autentikasi mTLS

95 

96Cara Anda mengonfigurasi sertifikat klien untuk pengekspor OTLP tergantung pada protokol OTLP yang digunakan untuk sinyal tersebut, diatur melalui `OTEL_EXPORTER_OTLP_PROTOCOL` atau override per-sinyal. Konfigurasi yang sama berlaku untuk metrik, log, dan traces.

97 

98| Protokol | Variabel sertifikat klien | Percayai CA pengumpul dengan |

99| :--------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------- |

100| `http/protobuf`, `http/json` | `CLAUDE_CODE_CLIENT_CERT`, `CLAUDE_CODE_CLIENT_KEY`, dan secara opsional `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE`. Lihat [Konfigurasi jaringan](/id/network-config#mtls-authentication) | `NODE_EXTRA_CA_CERTS` |

101| `grpc` | `OTEL_EXPORTER_OTLP_CLIENT_KEY` dan `OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE`, atau varian per-sinyal seperti `OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY` untuk menggunakan sertifikat berbeda per sinyal | `OTEL_EXPORTER_OTLP_CERTIFICATE` |

102 

103Untuk `grpc`, SDK OpenTelemetry membaca variabel OTLP standar secara langsung, jadi konfigurasi yang ada yang menetapkan variabel metrik per-sinyal terus berfungsi.

104 

94### Kontrol kardinalitas metrik105### Kontrol kardinalitas metrik

95 106 

96Variabel lingkungan berikut mengontrol atribut mana yang disertakan dalam metrik untuk mengelola kardinalitas:107Variabel lingkungan berikut mengontrol atribut mana yang disertakan dalam metrik untuk mengelola kardinalitas:


107 118 

108Distributed tracing mengekspor spans yang menghubungkan setiap prompt pengguna ke permintaan API dan eksekusi alat yang dipicunya, sehingga Anda dapat melihat permintaan lengkap sebagai satu trace di backend tracing Anda.119Distributed tracing mengekspor spans yang menghubungkan setiap prompt pengguna ke permintaan API dan eksekusi alat yang dipicunya, sehingga Anda dapat melihat permintaan lengkap sebagai satu trace di backend tracing Anda.

109 120 

110Tracing dimatikan secara default. Untuk mengaktifkannya, atur `CLAUDE_CODE_ENABLE_TELEMETRY=1` dan `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`, kemudian atur `OTEL_TRACES_EXPORTER` untuk memilih tempat spans dikirim. Traces menggunakan kembali [konfigurasi OTLP umum](#common-configuration-variables) untuk titik akhir, protokol, dan header.121Tracing dimatikan secara default. Untuk mengaktifkannya, atur `CLAUDE_CODE_ENABLE_TELEMETRY=1` dan `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1`, kemudian atur `OTEL_TRACES_EXPORTER` untuk memilih tempat spans dikirim. Traces menggunakan kembali [konfigurasi OTLP umum](#common-configuration-variables) untuk titik akhir, protokol, header, dan [mTLS](#mtls-authentication).

111 122 

112| Variabel Lingkungan | Deskripsi | Nilai Contoh |123| Variabel Lingkungan | Deskripsi | Nilai Contoh |

113| ------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------ |124| ------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------ |


233 244 

234### Header dinamis245### Header dinamis

235 246 

236Untuk lingkungan perusahaan yang memerlukan autentikasi dinamis, Anda dapat mengonfigurasi skrip untuk menghasilkan header secara dinamis:247Untuk lingkungan perusahaan yang memerlukan autentikasi dinamis, Anda dapat mengonfigurasi skrip untuk menghasilkan header secara dinamis. Header dinamis hanya berlaku untuk protokol `http/protobuf` dan `http/json`. Pengekspor `grpc` hanya menggunakan nilai statis `OTEL_EXPORTER_OTLP_HEADERS`.

237 248 

238#### Konfigurasi pengaturan249#### Konfigurasi pengaturan

239 250 


410 421 

411#### Penghitung permintaan tarik422#### Penghitung permintaan tarik

412 423 

413Ditingkatkan saat membuat permintaan tarik melalui Claude Code.424Ditingkatkan saat Claude Code membuat permintaan tarik atau merge request melalui perintah shell atau alat MCP.

414 425 

415**Atribut**:426**Atribut**:

416 427 

output-styles.md +13 −7

Details

6 6 

7> Sesuaikan Claude Code untuk penggunaan di luar rekayasa perangkat lunak7> Sesuaikan Claude Code untuk penggunaan di luar rekayasa perangkat lunak

8 8 

9Output styles memungkinkan Anda menggunakan Claude Code sebagai jenis agen apa pun sambil mempertahankan9Output styles mengubah cara Claude merespons, bukan apa yang Claude ketahui. Mereka memodifikasi system prompt untuk menetapkan peran, nada, dan format output sambil mempertahankan kemampuan inti seperti menjalankan skrip, membaca dan menulis file, serta melacak TODOs. Gunakan satu ketika Anda terus-menerus meminta kembali untuk suara atau format yang sama setiap giliran, atau ketika Anda ingin Claude bertindak sebagai sesuatu selain seorang insinyur perangkat lunak.

10kemampuan intinya, seperti menjalankan skrip lokal, membaca/menulis file, dan10 

11melacak TODOs.11Untuk instruksi tentang proyek, konvensi, atau codebase Anda, gunakan [CLAUDE.md](/id/memory) sebagai gantinya.

12 12 

13## Built-in output styles13## Built-in output styles

14 14 

15**Default** output style Claude Code adalah system prompt yang ada, dirancang15Output style **Default** Claude Code adalah system prompt yang ada, dirancang

16untuk membantu Anda menyelesaikan tugas-tugas rekayasa perangkat lunak secara efisien.16untuk membantu Anda menyelesaikan tugas-tugas rekayasa perangkat lunak secara efisien.

17 17 

18Ada dua built-in output styles tambahan yang berfokus pada pengajaran Anda tentang18Ada dua built-in output styles tambahan yang berfokus pada pengajaran Anda tentang


86[Define how the assistant should behave in this style...]86[Define how the assistant should behave in this style...]

87```87```

88 88 

89Anda dapat menyimpan file-file ini di tingkat pengguna (`~/.claude/output-styles`) atau89Anda dapat menyimpan file-file ini di tiga tingkat:

90tingkat proyek (`.claude/output-styles`).90 

91* User: `~/.claude/output-styles`

92* Project: `.claude/output-styles`

93* Managed policy: `.claude/output-styles` di dalam [direktori pengaturan terkelola](/id/settings#settings-files)

94 

95[Plugins](/id/plugins-reference) juga dapat mengirimkan output styles dalam direktori `output-styles/`.

91 96 

92### Frontmatter97### Frontmatter

93 98 

94File output style mendukung frontmatter untuk menentukan metadata:99File output style mendukung frontmatter untuk menentukan metadata:

95 100 

96| Frontmatter | Tujuan | Default |101| Frontmatter | Tujuan | Default |

97| :------------------------- | :-------------------------------------------------------------------------------------------------- | :---------------------- |102| :------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------- |

98| `name` | Nama output style, jika bukan nama file | Mewarisi dari nama file |103| `name` | Nama output style, jika bukan nama file | Mewarisi dari nama file |

99| `description` | Deskripsi output style, ditampilkan dalam picker `/config` | Tidak ada |104| `description` | Deskripsi output style, ditampilkan dalam picker `/config` | Tidak ada |

100| `keep-coding-instructions` | Apakah akan mempertahankan bagian-bagian dari system prompt Claude Code yang terkait dengan coding. | false |105| `keep-coding-instructions` | Apakah akan mempertahankan bagian-bagian dari system prompt Claude Code yang terkait dengan coding. | false |

106| `force-for-plugin` | Plugin output styles hanya: terapkan style ini secara otomatis kapan pun plugin diaktifkan, tanpa memerlukan pengguna untuk memilihnya. Mengesampingkan pengaturan `outputStyle` pengguna. Jika beberapa plugin yang diaktifkan menetapkan ini, yang pertama dimuat menang. | false |

101 107 

102## Perbandingan dengan fitur terkait108## Perbandingan dengan fitur terkait

103 109 

plugins.md +6 −0

Details

315 ```315 ```

316</Tip>316</Tip>

317 317 

318Untuk menguji plugin yang sudah dikemas sebagai arsip `.zip` dan dihosting di URL, seperti artefak build CI, gunakan `--plugin-url` sebagai gantinya. Claude Code mengambil arsip saat startup dan memuatnya hanya untuk sesi itu. Jika pengambilan gagal atau arsip tidak valid, Claude Code melaporkan kesalahan pemuatan plugin dan dimulai tanpanya. Pertimbangan [kepercayaan](/id/discover-plugins#security) yang sama berlaku seperti untuk sumber plugin apa pun: hanya arahkan flag ini ke arsip yang Anda kontrol atau percayai.

319 

320```bash theme={null}

321claude --plugin-url https://example.com/my-plugin.zip

322```

323 

318### Debug masalah plugin324### Debug masalah plugin

319 325 

320Jika plugin Anda tidak bekerja seperti yang diharapkan:326Jika plugin Anda tidak bekerja seperti yang diharapkan:

Details

301]301]

302```302```

303 303 

304Untuk mendeklarasikan monitors inline, atur kunci `monitors` di `plugin.json` ke array yang sama. Untuk memuat dari jalur non-default, atur `monitors` ke string jalur relatif seperti `"./config/monitors.json"`.304Untuk mendeklarasikan monitors inline, atur `experimental.monitors` di `plugin.json` ke array yang sama. Untuk memuat dari jalur non-default, atur `experimental.monitors` ke string jalur relatif seperti `"./config/monitors.json"`. Monitors adalah [komponen eksperimental](#experimental-components).

305 305 

306**Field yang diperlukan:**306**Field yang diperlukan:**

307 307 


323 323 

324### Themes324### Themes

325 325 

326Plugins dapat mengirimkan color themes yang muncul di `/theme` bersama preset bawaan dan themes lokal pengguna. Sebuah theme adalah file JSON di `themes/` dengan preset `base` dan peta `overrides` yang sparse dari color tokens.326Plugins dapat mengirimkan color themes yang muncul di `/theme` bersama preset bawaan dan themes lokal pengguna. Sebuah theme adalah file JSON di `themes/` dengan preset `base` dan peta `overrides` yang sparse dari color tokens. Themes adalah [komponen eksperimental](#experimental-components).

327 327 

328```json theme={null}328```json theme={null}

329{329{


384 "hooks": "./config/hooks.json",384 "hooks": "./config/hooks.json",

385 "mcpServers": "./mcp-config.json",385 "mcpServers": "./mcp-config.json",

386 "outputStyles": "./styles/",386 "outputStyles": "./styles/",

387 "themes": "./themes/",

388 "lspServers": "./.lsp.json",387 "lspServers": "./.lsp.json",

389 "monitors": "./monitors.json",388 "experimental": {

389 "themes": "./themes/",

390 "monitors": "./monitors.json"

391 },

390 "dependencies": [392 "dependencies": [

391 "helper-lib",393 "helper-lib",

392 { "name": "secrets-vault", "version": "~2.1.0" }394 { "name": "secrets-vault", "version": "~2.1.0" }


420### Field jalur komponen422### Field jalur komponen

421 423 

422| Field | Tipe | Deskripsi | Contoh |424| Field | Tipe | Deskripsi | Contoh |

423| :------------- | :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |425| :---------------------- | :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

424| `skills` | string\|array | Direktori skill khusus yang berisi `<name>/SKILL.md` (menggantikan default `skills/`) | `"./custom/skills/"` |426| `skills` | string\|array | Direktori skill khusus yang berisi `<name>/SKILL.md` (menggantikan default `skills/`) | `"./custom/skills/"` |

425| `commands` | string\|array | File skill `.md` datar atau direktori khusus (menggantikan default `commands/`) | `"./custom/cmd.md"` atau `["./cmd1.md"]` |427| `commands` | string\|array | File skill `.md` datar atau direktori khusus (menggantikan default `commands/`) | `"./custom/cmd.md"` atau `["./cmd1.md"]` |

426| `agents` | string\|array | File agent khusus (menggantikan default `agents/`) | `"./custom/agents/reviewer.md"` |428| `agents` | string\|array | File agent khusus (menggantikan default `agents/`) | `"./custom/agents/reviewer.md"` |

427| `hooks` | string\|array\|object | Jalur konfigurasi hook atau konfigurasi inline | `"./my-extra-hooks.json"` |429| `hooks` | string\|array\|object | Jalur konfigurasi hook atau konfigurasi inline | `"./my-extra-hooks.json"` |

428| `mcpServers` | string\|array\|object | Jalur konfigurasi MCP atau konfigurasi inline | `"./my-extra-mcp-config.json"` |430| `mcpServers` | string\|array\|object | Jalur konfigurasi MCP atau konfigurasi inline | `"./my-extra-mcp-config.json"` |

429| `outputStyles` | string\|array | File/direktori gaya output khusus (menggantikan default `output-styles/`) | `"./styles/"` |431| `outputStyles` | string\|array | File/direktori gaya output khusus (menggantikan default `output-styles/`) | `"./styles/"` |

430| `themes` | string\|array | File/direktori tema warna (menggantikan default `themes/`). Lihat [Themes](#themes) | `"./themes/"` |

431| `lspServers` | string\|array\|object | Konfigurasi [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) untuk intelijen kode (buka definisi, temukan referensi, dll.) | `"./.lsp.json"` |432| `lspServers` | string\|array\|object | Konfigurasi [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) untuk intelijen kode (buka definisi, temukan referensi, dll.) | `"./.lsp.json"` |

432| `monitors` | string\|array | Konfigurasi [Monitor](/id/tools-reference#monitor-tool) latar belakang yang dimulai secara otomatis saat plugin aktif. Lihat [Monitors](#monitors) | `"./monitors.json"` |433| `experimental.themes` | string\|array | File/direktori tema warna (menggantikan default `themes/`). Lihat [Themes](#themes) | `"./themes/"` |

434| `experimental.monitors` | string\|array | Konfigurasi [Monitor](/id/tools-reference#monitor-tool) latar belakang yang dimulai secara otomatis saat plugin aktif. Lihat [Monitors](#monitors) | `"./monitors.json"` |

433| `userConfig` | object | Nilai yang dapat dikonfigurasi pengguna yang diminta saat enable. Lihat [User configuration](#user-configuration) | Lihat di bawah |435| `userConfig` | object | Nilai yang dapat dikonfigurasi pengguna yang diminta saat enable. Lihat [User configuration](#user-configuration) | Lihat di bawah |

434| `channels` | array | Deklarasi channel untuk message injection (Telegram, Slack, Discord style). Lihat [Channels](#channels) | Lihat di bawah |436| `channels` | array | Deklarasi channel untuk message injection (Telegram, Slack, Discord style). Lihat [Channels](#channels) | Lihat di bawah |

435| `dependencies` | array | Plugin lain yang diperlukan plugin ini, secara opsional dengan batasan versi semver. Lihat [Constrain plugin dependency versions](/id/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |437| `dependencies` | array | Plugin lain yang diperlukan plugin ini, secara opsional dengan batasan versi semver. Lihat [Constrain plugin dependency versions](/id/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |

436 438 

439### Komponen eksperimental

440 

441Komponen di bawah kunci `experimental`, `themes` dan `monitors`, memiliki skema manifest yang mungkin berubah antar rilis saat mereka stabil. Di mana Anda mendeklarasikannya adalah migrasi terpisah: tingkat atas masih berfungsi, `claude plugin validate` memperingatkan, dan rilis mendatang akan memerlukan `experimental.*`.

442 

437### User configuration443### User configuration

438 444 

439Field `userConfig` mendeklarasikan nilai yang Claude Code minta dari pengguna saat plugin diaktifkan. Gunakan ini daripada memerlukan pengguna untuk mengedit `settings.json` secara manual.445Field `userConfig` mendeklarasikan nilai yang Claude Code minta dari pengguna saat plugin diaktifkan. Gunakan ini daripada memerlukan pengguna untuk mengedit `settings.json` secara manual.


504 510 

505### Aturan perilaku jalur511### Aturan perilaku jalur

506 512 

507Untuk `skills`, `commands`, `agents`, `outputStyles`, `themes`, dan `monitors`, jalur khusus menggantikan default. Jika manifest menentukan `skills`, direktori default `skills/` tidak dipindai; jika menentukan `monitors`, default `monitors/monitors.json` tidak dimuat. [Hooks](#hooks), [MCP servers](#mcp-servers), dan [LSP servers](#lsp-servers) memiliki semantik berbeda untuk menangani beberapa sumber.513Untuk `skills`, `commands`, `agents`, `outputStyles`, `experimental.themes`, dan `experimental.monitors`, jalur khusus menggantikan default. Jika manifest menentukan `skills`, direktori default `skills/` tidak dipindai; jika menentukan `experimental.monitors`, default `monitors/monitors.json` tidak dimuat. [Hooks](#hooks), [MCP servers](#mcp-servers), dan [LSP servers](#lsp-servers) memiliki semantik berbeda untuk menangani beberapa sumber.

508 514 

509* Semua jalur harus relatif terhadap root plugin dan dimulai dengan `./`515* Semua jalur harus relatif terhadap root plugin dan dimulai dengan `./`

510* Komponen dari jalur khusus menggunakan aturan penamaan dan namespacing yang sama516* Komponen dari jalur khusus menggunakan aturan penamaan dan namespacing yang sama


601 607 

602***608***

603 609 

604## Caching plugin dan resolusi file610## Plugin caching dan resolusi file

605 611 

606Plugins ditentukan dalam salah satu dari dua cara:612Plugins ditentukan dalam salah satu dari dua cara:

607 613 

608* Melalui `claude --plugin-dir`, untuk durasi sesi.614* Melalui `claude --plugin-dir` atau `claude --plugin-url`, untuk durasi sesi.

609* Melalui marketplace, dipasang untuk sesi mendatang.615* Melalui marketplace, dipasang untuk sesi mendatang.

610 616 

611Untuk tujuan keamanan dan verifikasi, Claude Code menyalin plugin *marketplace* ke **plugin cache** lokal pengguna (`~/.claude/plugins/cache`) daripada menggunakannya di tempat. Memahami perilaku ini penting saat mengembangkan plugins yang mereferensikan file eksternal.617Untuk tujuan keamanan dan verifikasi, Claude Code menyalin plugin *marketplace* ke **plugin cache** lokal pengguna (`~/.claude/plugins/cache`) daripada menggunakannya di tempat. Memahami perilaku ini penting saat mengembangkan plugins yang mereferensikan file eksternal.

routines.md +68 −18

Details

14 14 

15Setiap rutinitas dapat memiliki satu atau lebih pemicu yang terpasang padanya:15Setiap rutinitas dapat memiliki satu atau lebih pemicu yang terpasang padanya:

16 16 

17* **Terjadwal**: berjalan dengan frekuensi berulang seperti per jam, malam hari, atau mingguan17* **Terjadwal**: berjalan dengan frekuensi berulang seperti per jam, malam hari, atau mingguan, atau sekali pada waktu masa depan tertentu

18* **API**: dipicu sesuai permintaan dengan mengirim POST HTTP ke titik akhir per-rutinitas dengan token pembawa18* **API**: dipicu sesuai permintaan dengan mengirim POST HTTP ke titik akhir per-rutinitas dengan token pembawa

19* **GitHub**: berjalan secara otomatis sebagai respons terhadap peristiwa repositori seperti permintaan tarik atau rilis19* **GitHub**: berjalan secara otomatis sebagai respons terhadap peristiwa repositori seperti permintaan tarik atau rilis

20 20 


44 44 

45## Buat rutinitas45## Buat rutinitas

46 46 

47Buat rutinitas dari web, aplikasi Desktop, atau CLI. Ketiga permukaan menulis ke akun cloud yang sama, sehingga rutinitas yang Anda buat di CLI muncul di claude.ai/code/routines segera. Di aplikasi Desktop, klik **New task** dan pilih **New remote task**; memilih **New local task** malah membuat [tugas terjadwal Desktop lokal](/id/desktop-scheduled-tasks), yang berjalan di mesin Anda dan bukan rutinitas.47Buat rutinitas dari web di [claude.ai/code/routines](https://claude.ai/code/routines), dari aplikasi Desktop, atau dari CLI. Ketiga permukaan menulis ke akun cloud yang sama, sehingga rutinitas yang Anda buat di satu tempat muncul di tempat lain segera. Di aplikasi Desktop, klik **Routines** di bilah sisi, lalu **New routine**, dan pilih **Remote**; memilih **Local** malah membuat [tugas terjadwal Desktop](/id/desktop-scheduled-tasks), yang berjalan di mesin Anda daripada di cloud.

48 48 

49Formulir pembuatan menyiapkan prompt rutinitas, repositori, lingkungan, konektor, dan pemicu.49Formulir pembuatan menyiapkan prompt rutinitas, repositori, lingkungan, konektor, dan pemicu.

50 50 


66 </Step>66 </Step>

67 67 

68 <Step title="Pilih repositori">68 <Step title="Pilih repositori">

69 Tambahkan satu atau lebih repositori GitHub untuk Claude kerjakan. Setiap repositori diklon di awal jalankan, dimulai dari cabang default. Claude membuat cabang dengan awalan `claude/` untuk perubahannya. Untuk memungkinkan push ke cabang apa pun, aktifkan **Allow unrestricted branch pushes** untuk repositori tersebut.69 Tambahkan satu atau lebih repositori GitHub untuk Claude kerjakan. Setiap repositori diklon di awal jalankan, dimulai dari cabang default. Claude membuat cabang dengan awalan `claude/` untuk perubahannya.

70 </Step>70 </Step>

71 71 

72 <Step title="Pilih lingkungan">72 <Step title="Pilih lingkungan">


76 * **Environment variables**: sediakan kunci API, token, atau rahasia lainnya yang dapat digunakan Claude76 * **Environment variables**: sediakan kunci API, token, atau rahasia lainnya yang dapat digunakan Claude

77 * **Setup script**: instal dependensi dan alat yang dibutuhkan rutinitas. Hasilnya [di-cache](/id/claude-code-on-the-web#environment-caching), jadi skrip tidak berjalan ulang pada setiap sesi77 * **Setup script**: instal dependensi dan alat yang dibutuhkan rutinitas. Hasilnya [di-cache](/id/claude-code-on-the-web#environment-caching), jadi skrip tidak berjalan ulang pada setiap sesi

78 78 

79 Lingkungan **Default** disediakan. Untuk menggunakan lingkungan khusus, [buat satu](/id/claude-code-on-the-web#the-cloud-environment) sebelum membuat rutinitas.79 Lingkungan **Default** disediakan dengan akses jaringan **Trusted**, yang memungkinkan [set default](/id/claude-code-on-the-web#default-allowed-domains) registri paket, API penyedia cloud, registri kontainer, dan domain pengembangan umum, tetapi memblokir semuanya. Jika rutinitas Anda perlu menjangkau layanan Anda sendiri atau domain di luar daftar itu, edit [akses jaringan](/id/claude-code-on-the-web#network-access) lingkungan sebelum menjalankan. Untuk menggunakan lingkungan terpisah, [buat satu](/id/claude-code-on-the-web#configure-your-environment) terlebih dahulu.

80 </Step>80 </Step>

81 81 

82 <Step title="Pilih pemicu">82 <Step title="Pilih pemicu">


84 84 

85 <Tabs>85 <Tabs>

86 <Tab title="Schedule">86 <Tab title="Schedule">

87 Pilih frekuensi preset: per jam, harian, hari kerja, atau mingguan. Lihat [Add a schedule trigger](#add-a-schedule-trigger) untuk penanganan zona waktu, stagger, dan interval cron khusus.87 Pilih frekuensi preset untuk jalankan berulang, atau jadwalkan satu jalankan satu kali pada stempel waktu tertentu. Lihat [Add a schedule trigger](#add-a-schedule-trigger) untuk penanganan zona waktu, stagger, interval cron khusus, dan jalankan satu kali.

88 </Tab>88 </Tab>

89 89 

90 <Tab title="GitHub event">90 <Tab title="GitHub event">


97 </Tabs>97 </Tabs>

98 </Step>98 </Step>

99 99 

100 <Step title="Tinjau konektor">100 <Step title="Tinjau konektor dan izin">

101 Semua [konektor MCP](/id/mcp) yang terhubung disertakan secara default. Hapus yang tidak dibutuhkan rutinitas. Konektor memberi Claude akses ke layanan eksternal seperti Slack, Linear, atau Google Drive selama setiap jalankan.101 Tab **Connectors** dan **Permissions** di bagian bawah formulir mengontrol apa yang dapat dijangkau rutinitas.

102 

103 Di bawah Connectors, semua [konektor MCP](/id/mcp) yang terhubung disertakan secara default. Hapus yang tidak dibutuhkan rutinitas. Claude dapat menggunakan setiap alat dari konektor yang disertakan, termasuk penulisan, tanpa meminta izin selama jalankan.

104 

105 Di bawah Permissions, aktifkan **Allow unrestricted branch pushes** untuk repositori apa pun di mana Claude harus dapat push ke cabang yang ada daripada hanya yang dengan awalan `claude/`.

102 </Step>106 </Step>

103 107 

104 <Step title="Buat rutinitas">108 <Step title="Buat rutinitas">


110 114 

111### Buat dari CLI115### Buat dari CLI

112 116 

113Jalankan `/schedule` dalam sesi apa pun untuk membuat rutinitas terjadwal secara percakapan. Anda juga dapat meneruskan deskripsi langsung, seperti `/schedule daily PR review at 9am`. Claude menjalani informasi yang sama yang dikumpulkan formulir web, lalu menyimpan rutinitas ke akun Anda.117Jalankan `/schedule` dalam sesi apa pun untuk membuat rutinitas terjadwal secara percakapan. Anda juga dapat meneruskan deskripsi langsung, untuk rutinitas berulang seperti `/schedule daily PR review at 9am` atau satu kali seperti `/schedule clean up feature flag in one week`. Claude menjalani informasi yang sama yang dikumpulkan formulir web, lalu menyimpan rutinitas ke akun Anda.

114 118 

115`/schedule` di CLI hanya membuat rutinitas terjadwal. Untuk menambahkan pemicu API atau GitHub, edit rutinitas di web di [claude.ai/code/routines](https://claude.ai/code/routines).119`/schedule` di CLI hanya membuat rutinitas terjadwal. Untuk menambahkan pemicu API atau GitHub, edit rutinitas di web di [claude.ai/code/routines](https://claude.ai/code/routines).

116 120 

117CLI juga mendukung pengelolaan rutinitas yang ada. Jalankan `/schedule list` untuk melihat semua rutinitas, `/schedule update` untuk mengubah satu, atau `/schedule run` untuk memicunya segera.121CLI juga mendukung pengelolaan rutinitas yang ada. Jalankan `/schedule list` untuk melihat semua rutinitas, `/schedule update` untuk mengubah satu, atau `/schedule run` untuk memicunya segera.

118 122 

119### Buat dari aplikasi Desktop

120 

121Buka halaman **Schedule** di aplikasi Desktop, klik **New task**, dan pilih **New remote task**. Aplikasi Desktop menampilkan tugas terjadwal lokal dan rutinitas dalam grid yang sama. Lihat [Desktop scheduled tasks](/id/desktop-scheduled-tasks) untuk detail tentang opsi lokal.

122 

123## Konfigurasi pemicu123## Konfigurasi pemicu

124 124 

125Rutinitas dimulai ketika salah satu pemicunya cocok. Anda dapat melampirkan kombinasi apa pun dari pemicu jadwal, API, dan GitHub ke rutinitas yang sama, dan menambah atau menghapusnya kapan saja dari bagian **Select a trigger** formulir edit rutinitas.125Rutinitas dimulai ketika salah satu pemicunya cocok. Anda dapat melampirkan kombinasi apa pun dari pemicu jadwal, API, dan GitHub ke rutinitas yang sama, dan menambah atau menghapusnya kapan saja dari bagian **Select a trigger** formulir edit rutinitas.

126 126 

127### Tambahkan pemicu jadwal127### Tambahkan pemicu jadwal

128 128 

129Pemicu jadwal menjalankan rutinitas dengan frekuensi berulang. Pilih frekuensi preset di bagian **Select a trigger**: per jam, harian, hari kerja, atau mingguan. Waktu dimasukkan dalam zona lokal Anda dan dikonversi secara otomatis, sehingga rutinitas berjalan pada waktu dinding jam itu terlepas dari di mana infrastruktur cloud berada.129Pemicu jadwal menjalankan rutinitas dengan frekuensi berulang, atau sekali pada waktu masa depan tertentu. Pilih frekuensi preset di bagian **Select a trigger**: per jam, harian, hari kerja, atau mingguan. Waktu dimasukkan dalam zona lokal Anda dan dikonversi secara otomatis, sehingga rutinitas berjalan pada waktu dinding jam itu terlepas dari di mana infrastruktur cloud berada.

130 130 

131Jalankan mungkin dimulai beberapa menit setelah waktu terjadwal karena stagger. Offset konsisten untuk setiap rutinitas.131Jalankan mungkin dimulai beberapa menit setelah waktu terjadwal karena stagger. Offset konsisten untuk setiap rutinitas.

132 132 

133Untuk interval khusus seperti setiap dua jam atau tanggal pertama setiap bulan, pilih preset terdekat dalam formulir, lalu jalankan `/schedule update` di CLI untuk menetapkan ekspresi cron spesifik. Interval minimum adalah satu jam; ekspresi yang berjalan lebih sering ditolak.133Untuk interval khusus seperti setiap dua jam atau tanggal pertama setiap bulan, pilih preset terdekat dalam formulir, lalu jalankan `/schedule update` di CLI untuk menetapkan ekspresi cron spesifik. Interval minimum adalah satu jam; ekspresi yang berjalan lebih sering ditolak.

134 134 

135#### Jadwalkan jalankan sekali

136 

137Jadwal sekali menjalankan rutinitas satu kali pada stempel waktu tertentu. Gunakan untuk mengingatkan diri sendiri nanti dalam minggu ini, untuk membuka PR pembersihan setelah rollout selesai, atau untuk memulai tugas tindak lanjut ketika perubahan upstream tiba. Setelah rutinitas dijalankan, rutinitas secara otomatis menonaktifkan dan UI web menandainya sebagai **Ran**. Untuk menjalankannya lagi, edit rutinitas dan atur waktu sekali baru.

138 

139Buat jalankan sekali dari CLI dengan mendeskripsikan waktu dalam bahasa alami. Claude menyelesaikan frasa terhadap waktu saat ini dan mengonfirmasi stempel waktu absolut sebelum menyimpan.

140 

141```text theme={null}

142/schedule tomorrow at 9am, summarize yesterday's merged PRs

143```

144 

145```text theme={null}

146/schedule in 2 weeks, open a cleanup PR that removes the feature flag

147```

148 

149Konversi lokal-ke-UTC yang sama seperti jadwal berulang berlaku untuk stempel waktu sekali.

150 

151Jalankan sekali tidak dihitung terhadap batas jalankan rutinitas harian. Mereka mengonsumsi penggunaan langganan reguler paket Anda seperti sesi lainnya. Lihat [Usage and limits](#usage-and-limits) untuk detail.

152 

135### Tambahkan pemicu API153### Tambahkan pemicu API

136 154 

137Pemicu API memberikan rutinitas titik akhir HTTP khusus. POSTing ke titik akhir dengan token pembawa rutinitas memulai sesi baru dan mengembalikan URL sesi. Gunakan ini untuk menghubungkan Claude Code ke sistem peringatan, saluran pipa penyebaran, alat internal, atau di mana pun Anda dapat membuat permintaan HTTP yang diautentikasi.155Pemicu API memberikan rutinitas titik akhir HTTP khusus. POSTing ke titik akhir dengan token pembawa rutinitas memulai sesi baru dan mengembalikan URL sesi. Gunakan ini untuk menghubungkan Claude Code ke sistem peringatan, saluran pipa penyebaran, alat internal, atau di mana pun Anda dapat membuat permintaan HTTP yang diautentikasi.


144 </Step>162 </Step>

145 163 

146 <Step title="Tambahkan pemicu API">164 <Step title="Tambahkan pemicu API">

147 Gulir ke bagian **Select a trigger** di bawah prompt, klik **Add another trigger**, dan pilih **API**.165 Gulir ke bagian **Select a trigger** di bawah kotak **Instructions**, klik **Add another trigger**, dan pilih **API**.

148 </Step>166 </Step>

149 167 

150 <Step title="Salin URL dan hasilkan token">168 <Step title="Salin URL dan hasilkan token">


250| Labels | Label yang diterapkan pada PR |268| Labels | Label yang diterapkan pada PR |

251| Is draft | Apakah PR dalam status draf |269| Is draft | Apakah PR dalam status draf |

252| Is merged | Apakah PR telah digabungkan |270| Is merged | Apakah PR telah digabungkan |

253| From fork | Apakah PR berasal dari fork |

254 271 

255Setiap filter memasangkan bidang dengan operator: sama dengan, berisi, dimulai dengan, adalah salah satu, bukan salah satu, atau cocok regex.272Setiap filter memasangkan bidang dengan operator: sama dengan, berisi, dimulai dengan, adalah salah satu, bukan salah satu, atau cocok regex.

256 273 


259Beberapa contoh kombinasi filter:276Beberapa contoh kombinasi filter:

260 277 

261* **Auth module review**: base branch `main`, head branch berisi `auth-provider`. Mengirim PR apa pun yang menyentuh autentikasi ke peninjau yang fokus.278* **Auth module review**: base branch `main`, head branch berisi `auth-provider`. Mengirim PR apa pun yang menyentuh autentikasi ke peninjau yang fokus.

262* **External contributor triage**: from fork adalah `true`. Merutekan setiap PR berbasis fork melalui tinjauan keamanan dan gaya ekstra sebelum manusia melihatnya.

263* **Ready-for-review only**: is draft adalah `false`. Melewati draf sehingga rutinitas hanya berjalan ketika PR siap untuk ditinjau.279* **Ready-for-review only**: is draft adalah `false`. Melewati draf sehingga rutinitas hanya berjalan ketika PR siap untuk ditinjau.

264* **Label-gated backport**: labels termasuk `needs-backport`. Memicu rutinitas port-ke-cabang-lain hanya ketika pengelola memberi tag PR.280* **Label-gated backport**: labels termasuk `needs-backport`. Memicu rutinitas port-ke-cabang-lain hanya ketika pengelola memberi tag PR.

265 281 


275 291 

276Klik jalankan apa pun untuk membukanya sebagai sesi penuh. Dari sana Anda dapat melihat apa yang dilakukan Claude, meninjau perubahan, membuat permintaan tarik, atau melanjutkan percakapan. Setiap sesi jalankan bekerja seperti sesi lainnya: gunakan menu dropdown di sebelah judul sesi untuk mengganti nama, mengarsipkan, atau menghapusnya.292Klik jalankan apa pun untuk membukanya sebagai sesi penuh. Dari sana Anda dapat melihat apa yang dilakukan Claude, meninjau perubahan, membuat permintaan tarik, atau melanjutkan percakapan. Setiap sesi jalankan bekerja seperti sesi lainnya: gunakan menu dropdown di sebelah judul sesi untuk mengganti nama, mengarsipkan, atau menghapusnya.

277 293 

294<Note>

295 Status hijau dalam daftar jalankan berarti sesi dimulai dan keluar tanpa kesalahan infrastruktur. Ini tidak berarti tugas dalam prompt Anda berhasil. Buka jalankan untuk membaca transkrip dan konfirmasi apa yang sebenarnya dilakukan Claude. Permintaan jaringan yang diblokir, alat konektor yang hilang, dan kegagalan tingkat tugas semuanya muncul di sana daripada di indikator status.

296</Note>

297 

278### Edit dan kontrol rutinitas298### Edit dan kontrol rutinitas

279 299 

280Dari halaman detail rutinitas Anda dapat:300Dari halaman detail rutinitas Anda dapat:


300 320 

301Untuk mengelola atau menambahkan konektor di luar formulir rutinitas, kunjungi **Settings > Connectors** di claude.ai atau gunakan `/schedule update` di CLI.321Untuk mengelola atau menambahkan konektor di luar formulir rutinitas, kunjungi **Settings > Connectors** di claude.ai atau gunakan `/schedule update` di CLI.

302 322 

303### Lingkungan323### Lingkungan dan akses jaringan

324 

325Setiap rutinitas berjalan dalam [lingkungan cloud](/id/claude-code-on-the-web#the-cloud-environment) yang mengontrol akses jaringan, variabel lingkungan, dan skrip penyiapan. Rutinitas mewarisi kebijakan jaringan lingkungan pada setiap jalankan.

304 326 

305Setiap rutinitas berjalan dalam [lingkungan cloud](/id/claude-code-on-the-web#the-cloud-environment) yang mengontrol akses jaringan, variabel lingkungan, dan skrip penyiapan. Konfigurasi lingkungan sebelum membuat rutinitas untuk memberi Claude akses ke API, menginstal dependensi, atau membatasi cakupan jaringan. Lihat [cloud environment](/id/claude-code-on-the-web#the-cloud-environment) untuk panduan penyiapan lengkap.327Lingkungan **Default** menggunakan akses jaringan **Trusted**: [daftar allowlist default](/id/claude-code-on-the-web#default-allowed-domains) dari registri paket, API penyedia cloud, registri kontainer, dan domain pengembangan umum dapat dijangkau, tetapi domain arbitrer tidak. Permintaan keluar ke host lain gagal dengan `403` dan `x-deny-reason: host_not_allowed`. Lalu lintas konektor MCP dirutekan melalui server Anthropic, jadi konektor yang Anda tambahkan ke rutinitas bekerja tanpa menambahkan host mereka ke **Allowed domains**. Hapus konektor apa pun yang tidak Anda butuhkan di bawah [Konektor](#konektor).

328 

329Untuk memungkinkan domain tambahan:

330 

331<Steps>

332 <Step title="Buka rutinitas untuk diedit">

333 Pada halaman detail rutinitas, klik ikon pensil untuk membuka **Edit routine**.

334 </Step>

335 

336 <Step title="Buka pemilih lingkungan">

337 Di bawah kotak **Instructions**, pilih ikon cloud yang menampilkan nama lingkungan Anda, seperti **Default**.

338 </Step>

339 

340 <Step title="Buka pengaturan lingkungan">

341 Arahkan ke lingkungan dalam daftar dan klik ikon pengaturan yang muncul di sebelah kanan.

342 </Step>

343 

344 <Step title="Ubah tingkat akses jaringan">

345 Dalam dialog **Update cloud environment**, ubah **Network access** menjadi **Custom** dan masukkan domain Anda di **Allowed domains**. Periksa **Also include default list of common package managers** untuk menyimpan [daftar allowlist default](/id/claude-code-on-the-web#default-allowed-domains) bersama domain kustom Anda. Pilih **Full** sebagai gantinya untuk akses tanpa batas.

346 </Step>

347 

348 <Step title="Simpan">

349 Klik **Save changes**. Kebijakan baru berlaku dari jalankan berikutnya.

350 </Step>

351</Steps>

352 

353Lihat [Network access](/id/claude-code-on-the-web#network-access) untuk detail tentang tingkat akses dan daftar allowlist default.

306 354 

307## Penggunaan dan batas355## Penggunaan dan batas

308 356 


310 358 

311Ketika rutinitas mencapai batas harian atau batas penggunaan langganan Anda, organisasi dengan penggunaan ekstra yang diaktifkan dapat terus menjalankan rutinitas pada overage terukur. Tanpa penggunaan ekstra, jalankan tambahan ditolak sampai jendela direset. Aktifkan penggunaan ekstra dari **Settings > Billing** di claude.ai.359Ketika rutinitas mencapai batas harian atau batas penggunaan langganan Anda, organisasi dengan penggunaan ekstra yang diaktifkan dapat terus menjalankan rutinitas pada overage terukur. Tanpa penggunaan ekstra, jalankan tambahan ditolak sampai jendela direset. Aktifkan penggunaan ekstra dari **Settings > Billing** di claude.ai.

312 360 

361Jalankan sekali saja tidak dihitung terhadap batas jalankan rutinitas harian. Mereka mengurangi penggunaan langganan reguler Anda seperti sesi lainnya, tetapi mereka dikecualikan dari tunjangan jalankan rutinitas harian per akun.

362 

313## Sumber daya terkait363## Sumber daya terkait

314 364 

315* [`/loop` and in-session scheduling](/id/scheduled-tasks): jadwalkan tugas lokal dalam sesi CLI terbuka365* [`/loop` and in-session scheduling](/id/scheduled-tasks): jadwalkan tugas lokal dalam sesi CLI terbuka

settings.md +19 −15

Details

164| `allowManagedHooksOnly` | (Pengaturan yang dikelola saja) Hanya hooks yang dikelola, SDK hooks, dan hooks dari plugins yang dipaksa diaktifkan dalam pengaturan yang dikelola `enabledPlugins` yang dimuat. Hooks pengguna, proyek, dan semua plugin hooks lainnya diblokir. Lihat [Konfigurasi Hook](#hook-configuration) | `true` |164| `allowManagedHooksOnly` | (Pengaturan yang dikelola saja) Hanya hooks yang dikelola, SDK hooks, dan hooks dari plugins yang dipaksa diaktifkan dalam pengaturan yang dikelola `enabledPlugins` yang dimuat. Hooks pengguna, proyek, dan semua plugin hooks lainnya diblokir. Lihat [Konfigurasi Hook](#hook-configuration) | `true` |

165| `allowManagedMcpServersOnly` | (Pengaturan yang dikelola saja) Hanya `allowedMcpServers` dari pengaturan yang dikelola yang dihormati. `deniedMcpServers` masih digabungkan dari semua sumber. Pengguna masih dapat menambahkan MCP servers, tetapi hanya daftar putih yang ditentukan admin yang berlaku. Lihat [Konfigurasi MCP yang Dikelola](/id/mcp#managed-mcp-configuration) | `true` |165| `allowManagedMcpServersOnly` | (Pengaturan yang dikelola saja) Hanya `allowedMcpServers` dari pengaturan yang dikelola yang dihormati. `deniedMcpServers` masih digabungkan dari semua sumber. Pengguna masih dapat menambahkan MCP servers, tetapi hanya daftar putih yang ditentukan admin yang berlaku. Lihat [Konfigurasi MCP yang Dikelola](/id/mcp#managed-mcp-configuration) | `true` |

166| `allowManagedPermissionRulesOnly` | (Pengaturan yang dikelola saja) Cegah pengaturan pengguna dan proyek dari mendefinisikan aturan izin `allow`, `ask`, atau `deny`. Hanya aturan dalam pengaturan yang dikelola yang berlaku. Lihat [Pengaturan khusus yang dikelola](/id/permissions#managed-only-settings) | `true` |166| `allowManagedPermissionRulesOnly` | (Pengaturan yang dikelola saja) Cegah pengaturan pengguna dan proyek dari mendefinisikan aturan izin `allow`, `ask`, atau `deny`. Hanya aturan dalam pengaturan yang dikelola yang berlaku. Lihat [Pengaturan khusus yang dikelola](/id/permissions#managed-only-settings) | `true` |

167| `alwaysThinkingEnabled` | Aktifkan [pemikiran yang diperluas](/id/model-config#extended-thinking) secara default untuk semua sesi. Biasanya dikonfigurasi melalui perintah `/config` daripada mengedit langsung | `true` |167| `alwaysThinkingEnabled` | Aktifkan [pemikiran yang diperluas](/id/model-config#extended-thinking) secara default untuk semua sesi. Biasanya dikonfigurasi melalui perintah `/config` daripada mengedit langsung. Untuk memaksa pemikiran mati terlepas dari pengaturan ini, atur [`CLAUDE_CODE_DISABLE_THINKING`](/id/env-vars) dalam `env` | `true` |

168| `apiKeyHelper` | Skrip khusus, yang akan dieksekusi dalam `/bin/sh`, untuk menghasilkan nilai auth. Nilai ini akan dikirim sebagai header `X-Api-Key` dan `Authorization: Bearer` untuk permintaan model | `/bin/generate_temp_api_key.sh` |168| `apiKeyHelper` | Skrip khusus, yang akan dieksekusi dalam `/bin/sh`, untuk menghasilkan nilai auth. Nilai ini akan dikirim sebagai header `X-Api-Key` dan `Authorization: Bearer` untuk permintaan model. Atur interval penyegaran dengan [`CLAUDE_CODE_API_KEY_HELPER_TTL_MS`](/id/env-vars) | `/bin/generate_temp_api_key.sh` |

169| `attribution` | Sesuaikan atribusi untuk komit git dan pull request. Lihat [Pengaturan atribusi](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |169| `attribution` | Sesuaikan atribusi untuk komit git dan pull request. Lihat [Pengaturan atribusi](#attribution-settings) | `{"commit": "🤖 Generated with Claude Code", "pr": ""}` |

170| `autoMemoryDirectory` | Direktori khusus untuk penyimpanan [memori otomatis](/id/memory#storage-location). Menerima jalur absolut atau jalur dengan awalan `~/`. Diterima dari kebijakan dan pengaturan pengguna, dan dari flag `--settings`. Tidak diterima dari pengaturan proyek atau lokal, karena repositori yang diklon dapat menyediakan file apa pun untuk mengalihkan penulisan memori ke lokasi sensitif | `"~/my-memory-dir"` |170| `autoMemoryDirectory` | Direktori khusus untuk penyimpanan [memori otomatis](/id/memory#storage-location). Menerima jalur absolut atau jalur dengan awalan `~/`. Diterima dari kebijakan dan pengaturan pengguna, dan dari flag `--settings`. Tidak diterima dari pengaturan proyek atau lokal, karena repositori yang diklon dapat menyediakan file apa pun untuk mengalihkan penulisan memori ke lokasi sensitif | `"~/my-memory-dir"` |

171| `autoMemoryEnabled` | Aktifkan [memori otomatis](/id/memory#enable-or-disable-auto-memory). Saat `false`, Claude tidak membaca dari atau menulis ke direktori memori otomatis. Default: `true`. Anda juga dapat mengalihkan ini dengan `/memory` selama sesi | `false` |171| `autoMemoryEnabled` | Aktifkan [memori otomatis](/id/memory#enable-or-disable-auto-memory). Saat `false`, Claude tidak membaca dari atau menulis ke direktori memori otomatis. Default: `true`. Anda juga dapat mengalihkan ini dengan `/memory` selama sesi. Untuk menonaktifkan melalui variabel lingkungan, atur [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](/id/env-vars) dalam `env` | `false` |

172| `autoMode` | Sesuaikan apa yang diblokir dan diizinkan oleh pengklasifikasi [mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode). Berisi array aturan prosa `environment`, `allow`, dan `soft_deny`. Sertakan string literal `"$defaults"` dalam array untuk mewarisi aturan bawaan pada posisi tersebut. Lihat [Konfigurasikan mode otomatis](/id/auto-mode-config). Tidak dibaca dari pengaturan proyek bersama | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |172| `autoMode` | Sesuaikan apa yang diblokir dan diizinkan oleh pengklasifikasi [mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode). Berisi array aturan prosa `environment`, `allow`, dan `soft_deny`. Sertakan string literal `"$defaults"` dalam array untuk mewarisi aturan bawaan pada posisi tersebut. Lihat [Konfigurasikan mode otomatis](/id/auto-mode-config). Tidak dibaca dari pengaturan proyek bersama | `{"soft_deny": ["$defaults", "Never run terraform apply"]}` |

173| `autoScrollEnabled` | Dalam [rendering fullscreen](/id/fullscreen), ikuti output baru ke bagian bawah percakapan. Default: `true`. Muncul di `/config` sebagai **Auto-scroll**. Prompt izin masih bergulir ke tampilan saat ini dimatikan | `false` |173| `autoScrollEnabled` | Dalam [rendering fullscreen](/id/fullscreen), ikuti output baru ke bagian bawah percakapan. Default: `true`. Muncul di `/config` sebagai **Auto-scroll**. Prompt izin masih bergulir ke tampilan saat ini dimatikan | `false` |

174| `autoUpdatesChannel` | Saluran rilis untuk diikuti untuk pembaruan. Gunakan `"stable"` untuk versi yang biasanya sekitar satu minggu lama dan melewati versi dengan regresi besar, atau `"latest"` (default) untuk rilis terbaru | `"stable"` |174| `autoUpdatesChannel` | Saluran rilis untuk diikuti untuk pembaruan. Gunakan `"stable"` untuk versi yang biasanya sekitar satu minggu lama dan melewati versi dengan regresi besar, atau `"latest"` (default) untuk rilis terbaru. Untuk menonaktifkan auto-updates sepenuhnya, atur [`DISABLE_AUTOUPDATER`](/id/setup#disable-auto-updates) dalam `env` | `"stable"` |

175| `availableModels` | Batasi model mana yang dapat dipilih pengguna melalui `/model`, `--model`, atau `ANTHROPIC_MODEL`. Tidak mempengaruhi opsi Default. Lihat [Batasi pemilihan model](/id/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |175| `availableModels` | Batasi model mana yang dapat dipilih pengguna melalui `/model`, `--model`, atau `ANTHROPIC_MODEL`. Tidak mempengaruhi opsi Default. Lihat [Batasi pemilihan model](/id/model-config#restrict-model-selection) | `["sonnet", "haiku"]` |

176| `awaySummaryEnabled` | Tampilkan ringkasan sesi satu baris saat Anda kembali ke terminal setelah beberapa menit pergi. Atur ke `false` atau matikan Session recap di `/config` untuk menonaktifkan. Sama dengan [`CLAUDE_CODE_ENABLE_AWAY_SUMMARY`](/id/env-vars) | `true` |176| `awaySummaryEnabled` | Tampilkan ringkasan sesi satu baris saat Anda kembali ke terminal setelah beberapa menit pergi. Atur ke `false` atau matikan Session recap di `/config` untuk menonaktifkan. Sama dengan [`CLAUDE_CODE_ENABLE_AWAY_SUMMARY`](/id/env-vars) | `true` |

177| `awsAuthRefresh` | Skrip khusus yang memodifikasi direktori `.aws` (lihat [konfigurasi kredensial lanjutan](/id/amazon-bedrock#advanced-credential-configuration)) | `aws sso login --profile myprofile` |177| `awsAuthRefresh` | Skrip khusus yang memodifikasi direktori `.aws` (lihat [konfigurasi kredensial lanjutan](/id/amazon-bedrock#advanced-credential-configuration)) | `aws sso login --profile myprofile` |

178| `awsCredentialExport` | Skrip khusus yang menampilkan JSON dengan kredensial AWS (lihat [konfigurasi kredensial lanjutan](/id/amazon-bedrock#advanced-credential-configuration)) | `/bin/generate_aws_grant.sh` |178| `awsCredentialExport` | Skrip khusus yang menampilkan JSON dengan kredensial AWS (lihat [konfigurasi kredensial lanjutan](/id/amazon-bedrock#advanced-credential-configuration)) | `/bin/generate_aws_grant.sh` |

179| `blockedMarketplaces` | (Pengaturan yang dikelola saja) Daftar hitam sumber marketplace. Diterapkan pada penambahan marketplace dan instalasi plugin, pembaruan, penyegaran, dan auto-update, jadi marketplace yang ditambahkan sebelum kebijakan ditetapkan tidak dapat digunakan untuk mengambil plugin. Sumber yang diblokir diperiksa sebelum mengunduh, jadi mereka tidak pernah menyentuh sistem file. Lihat [Pembatasan marketplace yang dikelola](/id/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "untrusted/plugins" }]` |179| `blockedMarketplaces` | (Pengaturan yang dikelola saja) Daftar hitam sumber marketplace. Diterapkan pada penambahan marketplace dan instalasi plugin, pembaruan, penyegaran, dan auto-update, jadi marketplace yang ditambahkan sebelum kebijakan ditetapkan tidak dapat digunakan untuk mengambil plugin. Sumber yang diblokir diperiksa sebelum mengunduh, jadi mereka tidak pernah menyentuh sistem file. Lihat [Pembatasan marketplace yang dikelola](/id/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "untrusted/plugins" }]` |

180| `channelsEnabled` | (Pengaturan yang dikelola saja) Izinkan [channels](/id/channels) untuk organisasi. Pada paket Claude.ai Team dan Enterprise, channels diblokir saat ini tidak diatur atau `false`. Untuk akun [Anthropic Console](/id/authentication#claude-console-authentication) menggunakan autentikasi kunci API, channels diizinkan secara default kecuali organisasi Anda menggunakan pengaturan yang dikelola, dalam hal ini kunci ini harus diatur ke `true` | `true` |180| `channelsEnabled` | (Pengaturan yang dikelola saja) Izinkan [channels](/id/channels) untuk organisasi. Pada paket Claude.ai Team dan Enterprise, channels diblokir saat ini tidak diatur atau `false`. Untuk akun [Anthropic Console](/id/authentication#claude-console-authentication) menggunakan autentikasi kunci API, channels diizinkan secara default kecuali organisasi Anda menggunakan pengaturan yang dikelola, dalam hal ini kunci ini harus diatur ke `true` | `true` |

181| `claudeMdExcludes` | Pola glob atau jalur absolut file `CLAUDE.md` untuk dilewati saat memuat [memory](/id/memory). Pola cocok dengan jalur file absolut. Hanya berlaku untuk memori pengguna, proyek, dan lokal; file kebijakan yang dikelola tidak dapat dikecualikan | `["**/vendor/**/CLAUDE.md"]` |

181| `cleanupPeriodDays` | File sesi yang lebih lama dari periode ini dihapus saat startup (default: 30 hari, minimum 1). Pengaturan ke `0` ditolak dengan kesalahan validasi. Juga mengontrol cutoff usia untuk penghapusan otomatis [worktrees subagent yatim piatu](/id/worktrees#clean-up-worktrees) saat startup. Untuk menonaktifkan penulisan transkrip sepenuhnya, atur variabel lingkungan [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/id/env-vars), atau dalam mode non-interaktif (`-p`) gunakan flag `--no-session-persistence` atau opsi SDK `persistSession: false`. | `20` |182| `cleanupPeriodDays` | File sesi yang lebih lama dari periode ini dihapus saat startup (default: 30 hari, minimum 1). Pengaturan ke `0` ditolak dengan kesalahan validasi. Juga mengontrol cutoff usia untuk penghapusan otomatis [worktrees subagent yatim piatu](/id/worktrees#clean-up-worktrees) saat startup. Untuk menonaktifkan penulisan transkrip sepenuhnya, atur variabel lingkungan [`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/id/env-vars), atau dalam mode non-interaktif (`-p`) gunakan flag `--no-session-persistence` atau opsi SDK `persistSession: false`. | `20` |

182| `companyAnnouncements` | Pengumuman untuk ditampilkan kepada pengguna saat startup. Jika beberapa pengumuman disediakan, mereka akan diputar secara acak. | `["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"]` |183| `companyAnnouncements` | Pengumuman untuk ditampilkan kepada pengguna saat startup. Jika beberapa pengumuman disediakan, mereka akan diputar secara acak. | `["Welcome to Acme Corp! Review our code guidelines at docs.acme.com"]` |

183| `defaultShell` | Shell default untuk perintah `!` input-box. Menerima `"bash"` (default) atau `"powershell"`. Pengaturan `"powershell"` merutekan perintah `!` interaktif melalui PowerShell di Windows. Memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. Lihat [PowerShell tool](/id/tools-reference#powershell-tool) | `"powershell"` |184| `defaultShell` | Shell default untuk perintah `!` input-box. Menerima `"bash"` (default) atau `"powershell"`. Pengaturan `"powershell"` merutekan perintah `!` interaktif melalui PowerShell di Windows. Memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. Lihat [PowerShell tool](/id/tools-reference#powershell-tool) | `"powershell"` |


189| `disableRemoteControl` | {/* min-version: 2.1.128 */}Nonaktifkan [Remote Control](/id/remote-control): memblokir `claude remote-control`, flag `--remote-control`, auto-start, dan toggle dalam sesi. Biasanya ditempatkan dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk penegakan MDM per-perangkat, tetapi berfungsi dari cakupan apa pun. Memerlukan Claude Code v2.1.128 atau lebih baru | `true` |190| `disableRemoteControl` | {/* min-version: 2.1.128 */}Nonaktifkan [Remote Control](/id/remote-control): memblokir `claude remote-control`, flag `--remote-control`, auto-start, dan toggle dalam sesi. Biasanya ditempatkan dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk penegakan MDM per-perangkat, tetapi berfungsi dari cakupan apa pun. Memerlukan Claude Code v2.1.128 atau lebih baru | `true` |

190| `disableSkillShellExecution` | Nonaktifkan eksekusi shell inline untuk blok `` !`...` `` dan ` ```! ` dalam [skills](/id/skills) dan perintah khusus dari sumber pengguna, proyek, plugin, atau direktori tambahan. Perintah diganti dengan `[shell command execution disabled by policy]` daripada dijalankan. Skills bundel dan yang dikelola tidak terpengaruh. Paling berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) di mana pengguna tidak dapat menimpanya | `true` |191| `disableSkillShellExecution` | Nonaktifkan eksekusi shell inline untuk blok `` !`...` `` dan ` ```! ` dalam [skills](/id/skills) dan perintah khusus dari sumber pengguna, proyek, plugin, atau direktori tambahan. Perintah diganti dengan `[shell command execution disabled by policy]` daripada dijalankan. Skills bundel dan yang dikelola tidak terpengaruh. Paling berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) di mana pengguna tidak dapat menimpanya | `true` |

191| `editorMode` | Mode binding kunci untuk prompt input: `"normal"` atau `"vim"`. Default: `"normal"`. Muncul di `/config` sebagai **Editor mode** | `"vim"` |192| `editorMode` | Mode binding kunci untuk prompt input: `"normal"` atau `"vim"`. Default: `"normal"`. Muncul di `/config` sebagai **Editor mode** | `"vim"` |

192| `effortLevel` | Pertahankan [tingkat usaha](/id/model-config#adjust-effort-level) di seluruh sesi. Menerima `"low"`, `"medium"`, `"high"`, atau `"xhigh"`. Ditulis secara otomatis saat Anda menjalankan `/effort` dengan salah satu nilai tersebut. Lihat [Sesuaikan tingkat usaha](/id/model-config#adjust-effort-level) untuk model yang didukung | `"xhigh"` |193| `effortLevel` | Pertahankan [tingkat usaha](/id/model-config#adjust-effort-level) di seluruh sesi. Menerima `"low"`, `"medium"`, `"high"`, atau `"xhigh"`. Ditulis secara otomatis saat Anda menjalankan `/effort` dengan salah satu nilai tersebut. `--effort` dan [`CLAUDE_CODE_EFFORT_LEVEL`](/id/env-vars) menimpa ini untuk satu sesi. Lihat [Sesuaikan tingkat usaha](/id/model-config#adjust-effort-level) untuk model yang didukung | `"xhigh"` |

193| `enableAllProjectMcpServers` | Secara otomatis menyetujui semua MCP servers yang ditentukan dalam file `.mcp.json` proyek | `true` |194| `enableAllProjectMcpServers` | Secara otomatis menyetujui semua MCP servers yang ditentukan dalam file `.mcp.json` proyek | `true` |

194| `enabledMcpjsonServers` | Daftar MCP servers spesifik dari file `.mcp.json` untuk menyetujui | `["memory", "github"]` |195| `enabledMcpjsonServers` | Daftar MCP servers spesifik dari file `.mcp.json` untuk menyetujui | `["memory", "github"]` |

195| `env` | Variabel lingkungan yang akan diterapkan ke setiap sesi | `{"FOO": "bar"}` |196| `env` | Variabel lingkungan yang akan diterapkan ke setiap sesi | `{"FOO": "bar"}` |

196| `fastModePerSessionOptIn` | Saat `true`, mode cepat tidak bertahan di seluruh sesi. Setiap sesi dimulai dengan mode cepat mati, memerlukan pengguna untuk mengaktifkannya dengan `/fast`. Preferensi mode cepat pengguna masih disimpan. Lihat [Memerlukan opt-in per sesi](/id/fast-mode#require-per-session-opt-in) | `true` |197| `fastModePerSessionOptIn` | Saat `true`, mode cepat tidak bertahan di seluruh sesi. Setiap sesi dimulai dengan mode cepat mati, memerlukan pengguna untuk mengaktifkannya dengan `/fast`. Preferensi mode cepat pengguna masih disimpan. Lihat [Memerlukan opt-in per sesi](/id/fast-mode#require-per-session-opt-in) | `true` |

197| `feedbackSurveyRate` | Probabilitas (0–1) bahwa [survei kualitas sesi](/id/data-usage#session-quality-surveys) muncul saat memenuhi syarat. Atur ke `0` untuk menekan sepenuhnya. Berguna saat menggunakan Bedrock, Vertex, atau Foundry di mana tingkat sampel default tidak berlaku | `0.05` |198| `feedbackSurveyRate` | Probabilitas (0–1) bahwa [survei kualitas sesi](/id/data-usage#session-quality-surveys) muncul saat memenuhi syarat. Atur ke `0` untuk menekan sepenuhnya, atau atur [`CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY`](/id/env-vars) dalam `env`. Berguna saat menggunakan Bedrock, Vertex, atau Foundry di mana tingkat sampel default tidak berlaku | `0.05` |

198| `fileSuggestion` | Konfigurasikan skrip khusus untuk pelengkapan otomatis file `@`. Lihat [Pengaturan saran file](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |199| `fileSuggestion` | Konfigurasikan skrip khusus untuk pelengkapan otomatis file `@`. Lihat [Pengaturan saran file](#file-suggestion-settings) | `{"type": "command", "command": "~/.claude/file-suggestion.sh"}` |

199| `forceLoginMethod` | Gunakan `claudeai` untuk membatasi login ke akun Claude.ai, `console` untuk membatasi login ke akun Claude Console (penagihan penggunaan API) | `claudeai` |200| `forceLoginMethod` | Gunakan `claudeai` untuk membatasi login ke akun Claude.ai, `console` untuk membatasi login ke akun Claude Console (penagihan penggunaan API) | `claudeai` |

200| `forceLoginOrgUUID` | Memerlukan login untuk milik organisasi tertentu. Menerima string UUID tunggal, yang juga pra-memilih organisasi tersebut selama login, atau array UUID di mana organisasi yang terdaftar apa pun diterima tanpa pra-pemilihan. Saat diatur dalam pengaturan yang dikelola, login gagal jika akun yang diautentikasi tidak milik organisasi yang terdaftar; array kosong gagal tertutup dan memblokir login dengan pesan salah konfigurasi | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` atau `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |201| `forceLoginOrgUUID` | Memerlukan login untuk milik organisasi tertentu. Menerima string UUID tunggal, yang juga pra-memilih organisasi tersebut selama login, atau array UUID di mana organisasi yang terdaftar apa pun diterima tanpa pra-pemilihan. Saat diatur dalam pengaturan yang dikelola, login gagal jika akun yang diautentikasi tidak milik organisasi yang terdaftar; array kosong gagal tertutup dan memblokir login dengan pesan salah konfigurasi | `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"` atau `["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]` |

201| `forceRemoteSettingsRefresh` | (Pengaturan yang dikelola saja) Blokir startup CLI sampai pengaturan yang dikelola jarak jauh segar diambil dari server. Jika pengambilan gagal, CLI keluar daripada melanjutkan dengan pengaturan yang di-cache atau tidak ada. Saat tidak diatur, startup berlanjut tanpa menunggu pengaturan jarak jauh. Lihat [penegakan fail-closed](/id/server-managed-settings#enforce-fail-closed-startup) | `true` |202| `forceRemoteSettingsRefresh` | (Pengaturan yang dikelola saja) Blokir startup CLI sampai pengaturan yang dikelola jarak jauh segar diambil dari server. Jika pengambilan gagal, CLI keluar daripada melanjutkan dengan pengaturan yang di-cache atau tidak ada. Saat tidak diatur, startup berlanjut tanpa menunggu pengaturan jarak jauh. Lihat [penegakan fail-closed](/id/server-managed-settings#enforce-fail-closed-startup) | `true` |

203| `gcpAuthRefresh` | Skrip khusus yang menyegarkan GCP Application Default Credentials saat kedaluwarsa atau tidak dapat dimuat. Lihat [konfigurasi kredensial lanjutan](/id/google-vertex-ai#advanced-credential-configuration) | `gcloud auth application-default login` |

202| `hooks` | Konfigurasikan perintah khusus untuk dijalankan pada acara siklus hidup. Lihat [dokumentasi hooks](/id/hooks) untuk format | Lihat [hooks](/id/hooks) |204| `hooks` | Konfigurasikan perintah khusus untuk dijalankan pada acara siklus hidup. Lihat [dokumentasi hooks](/id/hooks) untuk format | Lihat [hooks](/id/hooks) |

203| `httpHookAllowedEnvVars` | Daftar putih nama variabel lingkungan yang dapat diinterpolasi oleh HTTP hooks ke dalam header. Saat diatur, `allowedEnvVars` efektif setiap hook adalah persimpangan dengan daftar ini. Tidak terdefinisi = tidak ada pembatasan. Array digabungkan di seluruh sumber pengaturan. Lihat [Konfigurasi Hook](#hook-configuration) | `["MY_TOKEN", "HOOK_SECRET"]` |205| `httpHookAllowedEnvVars` | Daftar putih nama variabel lingkungan yang dapat diinterpolasi oleh HTTP hooks ke dalam header. Saat diatur, `allowedEnvVars` efektif setiap hook adalah persimpangan dengan daftar ini. Tidak terdefinisi = tidak ada pembatasan. Array digabungkan di seluruh sumber pengaturan. Lihat [Konfigurasi Hook](#hook-configuration) | `["MY_TOKEN", "HOOK_SECRET"]` |

204| `includeCoAuthoredBy` | **Usang**: Gunakan `attribution` sebagai gantinya. Apakah akan menyertakan baris `co-authored-by Claude` dalam komit git dan pull request (default: `true`) | `false` |206| `includeCoAuthoredBy` | **Usang**: Gunakan `attribution` sebagai gantinya. Apakah akan menyertakan baris `co-authored-by Claude` dalam komit git dan pull request (default: `true`) | `false` |

205| `includeGitInstructions` | Sertakan instruksi alur kerja komit dan PR bawaan dan snapshot status git dalam prompt sistem Claude (default: `true`). Atur ke `false` untuk menghapus keduanya, misalnya saat menggunakan skills alur kerja git Anda sendiri. Variabel lingkungan `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` memiliki prioritas atas pengaturan ini saat diatur | `false` |207| `includeGitInstructions` | Sertakan instruksi alur kerja komit dan PR bawaan dan snapshot status git dalam prompt sistem Claude (default: `true`). Atur ke `false` untuk menghapus keduanya, misalnya saat menggunakan skills alur kerja git Anda sendiri. Variabel lingkungan `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` memiliki prioritas atas pengaturan ini saat diatur | `false` |

206| `language` | Konfigurasikan bahasa respons pilihan Claude (misalnya, `"japanese"`, `"spanish"`, `"french"`). Claude akan merespons dalam bahasa ini secara default. Juga menetapkan bahasa [voice dictation](/id/voice-dictation#change-the-dictation-language) | `"japanese"` |208| `language` | Konfigurasikan bahasa respons pilihan Claude (misalnya, `"japanese"`, `"spanish"`, `"french"`). Claude akan merespons dalam bahasa ini secara default. Juga menetapkan bahasa [voice dictation](/id/voice-dictation#change-the-dictation-language) | `"japanese"` |

207| `minimumVersion` | Lantai yang mencegah auto-updates latar belakang dan `claude update` dari menginstal versi di bawah ini. Beralih dari saluran `"latest"` ke `"stable"` melalui `/config` meminta Anda untuk tetap pada versi saat ini atau memungkinkan downgrade. Memilih untuk tetap menetapkan nilai ini. Juga berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk menyematkan minimum di seluruh organisasi | `"2.1.100"` |209| `minimumVersion` | Lantai yang mencegah auto-updates latar belakang dan `claude update` dari menginstal versi di bawah ini. Beralih dari saluran `"latest"` ke `"stable"` melalui `/config` meminta Anda untuk tetap pada versi saat ini atau memungkinkan downgrade. Memilih untuk tetap menetapkan nilai ini. Juga berguna dalam [pengaturan yang dikelola](/id/permissions#managed-settings) untuk menyematkan minimum di seluruh organisasi | `"2.1.100"` |

208| `model` | Timpa model default untuk digunakan untuk Claude Code | `"claude-sonnet-4-6"` |210| `model` | Timpa model default untuk digunakan untuk Claude Code. `--model` dan [`ANTHROPIC_MODEL`](/id/model-config#environment-variables) menimpa ini untuk satu sesi | `"claude-sonnet-4-6"` |

209| `modelOverrides` | Peta ID model Anthropic ke ID model spesifik penyedia seperti ARN profil inferensi Bedrock. Setiap entri pemilih model menggunakan nilai yang dipetakan saat memanggil API penyedia. Lihat [Timpa ID model per versi](/id/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |211| `modelOverrides` | Peta ID model Anthropic ke ID model spesifik penyedia seperti ARN profil inferensi Bedrock. Setiap entri pemilih model menggunakan nilai yang dipetakan saat memanggil API penyedia. Lihat [Timpa ID model per versi](/id/model-config#override-model-ids-per-version) | `{"claude-opus-4-6": "arn:aws:bedrock:..."}` |

210| `otelHeadersHelper` | Skrip untuk menghasilkan header OpenTelemetry dinamis. Berjalan saat startup dan secara berkala (lihat [Header dinamis](/id/monitoring-usage#dynamic-headers)) | `/bin/generate_otel_headers.sh` |212| `otelHeadersHelper` | Skrip untuk menghasilkan header OpenTelemetry dinamis. Berjalan saat startup dan secara berkala. Atur interval penyegaran dengan [`CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS`](/id/env-vars). Lihat [Header dinamis](/id/monitoring-usage#dynamic-headers) | `/bin/generate_otel_headers.sh` |

211| `outputStyle` | Konfigurasikan gaya output untuk menyesuaikan prompt sistem. Lihat [dokumentasi gaya output](/id/output-styles) | `"Explanatory"` |213| `outputStyle` | Konfigurasikan gaya output untuk menyesuaikan prompt sistem. Lihat [dokumentasi gaya output](/id/output-styles) | `"Explanatory"` |

212| `permissions` | Lihat tabel di bawah untuk struktur izin. | |214| `permissions` | Lihat tabel di bawah untuk struktur izin. | |

213| `plansDirectory` | Sesuaikan di mana file rencana disimpan. Jalur relatif terhadap akar proyek. Default: `~/.claude/plans` | `"./plans"` |215| `plansDirectory` | Sesuaikan di mana file rencana disimpan. Jalur relatif terhadap akar proyek. Default: `~/.claude/plans` | `"./plans"` |


219| `showClearContextOnPlanAccept` | Tampilkan opsi "clear context" pada layar penerimaan rencana. Default ke `false`. Atur ke `true` untuk mengembalikan opsi | `true` |221| `showClearContextOnPlanAccept` | Tampilkan opsi "clear context" pada layar penerimaan rencana. Default ke `false`. Atur ke `true` untuk mengembalikan opsi | `true` |

220| `showThinkingSummaries` | Tampilkan ringkasan [pemikiran yang diperluas](/id/model-config#extended-thinking) dalam sesi interaktif. Saat tidak diatur atau `false` (default dalam mode interaktif), blok pemikiran diredaksi oleh API dan ditampilkan sebagai stub yang runtuh. Redaksi hanya mengubah apa yang Anda lihat, bukan apa yang dihasilkan model: untuk mengurangi pengeluaran pemikiran, [turunkan anggaran atau nonaktifkan pemikiran](/id/model-config#extended-thinking) sebagai gantinya. Mode non-interaktif (`-p`) dan pemanggil SDK selalu menerima ringkasan terlepas dari pengaturan ini | `true` |222| `showThinkingSummaries` | Tampilkan ringkasan [pemikiran yang diperluas](/id/model-config#extended-thinking) dalam sesi interaktif. Saat tidak diatur atau `false` (default dalam mode interaktif), blok pemikiran diredaksi oleh API dan ditampilkan sebagai stub yang runtuh. Redaksi hanya mengubah apa yang Anda lihat, bukan apa yang dihasilkan model: untuk mengurangi pengeluaran pemikiran, [turunkan anggaran atau nonaktifkan pemikiran](/id/model-config#extended-thinking) sebagai gantinya. Mode non-interaktif (`-p`) dan pemanggil SDK selalu menerima ringkasan terlepas dari pengaturan ini | `true` |

221| `showTurnDuration` | Tampilkan pesan durasi giliran setelah respons, misalnya "Cooked for 1m 6s". Default: `true`. Muncul di `/config` sebagai **Show turn duration** | `false` |223| `showTurnDuration` | Tampilkan pesan durasi giliran setelah respons, misalnya "Cooked for 1m 6s". Default: `true`. Muncul di `/config` sebagai **Show turn duration** | `false` |

224| `skillOverrides` | {/* min-version: 2.1.129 */}Penggantian visibilitas per-skill yang dikunci berdasarkan nama skill. Nilai adalah `"on"`, `"name-only"`, `"user-invocable-only"`, atau `"off"`. Memungkinkan Anda menyembunyikan atau menciutkan skill tanpa mengedit SKILL.md-nya. Tidak berlaku untuk plugin skills, yang dikelola melalui `/plugin`. Menu `/skills` menulis ini ke `.claude/settings.local.json`. Lihat [Timpa visibilitas skill dari pengaturan](/id/skills#override-skill-visibility-from-settings). Memerlukan Claude Code v2.1.129 atau lebih baru | `{"legacy-context": "name-only", "deploy": "off"}` |

222| `skipWebFetchPreflight` | Lewati [pemeriksaan keamanan domain WebFetch](/id/data-usage#webfetch-domain-safety-check) yang mengirim setiap nama host yang diminta ke `api.anthropic.com` sebelum mengambil. Atur ke `true` di lingkungan yang memblokir lalu lintas ke Anthropic, seperti penyebaran Bedrock, Vertex AI, atau Foundry dengan egress yang ketat. Saat dilewati, WebFetch mencoba URL apa pun tanpa berkonsultasi dengan daftar blokir | `true` |225| `skipWebFetchPreflight` | Lewati [pemeriksaan keamanan domain WebFetch](/id/data-usage#webfetch-domain-safety-check) yang mengirim setiap nama host yang diminta ke `api.anthropic.com` sebelum mengambil. Atur ke `true` di lingkungan yang memblokir lalu lintas ke Anthropic, seperti penyebaran Bedrock, Vertex AI, atau Foundry dengan egress yang ketat. Saat dilewati, WebFetch mencoba URL apa pun tanpa berkonsultasi dengan daftar blokir | `true` |

223| `spinnerTipsEnabled` | Tampilkan tips dalam spinner saat Claude bekerja. Atur ke `false` untuk menonaktifkan tips (default: `true`) | `false` |226| `spinnerTipsEnabled` | Tampilkan tips dalam spinner saat Claude bekerja. Atur ke `false` untuk menonaktifkan tips (default: `true`) | `false` |

224| `spinnerTipsOverride` | Timpa tips spinner dengan string khusus. `tips`: array string tip. `excludeDefault`: jika `true`, hanya tampilkan tips khusus; jika `false` atau tidak ada, tips khusus digabungkan dengan tips bawaan | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |227| `spinnerTipsOverride` | Timpa tips spinner dengan string khusus. `tips`: array string tip. `excludeDefault`: jika `true`, hanya tampilkan tips khusus; jika `false` atau tidak ada, tips khusus digabungkan dengan tips bawaan | `{ "excludeDefault": true, "tips": ["Use our internal tool X"] }` |


226| `sshConfigs` | Koneksi SSH untuk ditampilkan dalam dropdown lingkungan [Desktop](/id/desktop#pre-configure-ssh-connections-for-your-team). Setiap entri memerlukan `id`, `name`, dan `sshHost`; `sshPort`, `sshIdentityFile`, dan `startDirectory` bersifat opsional. Saat diatur dalam pengaturan yang dikelola, koneksi bersifat read-only untuk pengguna. Dibaca dari pengaturan yang dikelola dan pengguna saja | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |229| `sshConfigs` | Koneksi SSH untuk ditampilkan dalam dropdown lingkungan [Desktop](/id/desktop#pre-configure-ssh-connections-for-your-team). Setiap entri memerlukan `id`, `name`, dan `sshHost`; `sshPort`, `sshIdentityFile`, dan `startDirectory` bersifat opsional. Saat diatur dalam pengaturan yang dikelola, koneksi bersifat read-only untuk pengguna. Dibaca dari pengaturan yang dikelola dan pengguna saja | `[{"id": "dev-vm", "name": "Dev VM", "sshHost": "user@dev.example.com"}]` |

227| `statusLine` | Konfigurasikan status line khusus untuk menampilkan konteks. Lihat [dokumentasi `statusLine`](/id/statusline) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |230| `statusLine` | Konfigurasikan status line khusus untuk menampilkan konteks. Lihat [dokumentasi `statusLine`](/id/statusline) | `{"type": "command", "command": "~/.claude/statusline.sh"}` |

228| `strictKnownMarketplaces` | (Pengaturan yang dikelola saja) Daftar putih sumber marketplace plugin. Tidak terdefinisi = tidak ada pembatasan, array kosong = lockdown. Diterapkan pada penambahan marketplace dan instalasi plugin, pembaruan, penyegaran, dan auto-update, jadi marketplace yang ditambahkan sebelum kebijakan ditetapkan tidak dapat digunakan untuk mengambil plugin. Lihat [Pembatasan marketplace yang dikelola](/id/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |231| `strictKnownMarketplaces` | (Pengaturan yang dikelola saja) Daftar putih sumber marketplace plugin. Tidak terdefinisi = tidak ada pembatasan, array kosong = lockdown. Diterapkan pada penambahan marketplace dan instalasi plugin, pembaruan, penyegaran, dan auto-update, jadi marketplace yang ditambahkan sebelum kebijakan ditetapkan tidak dapat digunakan untuk mengambil plugin. Lihat [Pembatasan marketplace yang dikelola](/id/plugin-marketplaces#managed-marketplace-restrictions) | `[{ "source": "github", "repo": "acme-corp/plugins" }]` |

229| `teammateMode` | Bagaimana [rekan tim agent](/id/agent-teams) ditampilkan: `auto` (memilih panel terpisah di tmux atau iTerm2, dalam proses sebaliknya), `in-process`, atau `tmux`. Lihat [pilih mode tampilan](/id/agent-teams#choose-a-display-mode) | `"in-process"` |232| `syntaxHighlightingDisabled` | Nonaktifkan syntax highlighting dalam diffs, code blocks, dan file previews | `true` |

233| `teammateMode` | Bagaimana [rekan tim agent](/id/agent-teams) ditampilkan: `auto` (memilih panel terpisah di tmux atau iTerm2, dalam proses sebaliknya), `in-process`, atau `tmux`. `--teammate-mode` menimpa ini untuk satu sesi. Lihat [pilih mode tampilan](/id/agent-teams#choose-a-display-mode) | `"in-process"` |

230| `terminalProgressBarEnabled` | Tampilkan bilah kemajuan terminal di terminal yang didukung: ConEmu, Ghostty 1.2.0+, dan iTerm2 3.6.6+. Default: `true`. Muncul di `/config` sebagai **Terminal progress bar** | `false` |234| `terminalProgressBarEnabled` | Tampilkan bilah kemajuan terminal di terminal yang didukung: ConEmu, Ghostty 1.2.0+, dan iTerm2 3.6.6+. Default: `true`. Muncul di `/config` sebagai **Terminal progress bar** | `false` |

231| `tui` | Renderer UI terminal. Gunakan `"fullscreen"` untuk renderer alt-screen bebas flicker dengan scrollback virtual. Gunakan `"default"` untuk renderer main-screen klasik. Atur melalui `/tui` | `"fullscreen"` |235| `tui` | Renderer UI terminal. Gunakan `"fullscreen"` untuk renderer alt-screen bebas flicker dengan scrollback virtual. Gunakan `"default"` untuk renderer main-screen klasik. Atur melalui `/tui`. Anda juga dapat menetapkan variabel lingkungan [`CLAUDE_CODE_NO_FLICKER`](/id/env-vars) | `"fullscreen"` |

232| `useAutoModeDuringPlan` | Apakah plan mode menggunakan semantik mode otomatis saat mode otomatis tersedia. Default: `true`. Tidak dibaca dari pengaturan proyek bersama. Muncul di `/config` sebagai "Use auto mode during plan" | `false` |236| `useAutoModeDuringPlan` | Apakah plan mode menggunakan semantik mode otomatis saat mode otomatis tersedia. Default: `true`. Tidak dibaca dari pengaturan proyek bersama. Muncul di `/config` sebagai "Use auto mode during plan" | `false` |

233| `viewMode` | Mode tampilan transkrip default saat startup: `"default"`, `"verbose"`, atau `"focus"`. Menimpa pemilihan `/focus` yang lengket saat diatur | `"verbose"` |237| `viewMode` | Mode tampilan transkrip default saat startup: `"default"`, `"verbose"`, atau `"focus"`. Menimpa pemilihan `/focus` yang lengket saat diatur. Flag `--verbose` menimpa ini untuk satu sesi | `"verbose"` |

234| `voice` | Pengaturan [voice dictation](/id/voice-dictation): `enabled` mengaktifkan dictation, `mode` memilih `"hold"` atau `"tap"`, dan `autoSubmit` mengirim prompt pada pelepasan kunci dalam mode hold. Ditulis secara otomatis saat Anda menjalankan `/voice`. Memerlukan akun Claude.ai | `{ "enabled": true, "mode": "tap" }` |238| `voice` | Pengaturan [voice dictation](/id/voice-dictation): `enabled` mengaktifkan dictation, `mode` memilih `"hold"` atau `"tap"`, dan `autoSubmit` mengirim prompt pada pelepasan kunci dalam mode hold. Ditulis secara otomatis saat Anda menjalankan `/voice`. Memerlukan akun Claude.ai | `{ "enabled": true, "mode": "tap" }` |

235| `voiceEnabled` | Alias warisan untuk `voice.enabled`. Lebih suka objek `voice` | `true` |239| `voiceEnabled` | Alias warisan untuk `voice.enabled`. Lebih suka objek `voice` | `true` |

236| `wslInheritsWindowsSettings` | (Pengaturan yang dikelola Windows saja) Saat `true`, Claude Code di WSL membaca pengaturan yang dikelola dari rantai kebijakan Windows selain `/etc/claude-code`, dengan sumber Windows memiliki prioritas. Hanya dihormati saat diatur dalam kunci registry HKLM atau `C:\Program Files\ClaudeCode\managed-settings.json`, keduanya memerlukan admin Windows untuk menulis. Untuk kebijakan HKCU juga berlaku di WSL, flag harus juga diatur di HKCU itu sendiri. Tidak berpengaruh pada Windows asli | `true` |240| `wslInheritsWindowsSettings` | (Pengaturan yang dikelola Windows saja) Saat `true`, Claude Code di WSL membaca pengaturan yang dikelola dari rantai kebijakan Windows selain `/etc/claude-code`, dengan sumber Windows memiliki prioritas. Hanya dihormati saat diatur dalam kunci registry HKLM atau `C:\Program Files\ClaudeCode\managed-settings.json`, keduanya memerlukan admin Windows untuk menulis. Untuk kebijakan HKCU juga berlaku di WSL, flag harus juga diatur di HKCU itu sendiri. Tidak berpengaruh pada Windows asli | `true` |


244</Note>248</Note>

245 249 

246| Kunci | Deskripsi | Contoh |250| Kunci | Deskripsi | Contoh |

247| :------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ |251| :------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ |

248| `autoConnectIde` | Secara otomatis terhubung ke IDE yang sedang berjalan saat Claude Code dimulai dari terminal eksternal. Default: `false`. Muncul di `/config` sebagai **Auto-connect to IDE (external terminal)** saat berjalan di luar terminal VS Code atau JetBrains | `true` |252| `autoConnectIde` | Secara otomatis terhubung ke IDE yang sedang berjalan saat Claude Code dimulai dari terminal eksternal. Default: `false`. Muncul di `/config` sebagai **Auto-connect to IDE (external terminal)** saat berjalan di luar terminal VS Code atau JetBrains. Variabel lingkungan [`CLAUDE_CODE_AUTO_CONNECT_IDE`](/id/env-vars) menimpa ini saat diatur | `true` |

249| `autoInstallIdeExtension` | Secara otomatis instal ekstensi IDE Claude Code saat berjalan dari terminal VS Code. Default: `true`. Muncul di `/config` sebagai **Auto-install IDE extension** saat berjalan di dalam terminal VS Code atau JetBrains. Anda juga dapat menetapkan variabel lingkungan [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](/id/env-vars) | `false` |253| `autoInstallIdeExtension` | Secara otomatis instal ekstensi IDE Claude Code saat berjalan dari terminal VS Code. Default: `true`. Muncul di `/config` sebagai **Auto-install IDE extension** saat berjalan di dalam terminal VS Code atau JetBrains. Anda juga dapat menetapkan variabel lingkungan [`CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL`](/id/env-vars) | `false` |

250| `externalEditorContext` | Tambahkan respons sebelumnya Claude sebagai konteks berkomentar `#` saat Anda membuka editor eksternal dengan `Ctrl+G`. Default: `false`. Muncul di `/config` sebagai **Show last response in external editor** | `true` |254| `externalEditorContext` | Tambahkan respons sebelumnya Claude sebagai konteks berkomentar `#` saat Anda membuka editor eksternal dengan `Ctrl+G`. Default: `false`. Muncul di `/config` sebagai **Show last response in external editor** | `true` |

251 255 


444 448 

445**Batasi URL HTTP hook:**449**Batasi URL HTTP hook:**

446 450 

447Batasi URL mana yang dapat ditargetkan oleh HTTP hooks. Mendukung `*` sebagai wildcard untuk pencocokan. Saat array didefinisikan, HTTP hooks yang menargetkan URL yang tidak cocok diblokir secara diam-diam.451Batasi URL mana yang dapat ditargetkan oleh HTTP hooks. Mendukung `*` sebagai wildcard untuk pencocokan. Saat array didefinisikan, HTTP hooks yang menargetkan URL yang tidak cocok diblokir secara diam-diam. Pencocokan nama host tidak peka huruf besar-kecil dan mengabaikan titik FQDN di akhir, mencocokkan semantik DNS.

448 452 

449```json theme={null}453```json theme={null}

450{454{


472 * Dalam tingkat yang dikelola, prioritas adalah: yang dikelola server > kebijakan tingkat MDM/OS > file-based (`managed-settings.d/*.json` + `managed-settings.json`) > registry HKCU (Windows saja). Hanya satu sumber yang dikelola yang digunakan; sumber tidak digabungkan di seluruh tingkat. Dalam tingkat berbasis file, file drop-in dan file dasar digabungkan bersama.476 * Dalam tingkat yang dikelola, prioritas adalah: yang dikelola server > kebijakan tingkat MDM/OS > file-based (`managed-settings.d/*.json` + `managed-settings.json`) > registry HKCU (Windows saja). Hanya satu sumber yang dikelola yang digunakan; sumber tidak digabungkan di seluruh tingkat. Dalam tingkat berbasis file, file drop-in dan file dasar digabungkan bersama.

473 477 

4742. **Argumen baris perintah**4782. **Argumen baris perintah**

475 * Penggantian sementara untuk sesi tertentu479 * Penggantian sementara untuk sesi tertentu. JSON yang dilewatkan melalui `--settings <file-or-json>` digabungkan dengan pengaturan berbasis file menggunakan aturan yang sama seperti lapisan lainnya: kunci yang diatur di sini menimpa kunci yang sama dalam pengaturan lokal, proyek, atau pengguna, dan menghilangkan kunci membiarkan nilai lapisan lebih rendah tetap ada

476 480 

4773. **Pengaturan proyek lokal** (`.claude/settings.local.json`)4813. **Pengaturan proyek lokal** (`.claude/settings.local.json`)

478 * Pengaturan proyek pribadi482 * Pengaturan proyek pribadi

setup.md +7 −3

Details

175 175 

176## Perbarui Claude Code176## Perbarui Claude Code

177 177 

178Instalasi asli secara otomatis diperbarui di latar belakang. Anda dapat [mengonfigurasi saluran rilis](#configure-release-channel) untuk mengontrol apakah Anda menerima pembaruan segera atau sesuai jadwal stabil yang tertunda, atau [menonaktifkan pembaruan otomatis](#disable-auto-updates) sepenuhnya. Instalasi Homebrew, WinGet, dan [manajer paket Linux](#install-with-linux-package-managers) memerlukan pembaruan manual.178Instalasi asli secara otomatis diperbarui di latar belakang. Anda dapat [mengonfigurasi saluran rilis](#configure-release-channel) untuk mengontrol apakah Anda menerima pembaruan segera atau sesuai jadwal stabil yang tertunda, atau [menonaktifkan pembaruan otomatis](#disable-auto-updates) sepenuhnya. Instalasi Homebrew, WinGet, dan [manajer paket Linux](#install-with-linux-package-managers) memerlukan pembaruan manual secara default.

179 179 

180### Pembaruan otomatis180### Pembaruan otomatis

181 181 

182Claude Code memeriksa pembaruan saat startup dan secara berkala saat berjalan. Pembaruan diunduh dan diinstal di latar belakang, kemudian berlaku saat Anda memulai Claude Code berikutnya.182Claude Code memeriksa pembaruan saat startup dan secara berkala saat berjalan. Pembaruan diunduh dan diinstal di latar belakang, kemudian berlaku saat Anda memulai Claude Code berikutnya.

183 183 

184<Note>184<Note>

185 Instalasi Homebrew, WinGet, apt, dnf, dan apk tidak auto-update. Untuk Homebrew, jalankan `brew upgrade claude-code` atau `brew upgrade claude-code@latest`, tergantung cask mana yang Anda instal. Untuk WinGet, jalankan `winget upgrade Anthropic.ClaudeCode`. Untuk manajer paket Linux, lihat perintah upgrade di [Install with Linux package managers](#install-with-linux-package-managers).185 Instalasi Homebrew, WinGet, apt, dnf, dan apk tidak auto-update secara default; lihat di bawah untuk memilih masuk untuk Homebrew dan WinGet. Untuk upgrade Homebrew secara manual, jalankan `brew upgrade claude-code` atau `brew upgrade claude-code@latest`, tergantung cask mana yang Anda instal. Untuk WinGet, jalankan `winget upgrade Anthropic.ClaudeCode`. Untuk manajer paket Linux, lihat perintah upgrade di [Install with Linux package managers](#install-with-linux-package-managers).

186 

187 Untuk membuat Claude Code menjalankan perintah upgrade untuk Anda di Homebrew atau WinGet, atur [`CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE`](/id/env-vars) ke `1`. Claude Code kemudian menjalankan upgrade di latar belakang ketika versi baru tersedia dan menampilkan prompt restart saat berhasil. Upgrade menargetkan hanya paket Claude Code dan tidak mempengaruhi perangkat lunak lain yang telah Anda instal.

188 

189 Di WinGet upgrade mungkin gagal saat Claude Code berjalan karena Windows mengunci executable. Dalam hal itu Claude Code menampilkan perintah manual sebagai gantinya. apt, dnf, dan apk terus memerlukan upgrade manual karena perintah tersebut memerlukan privilege yang ditingkatkan.

186 190 

187 **Masalah yang diketahui:** Claude Code dapat memberi tahu Anda tentang pembaruan sebelum versi baru tersedia di manajer paket ini. Jika upgrade gagal, tunggu dan coba lagi nanti.191 **Masalah yang diketahui:** Claude Code dapat memberi tahu Anda tentang pembaruan sebelum versi baru tersedia di manajer paket ini. Jika upgrade gagal, tunggu dan coba lagi nanti.

188 192 


489 493 

490## Hapus instalasi Claude Code494## Hapus instalasi Claude Code

491 495 

492Untuk menghapus Claude Code, ikuti instruksi untuk metode instalasi Anda.496Untuk menghapus Claude Code, ikuti instruksi untuk metode instalasi Anda. Jika `claude` masih berjalan setelahnya, Anda kemungkinan memiliki instalasi kedua atau alias shell yang tertinggal dari installer yang lebih lama. Lihat [Periksa instalasi yang bertentangan](/id/troubleshoot-install#check-for-conflicting-installations) untuk menemukan dan menghapusnya.

493 497 

494### Instalasi asli498### Instalasi asli

495 499 

skills.md +60 −27

Details

8 8 

9Skills memperluas apa yang dapat dilakukan Claude. Buat file `SKILL.md` dengan instruksi, dan Claude menambahkannya ke toolkit-nya. Claude menggunakan skills saat relevan, atau Anda dapat menginvokasinya secara langsung dengan `/skill-name`.9Skills memperluas apa yang dapat dilakukan Claude. Buat file `SKILL.md` dengan instruksi, dan Claude menambahkannya ke toolkit-nya. Claude menggunakan skills saat relevan, atau Anda dapat menginvokasinya secara langsung dengan `/skill-name`.

10 10 

11Buat skill ketika Anda terus menempel playbook yang sama, checklist, atau prosedur multi-langkah ke dalam chat, atau ketika bagian dari CLAUDE.md telah berkembang menjadi prosedur daripada fakta. Tidak seperti konten CLAUDE.md, badan skill hanya dimuat saat digunakan, jadi materi referensi yang panjang hampir tidak ada biayanya sampai Anda membutuhkannya.11Buat skill ketika Anda terus menempel instruksi yang sama, checklist, atau prosedur multi-langkah ke dalam chat, atau ketika bagian dari CLAUDE.md telah berkembang menjadi prosedur daripada fakta. Tidak seperti konten CLAUDE.md, badan skill hanya dimuat saat digunakan, jadi materi referensi yang panjang hampir tidak ada biayanya sampai Anda membutuhkannya.

12 12 

13<Note>13<Note>

14 Untuk perintah bawaan seperti `/help` dan `/compact`, dan skills bundel seperti `/debug` dan `/simplify`, lihat [referensi perintah](/id/commands).14 Untuk perintah bawaan seperti `/help` dan `/compact`, dan skills bundel seperti `/debug` dan `/simplify`, lihat [referensi perintah](/id/commands).


20 20 

21## Skills bundel21## Skills bundel

22 22 

23Claude Code menyertakan serangkaian skills bundel yang tersedia di setiap sesi, termasuk `/simplify`, `/batch`, `/debug`, `/loop`, dan `/claude-api`. Tidak seperti sebagian besar perintah bawaan, yang menjalankan logika tetap secara langsung, skills bundel berbasis prompt: mereka memberikan Claude playbook terperinci dan membiarkannya mengorkestrasi pekerjaan menggunakan tools-nya. Anda menginvokasinya dengan cara yang sama seperti skill lainnya, dengan mengetik `/` diikuti dengan nama skill.23Claude Code menyertakan serangkaian skills bundel yang tersedia di setiap sesi, termasuk `/simplify`, `/batch`, `/debug`, `/loop`, dan `/claude-api`. Tidak seperti sebagian besar perintah bawaan, yang menjalankan logika tetap secara langsung, skills bundel berbasis prompt: mereka memberikan Claude instruksi terperinci dan membiarkannya mengorkestrasi pekerjaan menggunakan tools-nya. Anda menginvokasinya dengan cara yang sama seperti skill lainnya, dengan mengetik `/` diikuti dengan nama skill.

24 24 

25Skills bundel terdaftar bersama perintah bawaan dalam [referensi perintah](/id/commands), ditandai **Skill** di kolom Tujuan.25Skills bundel terdaftar bersama perintah bawaan dalam [referensi perintah](/id/commands), ditandai **Skill** di kolom Tujuan.

26 26 


28 28 

29### Buat skill pertama Anda29### Buat skill pertama Anda

30 30 

31Contoh ini membuat skill yang mengajarkan Claude menjelaskan kode menggunakan diagram visual dan analogi. Karena menggunakan frontmatter default, Claude dapat memuatnya secara otomatis saat Anda bertanya bagaimana sesuatu bekerja, atau Anda dapat menginvokasinya secara langsung dengan `/explain-code`.31Contoh ini membuat skill yang merangkum perubahan yang belum di-commit dalam repositori git Anda dan menandai apa pun yang berisiko. Ini menarik diff langsung ke dalam prompt sebelum Claude membacanya, sehingga respons didasarkan pada pohon kerja aktual Anda daripada apa yang dapat Claude tebak dari file terbuka. Claude memuat skill secara otomatis saat Anda bertanya tentang perubahan Anda, atau Anda dapat menginvokasinya secara langsung dengan `/summarize-changes`.

32 32 

33<Steps>33<Steps>

34 <Step title="Buat direktori skill">34 <Step title="Buat direktori skill">

35 Buat direktori untuk skill di folder skills pribadi Anda. Skills pribadi tersedia di semua proyek Anda.35 Buat direktori untuk skill di folder skills pribadi Anda. Skills pribadi tersedia di semua proyek Anda.

36 36 

37 ```bash theme={null}37 ```bash theme={null}

38 mkdir -p ~/.claude/skills/explain-code38 mkdir -p ~/.claude/skills/summarize-changes

39 ```39 ```

40 </Step>40 </Step>

41 41 

42 <Step title="Tulis SKILL.md">42 <Step title="Tulis SKILL.md">

43 Setiap skill memerlukan file `SKILL.md` dengan dua bagian: frontmatter YAML (antara penanda `---`) yang memberi tahu Claude kapan menggunakan skill, dan konten markdown dengan instruksi yang diikuti Claude saat skill diinvokasinya. Nama direktori menjadi `/slash-command`, dan `description` membantu Claude memutuskan kapan memuatnya secara otomatis.43 Setiap skill memerlukan file `SKILL.md` dengan dua bagian: frontmatter YAML antara penanda `---` yang memberi tahu Claude kapan menggunakan skill, dan konten markdown dengan instruksi yang diikuti Claude saat skill dijalankan. Nama direktori menjadi perintah yang Anda ketik, dan `description` membantu Claude memutuskan kapan memuatnya secara otomatis.

44 44 

45 Buat `~/.claude/skills/explain-code/SKILL.md`:45 Simpan ini ke `~/.claude/skills/summarize-changes/SKILL.md`:

46 46 

47 ```yaml theme={null}47 ```yaml theme={null}

48 ---48 ---

49 description: Explains code with visual diagrams and analogies. Use when explaining how code works, teaching about a codebase, or when the user asks "how does this work?"49 description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff.

50 ---50 ---

51 51 

52 When explaining code, always include:52 ## Current changes

53 53 

54 1. **Start with an analogy**: Compare the code to something from everyday life54 !`git diff HEAD`

55 2. **Draw a diagram**: Use ASCII art to show the flow, structure, or relationships

56 3. **Walk through the code**: Explain step-by-step what happens

57 4. **Highlight a gotcha**: What's a common mistake or misconception?

58 55 

59 Keep explanations conversational. For complex concepts, use multiple analogies.56 ## Instructions

57 

58 Summarize the changes above in two or three bullet points, then list any risks you notice such as missing error handling, hardcoded values, or tests that need updating. If the diff is empty, say there are no uncommitted changes.

60 ```59 ```

60 

61 Baris `` !`git diff HEAD` `` menggunakan [injeksi konteks dinamis](#inject-dynamic-context): Claude Code menjalankan perintah dan mengganti baris dengan outputnya sebelum Claude melihat konten skill, sehingga instruksi tiba dengan diff saat ini sudah inline.

61 </Step>62 </Step>

62 63 

63 <Step title="Uji skill">64 <Step title="Uji skill">

64 Anda dapat mengujinya dengan dua cara:65 Buka proyek git, buat edit kecil ke file apa pun, dan mulai Claude Code dengan menjalankan `claude`. Anda dapat menguji skill dengan dua cara.

65 66 

66 **Biarkan Claude menginvokasinya secara otomatis** dengan menanyakan sesuatu yang cocok dengan deskripsi:67 **Biarkan Claude menginvokasinya secara otomatis** dengan menanyakan sesuatu yang cocok dengan deskripsi:

67 68 

68 ```text theme={null}69 ```text theme={null}

69 How does this code work?70 What did I change?

70 ```71 ```

71 72 

72 **Atau invokasinya secara langsung** dengan nama skill:73 **Atau invokasinya secara langsung** dengan nama skill:

73 74 

74 ```text theme={null}75 ```text theme={null}

75 /explain-code src/auth/login.ts76 /summarize-changes

76 ```77 ```

77 78 

78 Baik cara apa pun, Claude harus menyertakan analogi dan diagram ASCII dalam penjelasannya.79 Baik cara apa pun, Claude harus merespons dengan ringkasan singkat edit Anda dan daftar risiko.

79 </Step>80 </Step>

80</Steps>81</Steps>

81 82 


168 169 

169`SKILL.md` Anda dapat berisi apa pun, tetapi memikirkan bagaimana Anda ingin skill diinvokasinya (oleh Anda, oleh Claude, atau keduanya) dan di mana Anda ingin menjalankannya (inline atau di subagent) membantu memandu apa yang harus disertakan. Untuk skills kompleks, Anda juga dapat [menambahkan file pendukung](#add-supporting-files) untuk menjaga skill utama tetap fokus.170`SKILL.md` Anda dapat berisi apa pun, tetapi memikirkan bagaimana Anda ingin skill diinvokasinya (oleh Anda, oleh Claude, atau keduanya) dan di mana Anda ingin menjalankannya (inline atau di subagent) membantu memandu apa yang harus disertakan. Untuk skills kompleks, Anda juga dapat [menambahkan file pendukung](#add-supporting-files) untuk menjaga skill utama tetap fokus.

170 171 

172Jaga isi itu sendiri tetap ringkas. Setelah skill dimuat, kontennya [tetap dalam konteks di seluruh giliran](#skill-content-lifecycle), jadi setiap baris adalah biaya token berulang. Nyatakan apa yang harus dilakukan daripada menceritakan bagaimana atau mengapa, dan terapkan tes keringkasan yang sama yang akan Anda lakukan untuk [konten CLAUDE.md](/id/best-practices#write-an-effective-claude-md).

173 

171### Referensi frontmatter174### Referensi frontmatter

172 175 

173Selain konten markdown, Anda dapat mengonfigurasi perilaku skill menggunakan bidang frontmatter YAML antara penanda `---` di bagian atas file `SKILL.md` Anda:176Selain konten markdown, Anda dapat mengonfigurasi perilaku skill menggunakan bidang frontmatter YAML antara penanda `---` di bagian atas file `SKILL.md` Anda:


305 308 

306Bidang `allowed-tools` memberikan izin untuk tools yang terdaftar saat skill aktif, sehingga Claude dapat menggunakannya tanpa meminta persetujuan Anda. Ini tidak membatasi tools mana yang tersedia: setiap tool tetap dapat dipanggil, dan [pengaturan izin](/id/permissions) Anda masih mengatur tools yang tidak terdaftar.309Bidang `allowed-tools` memberikan izin untuk tools yang terdaftar saat skill aktif, sehingga Claude dapat menggunakannya tanpa meminta persetujuan Anda. Ini tidak membatasi tools mana yang tersedia: setiap tool tetap dapat dipanggil, dan [pengaturan izin](/id/permissions) Anda masih mengatur tools yang tidak terdaftar.

307 310 

311Untuk skills yang diperiksa ke dalam direktori `.claude/skills/` proyek, `allowed-tools` berlaku setelah Anda menerima dialog kepercayaan workspace untuk folder itu, sama seperti aturan izin dalam `.claude/settings.json`. Tinjau skills proyek sebelum mempercayai repositori, karena skill dapat memberikan dirinya sendiri akses tools yang luas.

312 

308Skill ini memungkinkan Claude menjalankan perintah git tanpa persetujuan per-penggunaan kapan pun Anda menginvokasinya:313Skill ini memungkinkan Claude menjalankan perintah git tanpa persetujuan per-penggunaan kapan pun Anda menginvokasinya:

309 314 

310```yaml theme={null}315```yaml theme={null}


416Untuk menonaktifkan perilaku ini untuk skills dan perintah kustom dari sumber pengguna, proyek, plugin, atau [direktori tambahan](#skills-from-additional-directories), atur `"disableSkillShellExecution": true` dalam [pengaturan](/id/settings). Setiap perintah diganti dengan `[shell command execution disabled by policy]` sebagai gantinya dijalankan. Skills bundel dan terkelola tidak terpengaruh. Pengaturan ini paling berguna dalam [pengaturan terkelola](/id/permissions#managed-settings), di mana pengguna tidak dapat menimpanya.421Untuk menonaktifkan perilaku ini untuk skills dan perintah kustom dari sumber pengguna, proyek, plugin, atau [direktori tambahan](#skills-from-additional-directories), atur `"disableSkillShellExecution": true` dalam [pengaturan](/id/settings). Setiap perintah diganti dengan `[shell command execution disabled by policy]` sebagai gantinya dijalankan. Skills bundel dan terkelola tidak terpengaruh. Pengaturan ini paling berguna dalam [pengaturan terkelola](/id/permissions#managed-settings), di mana pengguna tidak dapat menimpanya.

417 422 

418<Tip>423<Tip>

419 Untuk mengaktifkan [extended thinking](/id/common-workflows#use-extended-thinking-thinking-mode) dalam skill, sertakan kata "ultrathink" di mana pun dalam konten skill Anda.424 Untuk meminta penalaran yang lebih dalam saat skill berjalan, sertakan `ultrathink` di mana pun dalam konten skill. Lihat [Gunakan ultrathink untuk penalaran mendalam sekali jalan](/id/model-config#use-ultrathink-for-one-off-deep-reasoning).

420</Tip>425</Tip>

421 426 

422### Jalankan skills dalam subagent427### Jalankan skills dalam subagent


496 Bidang `user-invocable` hanya mengontrol visibilitas menu, bukan akses tool Skill. Gunakan `disable-model-invocation: true` untuk memblokir invokasi programatik.501 Bidang `user-invocable` hanya mengontrol visibilitas menu, bukan akses tool Skill. Gunakan `disable-model-invocation: true` untuk memblokir invokasi programatik.

497</Note>502</Note>

498 503 

504### Ganti visibilitas skill dari pengaturan

505 

506Pengaturan `skillOverrides` mengontrol visibilitas skill dari [pengaturan](/id/settings) Anda sebagai gantinya dari frontmatter skill itu sendiri. Gunakan untuk skills yang SKILL.md-nya Anda tidak ingin edit, seperti yang diperiksa ke dalam repo proyek bersama atau disediakan oleh server MCP. Menu `/skills` menulisnya untuk Anda: sorot skill dan tekan `Space` untuk mengubah status, kemudian `Enter` untuk menyimpan ke `.claude/settings.local.json`.

507 

508Setiap kunci adalah nama skill dan setiap nilai adalah salah satu dari empat status:

509 

510| Nilai | Terdaftar ke Claude | Dalam menu `/` |

511| :---------------------- | :------------------ | :------------- |

512| `"on"` | Nama dan deskripsi | Ya |

513| `"name-only"` | Nama saja | Ya |

514| `"user-invocable-only"` | Tersembunyi | Ya |

515| `"off"` | Tersembunyi | Tersembunyi |

516 

517Skill yang tidak ada dalam `skillOverrides` diperlakukan sebagai `"on"`. Contoh di bawah ini menciutkan satu skill menjadi namanya dan mematikan yang lain sepenuhnya:

518 

519```json theme={null}

520{

521 "skillOverrides": {

522 "legacy-context": "name-only",

523 "deploy": "off"

524 }

525}

526```

527 

528Plugin skills tidak terpengaruh oleh `skillOverrides`. Kelola yang melalui `/plugin` sebagai gantinya.

529 

499## Bagikan skills530## Bagikan skills

500 531 

501Skills dapat didistribusikan pada cakupan berbeda tergantung pada audiens Anda:532Skills dapat didistribusikan pada cakupan berbeda tergantung pada audiens Anda:


516mkdir -p ~/.claude/skills/codebase-visualizer/scripts547mkdir -p ~/.claude/skills/codebase-visualizer/scripts

517```548```

518 549 

519Buat `~/.claude/skills/codebase-visualizer/SKILL.md`. Deskripsi memberi tahu Claude kapan mengaktifkan Skill ini, dan instruksi memberi tahu Claude untuk menjalankan script yang dikemas:550Simpan ini ke `~/.claude/skills/codebase-visualizer/SKILL.md`. Deskripsi memberi tahu Claude kapan mengaktifkan Skill ini, dan instruksi memberi tahu Claude untuk menjalankan script yang dikemas. Jalur script menggunakan [`${CLAUDE_SKILL_DIR}`](#available-string-substitutions) sehingga dapat diselesaikan dengan benar apakah skill diinstal pada tingkat personal, proyek, atau plugin:

520 551 

521````yaml theme={null}552````yaml theme={null}

522---553---

523name: codebase-visualizer554name: codebase-visualizer

524description: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.555description: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.

525allowed-tools: Bash(python *)556allowed-tools: Bash(python3 *)

526---557---

527 558 

528# Codebase Visualizer559# Codebase Visualizer


534Run the visualization script from your project root:565Run the visualization script from your project root:

535 566 

536```bash567```bash

537python ~/.claude/skills/codebase-visualizer/scripts/visualize.py .568python3 ${CLAUDE_SKILL_DIR}/scripts/visualize.py .

538```569```

539 570 

540This creates `codebase-map.html` in the current directory and opens it in your default browser.571This creates `codebase-map.html` in the current directory and opens it in your default browser.


547- **Directory totals**: Shows aggregate size of each folder578- **Directory totals**: Shows aggregate size of each folder

548````579````

549 580 

550Buat `~/.claude/skills/codebase-visualizer/scripts/visualize.py`. Script ini memindai pohon direktori dan menghasilkan file HTML yang mandiri dengan:581Simpan ini ke `~/.claude/skills/codebase-visualizer/scripts/visualize.py`. Script ini memindai pohon direktori dan menghasilkan file HTML yang mandiri dengan:

551 582 

552* **Sidebar ringkasan** yang menunjukkan jumlah file, jumlah direktori, ukuran total, dan jumlah jenis file583* **Sidebar ringkasan** yang menunjukkan jumlah file, jumlah direktori, ukuran total, dan jumlah jenis file

553* **Bagan batang** yang memecah codebase berdasarkan jenis file (8 teratas berdasarkan ukuran)584* **Bagan batang** yang memecah codebase berdasarkan jenis file (8 teratas berdasarkan ukuran)

554* **Pohon yang dapat diciutkan** di mana Anda dapat memperluas dan menciutkan direktori, dengan indikator jenis file berkode warna585* **Pohon yang dapat diciutkan** di mana Anda dapat memperluas dan menciutkan direktori, dengan indikator jenis file berkode warna

555 586 

556Script memerlukan Python tetapi hanya menggunakan library bawaan, jadi tidak ada paket yang perlu diinstal:587Script memerlukan Python 3 tetapi hanya menggunakan library bawaan, jadi tidak ada paket yang perlu diinstal:

557 588 

558```python expandable theme={null}589```python expandable theme={null}

559#!/usr/bin/env python3590#!/usr/bin/env python3


562import json593import json

563import sys594import sys

564import webbrowser595import webbrowser

596from html import escape

565from pathlib import Path597from pathlib import Path

566from collections import Counter598from collections import Counter

567 599 


650 {lang_bars}682 {lang_bars}

651 </div>683 </div>

652 <div class="main">684 <div class="main">

653 <h1>📁 {data["name"]}</h1>685 <h1>📁 {escape(data["name"])}</h1>

654 <ul class="tree" id="root"></ul>686 <ul class="tree" id="root"></ul>

655 </div>687 </div>

656 </div>688 </div>


658 const data = {json.dumps(data)};690 const data = {json.dumps(data)};

659 const colors = {json.dumps(colors)};691 const colors = {json.dumps(colors)};

660 function fmt(b) {{ if (b < 1024) return b + ' B'; if (b < 1048576) return (b/1024).toFixed(1) + ' KB'; return (b/1048576).toFixed(1) + ' MB'; }}692 function fmt(b) {{ if (b < 1024) return b + ' B'; if (b < 1048576) return (b/1024).toFixed(1) + ' KB'; return (b/1048576).toFixed(1) + ' MB'; }}

693 function esc(s) {{ return s.replace(/[&<>"']/g, c => ({{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}}[c])); }}

661 function render(node, parent) {{694 function render(node, parent) {{

662 if (node.children) {{695 if (node.children) {{

663 const det = document.createElement('details');696 const det = document.createElement('details');

664 det.open = parent === document.getElementById('root');697 det.open = parent === document.getElementById('root');

665 det.innerHTML = `<summary><span class="folder">📁 ${{node.name}}</span><span class="size">${{fmt(node.size)}}</span></summary>`;698 det.innerHTML = `<summary><span class="folder">📁 ${{esc(node.name)}}</span><span class="size">${{fmt(node.size)}}</span></summary>`;

666 const ul = document.createElement('ul'); ul.className = 'tree';699 const ul = document.createElement('ul'); ul.className = 'tree';

667 node.children.sort((a,b) => (b.children?1:0)-(a.children?1:0) || a.name.localeCompare(b.name));700 node.children.sort((a,b) => (b.children?1:0)-(a.children?1:0) || a.name.localeCompare(b.name));

668 node.children.forEach(c => render(c, ul));701 node.children.forEach(c => render(c, ul));


670 const li = document.createElement('li'); li.appendChild(det); parent.appendChild(li);703 const li = document.createElement('li'); li.appendChild(det); parent.appendChild(li);

671 }} else {{704 }} else {{

672 const li = document.createElement('li'); li.className = 'file';705 const li = document.createElement('li'); li.className = 'file';

673 li.innerHTML = `<span class="dot" style="background:${{colors[node.ext]||'#6b7280'}}"></span>${{node.name}}<span class="size">${{fmt(node.size)}}</span>`;706 li.innerHTML = `<span class="dot" style="background:${{colors[node.ext]||'#6b7280'}}"></span>${{esc(node.name)}}<span class="size">${{fmt(node.size)}}</span>`;

674 parent.appendChild(li);707 parent.appendChild(li);

675 }}708 }}

676 }}709 }}


715 748 

716Deskripsi skill dimuat ke dalam konteks sehingga Claude tahu apa yang tersedia. Semua nama skill selalu disertakan, tetapi jika Anda memiliki banyak skills, deskripsi diperpendek agar sesuai dengan anggaran karakter, yang dapat menghilangkan kata kunci yang dibutuhkan Claude untuk mencocokkan permintaan Anda. Anggaran diskalakan secara dinamis pada 1% dari jendela konteks, dengan fallback 8.000 karakter.749Deskripsi skill dimuat ke dalam konteks sehingga Claude tahu apa yang tersedia. Semua nama skill selalu disertakan, tetapi jika Anda memiliki banyak skills, deskripsi diperpendek agar sesuai dengan anggaran karakter, yang dapat menghilangkan kata kunci yang dibutuhkan Claude untuk mencocokkan permintaan Anda. Anggaran diskalakan secara dinamis pada 1% dari jendela konteks, dengan fallback 8.000 karakter.

717 750 

718Untuk menaikkan batas, atur variabel lingkungan `SLASH_COMMAND_TOOL_CHAR_BUDGET`. Atau potong teks `description` dan `when_to_use` di sumbernya: depankan kasus penggunaan utama, karena teks gabungan setiap entri dibatasi pada 1.536 karakter terlepas dari anggaran.751Untuk menaikkan batas, atur variabel lingkungan `SLASH_COMMAND_TOOL_CHAR_BUDGET`. Untuk membebaskan anggaran bagi skill lainnya, atur entri prioritas rendah ke `"name-only"` di [`skillOverrides`](#override-skill-visibility-from-settings) sehingga mereka terdaftar tanpa deskripsi. Anda juga dapat memangkas teks `description` dan `when_to_use` di sumbernya: depankan kasus penggunaan utama, karena teks gabungan setiap entri dibatasi pada 1.536 karakter terlepas dari anggaran.

719 752 

720## Sumber daya terkait753## Sumber daya terkait

721 754 

statusline.md +15 −16

Details

134 134 

135**Kapan itu diperbarui**135**Kapan itu diperbarui**

136 136 

137Skrip Anda berjalan setelah setiap pesan asisten baru, ketika mode izin berubah, atau ketika vim mode beralih. Pembaruan dibatasi pada 300ms, berarti perubahan cepat dikumpulkan bersama dan skrip Anda berjalan sekali semuanya stabil. Jika pembaruan baru dipicu saat skrip Anda masih berjalan, eksekusi yang sedang berlangsung dibatalkan. Jika Anda mengedit skrip Anda, perubahan tidak akan muncul sampai interaksi berikutnya Anda dengan Claude Code memicu pembaruan.137Skrip Anda berjalan setelah setiap pesan asisten baru, setelah `/compact` selesai, ketika mode izin berubah, atau ketika vim mode beralih. Pembaruan dibatasi pada 300ms, berarti perubahan cepat dikumpulkan bersama dan skrip Anda berjalan sekali semuanya stabil. Jika pembaruan baru dipicu saat skrip Anda masih berjalan, eksekusi yang sedang berlangsung dibatalkan. Jika Anda mengedit skrip Anda, perubahan tidak akan muncul sampai interaksi berikutnya Anda dengan Claude Code memicu pembaruan.

138 138 

139Pemicu ini dapat menjadi senyap ketika sesi utama menganggur, misalnya saat koordinator menunggu subagen latar belakang. Untuk menjaga segmen berbasis waktu atau bersumber eksternal tetap terkini selama periode menganggur, atur [`refreshInterval`](#manually-configure-a-status-line) untuk juga menjalankan kembali perintah pada timer tetap.139Pemicu ini dapat menjadi senyap ketika sesi utama menganggur, misalnya saat koordinator menunggu subagen latar belakang. Untuk menjaga segmen berbasis waktu atau bersumber eksternal tetap terkini selama periode menganggur, atur [`refreshInterval`](#manually-configure-a-status-line) untuk juga menjalankan kembali perintah pada timer tetap.

140 140 


161| `cost.total_duration_ms` | Total waktu dinding jam sejak sesi dimulai, dalam milidetik |161| `cost.total_duration_ms` | Total waktu dinding jam sejak sesi dimulai, dalam milidetik |

162| `cost.total_api_duration_ms` | Total waktu yang dihabiskan menunggu respons API dalam milidetik |162| `cost.total_api_duration_ms` | Total waktu yang dihabiskan menunggu respons API dalam milidetik |

163| `cost.total_lines_added`, `cost.total_lines_removed` | Baris kode yang diubah |163| `cost.total_lines_added`, `cost.total_lines_removed` | Baris kode yang diubah |

164| `context_window.total_input_tokens`, `context_window.total_output_tokens` | Jumlah token kumulatif di seluruh sesi |164| `context_window.total_input_tokens`, `context_window.total_output_tokens` | Jumlah token saat ini dalam jendela konteks, dari respons API terbaru. Input mencakup pembacaan dan penulisan cache. Sebelum v2.1.132 ini adalah total sesi kumulatif |

165| `context_window.context_window_size` | Ukuran jendela konteks maksimum dalam token. 200000 secara default, atau 1000000 untuk model dengan konteks diperpanjang. |165| `context_window.context_window_size` | Ukuran jendela konteks maksimum dalam token. 200000 secara default, atau 1000000 untuk model dengan konteks diperpanjang. |

166| `context_window.used_percentage` | Persentase jendela konteks yang digunakan yang telah dihitung sebelumnya |166| `context_window.used_percentage` | Persentase jendela konteks yang digunakan yang telah dihitung sebelumnya |

167| `context_window.remaining_percentage` | Persentase jendela konteks yang tersisa yang telah dihitung sebelumnya |167| `context_window.remaining_percentage` | Persentase jendela konteks yang tersisa yang telah dihitung sebelumnya |


215 "total_lines_removed": 23215 "total_lines_removed": 23

216 },216 },

217 "context_window": {217 "context_window": {

218 "total_input_tokens": 15234,218 "total_input_tokens": 15500,

219 "total_output_tokens": 4521,219 "total_output_tokens": 1200,

220 "context_window_size": 200000,220 "context_window_size": 200000,

221 "used_percentage": 8,221 "used_percentage": 8,

222 "remaining_percentage": 92,222 "remaining_percentage": 92,


272 272 

273 **Bidang yang mungkin `null`**:273 **Bidang yang mungkin `null`**:

274 274 

275 * `context_window.current_usage`: `null` sebelum panggilan API pertama dalam sesi275 * `context_window.current_usage`: `null` sebelum panggilan API pertama dalam sesi, dan lagi setelah `/compact` hingga panggilan API berikutnya mengisinya kembali

276 * `context_window.used_percentage`, `context_window.remaining_percentage`: mungkin `null` awal dalam sesi276 * `context_window.used_percentage`, `context_window.remaining_percentage`: mungkin `null` awal dalam sesi

277 277 

278 Tangani bidang yang hilang dengan akses bersyarat dan nilai null dengan default fallback dalam skrip Anda.278 Tangani bidang yang hilang dengan akses bersyarat dan nilai null dengan default fallback dalam skrip Anda.


280 280 

281### Bidang jendela konteks281### Bidang jendela konteks

282 282 

283Objek `context_window` menyediakan dua cara untuk melacak penggunaan konteks:283Objek `context_window` menjelaskan jendela konteks langsung dari respons API terbaru. Mulai dari v2.1.132, `total_input_tokens` dan `total_output_tokens` mencerminkan penggunaan konteks saat ini, bukan total sesi kumulatif.

284 284 

285* **Total kumulatif** (`total_input_tokens`, `total_output_tokens`): jumlah semua token di seluruh sesi, berguna untuk melacak konsumsi total285* **Total gabungan** (`total_input_tokens`, `total_output_tokens`): token saat ini dalam jendela konteks. `total_input_tokens` adalah jumlah dari `input_tokens`, `cache_creation_input_tokens`, dan `cache_read_input_tokens`; `total_output_tokens` adalah token output dari respons terbaru. Keduanya adalah `0` sebelum respons API pertama.

286* **Penggunaan saat ini** (`current_usage`): jumlah token dari panggilan API terbaru, gunakan ini untuk persentase konteks yang akurat karena mencerminkan keadaan konteks aktual286* **Penggunaan per komponen** (`current_usage`): jumlah token yang sama dipecah menurut kategori. Gunakan ini ketika Anda memerlukan cache hits terpisah dari input segar.

287 287 

288Objek `current_usage` berisi:288Objek `current_usage` berisi:

289 289 


296 296 

297Jika Anda menghitung persentase konteks secara manual dari `current_usage`, gunakan formula input-only yang sama untuk mencocokkan `used_percentage`.297Jika Anda menghitung persentase konteks secara manual dari `current_usage`, gunakan formula input-only yang sama untuk mencocokkan `used_percentage`.

298 298 

299Objek `current_usage` adalah `null` sebelum panggilan API pertama dalam sesi.299Objek `current_usage` adalah `null` sebelum panggilan API pertama dalam sesi, dan lagi segera setelah `/compact` hingga panggilan API berikutnya mengisinya kembali.

300 300 

301## Contoh301## Contoh

302 302 


1011 1011 

1012**Persentase konteks menampilkan nilai yang tidak terduga**1012**Persentase konteks menampilkan nilai yang tidak terduga**

1013 1013 

1014* Gunakan `used_percentage` untuk keadaan konteks yang akurat daripada total kumulatif1014* Gunakan `used_percentage` untuk keadaan konteks yang paling akurat

1015* `total_input_tokens` dan `total_output_tokens` adalah kumulatif di seluruh sesi dan mungkin melebihi ukuran jendela konteks

1016* Persentase konteks mungkin berbeda dari output `/context` karena kapan masing-masing dihitung1015* Persentase konteks mungkin berbeda dari output `/context` karena kapan masing-masing dihitung

1017 1016 

1018**Tautan OSC 8 tidak dapat diklik**1017**Tautan OSC 8 tidak dapat diklik**


1043* Jika Anda melihat teks yang rusak, coba sederhanakan skrip Anda ke output teks biasa1042* Jika Anda melihat teks yang rusak, coba sederhanakan skrip Anda ke output teks biasa

1044* Baris status multi-baris dengan kode escape lebih rentan terhadap masalah rendering daripada teks biasa satu baris1043* Baris status multi-baris dengan kode escape lebih rentan terhadap masalah rendering daripada teks biasa satu baris

1045 1044 

1045**Kepercayaan ruang kerja diperlukan**

1046 

1047* Perintah baris status hanya berjalan jika Anda telah menerima dialog kepercayaan ruang kerja untuk direktori saat ini. Karena `statusLine` mengeksekusi perintah shell, itu memerlukan penerimaan kepercayaan yang sama seperti hooks dan pengaturan lain yang mengeksekusi shell.

1048* Jika kepercayaan tidak diterima, Anda akan melihat notifikasi `statusline skipped · restart to fix` alih-alih output baris status Anda. Mulai ulang Claude Code dan terima prompt kepercayaan untuk mengaktifkannya.

1049 

1046**Kesalahan skrip atau hang**1050**Kesalahan skrip atau hang**

1047 1051 

1048* Skrip yang keluar dengan kode non-nol atau tidak menghasilkan output menyebabkan baris status menjadi kosong1052* Skrip yang keluar dengan kode non-nol atau tidak menghasilkan output menyebabkan baris status menjadi kosong


1055* Notifikasi sistem seperti kesalahan server MCP dan pembaruan otomatis ditampilkan di sisi kanan baris yang sama dengan baris status Anda. Notifikasi sementara seperti peringatan konteks-rendah juga bersiklus melalui area ini.1059* Notifikasi sistem seperti kesalahan server MCP dan pembaruan otomatis ditampilkan di sisi kanan baris yang sama dengan baris status Anda. Notifikasi sementara seperti peringatan konteks-rendah juga bersiklus melalui area ini.

1056* Mengaktifkan mode verbose menambahkan penghitung token ke area ini1060* Mengaktifkan mode verbose menambahkan penghitung token ke area ini

1057* Di terminal sempit, notifikasi ini mungkin memotong output baris status Anda1061* Di terminal sempit, notifikasi ini mungkin memotong output baris status Anda

1058 

1059**Kepercayaan ruang kerja diperlukan**

1060 

1061* Perintah baris status hanya berjalan jika Anda telah menerima dialog kepercayaan ruang kerja untuk direktori saat ini. Karena `statusLine` mengeksekusi perintah shell, itu memerlukan penerimaan kepercayaan yang sama seperti hooks dan pengaturan lain yang mengeksekusi shell.

1062* Jika kepercayaan tidak diterima, Anda akan melihat notifikasi `statusline skipped · restart to fix` alih-alih output baris status Anda. Mulai ulang Claude Code dan terima prompt kepercayaan untuk mengaktifkannya.

Details

24Di sebagian besar terminal Anda juga dapat menekan Shift+Enter, tetapi dukungan bervariasi menurut emulator terminal:24Di sebagian besar terminal Anda juga dapat menekan Shift+Enter, tetapi dukungan bervariasi menurut emulator terminal:

25 25 

26| Terminal | Shift+Enter untuk baris baru |26| Terminal | Shift+Enter untuk baris baru |

27| :---------------------------------------------------------------------------------- | :----------------------------------------------------- |27| :---------------------------------------------------------------------- | :----------------------------------------------------- |

28| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal | Bekerja tanpa setup |28| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal, Windows Terminal | Bekerja tanpa setup |

29| VS Code, Cursor, Windsurf, Alacritty, Zed | Jalankan `/terminal-setup` sekali |29| VS Code, Cursor, Windsurf, Alacritty, Zed | Jalankan `/terminal-setup` sekali |

30| Windows Terminal, gnome-terminal, JetBrains IDEs seperti PyCharm dan Android Studio | Tidak tersedia; gunakan Ctrl+J atau `\` kemudian Enter |30| gnome-terminal, JetBrains IDEs seperti PyCharm dan Android Studio | Tidak tersedia; gunakan Ctrl+J atau `\` kemudian Enter |

31 31 

32Untuk VS Code, Cursor, Windsurf, Alacritty, dan Zed, `/terminal-setup` menulis Shift+Enter dan pintasan keyboard lainnya ke dalam file konfigurasi terminal. Di VS Code, Cursor, dan Windsurf, ini juga menetapkan `terminal.integrated.mouseWheelScrollSensitivity` dalam pengaturan editor untuk scrolling yang lebih halus dalam [mode fullscreen](/id/fullscreen). Binding dan pengaturan yang ada dibiarkan tetap ada; jika Anda melihat pesan seperti `VSCode terminal Shift+Enter key binding already configured`, tidak ada perubahan yang dilakukan. Jalankan `/terminal-setup` langsung di terminal host daripada di dalam tmux atau screen, karena perlu menulis ke konfigurasi terminal host.32Untuk VS Code, Cursor, Windsurf, Alacritty, dan Zed, `/terminal-setup` menulis Shift+Enter dan pintasan keyboard lainnya ke dalam file konfigurasi terminal. Di VS Code, Cursor, dan Windsurf, ini juga menetapkan `terminal.integrated.mouseWheelScrollSensitivity` dalam pengaturan editor untuk scrolling yang lebih halus dalam [mode fullscreen](/id/fullscreen). Binding dan pengaturan yang ada dibiarkan tetap ada; jika Anda melihat pesan seperti `VSCode terminal Shift+Enter key binding already configured`, tidak ada perubahan yang dilakukan. Jalankan `/terminal-setup` langsung di terminal host daripada di dalam tmux atau screen, karena perlu menulis ke konfigurasi terminal host.

33 33