SpyBara
Go Premium

Documentation 2026-05-11 23:00 UTC to 2026-05-12 22:57 UTC

31 files changed +967 −348. 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/hooks.md +11 −11

Details

24 </Step>24 </Step>

25 25 

26 <Step title="SDK mengumpulkan hooks terdaftar">26 <Step title="SDK mengumpulkan hooks terdaftar">

27 SDK memeriksa hooks yang terdaftar untuk tipe event tersebut. Ini termasuk callback hooks yang Anda berikan di `options.hooks` dan shell command hooks dari file pengaturan ketika [`settingSources`](/id/agent-sdk/typescript#setting-source) atau [`setting_sources`](/id/agent-sdk/python#setting-source) entry yang sesuai diaktifkan, yang mana untuk opsi `query()` default.27 SDK memeriksa hooks yang terdaftar untuk tipe event tersebut. Ini termasuk callback hooks yang Anda berikan di `options.hooks` dan shell command hooks dari file pengaturan ketika [`settingSources`](/id/agent-sdk/typescript#settingsource) atau [`setting_sources`](/id/agent-sdk/python#settingsource) entry yang sesuai diaktifkan, yang mana untuk opsi `query()` default.

28 </Step>28 </Step>

29 29 

30 <Step title="Matchers memfilter hooks mana yang berjalan">30 <Step title="Matchers memfilter hooks mana yang berjalan">


225 225 

226Setiap hook callback menerima tiga argumen:226Setiap hook callback menerima tiga argumen:

227 227 

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

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

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

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


236Callback Anda mengembalikan object dengan dua kategori fields:236Callback Anda mengembalikan object dengan dua kategori fields:

237 237 

238* **Top-level fields** mengontrol percakapan: `systemMessage` menyuntikkan pesan ke dalam percakapan yang terlihat oleh model, dan `continue` (`continue_` di Python) menentukan apakah agent terus berjalan setelah hook ini.238* **Top-level fields** mengontrol percakapan: `systemMessage` menyuntikkan pesan ke dalam percakapan yang terlihat oleh model, dan `continue` (`continue_` di Python) menentukan apakah agent terus berjalan setelah hook ini.

239* **`hookSpecificOutput`** mengontrol operasi saat ini. Fields di dalamnya tergantung pada tipe hook event. Untuk hooks `PreToolUse`, di sinilah Anda menetapkan `permissionDecision` (`"allow"`, `"deny"`, atau `"ask"`), `permissionDecisionReason`, dan `updatedInput`. Di TypeScript SDK, `permissionDecision` juga menerima `"defer"` untuk mengakhiri query dan [resume nanti](/id/hooks#defer-a-tool-call-for-later); nilai ini tidak tersedia di Python SDK. Untuk hooks `PostToolUse`, Anda dapat menetapkan `additionalContext` untuk menambahkan informasi ke hasil tool, atau `updatedToolOutput` untuk mengganti output tool sepenuhnya sebelum Claude melihatnya.239* **`hookSpecificOutput`** mengontrol operasi saat ini. Fields di dalamnya tergantung pada tipe hook event. Untuk hooks `PreToolUse`, di sinilah Anda menetapkan `permissionDecision` (`"allow"`, `"deny"`, `"ask"`, atau `"defer"`), `permissionDecisionReason`, dan `updatedInput`. Mengembalikan `"defer"` mengakhiri query sehingga Anda dapat [melanjutkannya nanti](/id/hooks#defer-a-tool-call-for-later). Untuk hooks `PostToolUse`, Anda dapat menetapkan `additionalContext` untuk menambahkan informasi ke hasil tool, atau `updatedToolOutput` untuk mengganti output tool sepenuhnya sebelum Claude melihatnya.

240 240 

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

242 242 

243<Note>243<Note>

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


326</CodeGroup>326</CodeGroup>

327 327 

328<Note>328<Note>

329 Ketika menggunakan `updatedInput`, Anda juga harus menyertakan `permissionDecision: 'allow'`. Selalu kembalikan object baru daripada mutating `tool_input` asli.329 Ketika menggunakan `updatedInput`, Anda juga harus menyertakan `permissionDecision: 'allow'` untuk auto-approve input yang dimodifikasi atau `permissionDecision: 'ask'` untuk menampilkannya kepada pengguna. Dengan `'defer'`, `updatedInput` diabaikan. Selalu kembalikan object baru daripada mutating `tool_input` asli.

330</Note>330</Note>

331 331 

332### Tambahkan konteks dan blokir tool332### Tambahkan konteks dan blokir tool


489 489 

490### Lacak aktivitas subagent490### Lacak aktivitas subagent

491 491 

492Gunakan hooks `SubagentStop` untuk memantau ketika subagents menyelesaikan pekerjaan mereka. Lihat tipe input lengkap di referensi SDK [TypeScript](/id/agent-sdk/typescript#hook-input) dan [Python](/id/agent-sdk/python#hook-input). Contoh ini mencatat ringkasan setiap kali subagent selesai:492Gunakan hooks `SubagentStop` untuk memantau ketika subagents menyelesaikan pekerjaan mereka. Lihat tipe input lengkap di referensi SDK [TypeScript](/id/agent-sdk/typescript#hookinput) dan [Python](/id/agent-sdk/python#hookinput). Contoh ini mencatat ringkasan setiap kali subagent selesai:

493 493 

494<CodeGroup>494<CodeGroup>

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


621 621 

622### Teruskan notifikasi ke Slack622### Teruskan notifikasi ke Slack

623 623 

624Gunakan hooks `Notification` untuk menerima notifikasi sistem dari agent dan meneruskannya ke layanan eksternal. Notifikasi terjadi untuk tipe event spesifik: `permission_prompt` (Claude memerlukan permission), `idle_prompt` (Claude menunggu input), `auth_success` (authentication selesai), dan `elicitation_dialog` (Claude meminta pengguna). Setiap notifikasi mencakup field `message` dengan deskripsi yang dapat dibaca manusia dan secara opsional `title`.624Gunakan hooks `Notification` untuk menerima notifikasi sistem dari agent dan meneruskannya ke layanan eksternal. Notifikasi terjadi untuk tipe event spesifik: `permission_prompt` (Claude memerlukan permission), `idle_prompt` (Claude menunggu input), `auth_success` (authentication selesai), `elicitation_dialog` (Claude meminta pengguna), `elicitation_response` (pengguna menjawab elicitation), dan `elicitation_complete` (elicitation ditutup). Setiap notifikasi mencakup field `message` dengan deskripsi yang dapat dibaca manusia dan secara opsional `title`.

625 625 

626Contoh ini meneruskan setiap notifikasi ke channel Slack. Ini memerlukan [Slack incoming webhook URL](https://api.slack.com/messaging/webhooks), yang Anda buat dengan menambahkan app ke workspace Slack Anda dan mengaktifkan incoming webhooks:626Contoh ini meneruskan setiap notifikasi ke channel Slack. Ini memerlukan [Slack incoming webhook URL](https://api.slack.com/messaging/webhooks), yang Anda buat dengan menambahkan app ke workspace Slack Anda dan mengaktifkan incoming webhooks:

627 627 


719 ```719 ```

720</CodeGroup>720</CodeGroup>

721 721 

722## Fix common issues722## Perbaiki masalah umum

723 723 

724### Hook not firing724### Hook not firing

725 725 


727* Periksa bahwa pola matcher Anda cocok dengan nama tool dengan tepat727* Periksa bahwa pola matcher Anda cocok dengan nama tool dengan tepat

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

729* Untuk non-tool hooks seperti `Stop` dan `SubagentStop`, matchers cocok dengan fields berbeda (lihat [matcher patterns](/id/hooks#matcher-patterns))729* Untuk non-tool hooks seperti `Stop` dan `SubagentStop`, matchers cocok dengan fields berbeda (lihat [matcher patterns](/id/hooks#matcher-patterns))

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

731 731 

732### Matcher not filtering as expected732### Matcher not filtering as expected

733 733 


769 };769 };

770 ```770 ```

771 771 

772* Anda juga harus mengembalikan `permissionDecision: 'allow'` agar modifikasi input berlaku772* Anda juga harus mengembalikan `permissionDecision: 'allow'` atau `'ask'` agar modifikasi input berlaku

773 773 

774* Sertakan `hookEventName` di `hookSpecificOutput` untuk mengidentifikasi tipe hook mana output-nya774* Sertakan `hookEventName` di `hookSpecificOutput` untuk mengidentifikasi tipe hook mana output-nya

775 775 

776### Session hooks not available in Python776### Session hooks not available in Python

777 777 

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

779 779 

780<CodeGroup>780<CodeGroup>

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

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# Memodifikasi system prompts

6 

7> Pilih antara preset `claude_code` dan system prompt kustom, serta sesuaikan perilaku dengan CLAUDE.md, output styles, append, atau prompt yang sepenuhnya kustom.

8 

9System prompts mendefinisikan perilaku Claude, kemampuan, dan gaya respons. Mulai dari preset `claude_code` untuk alat coding seperti CLI atau IDE di mana manusia mengawasi dan mengarahkan pekerjaan. Tulis prompt Anda sendiri untuk agen dengan permukaan, identitas, atau model izin yang berbeda.

10 

11Halaman ini mencakup:

12 

13* [Cara kerja system prompts](#how-system-prompts-work), dengan tabel keputusan untuk memilih antara preset, preset dengan `append`, dan prompt kustom

14* [Sesuaikan perilaku agen](#customize-agent-behavior) dengan file CLAUDE.md, output styles, `append`, atau string kustom

15* [Bandingkan empat pendekatan](#compare-the-four-approaches) berdasarkan persistensi, cakupan, dan apa yang mereka pertahankan

16* [Gabungkan pendekatan](#combine-approaches) untuk melapisi metode kustomisasi bersama-sama

17 

18## Cara kerja system prompts

19 

20Sebuah system prompt adalah set instruksi awal yang membentuk bagaimana Claude berperilaku sepanjang percakapan. Agent SDK memiliki tiga titik awal untuk itu:

21 

22* **Default minimal**: ketika Anda tidak menetapkan `systemPrompt` di TypeScript atau `system_prompt` di Python, SDK menggunakan prompt minimal yang mencakup tool calling tetapi menghilangkan panduan coding Claude Code, gaya respons, dan konteks proyek. Ini berbeda dari `claude -p`, yang menggunakan prompt Claude Code lengkap secara default. Jika Anda bermigrasi dari CLI dan menginginkan perilaku yang cocok, atur preset `claude_code`.

23* **Preset `claude_code`**: system prompt lengkap yang digunakan CLI Claude Code, dengan instruksi penggunaan tool, panduan gaya dan pemformatan kode, aturan nada dan verbositas respons, instruksi keamanan dan keselamatan, serta konteks tentang direktori kerja dan lingkungan. Atur `systemPrompt: { type: "preset", preset: "claude_code" }` di TypeScript atau `system_prompt={"type": "preset", "preset": "claude_code"}` di Python, secara opsional dengan `append` untuk menambahkan instruksi Anda sendiri di akhir.

24* **String kustom**: prompt yang Anda tulis sendiri. SDK hanya mengirimkan apa yang Anda berikan.

25 

26### Tentukan titik awal

27 

28Faktor penentu adalah seberapa dekat agen Anda menyerupai Claude Code: agen coding yang beroperasi di repositori, dengan manusia mengamati output streaming dan mengarahkan pekerjaan. Semakin jauh produk Anda dari itu, semakin banyak Anda akan ingin menulis prompt Anda sendiri.

29 

30| Anda membangun | Gunakan | Apa yang Anda dapatkan |

31| :-------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

32| Alat coding seperti CLI atau IDE di mana manusia mengamati dan mengarahkan, dan default Claude Code adalah apa yang Anda inginkan | Preset `claude_code` | Prompt Claude Code lengkap: panduan tool, aturan keselamatan, respons ramah terminal, kesadaran konvensi repo |

33| Jenis alat yang sama, ditambah aturan khusus produk seperti standar coding, format output, atau konteks domain | Preset `claude_code` dengan `append` | Semuanya di atas, dengan instruksi Anda ditambahkan setelah preset. Tidak ada yang dihapus, jadi ini adalah kustomisasi risiko terendah |

34| Agen dengan permukaan, identitas, atau model izin yang berbeda, atau agen non-coding | String prompt kustom | Hanya apa yang Anda tulis. Anda bertanggung jawab untuk mengganti panduan tool dan instruksi keselamatan yang masih dibutuhkan agen Anda |

35| Loop tool-calling tipis tanpa persona agen, di mana Anda menyediakan semua perilaku dalam prompt pengguna | Tidak ada opsi `systemPrompt` | Default minimal: dukungan tool-calling dan tidak ada yang lain |

36 

37"Berbeda dari Claude Code" biasanya berarti salah satu dari berikut:

38 

39* **Permukaan berbeda**: output tidak dibaca di terminal oleh orang yang memicunya. Chat UI, konsumen output terstruktur, dan otomasi non-coding masing-masing memerlukan prompt yang sesuai dengan cara output mereka dirender dan ditinjau. Otomasi coding tanpa pengawasan, seperti pekerjaan CI yang memperbaiki kesalahan lint atau meninjau diff, masih sesuai dengan preset karena pekerjaan itu sendiri adalah apa yang preset ditulis untuk.

40* **Identitas berbeda**: agen tidak boleh menyajikan dirinya sebagai Claude Code. Bot dukungan, asisten analisis data, atau agen khusus domain apa pun memerlukan nama, cakupan, dan persona mereka sendiri.

41* **Model izin berbeda**: agen berjalan secara otonom tanpa manusia menyetujui setiap langkah, atau beroperasi pada set sumber daya yang sempit. Prompt Claude Code mengasumsikan manusia berada dalam loop dengan akses ke set tool lengkap.

42* **Tugas non-coding**: sebagian besar prompt Claude Code adalah panduan coding. Untuk penelitian, konten, atau agen operasi, panduan itu bersaing dengan instruksi yang benar-benar Anda butuhkan.

43 

44Tabel [perbandingan](#compare-the-four-approaches) menunjukkan apa yang dipertahankan oleh setiap metode kustomisasi.

45 

46## Sesuaikan perilaku agen

47 

48Output styles, `append`, dan string prompt khusus masing-masing mengubah system prompt secara langsung. CLAUDE.md mengambil jalur yang berbeda: SDK membacanya dan menyuntikkan kontennya ke dalam percakapan sebagai konteks proyek, bukan ke dalam system prompt, sehingga membentuk perilaku bersama dengan system prompt apa pun yang Anda pilih. [Skills](/id/agent-sdk/skills), [hooks](/id/agent-sdk/hooks), dan [permissions](/id/agent-sdk/permissions) juga membentuk perilaku di luar system prompt dan tercakup di halaman terpisahnya.

49 

50### File CLAUDE.md untuk instruksi tingkat proyek

51 

52File CLAUDE.md memberikan Claude konteks proyek dan instruksi yang persisten. SDK menyuntikkan kontennya ke dalam percakapan, bukan ke dalam system prompt, sehingga mereka bekerja dengan konfigurasi system prompt apa pun. Untuk apa yang harus dimasukkan dalam CLAUDE.md, di mana menempatkannya, dan cara menulis instruksi yang efektif, lihat [Bagaimana Claude mengingat proyek Anda](/id/memory). Bagian ini mencakup apa yang spesifik untuk SDK: bagaimana CLAUDE.md dimuat.

53 

54SDK membaca CLAUDE.md ketika sumber pengaturan yang sesuai diaktifkan: `'project'` memuat `CLAUDE.md` atau `.claude/CLAUDE.md` dari direktori kerja, dan `'user'` memuat `~/.claude/CLAUDE.md`. Opsi `query()` default mengaktifkan kedua sumber, sehingga CLAUDE.md dimuat secara otomatis. Jika Anda menetapkan `settingSources` di TypeScript atau `setting_sources` di Python secara eksplisit, sertakan sumber yang Anda butuhkan. Pemuatan CLAUDE.md dikendalikan oleh sumber pengaturan, bukan oleh preset `claude_code`.

55 

56#### Muat CLAUDE.md dengan SDK

57 

58Untuk memuat CLAUDE.md, atur `settingSources` untuk menyertakan level tempat CLAUDE.md Anda berada. Contoh di bawah memuat CLAUDE.md tingkat proyek bersama dengan preset `claude_code`, sehingga Claude memiliki prompt agen coding lengkap dan konvensi proyek Anda:

59 

60<CodeGroup>

61 ```typescript TypeScript theme={null}

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

63 

64 const messages = [];

65 

66 for await (const message of query({

67 prompt: "Add a new React component for user profiles",

68 options: {

69 systemPrompt: {

70 type: "preset",

71 preset: "claude_code" // Use Claude Code's system prompt

72 },

73 settingSources: ["project"] // Loads CLAUDE.md from project

74 }

75 })) {

76 messages.push(message);

77 }

78 

79 // Now Claude has access to your project guidelines from CLAUDE.md

80 ```

81 

82 ```python Python theme={null}

83 from claude_agent_sdk import query, ClaudeAgentOptions

84 

85 messages = []

86 

87 async for message in query(

88 prompt="Add a new React component for user profiles",

89 options=ClaudeAgentOptions(

90 system_prompt={

91 "type": "preset",

92 "preset": "claude_code", # Use Claude Code's system prompt

93 },

94 setting_sources=["project"], # Loads CLAUDE.md from project

95 ),

96 ):

97 messages.append(message)

98 

99 # Now Claude has access to your project guidelines from CLAUDE.md

100 ```

101</CodeGroup>

102 

103CLAUDE.md persisten di semua sesi dalam proyek, dibagikan dengan tim Anda melalui git, dan ditemukan secara otomatis tanpa perubahan kode. Tidak dimuat jika Anda melewatkan array `settingSources` kosong.

104 

105### Output styles untuk konfigurasi persisten

106 

107Output styles adalah konfigurasi yang disimpan yang memodifikasi system prompt Claude. Mereka disimpan sebagai file markdown dan dapat digunakan kembali di berbagai sesi dan proyek.

108 

109#### Buat output style

110 

111Output style adalah file markdown dengan `name` dan `description` di frontmatter-nya, diikuti oleh konten prompt. Simpan ke `~/.claude/output-styles/` untuk style tingkat pengguna yang tersedia di setiap proyek, atau `.claude/output-styles/` di repositori Anda untuk style tingkat proyek yang dapat Anda commit dan bagikan dengan tim Anda.

112 

113Contoh di bawah mendefinisikan persona code-review. Simpan sebagai `~/.claude/output-styles/code-reviewer.md` untuk membuatnya tersedia di berbagai proyek:

114 

115```markdown ~/.claude/output-styles/code-reviewer.md theme={null}

116---

117name: Code Reviewer

118description: Thorough code review assistant

119---

120 

121You are an expert code reviewer.

122 

123For every code submission:

1241. Check for bugs and security issues

1252. Evaluate performance

1263. Suggest improvements

1274. Rate code quality (1-10)

128```

129 

130#### Aktifkan output style

131 

132Setelah dibuat, aktifkan output styles melalui:

133 

134* **CLI**: jalankan `/config` dan pilih output style

135* **Settings**: atur `outputStyle` di `.claude/settings.local.json`

136* **TypeScript SDK**: atur `options.outputStyle` ke nama style

137 

138Python SDK tidak memiliki opsi untuk memilih output style secara terprogram. Untuk deployment hanya kode di mana Anda tidak dapat menulis ke `.claude/settings.local.json`, gunakan `append` atau string prompt khusus sebagai gantinya.

139 

140**Catatan untuk pengguna SDK:** Output styles dimuat ketika Anda menyertakan `settingSources: ['user']` atau `settingSources: ['project']` (TypeScript) / `setting_sources=["user"]` atau `setting_sources=["project"]` (Python) dalam opsi Anda.

141 

142### Tambahkan ke preset `claude_code`

143 

144Anda dapat menggunakan preset Claude Code dengan properti `append` untuk menambahkan instruksi khusus Anda sambil mempertahankan semua fungsionalitas bawaan.

145 

146<CodeGroup>

147 ```typescript TypeScript theme={null}

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

149 

150 const messages = [];

151 

152 for await (const message of query({

153 prompt: "Help me write a Python function to calculate fibonacci numbers",

154 options: {

155 systemPrompt: {

156 type: "preset",

157 preset: "claude_code",

158 append: "Always include detailed docstrings and type hints in Python code."

159 }

160 }

161 })) {

162 messages.push(message);

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

164 console.log(message.message.content);

165 }

166 }

167 ```

168 

169 ```python Python theme={null}

170 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage

171 

172 messages = []

173 

174 async for message in query(

175 prompt="Help me write a Python function to calculate fibonacci numbers",

176 options=ClaudeAgentOptions(

177 system_prompt={

178 "type": "preset",

179 "preset": "claude_code",

180 "append": "Always include detailed docstrings and type hints in Python code.",

181 }

182 ),

183 ):

184 messages.append(message)

185 if isinstance(message, AssistantMessage):

186 print(message.content)

187 ```

188</CodeGroup>

189 

190#### Tingkatkan prompt caching di berbagai pengguna dan mesin

191 

192Secara default, dua sesi yang menggunakan preset `claude_code` dan teks `append` yang sama masih tidak dapat berbagi entri cache prompt jika berjalan dari direktori kerja yang berbeda. Ini karena preset menyematkan konteks per-sesi dalam system prompt sebelum teks `append` Anda: direktori kerja, apakah itu repositori git, platform, shell aktif, versi OS, dan jalur auto-memory. Perbedaan apa pun dalam konteks itu menghasilkan system prompt yang berbeda dan cache miss. Konten CLAUDE.md tidak mempengaruhi cache system prompt karena SDK menyuntikkannya ke dalam percakapan, bukan system prompt.

193 

194Untuk membuat system prompt identik di berbagai sesi, atur `excludeDynamicSections: true` di TypeScript atau `"exclude_dynamic_sections": True` di Python. Konteks per-sesi berpindah ke pesan pengguna pertama, meninggalkan hanya preset statis dan teks `append` Anda dalam system prompt sehingga konfigurasi identik berbagi entri cache di berbagai pengguna dan mesin.

195 

196<Note>

197 `excludeDynamicSections` memerlukan `@anthropic-ai/claude-agent-sdk` v0.2.98 atau lebih baru, atau `claude-agent-sdk` v0.1.58 atau lebih baru untuk Python. Ini hanya berlaku untuk bentuk objek preset dan tidak berpengaruh ketika `systemPrompt` adalah string.

198</Note>

199 

200Contoh berikut memasangkan blok `append` bersama dengan `excludeDynamicSections` sehingga armada agen yang berjalan dari direktori berbeda dapat menggunakan kembali system prompt yang di-cache sama:

201 

202<CodeGroup>

203 ```typescript TypeScript theme={null}

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

205 

206 for await (const message of query({

207 prompt: "Triage the open issues in this repo",

208 options: {

209 systemPrompt: {

210 type: "preset",

211 preset: "claude_code",

212 append: "You operate Acme's internal triage workflow. Label issues by component and severity.",

213 excludeDynamicSections: true

214 }

215 }

216 })) {

217 // ...

218 }

219 ```

220 

221 ```python Python theme={null}

222 from claude_agent_sdk import query, ClaudeAgentOptions

223 

224 async for message in query(

225 prompt="Triage the open issues in this repo",

226 options=ClaudeAgentOptions(

227 system_prompt={

228 "type": "preset",

229 "preset": "claude_code",

230 "append": "You operate Acme's internal triage workflow. Label issues by component and severity.",

231 "exclude_dynamic_sections": True,

232 },

233 ),

234 ):

235 ...

236 ```

237</CodeGroup>

238 

239**Tradeoffs:** direktori kerja, flag git-repo, platform, shell aktif, versi OS, dan jalur auto-memory masih mencapai Claude, tetapi sebagai bagian dari pesan pengguna pertama daripada system prompt. Instruksi dalam pesan pengguna memiliki bobot sedikit lebih rendah daripada teks yang sama dalam system prompt, sehingga Claude mungkin mengandalkannya lebih sedikit saat bernalar tentang direktori saat ini atau jalur auto-memory. Aktifkan opsi ini ketika penggunaan kembali cache lintas-sesi lebih penting daripada konteks lingkungan yang paling otoritatif.

240 

241Untuk flag yang setara dalam mode CLI non-interaktif, lihat [`--exclude-dynamic-system-prompt-sections`](/id/cli-reference).

242 

243### Custom system prompts

244 

245Anda dapat menyediakan string khusus sebagai `systemPrompt` untuk mengganti default sepenuhnya dengan instruksi Anda sendiri.

246 

247<CodeGroup>

248 ```typescript TypeScript theme={null}

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

250 

251 const customPrompt = `You are a Python coding specialist.

252 Follow these guidelines:

253 - Write clean, well-documented code

254 - Use type hints for all functions

255 - Include comprehensive docstrings

256 - Prefer functional programming patterns when appropriate

257 - Always explain your code choices`;

258 

259 const messages = [];

260 

261 for await (const message of query({

262 prompt: "Create a data processing pipeline",

263 options: {

264 systemPrompt: customPrompt

265 }

266 })) {

267 messages.push(message);

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

269 console.log(message.message.content);

270 }

271 }

272 ```

273 

274 ```python Python theme={null}

275 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage

276 

277 custom_prompt = """You are a Python coding specialist.

278 Follow these guidelines:

279 - Write clean, well-documented code

280 - Use type hints for all functions

281 - Include comprehensive docstrings

282 - Prefer functional programming patterns when appropriate

283 - Always explain your code choices"""

284 

285 messages = []

286 

287 async for message in query(

288 prompt="Create a data processing pipeline",

289 options=ClaudeAgentOptions(system_prompt=custom_prompt),

290 ):

291 messages.append(message)

292 if isinstance(message, AssistantMessage):

293 print(message.content)

294 ```

295</CodeGroup>

296 

297## Perbandingan keempat pendekatan

298 

299Keempat metode kustomisasi berbeda dalam hal di mana mereka berada, bagaimana mereka dibagikan, dan apa yang mereka pertahankan dari preset `claude_code`.

300 

301| Fitur | CLAUDE.md | Output Styles | `systemPrompt` dengan append | Custom `systemPrompt` |

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

303| **Persistence** | File per-proyek | Disimpan sebagai file | Hanya sesi | Hanya sesi |

304| **Reusability** | Per-proyek | Di berbagai proyek | Duplikasi kode | Duplikasi kode |

305| **Management** | Di filesystem | CLI + file | Dalam kode | Dalam kode |

306| **Default tools** | Dipertahankan | Dipertahankan | Dipertahankan | Hilang (kecuali disertakan) |

307| **Built-in safety** | Dipertahankan | Dipertahankan | Dipertahankan | Harus ditambahkan |

308| **Environment context** | Otomatis | Otomatis | Otomatis | Harus disediakan |

309| **Customization level** | Hanya penambahan | Ganti default | Hanya penambahan | Kontrol penuh |

310| **Version control** | Dengan proyek | Ya | Dengan kode | Dengan kode |

311| **Scope** | Spesifik proyek | Pengguna atau proyek | Sesi kode | Sesi kode |

312 

313"Dengan append" berarti menggunakan `systemPrompt: { type: "preset", preset: "claude_code", append: "..." }` di TypeScript atau `system_prompt={"type": "preset", "preset": "claude_code", "append": "..."}` di Python. CLAUDE.md tidak mengubah prompt sistem itu sendiri: SDK menyuntikkan kontennya ke dalam percakapan sebagai konteks proyek.

314 

315## Use cases dan best practices

316 

317### Kapan menggunakan CLAUDE.md

318 

319Gunakan CLAUDE.md untuk instruksi yang harus berlaku untuk setiap sesi dalam proyek, terlepas dari system prompt mana yang digunakan sesi tersebut: standar coding, perintah umum, konteks arsitektur, dan konvensi tim. CLAUDE.md berkomitmen pada repositori Anda, sehingga tetap sinkron dengan kode yang dijelaskannya. Lihat [When to add to CLAUDE.md](/id/memory#when-to-add-to-claude-md) untuk panduan lengkap.

320 

321File CLAUDE.md dimuat ketika sumber pengaturan `project` diaktifkan, yang merupakan default untuk opsi `query()`. Jika Anda menetapkan `settingSources` dalam TypeScript atau `setting_sources` dalam Python secara eksplisit, sertakan `'project'` untuk terus memuat CLAUDE.md tingkat proyek.

322 

323### Kapan menggunakan output styles

324 

325Output styles adalah untuk persona yang ingin Anda gunakan kembali di seluruh CLI dan SDK tanpa mengubah kode aplikasi. Karena mereka berada sebagai file di `.claude/output-styles`, persona yang sama tersedia dari `/config` di CLI dan dari sesi SDK apa pun yang memuat sumber pengaturan yang sesuai.

326 

327**Terbaik untuk:**

328 

329* Perubahan perilaku persisten di berbagai sesi

330* Konfigurasi bersama tim

331* Asisten khusus seperti code reviewer, data scientist, atau asisten DevOps

332* Modifikasi prompt kompleks yang memerlukan versioning

333 

334**Contoh:**

335 

336* Membuat asisten optimasi SQL khusus

337* Membangun code reviewer yang berfokus pada keamanan

338* Mengembangkan asisten pengajaran dengan pedagogi spesifik

339 

340### Kapan menggunakan `systemPrompt` dengan append

341 

342Gunakan `append` ketika preset `claude_code` sudah sesuai dengan produk Anda dan Anda hanya perlu menambahkan instruksi tambahan. Anda mempertahankan panduan tool preset, aturan keamanan, dan konvensi coding tanpa mengimplementasikannya kembali.

343 

344**Terbaik untuk:**

345 

346* Menambahkan standar coding atau preferensi spesifik

347* Menyesuaikan pemformatan output

348* Menambahkan pengetahuan domain-spesifik

349* Memodifikasi verbositas respons

350* Meningkatkan perilaku default Claude Code tanpa kehilangan instruksi tool

351 

352### Kapan menggunakan custom `systemPrompt`

353 

354Gunakan prompt kustom ketika permukaan agen, identitas, atau model izin Anda berbeda dari Claude Code, seperti yang dijelaskan dalam [Decide on a starting point](#decide-on-a-starting-point). Anda menentukan set instruksi lengkap, termasuk panduan tool dan aturan keamanan apa pun yang dibutuhkan agen Anda.

355 

356**Terbaik untuk:**

357 

358* Kontrol penuh atas perilaku Claude

359* Tugas khusus sesi tunggal

360* Menguji strategi prompt baru

361* Situasi di mana tool default tidak diperlukan

362* Membangun agen khusus dengan perilaku unik

363 

364## Menggabungkan pendekatan

365 

366Metode-metode ini dapat dikomposisi. Gaya output yang persisten atau CLAUDE.md menetapkan perilaku jangka panjang, dan `append` menambahkan instruksi spesifik sesi di atasnya tanpa menyentuh konfigurasi yang disimpan.

367 

368### Menggabungkan gaya output dengan penambahan spesifik sesi

369 

370Contoh di bawah ini mengasumsikan gaya output Code Reviewer sudah aktif. Blok `append` menambahkan area fokus spesifik sesi di atas persona, sehingga sesi review tunggal dapat memprioritaskan OAuth dan penyimpanan token tanpa mengubah gaya output yang disimpan:

371 

372<CodeGroup>

373 ```typescript TypeScript theme={null}

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

375 

376 // Assuming "Code Reviewer" output style is active (via /config or settings)

377 // Add session-specific focus areas

378 const messages = [];

379 

380 for await (const message of query({

381 prompt: "Review this authentication module",

382 options: {

383 systemPrompt: {

384 type: "preset",

385 preset: "claude_code",

386 append: `

387 For this review, prioritize:

388 - OAuth 2.0 compliance

389 - Token storage security

390 - Session management

391 `

392 }

393 }

394 })) {

395 messages.push(message);

396 }

397 ```

398 

399 ```python Python theme={null}

400 from claude_agent_sdk import query, ClaudeAgentOptions

401 

402 # Assuming "Code Reviewer" output style is active (via /config or settings)

403 # Add session-specific focus areas

404 messages = []

405 

406 async for message in query(

407 prompt="Review this authentication module",

408 options=ClaudeAgentOptions(

409 system_prompt={

410 "type": "preset",

411 "preset": "claude_code",

412 "append": """

413 For this review, prioritize:

414 - OAuth 2.0 compliance

415 - Token storage security

416 - Session management

417 """,

418 }

419 ),

420 ):

421 messages.append(message)

422 ```

423</CodeGroup>

424 

425## Lihat juga

426 

427* [Output styles](/id/output-styles): buat, kelola, dan bagikan output styles untuk CLI, termasuk format file dan lokasi penyimpanan

428* [Bagaimana Claude mengingat proyek Anda](/id/memory): apa yang harus dimasukkan dalam CLAUDE.md, di mana menempatkannya, dan cara menulis instruksi proyek yang efektif

429* [Referensi TypeScript SDK](/id/agent-sdk/typescript): tipe `Options` lengkap, termasuk `systemPrompt`, `settingSources`, dan `outputStyle`

430* [Referensi Python SDK](/id/agent-sdk/python): tipe `ClaudeAgentOptions` lengkap, termasuk `system_prompt` dan `setting_sources`

431* [Settings](/id/settings): referensi `settings.json`, termasuk di mana output styles dan konfigurasi lainnya disimpan

Details

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

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

398| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Tentukan format output untuk hasil agen. Lihat [Output terstruktur](/id/agent-sdk/structured-outputs) untuk detail |398| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Tentukan format output untuk hasil agen. Lihat [Output terstruktur](/id/agent-sdk/structured-outputs) untuk detail |

399| `outputStyle` | `string` | `undefined` | Nama [output style](/id/output-styles) untuk diaktifkan untuk sesi. Gaya harus ada di lokasi `settingSources` yang dimuat, seperti `.claude/output-styles/`. Lihat [Aktifkan output style](/id/agent-sdk/modifying-system-prompts#activate-an-output-style) |

399| `pathToClaudeCodeExecutable` | `string` | Auto-resolved dari biner asli bundel | Jalur ke executable Claude Code. Hanya diperlukan jika dependensi opsional dilewati selama instalasi atau platform Anda tidak dalam set yang didukung |400| `pathToClaudeCodeExecutable` | `string` | Auto-resolved dari biner asli bundel | Jalur ke executable Claude Code. Hanya diperlukan jika dependensi opsional dilewati selama instalasi atau platform Anda tidak dalam set yang didukung |

400| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | Mode izin untuk sesi |401| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | Mode izin untuk sesi |

401| `permissionPromptToolName` | `string` | `undefined` | Nama tool MCP untuk prompt izin |402| `permissionPromptToolName` | `string` | `undefined` | Nama tool MCP untuk prompt izin |

Details

12 12 

13Untuk pertanyaan klarifikasi, Claude menghasilkan pertanyaan dan opsi. Peran Anda adalah menyajikannya kepada pengguna dan mengembalikan pilihan mereka. Anda tidak dapat menambahkan pertanyaan Anda sendiri ke alur ini; jika Anda perlu menanyakan sesuatu kepada pengguna, lakukan itu secara terpisah dalam logika aplikasi Anda.13Untuk pertanyaan klarifikasi, Claude menghasilkan pertanyaan dan opsi. Peran Anda adalah menyajikannya kepada pengguna dan mengembalikan pilihan mereka. Anda tidak dapat menambahkan pertanyaan Anda sendiri ke alur ini; jika Anda perlu menanyakan sesuatu kepada pengguna, lakukan itu secara terpisah dalam logika aplikasi Anda.

14 14 

15Callback dapat tetap tertunda tanpa batas waktu. Eksekusi tetap dijeda sampai callback Anda kembali, dan SDK hanya membatalkan tunggu ketika kueri itu sendiri dibatalkan. Jika pengguna mungkin membutuhkan waktu lebih lama untuk merespons daripada yang dapat ditahan proses Anda, TypeScript SDK mendukung [hook `defer`](/id/hooks#defer-a-tool-call-for-later), yang memungkinkan proses keluar dan dilanjutkan nanti dari sesi yang disimpan; opsi ini tidak tersedia di Python SDK.15Callback dapat tetap tertunda tanpa batas waktu. Eksekusi tetap dijeda sampai callback Anda kembali, dan SDK hanya membatalkan tunggu ketika kueri itu sendiri dibatalkan. Jika pengguna mungkin membutuhkan waktu lebih lama untuk merespons daripada yang dapat ditahan proses Anda, kembalikan keputusan [`defer` hook](/id/hooks#defer-a-tool-call-for-later), yang memungkinkan proses keluar dan dilanjutkan nanti dari sesi yang disimpan.

16 16 

17Panduan ini menunjukkan cara mendeteksi setiap jenis permintaan dan merespons dengan tepat.17Panduan ini menunjukkan cara mendeteksi setiap jenis permintaan dan merespons dengan tepat.

18 18 


232 232 

233* **Setujui**: biarkan alat dijalankan seperti yang diminta Claude233* **Setujui**: biarkan alat dijalankan seperti yang diminta Claude

234* **Setujui dengan perubahan**: modifikasi input sebelum eksekusi (misalnya, sanitasi jalur, tambahkan batasan)234* **Setujui dengan perubahan**: modifikasi input sebelum eksekusi (misalnya, sanitasi jalur, tambahkan batasan)

235* **Setujui dan ingat**: kembalikan aturan izin yang disarankan sehingga panggilan yang cocok melewati prompt berikutnya

235* **Tolak**: blokir alat dan beri tahu Claude mengapa236* **Tolak**: blokir alat dan beri tahu Claude mengapa

236* **Sarankan alternatif**: blokir tetapi arahkan Claude ke arah yang diinginkan pengguna237* **Sarankan alternatif**: blokir tetapi arahkan Claude ke arah yang diinginkan pengguna

237* **Alihkan sepenuhnya**: gunakan [input streaming](/id/agent-sdk/streaming-vs-single-mode) untuk mengirim Claude instruksi yang sepenuhnya baru238* **Alihkan sepenuhnya**: gunakan [input streaming](/id/agent-sdk/streaming-vs-single-mode) untuk mengirim Claude instruksi yang sepenuhnya baru


297 </CodeGroup>298 </CodeGroup>

298 </Tab>299 </Tab>

299 300 

301 <Tab title="Setujui dan ingat">

302 Pengguna menyetujui dan tidak ingin ditanya lagi untuk jenis panggilan ini. Argumen callback ketiga membawa `suggestions`, sebuah array entri [`PermissionUpdate`](/id/agent-sdk/typescript#permissionupdate) yang sudah jadi. Kembalikan satu di `updatedPermissions` untuk menerapkannya. Saran dengan tujuan `localSettings` menulis aturan ke `.claude/settings.local.json` sehingga sesi mendatang melewati prompt untuk panggilan yang cocok.

303 

304 Contoh Python memerlukan `claude-agent-sdk` 0.1.80 atau lebih baru.

305 

306 <CodeGroup>

307 ```python Python theme={null}

308 async def can_use_tool(tool_name, input_data, context):

309 choice = await ask_user(f"Allow {tool_name}?", ["once", "always", "no"])

310 

311 if choice == "always":

312 persist = [

313 s for s in context.suggestions if s.destination == "localSettings"

314 ]

315 return PermissionResultAllow(

316 updated_input=input_data, updated_permissions=persist

317 )

318 if choice == "once":

319 return PermissionResultAllow(updated_input=input_data)

320 return PermissionResultDeny(message="User declined")

321 ```

322 

323 ```typescript TypeScript theme={null}

324 canUseTool: async (toolName, input, { suggestions = [] }) => {

325 const choice = await askUser(`Allow ${toolName}?`, ["once", "always", "no"]);

326 

327 if (choice === "always") {

328 const persist = suggestions.filter(

329 (s) => s.destination === "localSettings"

330 );

331 return {

332 behavior: "allow",

333 updatedInput: input,

334 updatedPermissions: persist

335 };

336 }

337 if (choice === "once") {

338 return { behavior: "allow", updatedInput: input };

339 }

340 return { behavior: "deny", message: "User declined" };

341 };

342 ```

343 </CodeGroup>

344 </Tab>

345 

300 <Tab title="Tolak">346 <Tab title="Tolak">

301 Pengguna tidak menginginkan tindakan ini terjadi. Blokir alat dan berikan pesan yang menjelaskan alasannya. Claude melihat pesan ini dan mungkin mencoba pendekatan yang berbeda.347 Pengguna tidak menginginkan tindakan ini terjadi. Blokir alat dan berikan pesan yang menjelaskan alasannya. Claude melihat pesan ini dan mungkin mencoba pendekatan yang berbeda.

302 348 

agent-teams.md +2 −0

Details

129Gunakan Sonnet untuk setiap rekan tim.129Gunakan Sonnet untuk setiap rekan tim.

130```130```

131 131 

132Rekan tim tidak mewarisi pilihan `/model` lead secara default. Untuk mengubah model yang digunakan ketika prompt tidak menentukan satu, atur **Default teammate model** di `/config`. Pilih **Default (leader's model)** untuk membuat rekan tim mengikuti model saat ini lead.

133 

132### Perlukan persetujuan rencana untuk rekan tim134### Perlukan persetujuan rencana untuk rekan tim

133 135 

134Untuk tugas kompleks atau berisiko, Anda dapat memerlukan rekan tim untuk merencanakan sebelum mengimplementasikan. Rekan tim bekerja dalam mode rencana read-only sampai lead menyetujui pendekatan mereka:136Untuk tugas kompleks atau berisiko, Anda dapat memerlukan rekan tim untuk merencanakan sebelum mengimplementasikan. Rekan tim bekerja dalam mode rencana read-only sampai lead menyetujui pendekatan mereka:

agent-view.md +36 −17

Details

40 </Step>40 </Step>

41 41 

42 <Step title="Kirim sesi">42 <Step title="Kirim sesi">

43 Ketik prompt dalam input dan tekan `Enter`. Sesi baru dimulai dan muncul sebagai baris yang menunjukkan apakah sedang bekerja, menunggu Anda, atau selesai. Ulangi untuk menjalankan sesi sebanyak yang Anda inginkan secara paralel.43 Ketik prompt dalam input dan tekan `Enter`. Sesi baru dimulai dan muncul sebagai baris yang menunjukkan apakah sedang bekerja, menunggu Anda, atau selesai. Ulangi untuk menjalankan beberapa sesi secara paralel. Masing-masing menggunakan kuota langganan Anda secara independen, jadi lihat [Batasan](#limitations) sebelum mengirim banyak sekaligus.

44 </Step>44 </Step>

45 45 

46 <Step title="Intip dan balas">46 <Step title="Intip dan balas">


60 60 

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

62 62 

63Daftar bersifat global untuk mesin Anda dan mencakup setiap sesi latar belakang terlepas dari proyek atau worktree mana yang sedang dikerjakan. Sesi interaktif yang Anda buka di terminal lain tidak muncul sampai Anda [mengirimnya ke latar belakang](#from-inside-a-session), dan [subagents](/id/sub-agents) yang berjalan di dalam sesi tidak tercantum sebagai baris terpisah.63Daftar mencakup setiap sesi latar belakang di bawah [direktori konfigurasi](#how-background-sessions-are-hosted) Anda, terlepas dari proyek atau worktree mana yang sedang dikerjakan, jadi sesi yang dimulai di satu repositori dan sesi lain yang dimulai di worktree berbeda keduanya muncul bersama. Sesi interaktif yang Anda buka di terminal lain tidak muncul sampai Anda [mengirimnya ke latar belakang](#from-inside-a-session), dan [subagents](/id/sub-agents) yang berjalan di dalam sesi tidak tercantum sebagai baris terpisah.

64 64 

65```text theme={null}65```text theme={null}

66Disematkan66Disematkan

67 ✽ clawd walk cycle Write assets/sprites/clawd-walk.png 3m67 ✽ clawd walk cycle Write assets/sprites/clawd-walk.png 3m

68 68 

69Siap untuk ditinjau69Siap untuk ditinjau

70 ∙ jump physics github.com/anthropics/example/pull/2048 2h70 ∙ jump physics github.com/anthropics/example/pull/20482h

71 71 

72Membutuhkan masukan72Membutuhkan masukan

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


82 … 6 more82 … 6 more

83```83```

84 84 

85Ikon memberi tahu Anda status sesi:85Ikon setiap baris membawa dua sinyal. Indikator memberi tahu Anda status sesi, dan bentuk ikon memberi tahu Anda apakah proses yang mendasarinya masih berjalan. Status-statusnya adalah:

86 86 

87| Ikon | Status | Artinya |87| Indikator | Status | Artinya |

88| :------ | :------------------ | :-------------------------------------------------------------------- |88| :-------- | :------------------ | :-------------------------------------------------------------------- |

89| Animasi | Bekerja | Claude secara aktif menjalankan alat atau menghasilkan respons |89| Animasi | Bekerja | Claude secara aktif menjalankan alat atau menghasilkan respons |

90| Kuning | Membutuhkan masukan | Claude menunggu masukan Anda, biasanya keputusan izin atau jawaban |90| Kuning | Membutuhkan masukan | Claude menunggu masukan Anda, biasanya keputusan izin atau jawaban |

91| Redup | Menganggur | Sesi menunggu masukan tetapi tidak terhalang pada pertanyaan tertentu |91| Redup | Menganggur | Sesi menunggu masukan tetapi tidak terhalang pada pertanyaan tertentu |


99 99 

100Sesi bertahan di disk: menutup terminal atau pembaruan otomatis tidak akan kehilangannya, dan membuka kembali `claude agents` menunjukkan semuanya. Jika mesin Anda tidur atau dimatikan, sesi yang berjalan berhenti; mulai ulang dengan `claude respawn --all`.100Sesi bertahan di disk: menutup terminal atau pembaruan otomatis tidak akan kehilangannya, dan membuka kembali `claude agents` menunjukkan semuanya. Jika mesin Anda tidur atau dimatikan, sesi yang berjalan berhenti; mulai ulang dengan `claude respawn --all`.

101 101 

102Ringkasan satu baris di setiap baris dihasilkan oleh [model kelas Haiku](/id/model-config) yang dikonfigurasi sehingga baris dapat memberi tahu Anda apa yang dilakukan sesi, apa yang dibutuhkannya, atau apa yang dihasilkannya tanpa membuka transkrip. Setiap ringkasan adalah satu permintaan kelas Haiku pendek melalui penyedia normal Anda, ditagih dan ditangani di bawah [persyaratan penggunaan data](/id/data-usage) yang sama dengan sesi itu sendiri.102Ringkasan satu baris di setiap baris dihasilkan oleh [model kelas Haiku](/id/model-config) yang dikonfigurasi sehingga baris dapat memberi tahu Anda apa yang dilakukan sesi, apa yang dibutuhkannya, atau apa yang dihasilkannya tanpa membuka transkrip. Saat sesi secara aktif bekerja, ringkasan menyegarkan paling banyak sekali setiap 15 detik, ditambah sekali ketika setiap giliran berakhir. Setiap penyegaran adalah satu permintaan kelas Haiku pendek melalui penyedia normal Anda, ditagih dan ditangani di bawah [persyaratan penggunaan data](/id/data-usage) yang sama dengan sesi itu sendiri.

103 103 

104Ketika sesi membuka permintaan tarik, baris menunjukkan tautan PR dan indikator status untuk pemeriksaan CI-nya. Untuk sebagian besar tugas, baris ini adalah cara Anda mengumpulkan pekerjaan: tinjau dan gabungkan permintaan tarik ketika pemeriksaannya lulus.104Ketika sesi membuka permintaan tarik, titik status muncul di tepi kanan baris, tertaut ke permintaan tarik di terminal yang mendukung hyperlink. Ketika sesi telah membuka lebih dari satu permintaan tarik, jumlahnya muncul sebelum titik dan warna mencerminkan mana pun yang paling membutuhkan perhatian.

105 

106| Warna titik | Status permintaan tarik |

107| :---------- | :--------------------------------------------------------- |

108| Kuning | Menunggu pemeriksaan atau tinjauan, atau pemeriksaan gagal |

109| Hijau | Pemeriksaan lulus dan tidak ada tinjauan yang memblokir |

110| Ungu | Digabungkan |

111| Abu-abu | Draf atau ditutup |

112 

113Untuk sebagian besar tugas, baris ini adalah tempat Anda mengambil hasilnya: tinjau dan gabungkan permintaan tarik ketika titik berubah menjadi hijau.

105 114 

106### Intip dan balas115### Intip dan balas

107 116 


121 130 

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

123 132 

124Setelah Anda menggunakan tampilan agen, menekan `←` pada prompt kosong berfungsi dari sesi Claude Code apa pun, bukan hanya yang Anda lampirkan. Ini membuka tampilan agen dengan sesi saat ini yang dipilih sebelumnya, sehingga Anda dapat beralih sesi tanpa meninggalkan terminal.133Setelah Anda telah mengirim atau mengirim sesi ke latar belakang, menekan `←` pada prompt kosong berfungsi dari sesi Claude Code apa pun, bukan hanya yang Anda lampirkan. Ini mengirim sesi saat ini ke latar belakang dan membuka tampilan agen dengan sesi itu yang dipilih sebelumnya, sehingga Anda dapat beralih sesi tanpa meninggalkan terminal. Anda dapat mematikan pintasan ini di `/config`.

125 134 

126### Atur daftar135### Atur daftar

127 136 


183 192 

184Ketik `/` untuk mengirim [skill](/id/skills). Mengemas tugas berulang sebagai skill memungkinkan Anda memulai alur kerja yang sama berkali-kali dari tampilan agen tanpa mengetik ulang prompt. Tekan `Tab` pada input kosong untuk menelusuri setiap subagent yang dapat dikirim, atau untuk menerapkan saran yang disorot ketika saran ditampilkan.193Ketik `/` untuk mengirim [skill](/id/skills). Mengemas tugas berulang sebagai skill memungkinkan Anda memulai alur kerja yang sama berkali-kali dari tampilan agen tanpa mengetik ulang prompt. Tekan `Tab` pada input kosong untuk menelusuri setiap subagent yang dapat dikirim, atau untuk menerapkan saran yang disorot ketika saran ditampilkan.

185 194 

195Ketika `@name` yang sama cocok dengan subagent dan repositori saudara, subagent memiliki prioritas. Bentuk kata pertama tanpa `@` juga berlaku untuk nama subagent apa pun, jadi prompt yang dimulai dengan kata yang cocok dengan salah satu nama subagent Anda mengirim subagent itu. Gunakan bentuk `@` ketika Anda ingin eksplisit.

196 

186#### Kirim ke direktori tertentu197#### Kirim ke direktori tertentu

187 198 

188Sesi baru berjalan di direktori tempat Anda membuka tampilan agen. Untuk menargetkan direktori berbeda:199Sesi baru berjalan di direktori tempat Anda membuka tampilan agen. Untuk menargetkan direktori berbeda:


193 204 

194Ketika tampilan agen dikelompokkan berdasarkan direktori, direktori baris yang disorot menjadi target pengiriman, sehingga Anda dapat menggulir ke grup dan mengirim ke dalamnya tanpa mengetik ulang jalur.205Ketika tampilan agen dikelompokkan berdasarkan direktori, direktori baris yang disorot menjadi target pengiriman, sehingga Anda dapat menggulir ke grup dan mengirim ke dalamnya tanpa mengetik ulang jalur.

195 206 

196#### Isolasi pengeditan file di worktree

197 

198Sesi yang dikirim dari tampilan agen berbagi direktori kerja Anda secara default, jadi dua agen yang mengedit file yang sama dapat bertentangan. Untuk mencegah ini, Claude Code memblokir sesi yang dikirim dari tampilan agen agar tidak menulis file sampai sesi bergerak ke [git worktree](/id/worktrees) yang terisolasi. Claude menangani ini secara otomatis ketika perlu mengedit file. Worktree dibuat di bawah `.claude/worktrees/` di dalam direktori proyek dan dihapus ketika Anda menghapus sesi. Menghapus sesi juga menghapus worktree-nya, jadi gabungkan atau dorong perubahan yang ingin Anda simpan sebelum Anda menghapus.

199 

200Untuk membuat subagent selalu berjalan di worktree-nya sendiri terlepas dari cara dimulainya, atur [`isolation: worktree`](/id/sub-agents#supported-frontmatter-fields) dalam frontmatter-nya.

201 

202### Dari dalam sesi207### Dari dalam sesi

203 208 

204Jalankan `/background` atau aliasnya `/bg` untuk melepaskan percakapan saat ini dan membiarkannya berjalan. Berikan prompt seperti `/bg run the test suite and fix any failures` untuk mengirim satu instruksi lagi sebelum melepaskan.209Jalankan `/background` atau aliasnya `/bg` untuk melepaskan percakapan saat ini dan membiarkannya berjalan. Berikan prompt seperti `/bg run the test suite and fix any failures` untuk mengirim satu instruksi lagi sebelum melepaskan.


227 claude stop 7c5dcf5d stop this session232 claude stop 7c5dcf5d stop this session

228```233```

229 234 

235### Bagaimana pengeditan file diisolasi

236 

237Setiap sesi latar belakang, baik dimulai dari tampilan agen, `/bg`, atau `claude --bg`, dimulai di direktori kerja Anda tetapi diblokir dari menulis file di sana. Ketika sesi perlu mengedit file, Claude memindahkannya ke [git worktree](/id/worktrees) yang terisolasi di bawah `.claude/worktrees/` secara otomatis, sehingga sesi paralel dapat membaca checkout yang sama tetapi masing-masing menulis ke miliknya sendiri. Blokir tidak berlaku ketika sesi sudah berada di dalam worktree, ketika direktori kerja bukan repositori git, atau untuk penulisan di luar direktori kerja.

238 

239Worktree dihapus ketika Anda menghapus sesi, jadi gabungkan atau dorong perubahan yang ingin Anda simpan sebelum Anda menghapus. Untuk menemukan jalur worktree sesi, intip sesi atau lampirkan dan periksa direktori kerjanya.

240 

241Untuk membuat subagent selalu berjalan di worktree-nya sendiri terlepas dari cara dimulainya, atur [`isolation: worktree`](/id/sub-agents#supported-frontmatter-fields) dalam frontmatter-nya.

242 

243### Mode izin dan pengaturan

244 

245Sesi yang dikirim membaca [pengaturan](/id/settings) dan [mode izin](/id/permissions) dari direktori tempat sesi berjalan, sama seperti jika Anda telah memulai `claude` di sana. Mengirim dari input tampilan agen tidak melewatkan mode izin, jadi sesi menggunakan `defaultMode` dari pengaturan direktori itu atau `permissionMode` dari [frontmatter subagent](/id/sub-agents#supported-frontmatter-fields) yang dikirim.

246 

247Untuk menetapkan mode dari shell, berikan `--permission-mode` dengan `claude --bg`. Menggunakan `bypassPermissions` atau `auto` dengan cara ini ditolak sampai Anda telah menerima mode itu dengan menjalankan `claude` dengannya sekali secara interaktif, karena mode tersebut memungkinkan sesi yang tidak Anda tonton bertindak tanpa persetujuan.

248 

230## Kelola sesi dari shell249## Kelola sesi dari shell

231 250 

232Setiap sesi latar belakang memiliki ID pendek yang dapat Anda gunakan dari shell. Perintah ini berguna untuk scripting atau ketika Anda tidak ingin membuka tampilan agen.251Setiap sesi latar belakang memiliki ID pendek yang dapat Anda gunakan dari shell. Perintah ini berguna untuk scripting atau ketika Anda tidak ingin membuka tampilan agen.


281 300 

282Tampilan agen adalah pratinjau penelitian. Keterbatasan saat ini yang perlu diperhatikan:301Tampilan agen adalah pratinjau penelitian. Keterbatasan saat ini yang perlu diperhatikan:

283 302 

284* **Batas laju berlaku**: sesi latar belakang mengurangi penggunaan langganan Anda sama seperti sesi interaktif, jadi menjalankan sepuluh agen secara paralel menggunakan kuota sepuluh kali lebih cepat.303* **Batas laju berlaku**: sesi latar belakang mengurangi penggunaan langganan Anda sama seperti sesi interaktif, jadi menjalankan sepuluh agen secara paralel menggunakan kuota sepuluh kali lebih cepat daripada menjalankan satu.

285* **Sesi bersifat lokal**: sesi latar belakang berjalan di mesin Anda dan berhenti jika tidur atau dimatikan.304* **Sesi bersifat lokal**: sesi latar belakang berjalan di mesin Anda dan berhenti jika mesin tidur atau dimatikan.

286* **Worktrees dihapus dengan sesi**: gabungkan atau dorong perubahan sebelum menghapus sesi yang mengedit file di worktree-nya sendiri.305* **Worktrees dihapus dengan sesi**: gabungkan atau dorong perubahan sebelum menghapus sesi yang mengedit file di worktree-nya sendiri.

287 306 

288## Langkah berikutnya307## Langkah berikutnya

Details

1465Klik nama file untuk membuka node itu di penjelajah di atas.1465Klik nama file untuk membuka node itu di penjelajah di atas.

1466 1466 

1467| File | Cakupan | Commit | Apa yang dilakukan | Referensi |1467| File | Cakupan | Commit | Apa yang dilakukan | Referensi |

1468| --------------------------------------------------- | ----------------- | ------ | ------------------------------------------------------------------------------ | -------------------------------------------------------------------- |1468| --------------------------------------------------- | ----------------- | ------ | ------------------------------------------------------------------------------ | --------------------------------------------------------------- |

1469| [`CLAUDE.md`](#ce-claude-md) | Proyek dan global | ✓ | Instruksi dimuat setiap sesi | [Memory](/id/memory) |1469| [`CLAUDE.md`](#ce-claude-md) | Proyek dan global | ✓ | Instruksi dimuat setiap sesi | [Memory](/id/memory) |

1470| [`rules/*.md`](#ce-rules) | Proyek dan global | ✓ | Instruksi dengan cakupan topik, opsional gated path | [Rules](/id/memory#organize-rules-with-claude/rules/) |1470| [`rules/*.md`](#ce-rules) | Proyek dan global | ✓ | Instruksi dengan cakupan topik, opsional gated path | [Rules](/id/memory#organize-rules-with-claude/rules/) |

1471| [`settings.json`](#ce-settings-json) | Proyek dan global | ✓ | Izin, hooks, variabel env, default model | [Settings](/id/settings) |1471| [`settings.json`](#ce-settings-json) | Proyek dan global | ✓ | Izin, hooks, variabel env, default model | [Settings](/id/settings) |

1472| [`settings.local.json`](#ce-settings-local-json) | Proyek saja | | Penggantian pribadi Anda, auto-gitignored | [Settings scopes](/id/settings#settings-files) |1472| [`settings.local.json`](#ce-settings-local-json) | Proyek saja | | Penggantian pribadi Anda, auto-gitignored | [Settings scopes](/id/settings#settings-files) |

1473| [`.mcp.json`](#ce-mcp-json) | Proyek saja | ✓ | Server MCP yang dibagikan tim | [MCP scopes](/id/mcp#mcp-installation-scopes) |1473| [`.mcp.json`](#ce-mcp-json) | Proyek saja | ✓ | Server MCP yang dibagikan tim | [MCP scopes](/id/mcp#mcp-installation-scopes) |

1474| [`.worktreeinclude`](#ce-worktreeinclude) | Proyek saja | ✓ | File yang diabaikan untuk disalin ke worktrees baru | [Worktrees](/id/common-workflows#copy-gitignored-files-to-worktrees) |1474| [`.worktreeinclude`](#ce-worktreeinclude) | Proyek saja | ✓ | File yang diabaikan untuk disalin ke worktrees baru | [Worktrees](/id/worktrees#copy-gitignored-files-into-worktrees) |

1475| [`skills/<name>/SKILL.md`](#ce-skills) | Proyek dan global | ✓ | Prompt yang dapat digunakan kembali dipanggil dengan `/name` atau auto-invoked | [Skills](/id/skills) |1475| [`skills/<name>/SKILL.md`](#ce-skills) | Proyek dan global | ✓ | Prompt yang dapat digunakan kembali dipanggil dengan `/name` atau auto-invoked | [Skills](/id/skills) |

1476| [`commands/*.md`](#ce-commands) | Proyek dan global | ✓ | Prompt file tunggal; mekanisme yang sama dengan skills | [Skills](/id/skills) |1476| [`commands/*.md`](#ce-commands) | Proyek dan global | ✓ | Prompt file tunggal; mekanisme yang sama dengan skills | [Skills](/id/skills) |

1477| [`output-styles/*.md`](#ce-output-styles) | Proyek dan global | ✓ | Bagian prompt sistem khusus | [Output styles](/id/output-styles) |1477| [`output-styles/*.md`](#ce-output-styles) | Proyek dan global | ✓ | Bagian prompt sistem khusus | [Output styles](/id/output-styles) |


1497| Jalur di bawah `~/.claude/` | Konten |1497| Jalur di bawah `~/.claude/` | Konten |

1498| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |1498| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |

1499| `projects/<project>/<session>.jsonl` | Transkrip percakapan lengkap: setiap pesan, tool call, dan tool result |1499| `projects/<project>/<session>.jsonl` | Transkrip percakapan lengkap: setiap pesan, tool call, dan tool result |

1500| `projects/<project>/<session>/subagents/` | Transkrip percakapan [Subagent](/id/sub-agents), dihapus bersama transkrip sesi induk saat berusia |

1500| `projects/<project>/<session>/tool-results/` | Output tool besar yang tumpah ke file terpisah |1501| `projects/<project>/<session>/tool-results/` | Output tool besar yang tumpah ke file terpisah |

1501| `file-history/<session>/` | Snapshot pra-edit file yang diubah Claude, digunakan untuk [checkpoint restore](/id/checkpointing) |1502| `file-history/<session>/` | Snapshot pra-edit file yang diubah Claude, digunakan untuk [checkpoint restore](/id/checkpointing) |

1502| `plans/` | File rencana yang ditulis selama [plan mode](/id/permission-modes#analyze-before-you-edit-with-plan-mode) |1503| `plans/` | File rencana yang ditulis selama [plan mode](/id/permission-modes#analyze-before-you-edit-with-plan-mode) |


1512Jalur berikut tidak tercakup oleh pembersihan otomatis dan bertahan selamanya.1513Jalur berikut tidak tercakup oleh pembersihan otomatis dan bertahan selamanya.

1513 1514 

1514| Jalur di bawah `~/.claude/` | Konten |1515| Jalur di bawah `~/.claude/` | Konten |

1515| --------------------------- | ---------------------------------------------------------------------------------------------------- |1516| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1516| `history.jsonl` | Setiap prompt yang Anda ketik, dengan timestamp dan jalur proyek. Digunakan untuk recall panah atas. |1517| `history.jsonl` | Setiap prompt yang Anda ketik, dengan timestamp dan jalur proyek. Digunakan untuk recall panah atas. |

1517| `stats-cache.json` | Hitungan token dan biaya agregat yang ditampilkan oleh `/usage` |1518| `stats-cache.json` | Hitungan token dan biaya agregat yang ditampilkan oleh `/usage` |

1519| `remote-settings.json` | Salinan cache dari [pengaturan yang dikelola server](/id/server-managed-settings) untuk organisasi Anda. Hanya ada saat organisasi Anda telah mengonfigurasinya. Disegarkan pada setiap peluncuran. |

1518| `todos/` | Daftar tugas per-sesi warisan. Tidak lagi ditulis oleh versi saat ini; aman untuk dihapus. |1520| `todos/` | Daftar tugas per-sesi warisan. Tidak lagi ditulis oleh versi saat ini; aman untuk dihapus. |

1519 1521 

1520File cache dan lock kecil lainnya muncul tergantung fitur mana yang Anda gunakan dan aman untuk dihapus.1522File cache dan lock kecil lainnya muncul tergantung fitur mana yang Anda gunakan dan aman untuk dihapus.


1570| `~/.claude/history.jsonl` | Recall prompt panah atas |1572| `~/.claude/history.jsonl` | Recall prompt panah atas |

1571| `~/.claude/file-history/` | Checkpoint restore untuk sesi masa lalu |1573| `~/.claude/file-history/` | Checkpoint restore untuk sesi masa lalu |

1572| `~/.claude/stats-cache.json` | Total historis yang ditampilkan oleh `/usage` |1574| `~/.claude/stats-cache.json` | Total historis yang ditampilkan oleh `/usage` |

1575| `~/.claude/remote-settings.json` | Tidak ada. Diambil kembali pada peluncuran berikutnya. |

1573| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/paste-cache/`, `~/.claude/image-cache/`, `~/.claude/session-env/`, `~/.claude/tasks/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Tidak ada yang menghadap pengguna |1576| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/paste-cache/`, `~/.claude/image-cache/`, `~/.claude/session-env/`, `~/.claude/tasks/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Tidak ada yang menghadap pengguna |

1574| `~/.claude/todos/` | Tidak ada. Direktori warisan tidak ditulis oleh versi saat ini. |1577| `~/.claude/todos/` | Tidak ada. Direktori warisan tidak ditulis oleh versi saat ini. |

1575 1578 

Details

124 124 

125`--system-prompt` dan `--system-prompt-file` saling eksklusif. Flag append dapat dikombinasikan dengan flag penggantian apa pun.125`--system-prompt` dan `--system-prompt-file` saling eksklusif. Flag append dapat dikombinasikan dengan flag penggantian apa pun.

126 126 

127Untuk sebagian besar kasus penggunaan, gunakan flag append. Menambahkan mempertahankan kemampuan bawaan Claude Code sambil menambahkan persyaratan Anda. Gunakan flag penggantian hanya ketika Anda memerlukan kontrol penuh atas prompt sistem.127Pilih berdasarkan apakah identitas default Claude Code masih sesuai dengan tugas Anda. Gunakan flag append ketika Claude harus tetap menjadi asisten coding yang juga mengikuti aturan tambahan Anda: instruksi per-invocation, pemformatan output, atau konteks domain untuk skrip `-p`. Menambahkan mempertahankan panduan tool default, instruksi keamanan, dan konvensi coding, jadi Anda hanya menyediakan apa yang berbeda. Gunakan flag penggantian ketika permukaan, identitas, atau model izin berbeda dari Claude Code, seperti agen non-coding dalam pipeline yang tidak ada manusia yang menonton. Mengganti menghilangkan seluruh prompt default, termasuk panduan tool dan instruksi keamanan, jadi Anda bertanggung jawab atas apa pun yang masih dibutuhkan tugas Anda.

128 

129Flag ini hanya berlaku untuk invocation saat ini. Untuk persona persisten yang dapat Anda alihkan dan bagikan di seluruh proyek, gunakan [output styles](/id/output-styles). Untuk konvensi proyek yang harus selalu diikuti Claude, gunakan [CLAUDE.md](/id/memory). [Panduan Agent SDK tentang system prompts](/id/agent-sdk/modifying-system-prompts#decide-on-a-starting-point) mencakup keputusan yang sama dengan lebih mendalam.

128 130 

129## Lihat juga131## Lihat juga

130 132 

data-usage.md +4 −4

Details

13**Pengguna konsumen (paket Free, Pro, dan Max)**:13**Pengguna konsumen (paket Free, Pro, dan Max)**:

14Kami memberi Anda pilihan untuk mengizinkan data Anda digunakan untuk meningkatkan model Claude di masa depan. Kami akan melatih model baru menggunakan data dari akun Free, Pro, dan Max ketika pengaturan ini aktif (termasuk ketika Anda menggunakan Claude Code dari akun-akun ini).14Kami memberi Anda pilihan untuk mengizinkan data Anda digunakan untuk meningkatkan model Claude di masa depan. Kami akan melatih model baru menggunakan data dari akun Free, Pro, dan Max ketika pengaturan ini aktif (termasuk ketika Anda menggunakan Claude Code dari akun-akun ini).

15 15 

16**Pengguna komersial**: (paket Team dan Enterprise, API, platform pihak ketiga, dan Claude Gov) mempertahankan kebijakan yang ada: Anthropic tidak melatih model generatif menggunakan kode atau prompt yang dikirim ke Claude Code berdasarkan syarat komersial, kecuali pelanggan telah memilih untuk memberikan data mereka kepada kami untuk peningkatan model (misalnya, [Program Mitra Pengembang](https://support.claude.com/en/articles/11174108-about-the-development-partner-program)).16**Pengguna komersial**: (paket Team dan Enterprise, API, platform pihak ketiga, dan Claude Gov) mempertahankan kebijakan yang ada: Anthropic tidak melatih model generatif menggunakan kode atau prompt yang dikirim ke Claude Code berdasarkan syarat komersial, kecuali pelanggan telah memilih untuk memberikan data mereka kepada kami untuk peningkatan model (misalnya, [Program Mitra Pengembang](https://support.claude.com/id/articles/11174108-about-the-development-partner-program)).

17 17 

18### Program Mitra Pengembang18### Program Mitra Pengembang

19 19 

20Jika Anda secara eksplisit memilih untuk memberikan materi kepada kami untuk dilatih, seperti melalui [Program Mitra Pengembang](https://support.claude.com/en/articles/11174108-about-the-development-partner-program), kami dapat menggunakan materi tersebut untuk melatih model kami. Admin organisasi dapat secara tegas memilih untuk bergabung dengan Program Mitra Pengembang untuk organisasi mereka. Perhatikan bahwa program ini hanya tersedia untuk API pihak pertama Anthropic, dan bukan untuk pengguna Bedrock atau Vertex.20Jika Anda secara eksplisit memilih untuk memberikan materi kepada kami untuk dilatih, seperti melalui [Program Mitra Pengembang](https://support.claude.com/id/articles/11174108-about-the-development-partner-program), kami dapat menggunakan materi tersebut untuk melatih model kami. Admin organisasi dapat secara tegas memilih untuk bergabung dengan Program Mitra Pengembang untuk organisasi mereka. Perhatikan bahwa program ini hanya tersedia untuk API pihak pertama Anthropic, dan bukan untuk pengguna Bedrock atau Vertex.

21 21 

22### Umpan balik menggunakan perintah `/feedback`22### Umpan balik menggunakan perintah `/feedback`

23 23 


33* **Tidak**: menolak tanpa mengirim apa pun33* **Tidak**: menolak tanpa mengirim apa pun

34* **Jangan tanya lagi**: menolak dan menghentikan pertanyaan tindak lanjut ini agar tidak muncul di sesi mendatang34* **Jangan tanya lagi**: menolak dan menghentikan pertanyaan tindak lanjut ini agar tidak muncul di sesi mendatang

35 35 

36Tidak ada yang diunggah kecuali Anda secara eksplisit memilih **Ya**. Organisasi dengan [retensi data nol](/id/zero-data-retention), atau di mana umpan balik produk dinonaktifkan oleh kebijakan organisasi, tidak pernah melihat pertanyaan tindak lanjut ini. Respons Anda terhadap survei ini, termasuk transkrip sesi yang dikirimkan setelah prompt penilaian, tidak mempengaruhi preferensi pelatihan data Anda dan tidak dapat digunakan untuk melatih model AI kami.36Tidak ada yang diunggah kecuali Anda secara eksplisit memilih **Ya**. Organisasi dengan [retensi data nol](/id/zero-data-retention), atau di mana umpan balik produk dinonaktifkan oleh kebijakan organisasi, atau di mana `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur, tidak pernah melihat pertanyaan tindak lanjut ini. Respons Anda terhadap survei ini, termasuk transkrip sesi yang dikirimkan setelah prompt penilaian, tidak mempengaruhi preferensi pelatihan data Anda dan tidak dapat digunakan untuk melatih model AI kami.

37 37 

38Untuk menonaktifkan survei ini, atur `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`. Survei juga dinonaktifkan ketika `DISABLE_TELEMETRY` atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur. Untuk mengontrol frekuensi alih-alih menonaktifkan, atur [`feedbackSurveyRate`](/id/settings#available-settings) dalam file pengaturan Anda ke probabilitas antara `0` dan `1`.38Untuk menonaktifkan survei ini, atur `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1`. Survei juga dinonaktifkan ketika `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur. Organisasi yang memblokir lalu lintas nonessensial tetapi menangkap respons survei melalui [pengumpul OpenTelemetry](/id/monitoring-usage) mereka sendiri dapat memilih survei kembali dengan mengatur `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL=1`. Survei kemudian mencatat peringkat ke pengumpul yang dikonfigurasi saja. Tindak lanjut berbagi transkrip dan semua lalu lintas umpan balik lainnya yang terikat ke Anthropic tetap dinonaktifkan. Untuk mengontrol frekuensi alih-alih menonaktifkan, atur [`feedbackSurveyRate`](/id/settings#available-settings) dalam file pengaturan Anda ke probabilitas antara `0` dan `1`.

39 39 

40### Retensi data40### Retensi data

41 41 

env-vars.md +5 −2

Details

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

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

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

84| `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) |84| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Atur ke `1` untuk menonaktifkan survei kualitas sesi "How is Claude doing?". Survei juga dinonaktifkan saat `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur, kecuali `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` memilih kembali. 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) |

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

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

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


96| `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) |96| `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) |

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

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

99| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Atur ke `1` untuk merutekan survei kualitas sesi "How is Claude doing?" ke [kolektor OpenTelemetry](/id/monitoring-usage) Anda sendiri saat lalu lintas nonessential terikat Anthropic diblokir. Rating survei dipancarkan hanya sebagai peristiwa OTEL ke kolektor yang dikonfigurasi. Tidak ada data survei yang dikirim ke Anthropic dalam mode ini. Berlaku saat `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY`, atau `DO_NOT_TRACK` diatur, dan tidak berpengaruh sebaliknya. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` dan kebijakan umpan balik produk organisasi mengambil prioritas |

99| `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 pada API Anthropic. Pada Bedrock dan Vertex, diaktifkan per model di mana kontainer yang digunakan mendukungnya. Atur ke `0` untuk menolak. Atur ke `1` untuk memaksa pengaktifan saat merutekan melalui proxy melalui `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, atau `ANTHROPIC_BEDROCK_BASE_URL`. Dimatikan secara default pada Foundry dan koneksi [gateway](/id/llm-gateway) |100| `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 pada API Anthropic. Pada Bedrock dan Vertex, diaktifkan per model di mana kontainer yang digunakan mendukungnya. Atur ke `0` untuk menolak. Atur ke `1` untuk memaksa pengaktifan saat merutekan melalui proxy melalui `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, atau `ANTHROPIC_BEDROCK_BASE_URL`. Dimatikan secara default pada Foundry dan koneksi [gateway](/id/llm-gateway) |

100| `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) |101| `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) |

102| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | Atur ke `1` untuk menjalankan [mode cepat](/id/fast-mode) pada Claude Opus 4.7 alih-alih Opus 4.6. Dengan variabel yang diatur, `/fast` beralih ke Opus 4.7; tanpanya, `/fast` terus menggunakan Opus 4.6 |

101| `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) |103| `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) |

102| `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) |104| `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) |

103| `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) |105| `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) |


119| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Atur jumlah maksimal token keluaran untuk sebagian besar permintaan. Default dan batas bervariasi menurut model; lihat [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Meningkatkan nilai ini mengurangi jendela konteks efektif yang tersedia sebelum [pemadatan otomatis](/id/costs#reduce-token-usage) dipicu. |121| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Atur jumlah maksimal token keluaran untuk sebagian besar permintaan. Default dan batas bervariasi menurut model; lihat [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Meningkatkan nilai ini mengurangi jendela konteks efektif yang tersedia sebelum [pemadatan otomatis](/id/costs#reduce-token-usage) dipicu. |

120| `CLAUDE_CODE_MAX_RETRIES` | Ganti jumlah kali untuk mencoba ulang permintaan API yang gagal (default: 10) |122| `CLAUDE_CODE_MAX_RETRIES` | Ganti jumlah kali untuk mencoba ulang permintaan API yang gagal (default: 10) |

121| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Jumlah maksimal alat baca-saja dan subagent yang dapat dieksekusi secara paralel (default: 10). Nilai yang lebih tinggi meningkatkan paralelisme tetapi mengonsumsi lebih banyak sumber daya |123| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Jumlah maksimal alat baca-saja dan subagent yang dapat dieksekusi secara paralel (default: 10). Nilai yang lebih tinggi meningkatkan paralelisme tetapi mengonsumsi lebih banyak sumber daya |

124| `CLAUDE_CODE_MAX_TURNS` | Batasi jumlah giliran agentic saat tidak ada batas eksplisit yang diteruskan. Setara dengan meneruskan [`--max-turns`](/id/cli-reference#cli-flags), yang mengambil prioritas saat keduanya diatur. Nilai yang bukan integer positif ditolak saat startup dengan kesalahan daripada diperlakukan sebagai tidak ada batas |

122| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Atur ke `1` untuk meluncurkan server MCP stdio dengan hanya lingkungan dasar yang aman ditambah `env` yang dikonfigurasi server, alih-alih mewarisi lingkungan shell Anda |125| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Atur ke `1` untuk meluncurkan server MCP stdio dengan hanya lingkungan dasar yang aman ditambah `env` yang dikonfigurasi server, alih-alih mewarisi lingkungan shell Anda |

123| `CLAUDE_CODE_NATIVE_CURSOR` | Atur ke `1` untuk menampilkan kursor terminal sendiri di caret input alih-alih blok yang digambar. Kursor menghormati pengaturan blink, bentuk, dan fokus terminal |126| `CLAUDE_CODE_NATIVE_CURSOR` | Atur ke `1` untuk menampilkan kursor terminal sendiri di caret input alih-alih blok yang digambar. Kursor menghormati pengaturan blink, bentuk, dan fokus terminal |

124| `CLAUDE_CODE_NEW_INIT` | Atur ke `1` untuk membuat `/init` menjalankan alur pengaturan interaktif. Alur menanyakan file mana yang akan dibuat, termasuk CLAUDE.md, skill, dan hook, sebelum menjelajahi basis kode dan menulisnya. Tanpa variabel ini, `/init` membuat CLAUDE.md secara otomatis tanpa meminta. |127| `CLAUDE_CODE_NEW_INIT` | Atur ke `1` untuk membuat `/init` menjalankan alur pengaturan interaktif. Alur menanyakan file mana yang akan dibuat, termasuk CLAUDE.md, skill, dan hook, sebelum menjelajahi basis kode dan menulisnya. Tanpa variabel ini, `/init` membuat CLAUDE.md secara otomatis tanpa meminta. |


202| `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 |205| `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 |

203| `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), [Foundry](/id/microsoft-foundry), dan [Claude Platform on AWS](/id/claude-platform-on-aws). Pengguna langganan menerima TTL 1 jam secara otomatis. Penulisan cache 1 jam ditagih dengan tarif yang lebih tinggi |206| `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), [Foundry](/id/microsoft-foundry), dan [Claude Platform on AWS](/id/claude-platform-on-aws). Pengguna langganan menerima TTL 1 jam secara otomatis. Penulisan cache 1 jam ditagih dengan tarif yang lebih tinggi |

204| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Gunakan `ENABLE_PROMPT_CACHING_1H` sebagai gantinya |207| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Gunakan `ENABLE_PROMPT_CACHING_1H` sebagai gantinya |

205| `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) |208| `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 dan kirim header beta, permintaan gagal pada Vertex AI atau proxy yang tidak mendukung `tool_reference`), `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) |

206| `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 |209| `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 |

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

208| `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` |211| `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` |

fast-mode.md +47 −14

Details

4 4 

5# Percepat respons dengan mode cepat5# Percepat respons dengan mode cepat

6 6 

7> Dapatkan respons Opus 4.6 yang lebih cepat di Claude Code dengan mengaktifkan mode cepat.7> Dapatkan respons Opus yang lebih cepat di Claude Code dengan mengaktifkan mode cepat.

8 8 

9<Note>9<Note>

10 Mode cepat berada dalam [pratinjau penelitian](#research-preview). Fitur, harga, dan ketersediaan dapat berubah berdasarkan umpan balik.10 Mode cepat berada dalam [pratinjau penelitian](#research-preview). Fitur, harga, dan ketersediaan dapat berubah berdasarkan umpan balik.

11</Note>11</Note>

12 12 

13Mode cepat adalah konfigurasi kecepatan tinggi untuk Claude Opus 4.6, membuat model 2,5x lebih cepat dengan biaya per token yang lebih tinggi. Aktifkan dengan `/fast` ketika Anda membutuhkan kecepatan untuk pekerjaan interaktif seperti iterasi cepat atau debugging langsung, dan nonaktifkan ketika biaya lebih penting daripada latensi.13Mode cepat adalah konfigurasi kecepatan tinggi untuk Claude Opus, membuat model 2,5x lebih cepat dengan biaya per token yang lebih tinggi. Aktifkan dengan `/fast` ketika Anda membutuhkan kecepatan untuk pekerjaan interaktif seperti iterasi cepat atau debugging langsung, dan nonaktifkan ketika biaya lebih penting daripada latensi.

14 14 

15Mode cepat bukan model yang berbeda. Mode ini menggunakan Opus 4.6 yang sama dengan konfigurasi API berbeda yang memprioritaskan kecepatan daripada efisiensi biaya. Anda mendapatkan kualitas dan kemampuan yang identik, hanya respons yang lebih cepat.15Mode cepat bukan model yang berbeda. Mode ini menggunakan Claude Opus dengan konfigurasi API berbeda yang memprioritaskan kecepatan daripada efisiensi biaya. Anda mendapatkan kualitas dan kemampuan yang identik, hanya respons yang lebih cepat. Mode cepat didukung pada Opus 4.6 dan Opus 4.7. Mode ini tidak tersedia pada Sonnet, Haiku, atau model lainnya.

16 16 

17<Note>17<Note>

18 Mode cepat memerlukan Claude Code v2.1.36 atau lebih baru. Periksa versi Anda dengan `claude --version`.18 Mode cepat memerlukan Claude Code v2.1.36 atau lebih baru. Periksa versi Anda dengan `claude --version`.


21Yang perlu diketahui:21Yang perlu diketahui:

22 22 

23* Gunakan `/fast` untuk mengaktifkan mode cepat di Claude Code CLI. Juga tersedia melalui `/fast` di Ekstensi Claude Code VS Code.23* Gunakan `/fast` untuk mengaktifkan mode cepat di Claude Code CLI. Juga tersedia melalui `/fast` di Ekstensi Claude Code VS Code.

24* Harga mode cepat untuk Opus 4.6 dimulai dari \$30/150 MTok. Mode cepat tersedia dengan diskon 50% untuk semua paket hingga 23:59 PT pada 16 Februari.24* Secara default, `/fast` berjalan pada Opus 4.6. Untuk menjalankan mode cepat pada Opus 4.7 sebagai gantinya, atur variabel lingkungan [`CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE`](#use-fast-mode-on-opus-4-7).

25* Harga mode cepat adalah \$30/150 MTok pada Opus 4.6 dan Opus 4.7.

25* Tersedia untuk semua pengguna Claude Code pada paket berlangganan (Pro/Max/Team/Enterprise) dan Claude Console.26* Tersedia untuk semua pengguna Claude Code pada paket berlangganan (Pro/Max/Team/Enterprise) dan Claude Console.

26* Untuk pengguna Claude Code pada paket berlangganan (Pro/Max/Team/Enterprise), mode cepat tersedia hanya melalui penggunaan tambahan dan tidak termasuk dalam batas laju penggunaan berlangganan.27* Untuk pengguna Claude Code pada paket berlangganan (Pro/Max/Team/Enterprise), mode cepat tersedia hanya melalui penggunaan tambahan dan tidak termasuk dalam batas laju penggunaan berlangganan.

27 28 

28Halaman ini mencakup cara [mengaktifkan mode cepat](#toggle-fast-mode), [pertukaran biayanya](#understand-the-cost-tradeoff), [kapan menggunakannya](#decide-when-to-use-fast-mode), [persyaratan](#requirements), [opt-in per sesi](#require-per-session-opt-in), dan [perilaku batas laju](#handle-rate-limits).29Halaman ini mencakup cara [mengaktifkan mode cepat](#toggle-fast-mode), [menggunakan mode cepat pada Opus 4.7](#use-fast-mode-on-opus-4-7), [pertukaran biayanya](#understand-the-cost-tradeoff), [kapan menggunakannya](#decide-when-to-use-fast-mode), [persyaratan](#requirements), [opt-in per sesi](#require-per-session-opt-in), dan [perilaku batas laju](#handle-rate-limits).

29 30 

30## Aktifkan mode cepat31## Aktifkan mode cepat

31 32 


40 41 

41Ketika Anda mengaktifkan mode cepat:42Ketika Anda mengaktifkan mode cepat:

42 43 

43* Jika Anda berada di model yang berbeda, Claude Code secara otomatis beralih ke Opus 4.644* Jika Anda berada di model yang berbeda, Claude Code secara otomatis beralih ke model mode cepat: Opus 4.6 secara default, atau Opus 4.7 ketika [`CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE`](#use-fast-mode-on-opus-4-7) diatur.

44* Anda akan melihat pesan konfirmasi: "Fast mode ON"45* Anda akan melihat pesan konfirmasi: "Fast mode ON"

45* Ikon kecil `↯` muncul di sebelah prompt saat mode cepat aktif46* Ikon kecil `↯` muncul di sebelah prompt saat mode cepat aktif

46* Jalankan `/fast` lagi kapan saja untuk memeriksa apakah mode cepat aktif atau tidak47* Jalankan `/fast` lagi kapan saja untuk memeriksa apakah mode cepat aktif atau tidak

47 48 

48Ketika Anda menonaktifkan mode cepat dengan `/fast` lagi, Anda tetap berada di Opus 4.6. Model tidak kembali ke model sebelumnya. Untuk beralih ke model yang berbeda, gunakan `/model`.49Ketika Anda menonaktifkan mode cepat dengan `/fast` lagi, Anda tetap berada di versi Opus yang sama tempat mode cepat berjalan. Model tidak kembali ke model sebelumnya. Untuk beralih ke model yang berbeda, gunakan `/model`.

50 

51## Gunakan mode cepat pada Opus 4.7

52 

53<Note>

54 Mode cepat pada Opus 4.7 memerlukan Claude Code v2.1.139 atau lebih baru.

55</Note>

56 

57Mode cepat untuk Claude Opus 4.7 berada dalam pratinjau penelitian. Mode ini berjalan dengan kecepatan 2,5x yang sama dan harga yang sama dengan mode cepat untuk Opus 4.6, tanpa perubahan perilaku lainnya.

58 

59<Note>

60 Pada 14 Mei 2026, Opus 4.7 menjadi model mode cepat default. Sampai saat itu, opt in dengan menetapkan `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE=1`.

61</Note>

62 

63Untuk opt in, atur `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE=1` sebelum meluncurkan Claude Code. Dengan variabel yang diatur, `/fast` berjalan pada Opus 4.7. Tanpanya, `/fast` terus berjalan pada Opus 4.6.

64 

65Anda dapat mengatur variabel sebagai ekspor shell:

66 

67```bash theme={null}

68export CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE=1

69```

70 

71Atau di file [pengaturan](/id/settings#settings-files) Claude Code apa pun, termasuk pengaturan pengguna, proyek, dan terkelola, untuk membatasi opt-in:

72 

73```json theme={null}

74{

75 "env": {

76 "CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE": "1"

77 }

78}

79```

80 

81Mode cepat untuk Opus 4.6 tetap tersedia bersama Opus 4.7. Keduanya berbagi pool batas laju mode cepat yang sama: penggunaan pada model apa pun menarik dari batas yang sama.

49 82 

50## Pahami pertukaran biaya83## Pahami pertukaran biaya

51 84 

52Mode cepat memiliki harga per-token yang lebih tinggi daripada Opus 4.6 standar:85Mode cepat memiliki harga per-token yang lebih tinggi daripada Opus standar:

53 86 

54| Mode | Input (MTok) | Output (MTok) |87| Mode | Input (MTok) | Output (MTok) |

55| ------------------------------- | ------------ | ------------- |88| ------------------------ | ------------ | ------------- |

56| Mode cepat di Opus 4.6 (\<200K) | \$30 | \$150 |89| Mode cepat pada Opus 4.6 | \$30 | \$150 |

57| Mode cepat di Opus 4.6 (>200K) | \$60 | \$225 |90| Mode cepat pada Opus 4.7 | \$30 | \$150 |

58 91 

59Mode cepat kompatibel dengan jendela konteks yang diperluas 1M token.92Harga mode cepat datar di seluruh jendela konteks 1M token penuh.

60 93 

61Ketika Anda beralih ke mode cepat di tengah percakapan, Anda membayar harga token input tanpa cache mode cepat penuh untuk seluruh konteks percakapan. Ini lebih mahal daripada jika Anda telah mengaktifkan mode cepat dari awal.94Ketika Anda beralih ke mode cepat di tengah percakapan, Anda membayar harga token input tanpa cache mode cepat penuh untuk seluruh konteks percakapan. Ini lebih mahal daripada jika Anda telah mengaktifkan mode cepat dari awal.

62 95 


125 158 

126## Tangani batas laju159## Tangani batas laju

127 160 

128Mode cepat memiliki batas laju terpisah dari Opus 4.6 standar. Ketika Anda mencapai batas laju mode cepat atau kehabisan kredit penggunaan tambahan:161Mode cepat memiliki batas laju terpisah dari Opus standar. Mode cepat untuk Opus 4.6 dan Opus 4.7 berbagi pool batas laju yang sama: penggunaan pada model apa pun menarik dari batas yang sama. Ketika Anda mencapai batas laju mode cepat atau kehabisan penggunaan tambahan:

129 162 

1301. Mode cepat secara otomatis kembali ke Opus 4.6 standar1631. Mode cepat secara otomatis kembali ke kecepatan standar pada versi Opus yang sama

1312. Ikon `↯` berubah menjadi abu-abu untuk menunjukkan cooldown1642. Ikon `↯` berubah menjadi abu-abu untuk menunjukkan cooldown

1323. Anda terus bekerja dengan kecepatan dan harga standar1653. Anda terus bekerja dengan kecepatan dan harga standar

1334. Ketika cooldown berakhir, mode cepat secara otomatis diaktifkan kembali1664. Ketika cooldown berakhir, mode cepat secara otomatis diaktifkan kembali

fullscreen.md +2 −0

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 

96Untuk menyesuaikan kecepatan scroll secara interaktif, jalankan `/scroll-speed`. Dialog menampilkan penggaris yang dapat Anda gulir saat terbuka sehingga Anda dapat merasakan perubahan segera. Tekan `←` dan `→` untuk menyesuaikan, `r` untuk mengatur ulang ke default yang terdeteksi otomatis, dan `Enter` untuk menyimpan. Perintah menulis nilai yang sama yang ditetapkan variabel lingkungan `CLAUDE_CODE_SCROLL_SPEED`, disimpan ke `~/.claude/settings.json`. Perintah tidak tersedia di terminal IDE JetBrains.

97 

96### Scroll di terminal IDE JetBrains98### Scroll di terminal IDE JetBrains

97 99 

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

glossary.md +1 −1

Details

174 174 

175### Output style175### Output style

176 176 

177Konfigurasi yang memodifikasi system prompt Claude untuk mengubah perilaku respons, nada, atau format. Output styles mematikan bagian khusus software-engineering dari system prompt default, tidak seperti [CLAUDE.md](#claude-md) yang dikirimkan sebagai pesan pengguna mengikuti system prompt. Style built-in termasuk Default, Explanatory, dan Learning.177Konfigurasi yang memodifikasi system prompt Claude untuk mengubah perilaku respons, nada, atau format. Output styles mematikan bagian khusus software-engineering dari system prompt default, tidak seperti [CLAUDE.md](#claude-md) yang dikirimkan sebagai pesan pengguna mengikuti system prompt. Style built-in termasuk Default, Proactive, Explanatory, dan Learning.

178 178 

179Pelajari lebih lanjut: [Output styles](/id/output-styles)179Pelajari lebih lanjut: [Output styles](/id/output-styles)

180 180 

hooks.md +88 −25

Details

70 {70 {

71 "type": "command",71 "type": "command",

72 "if": "Bash(rm *)",72 "if": "Bash(rm *)",

73 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-rm.sh"73 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh",

74 "args": []

74 }75 }

75 ]76 ]

76 }77 }


307Selain [bidang umum](#common-fields), command hooks menerima bidang-bidang ini:308Selain [bidang umum](#common-fields), command hooks menerima bidang-bidang ini:

308 309 

309| Bidang | Diperlukan | Deskripsi |310| Bidang | Diperlukan | Deskripsi |

310| :------------ | :--------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |311| :------------ | :--------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

311| `command` | ya | Perintah shell untuk dijalankan |312| `command` | ya | Perintah shell untuk dijalankan. Dengan `args`, executable untuk spawn secara langsung. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |

313| `args` | tidak | Daftar argumen. Ketika ada, `command` diselesaikan sebagai executable dan di-spawn secara langsung dengan `args` sebagai vektor argumen, tanpa shell yang terlibat. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |

312| `async` | tidak | Jika `true`, dijalankan di latar belakang tanpa memblokir. Lihat [Run hooks in the background](#run-hooks-in-the-background) |314| `async` | tidak | Jika `true`, dijalankan di latar belakang tanpa memblokir. Lihat [Run hooks in the background](#run-hooks-in-the-background) |

313| `asyncRewake` | tidak | Jika `true`, dijalankan di latar belakang dan membangunkan Claude pada kode keluar 2. Menyiratkan `async`. stderr hook, atau stdout jika stderr kosong, ditampilkan ke Claude sebagai pengingat sistem sehingga dapat bereaksi terhadap kegagalan latar belakang yang berjalan lama |315| `asyncRewake` | tidak | Jika `true`, dijalankan di latar belakang dan membangunkan Claude pada kode keluar 2. Menyiratkan `async`. stderr hook, atau stdout jika stderr kosong, ditampilkan ke Claude sebagai pengingat sistem sehingga dapat bereaksi terhadap kegagalan latar belakang yang berjalan lama |

314| `shell` | tidak | Shell untuk digunakan untuk hook ini. Menerima `"bash"` (default) atau `"powershell"`. Menetapkan `"powershell"` menjalankan perintah melalui PowerShell di Windows. Tidak memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL` karena hooks spawn PowerShell secara langsung |316| `shell` | tidak | Shell untuk digunakan untuk hook ini. Menerima `"bash"` (default) atau `"powershell"`. Menetapkan `"powershell"` menjalankan perintah melalui PowerShell di Windows. Tidak memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL` karena hooks spawn PowerShell secara langsung. Diabaikan ketika `args` diatur |

317 

318<a id="exec-form-and-shell-form" />

319 

320##### Exec form dan shell form

321 

322Hook command dijalankan sebagai exec form ketika `args` diatur, dan shell form ketika `args` dihilangkan. Atur `args` setiap kali hook mereferensikan [path placeholder](#reference-scripts-by-path), karena setiap elemen dilewatkan sebagai satu argumen tanpa quoting. Hilangkan `args` ketika Anda memerlukan fitur shell seperti pipes atau `&&`, atau ketika tidak ada kekhawatiran yang berlaku.

323 

324**Exec form** dijalankan ketika `args` ada. Claude Code menyelesaikan `command` sebagai executable di `PATH` dan spawn-nya secara langsung dengan `args` sebagai vektor argumen. Tidak ada shell, jadi setiap elemen `args` adalah satu argumen persis seperti yang ditulis, dan path placeholders seperti `${CLAUDE_PLUGIN_ROOT}` disubstitusi ke dalam `command` dan ke dalam setiap elemen `args` sebagai string biasa. Karakter khusus seperti apostrophe, `$`, dan backticks melewati verbatim karena tidak ada shell untuk menginterpretasinya. Tidak ada tokenisasi shell yang terjadi di platform apa pun.

325 

326**Shell form** dijalankan ketika `args` tidak ada. String `command` dilewatkan ke shell: `sh -c` di macOS dan Linux, Git Bash di Windows, atau PowerShell ketika Git Bash tidak diinstal. Atur bidang `shell` untuk memilih secara eksplisit. Shell melakukan tokenisasi string, memperluas variabel, dan menginterpretasi pipes, `&&`, redirects, dan globs.

327 

328<Note>

329 Di Windows, exec form memerlukan `command` untuk diselesaikan ke executable nyata seperti `.exe`. Shim `.cmd` dan `.bat` yang npm, npx, eslint, dan tools lainnya instal di `node_modules/.bin` bukan executables dan tidak dapat di-spawn tanpa shell. Untuk menjalankannya dalam exec form, panggil skrip yang mendasar dengan `node` secara langsung, misalnya `"command": "node", "args": ["${CLAUDE_PLUGIN_ROOT}/node_modules/eslint/bin/eslint.js"]`. Pola `node` plus script-path bekerja di setiap platform karena `node.exe` adalah binary nyata. Untuk menjalankan shim `.cmd` atau `.bat` berdasarkan nama, gunakan shell form.

330</Note>

331 

332Contoh ini menjalankan skrip Node yang dibundel dengan plugin. Exec form melewatkan path skrip yang diselesaikan sebagai satu argumen tanpa quoting:

333 

334```json theme={null}

335{

336 "type": "command",

337 "command": "node",

338 "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/format.js", "--fix"]

339}

340```

341 

342Shell form yang setara memerlukan quoting untuk menangani paths dengan spasi atau karakter khusus:

343 

344```json theme={null}

345{

346 "type": "command",

347 "command": "node \"${CLAUDE_PLUGIN_ROOT}\"/scripts/format.js --fix"

348}

349```

350 

351Kedua form mendukung [path placeholders](#reference-scripts-by-path) yang sama, dan keduanya mengekspornya sebagai variabel lingkungan `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT`, dan `CLAUDE_PLUGIN_DATA` pada proses yang di-spawn, jadi skrip dapat membaca `process.env.CLAUDE_PLUGIN_ROOT` terlepas dari bagaimana itu diluncurkan. Plugin hooks juga mensubstitusi nilai `${user_config.*}`; lihat [User configuration](/id/plugins-reference#user-configuration).

352 

353<Note>

354 Dalam exec form, `command` adalah nama executable atau path saja. Jika `command` adalah nama bare tanpa path separator dan berisi whitespace bersama `args`, Claude Code mencatat warning karena spawn akan gagal: tidak ada executable bernama `node script.js`. Pindahkan token ekstra ke dalam `args`. Path absolut dengan spasi, seperti `C:\Program Files\nodejs\node.exe`, adalah executable tunggal yang valid dan tidak memicu warning.

355</Note>

315 356 

316#### Bidang HTTP hook357#### Bidang HTTP hook

317 358 


397| `prompt` | ya | Teks prompt untuk dikirim ke model. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook |438| `prompt` | ya | Teks prompt untuk dikirim ke model. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook |

398| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model cepat |439| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model cepat |

399 440 

400Semua matching hooks dijalankan secara paralel, dan handler identik dideduplikasi secara otomatis. Command hooks dideduplikasi berdasarkan string perintah, dan HTTP hooks dideduplikasi berdasarkan URL. Handlers dijalankan di direktori saat ini dengan lingkungan Claude Code. Variabel lingkungan `$CLAUDE_CODE_REMOTE` diatur ke `"true"` di lingkungan web jarak jauh dan tidak diatur di CLI lokal.441Semua matching hooks dijalankan secara paralel, dan handler identik dideduplikasi secara otomatis. Command hooks dideduplikasi berdasarkan string perintah dan `args`, dan HTTP hooks dideduplikasi berdasarkan URL. Handlers dijalankan di direktori saat ini dengan lingkungan Claude Code. Variabel lingkungan `$CLAUDE_CODE_REMOTE` diatur ke `"true"` di lingkungan web jarak jauh dan tidak diatur di CLI lokal.

401 442 

402### Referensi skrip berdasarkan path443### Referensi skrip berdasarkan path

403 444 

404Gunakan variabel lingkungan untuk mereferensikan skrip hook relatif terhadap akar proyek atau plugin, terlepas dari direktori kerja saat hook dijalankan:445Gunakan placeholders ini untuk mereferensikan skrip hook relatif terhadap akar proyek atau plugin, terlepas dari direktori kerja saat hook dijalankan:

405 446 

406* `$CLAUDE_PROJECT_DIR`: akar proyek. Bungkus dalam tanda kutip untuk menangani path dengan spasi.447* `${CLAUDE_PROJECT_DIR}`: akar proyek.

407* `${CLAUDE_PLUGIN_ROOT}`: direktori instalasi plugin, untuk skrip yang dibundel dengan [plugin](/id/plugins). Berubah pada setiap pembaruan plugin.448* `${CLAUDE_PLUGIN_ROOT}`: direktori instalasi plugin, untuk skrip yang dibundel dengan [plugin](/id/plugins). Berubah pada setiap pembaruan plugin.

408* `${CLAUDE_PLUGIN_DATA}`: [direktori data persisten](/id/plugins-reference#persistent-data-directory) plugin, untuk dependensi dan status yang harus bertahan pembaruan plugin.449* `${CLAUDE_PLUGIN_DATA}`: [direktori data persisten](/id/plugins-reference#persistent-data-directory) plugin, untuk dependensi dan status yang harus bertahan pembaruan plugin.

409 450 

451Lebih suka [exec form](#exec-form-and-shell-form) untuk hook apa pun yang mereferensikan path placeholder. Exec form melewatkan setiap elemen `args` sebagai satu argumen tanpa tokenisasi shell, jadi paths dengan spasi atau karakter khusus tidak memerlukan quoting. Dalam shell form, bungkus setiap placeholder dalam tanda kutip ganda.

452 

410<Tabs>453<Tabs>

411 <Tab title="Skrip proyek">454 <Tab title="Skrip proyek">

412 Contoh ini menggunakan `$CLAUDE_PROJECT_DIR` untuk menjalankan pemeriksa gaya dari direktori `.claude/hooks/` proyek setelah pemanggilan tool `Write` atau `Edit` apa pun:455 Contoh ini menggunakan `${CLAUDE_PROJECT_DIR}` untuk menjalankan pemeriksa gaya dari direktori `.claude/hooks/` proyek setelah pemanggilan tool `Write` atau `Edit` apa pun:

413 456 

414 ```json theme={null}457 ```json theme={null}

415 {458 {


420 "hooks": [463 "hooks": [

421 {464 {

422 "type": "command",465 "type": "command",

423 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/check-style.sh"466 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/check-style.sh",

467 "args": []

424 }468 }

425 ]469 ]

426 }470 }


446 {490 {

447 "type": "command",491 "type": "command",

448 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh",492 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format.sh",

493 "args": [],

449 "timeout": 30494 "timeout": 30

450 }495 }

451 ]496 ]


509 554 

510Pengeditan langsung ke hooks dalam file pengaturan biasanya diambil secara otomatis oleh file watcher.555Pengeditan langsung ke hooks dalam file pengaturan biasanya diambil secara otomatis oleh file watcher.

511 556 

512## Hook input dan output557## Input dan output hook

513 558 

514Command hooks menerima data JSON melalui stdin dan mengkomunikasikan hasil melalui kode keluar, stdout, dan stderr. HTTP hooks menerima JSON yang sama sebagai badan permintaan POST dan mengkomunikasikan hasil melalui badan respons HTTP. Bagian ini mencakup bidang dan perilaku yang umum untuk semua events. Setiap bagian event di bawah [Hook events](#hook-events) mencakup skema input spesifiknya dan opsi kontrol keputusan.559Command hooks menerima data JSON melalui stdin dan mengkomunikasikan hasil melalui kode keluar, stdout, dan stderr. HTTP hooks menerima JSON yang sama sebagai badan permintaan POST dan mengkomunikasikan hasil melalui badan respons HTTP. Bagian ini mencakup bidang dan perilaku yang umum untuk semua events. Setiap bagian event di bawah [Hook events](#hook-events) mencakup skema input spesifiknya dan opsi kontrol keputusan.

515 560 


529Saat berjalan dengan `--agent` atau di dalam subagent, dua bidang tambahan disertakan:574Saat berjalan dengan `--agent` atau di dalam subagent, dua bidang tambahan disertakan:

530 575 

531| Bidang | Deskripsi |576| Bidang | Deskripsi |

532| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |577| :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

533| `agent_id` | Pengenal unik untuk subagent. Hadir hanya ketika hook dijalankan di dalam pemanggilan subagent. Gunakan ini untuk membedakan pemanggilan hook subagent dari pemanggilan thread utama. |578| `agent_id` | Pengenal unik untuk subagent. Hadir hanya ketika hook dijalankan di dalam pemanggilan subagent. Gunakan ini untuk membedakan pemanggilan hook subagent dari pemanggilan thread utama. |

534| `agent_type` | Nama agent (misalnya, `"Explore"` atau `"security-reviewer"`). Hadir ketika sesi menggunakan `--agent` atau hook dijalankan di dalam subagent. Untuk subagents, tipe subagent mengambil alih nilai `--agent` sesi. |579| `agent_type` | Nama agent (misalnya, `"Explore"` atau `"security-reviewer"`). Hadir ketika sesi menggunakan `--agent` atau hook dijalankan di dalam subagent. Untuk subagents, tipe subagent mengambil alih nilai `--agent` sesi. Untuk [custom subagents](/id/sub-agents), ini adalah bidang `name` dari frontmatter agent, bukan nama file. |

580 

581Hanya hooks [`SessionStart`](#sessionstart) yang menerima bidang `model`. Tidak ada variabel lingkungan `$CLAUDE_MODEL`. Proses hook mewarisi lingkungan induk, jadi dapat membaca `$ANTHROPIC_MODEL` jika Anda menetapkannya di shell Anda, tetapi nilai itu tidak berubah ketika Anda beralih model dengan `/model` selama sesi.

535 582 

536Misalnya, hook `PreToolUse` untuk perintah Bash menerima ini di stdin:583Misalnya, hook `PreToolUse` untuk perintah Bash menerima ini di stdin:

537 584 


1153| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Pertanyaan untuk disajikan, masing-masing dengan string `question`, `header` pendek, array `options`, dan flag `multiSelect` opsional |1200| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Pertanyaan untuk disajikan, masing-masing dengan string `question`, `header` pendek, array `options`, dan flag `multiSelect` opsional |

1154| `answers` | object | `{"Which framework?": "React"}` | Opsional. Memetakan teks pertanyaan ke label opsi yang dipilih. Jawaban multi-select menggabungkan label dengan koma. Claude tidak menetapkan bidang ini; sediakan melalui `updatedInput` untuk menjawab secara programatis |1201| `answers` | object | `{"Which framework?": "React"}` | Opsional. Memetakan teks pertanyaan ke label opsi yang dipilih. Jawaban multi-select menggabungkan label dengan koma. Claude tidak menetapkan bidang ini; sediakan melalui `updatedInput` untuk menjawab secara programatis |

1155 1202 

1203##### ExitPlanMode

1204 

1205Menyajikan rencana dan meminta pengguna untuk menyetujuinya sebelum Claude meninggalkan [plan mode](/id/permission-modes#analyze-before-you-edit-with-plan-mode). Claude menulis rencana ke file di disk sebelum memanggil tool, jadi `tool_input` literal dari model hanya membawa `allowedPrompts`. Claude Code menyuntikkan konten rencana dan path file sebelum meneruskan input ke hooks.

1206 

1207| Bidang | Tipe | Contoh | Deskripsi |

1208| :--------------- | :----- | :------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1209| `plan` | string | `"## Refactor auth\n1. Extract..."` | Konten rencana dalam Markdown. Disuntikkan dari file rencana di disk |

1210| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Path ke file rencana. Disuntikkan |

1211| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Opsional. Izin berbasis prompt yang diminta Claude untuk mengimplementasikan rencana, masing-masing dengan nama `tool` dan `prompt` yang menjelaskan kategori tindakan |

1212 

1213Dalam `PostToolUse`, `tool_response` adalah objek dengan bidang `plan` dan `filePath` yang menyimpan rencana yang disetujui, ditambah flag status internal. Baca `tool_response.plan` untuk konten rencana daripada membaca ulang file dari disk.

1214 

1156#### Kontrol keputusan PreToolUse1215#### Kontrol keputusan PreToolUse

1157 1216 

1158Hooks `PreToolUse` dapat mengontrol apakah pemanggilan tool dilanjutkan. Tidak seperti hooks lain yang menggunakan bidang `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberikannya kontrol yang lebih kaya: empat hasil (izinkan, tolak, tanya, atau tunda) ditambah kemampuan untuk memodifikasi input tool sebelum eksekusi.1217Hooks `PreToolUse` dapat mengontrol apakah pemanggilan tool dilanjutkan. Tidak seperti hooks lain yang menggunakan bidang `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberikannya kontrol yang lebih kaya: empat hasil (izinkan, tolak, tanya, atau tunda) ditambah kemampuan untuk memodifikasi input tool sebelum eksekusi.


1358Hooks `PostToolUse` dapat memberikan umpan balik ke Claude setelah eksekusi tool. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:1417Hooks `PostToolUse` dapat memberikan umpan balik ke Claude setelah eksekusi tool. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:

1359 1418 

1360| Bidang | Deskripsi |1419| Bidang | Deskripsi |

1361| :--------------------- | :------------------------------------------------------------------------------------------------------------------------ |1420| :--------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- |

1362| `decision` | `"block"` menambahkan `reason` di sebelah hasil tool. Hilangkan untuk mengizinkan tindakan dilanjutkan |1421| `decision` | `"block"` menambahkan `reason` di sebelah hasil tool. Claude masih melihat output asli; untuk menggantinya, gunakan `updatedToolOutput` |

1363| `reason` | Penjelasan ditampilkan ke Claude saat `decision` adalah `"block"` |1422| `reason` | Penjelasan ditampilkan ke Claude saat `decision` adalah `"block"` |

1364| `additionalContext` | String ditambahkan ke konteks Claude bersama hasil tool. Lihat [Tambahkan konteks untuk Claude](#add-context-for-claude) |1423| `additionalContext` | String ditambahkan ke konteks Claude bersama hasil tool. Lihat [Tambahkan konteks untuk Claude](#add-context-for-claude) |

1365| `updatedToolOutput` | Mengganti output tool dengan nilai yang disediakan sebelum dikirim ke Claude. Nilai harus cocok dengan bentuk output tool |1424| `updatedToolOutput` | Mengganti output tool dengan nilai yang disediakan sebelum dikirim ke Claude. Nilai harus cocok dengan bentuk output tool |


1596 1655 

1597### SubagentStart1656### SubagentStart

1598 1657 

1599Dijalankan ketika subagent Claude Code dispawn melalui tool Agent. Mendukung matchers untuk memfilter berdasarkan nama tipe agent (agent bawaan seperti `general-purpose`, `Explore`, `Plan`, atau nama agent kustom dari `.claude/agents/`).1658Dijalankan ketika subagent Claude Code dispawn melalui tool Agent. Mendukung matchers untuk memfilter berdasarkan nama tipe agent. Untuk agent bawaan, ini adalah nama agent seperti `general-purpose`, `Explore`, atau `Plan`. Untuk [custom subagents](/id/sub-agents), ini adalah bidang `name` dari frontmatter agent, bukan nama file.

1600 1659 

1601#### Input SubagentStart1660#### Input SubagentStart

1602 1661 


1651}1710}

1652```1711```

1653 1712 

1654SubagentStop hooks menggunakan format kontrol keputusan yang sama seperti [Stop hooks](#stop-decision-control).1713SubagentStop hooks menggunakan format kontrol keputusan yang sama seperti [Stop hooks](#stop-decision-control). Mereka tidak mendukung `additionalContext`. Mengembalikan `decision: "block"` dengan `reason` membuat subagent tetap berjalan dan mengirimkan `reason` ke subagent sebagai instruksi berikutnya. Untuk menyuntikkan konteks ke sesi induk setelah subagent kembali, gunakan hook [`PostToolUse`](#posttooluse) pada tool `Agent` sebagai gantinya.

1655 1714 

1656### TaskCreated1715### TaskCreated

1657 1716 


1905 "hooks": [1964 "hooks": [

1906 {1965 {

1907 "type": "command",1966 "type": "command",

1908 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/audit-config-change.sh"1967 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/audit-config-change.sh",

1968 "args": []

1909 }1969 }

1910 ]1970 ]

1911 }1971 }


2394```2454```

2395 2455 

2396| Bidang | Diperlukan | Deskripsi |2456| Bidang | Diperlukan | Deskripsi |

2397| :-------- | :--------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- |2457| :---------------- | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2398| `type` | ya | Harus `"prompt"` |2458| `type` | ya | Harus `"prompt"` |

2399| `prompt` | ya | Teks prompt untuk dikirim ke LLM. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Jika `$ARGUMENTS` tidak ada, JSON input ditambahkan ke prompt |2459| `prompt` | ya | Teks prompt untuk dikirim ke LLM. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Jika `$ARGUMENTS` tidak ada, JSON input ditambahkan ke prompt |

2400| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model cepat |2460| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model cepat |

2401| `timeout` | tidak | Timeout dalam detik. Default: 30 |2461| `timeout` | tidak | Timeout dalam detik. Default: 30 |

2462| `continueOnBlock` | tidak | Ketika prompt mengembalikan `ok: false`, umpankan alasan kembali ke Claude dan lanjutkan giliran alih-alih berhenti. Default: `false`. Diimplementasikan sebagai `continue: true` pada `decision: "block"` yang dihasilkan. Lihat [Response schema](#response-schema) untuk perilaku per-event |

2402 2463 

2403### Skema respons2464### Skema respons

2404 2465 


2412```2473```

2413 2474 

2414| Bidang | Deskripsi |2475| Bidang | Deskripsi |

2415| :------- | :----------------------------------------------------------------------------------- |2476| :------- | :---------------------------------------------------------------------------------------------------- |

2416| `ok` | `true` untuk mengizinkan, `false` untuk memblokir. Lihat perilaku per-event di bawah |2477| `ok` | `true` untuk mengizinkan. `false` menghasilkan `decision: "block"`. Lihat perilaku per-event di bawah |

2417| `reason` | Diperlukan saat `ok` adalah `false`. Penjelasan untuk keputusan |2478| `reason` | Diperlukan saat `ok` adalah `false`. Digunakan sebagai alasan blokir |

2418 2479 

2419Apa yang terjadi pada `ok: false` tergantung pada event:2480Apa yang terjadi pada `ok: false` tergantung pada event:

2420 2481 

2421* `Stop` dan `SubagentStop`: alasan diumpankan kembali ke Claude sebagai instruksi berikutnya dan giliran berlanjut2482* `Stop` dan `SubagentStop`: alasan diumpankan kembali ke Claude sebagai instruksi berikutnya dan giliran berlanjut

2422* `PreToolUse`: panggilan tool ditolak dan alasan dikembalikan ke Claude sebagai kesalahan tool, setara dengan command hook's `permissionDecision: "deny"`2483* `PreToolUse`: panggilan tool ditolak dan alasan dikembalikan ke Claude sebagai kesalahan tool, setara dengan `permissionDecision: "deny"` dari command hook

2423* `PostToolUse`, `PostToolBatch`, `UserPromptSubmit`, dan `UserPromptExpansion`: giliran berakhir dan alasan muncul dalam chat sebagai baris peringatan, setara dengan mengembalikan `"continue": false` dari command hook2484* `PostToolUse`: secara default giliran berakhir dan alasan muncul dalam chat sebagai baris peringatan. Atur `continueOnBlock: true` untuk umpankan alasan kembali ke Claude dan lanjutkan giliran alih-alih

2485* `PostToolBatch`, `UserPromptSubmit`, dan `UserPromptExpansion`: giliran berakhir dan alasan muncul sebagai baris peringatan. Events ini mengakhiri giliran pada `decision: "block"` terlepas dari `continue`

2424* `PostToolUseFailure`, `TaskCreated`, dan `TaskCompleted`: alasan dikembalikan ke Claude sebagai kesalahan tool, mirip dengan `PreToolUse`2486* `PostToolUseFailure`, `TaskCreated`, dan `TaskCompleted`: alasan dikembalikan ke Claude sebagai kesalahan tool, mirip dengan `PreToolUse`

2425* `PermissionRequest`: `ok: false` tidak berpengaruh. Untuk menolak persetujuan dari hook, gunakan [command hook](#command-hook-fields) yang mengembalikan `hookSpecificOutput.decision.behavior: "deny"`2487* `PermissionRequest`: `ok: false` tidak berpengaruh. Untuk menolak persetujuan dari hook, gunakan [command hook](#command-hook-fields) yang mengembalikan `hookSpecificOutput.decision.behavior: "deny"`

2426 2488 


2579 "hooks": [2641 "hooks": [

2580 {2642 {

2581 "type": "command",2643 "type": "command",

2582 "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/run-tests-async.sh",2644 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/run-tests-async.sh",

2645 "args": [],

2583 "async": true,2646 "async": true,

2584 "timeout": 3002647 "timeout": 300

2585 }2648 }


2616* **Validasi dan sanitasi input**: jangan pernah mempercayai data input secara membabi buta2679* **Validasi dan sanitasi input**: jangan pernah mempercayai data input secara membabi buta

2617* **Selalu kutip variabel shell**: gunakan `"$VAR"` bukan `$VAR`2680* **Selalu kutip variabel shell**: gunakan `"$VAR"` bukan `$VAR`

2618* **Blokir path traversal**: periksa `..` dalam path file2681* **Blokir path traversal**: periksa `..` dalam path file

2619* **Gunakan path absolut**: tentukan path lengkap untuk skrip, menggunakan `"$CLAUDE_PROJECT_DIR"` untuk akar proyek2682* **Gunakan path absolut**: tentukan path lengkap untuk skrip. Dalam bentuk exec, gunakan `${CLAUDE_PROJECT_DIR}` dan path tidak perlu dikutip. Dalam bentuk shell, bungkus dengan tanda kutip ganda

2620* **Lewati file sensitif**: hindari `.env`, `.git/`, keys, dll.2683* **Lewati file sensitif**: hindari `.env`, `.git/`, keys, dll.

2621 2684 

2622## Windows PowerShell tool2685## Windows PowerShell tool

hooks-guide.md +4 −4

Details

864 864 

865### Keterbatasan865### Keterbatasan

866 866 

867* Hook perintah berkomunikasi melalui stdout, stderr, dan kode keluar saja. Mereka tidak dapat memicu perintah `/` atau panggilan alat secara langsung. Teks yang dikembalikan melalui `additionalContext` disuntikkan sebagai pengingat sistem yang Claude baca sebagai teks biasa. HTTP hooks berkomunikasi melalui badan respons sebagai gantinya.867* Hook perintah berkomunikasi melalui stdout, stderr, dan kode keluar saja. Mereka tidak dapat memicu perintah `/` atau panggilan alat. Teks yang dikembalikan melalui `additionalContext` disuntikkan sebagai pengingat sistem yang Claude baca sebagai teks biasa. HTTP hooks berkomunikasi melalui badan respons sebagai gantinya.

868* Timeout hook adalah 10 menit secara default, dapat dikonfigurasi per hook dengan bidang `timeout` (dalam detik).868* Timeout hook adalah 10 menit secara default, dapat dikonfigurasi per hook dengan bidang `timeout` (dalam detik).

869* Hook `PostToolUse` tidak dapat membatalkan tindakan karena alat sudah dieksekusi.869* Hook `PostToolUse` tidak dapat membatalkan tindakan karena alat sudah dieksekusi.

870* Hook `PermissionRequest` tidak aktif dalam [non-interactive mode](/id/headless) (`-p`). Gunakan hook `PreToolUse` untuk keputusan izin otomatis.870* Hook `PermissionRequest` tidak aktif dalam [non-interactive mode](/id/headless) (`-p`). Gunakan hook `PreToolUse` untuk keputusan izin otomatis.


895 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh895 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh

896 echo $? # Check the exit code896 echo $? # Check the exit code

897 ```897 ```

898* Jika Anda melihat "command not found", gunakan jalur absolut atau `$CLAUDE_PROJECT_DIR` untuk mereferensikan skrip898* Jika Anda melihat "command not found", gunakan jalur absolut atau `${CLAUDE_PROJECT_DIR}` untuk mereferensikan skrip. Untuk menghindari quoting shell sepenuhnya, tambahkan `"args": []` untuk beralih ke [exec form](/id/hooks#exec-form-and-shell-form), yang menelurkan skrip secara langsung tanpa shell

899* Jika Anda melihat "jq: command not found", instal `jq` atau gunakan Python/Node.js untuk parsing JSON899* Jika Anda melihat "jq: command not found", instal `jq` atau gunakan Python/Node.js untuk parsing JSON

900* Jika skrip tidak berjalan sama sekali, buat dapat dieksekusi: `chmod +x ./my-hook.sh`900* Jika skrip tidak berjalan sama sekali, buat dapat dieksekusi: `chmod +x ./my-hook.sh`

901 901 


911 911 

912Claude terus bekerja dalam loop tak terbatas daripada berhenti.912Claude terus bekerja dalam loop tak terbatas daripada berhenti.

913 913 

914Skrip Stop hook Anda perlu memeriksa apakah sudah memicu kelanjutan. Parsing bidang `stop_hook_active` dari input JSON dan keluar lebih awal jika `true`:914Skrip Stop hook Anda perlu memeriksa apakah sudah memicu kelanjutan. Parse bidang `stop_hook_active` dari input JSON dan keluar lebih awal jika `true`:

915 915 

916```bash theme={null}916```bash theme={null}

917#!/bin/bash917#!/bin/bash


926 926 

927Claude Code menampilkan kesalahan parsing JSON meskipun skrip hook Anda mengeluarkan JSON yang valid.927Claude Code menampilkan kesalahan parsing JSON meskipun skrip hook Anda mengeluarkan JSON yang valid.

928 928 

929Ketika Claude Code menjalankan hook, ia menelurkan shell yang bersumber dari profil Anda (`~/.zshrc` atau `~/.bashrc`). Jika profil Anda berisi pernyataan `echo` tanpa syarat, output itu ditambahkan ke JSON hook Anda:929Ketika Claude Code menjalankan hook perintah bentuk shell (satu tanpa `args`), ia menelurkan `sh -c` pada macOS dan Linux atau Git Bash pada Windows secara default. Shell ini non-interaktif, tetapi Git Bash dan beberapa konfigurasi (seperti `BASH_ENV` menunjuk ke `~/.bashrc`) masih bersumber dari profil Anda. Jika profil itu berisi pernyataan `echo` tanpa syarat, output itu ditambahkan ke JSON hook Anda:

930 930 

931```text theme={null}931```text theme={null}

932Shell ready on arm64932Shell ready on arm64

Details

9## Pintasan keyboard9## Pintasan keyboard

10 10 

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. Dalam [rendering fullscreen](/id/fullscreen), tekan `?` di penampil transkrip untuk melihat pintasan yang tersedia di sana.

13 13 

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


36| `Ctrl+T` | Alihkan daftar tugas | Tampilkan atau sembunyikan [daftar tugas](#task-list) di area status terminal |36| `Ctrl+T` | Alihkan daftar tugas | Tampilkan atau sembunyikan [daftar tugas](#task-list) di area status terminal |

37| `Left/Right arrows` | Siklus melalui tab dialog | Navigasi antar tab dalam dialog izin dan menu |37| `Left/Right arrows` | Siklus melalui tab dialog | Navigasi antar tab dalam dialog izin dan menu |

38| `Up/Down arrows` atau `Ctrl+P`/`Ctrl+N` | Pindahkan kursor atau navigasi riwayat perintah | Dalam input multiline, pertama-tama memindahkan kursor dalam prompt. Setelah kursor sudah berada di tepi atas atau bawah, menekan lagi menavigasi riwayat perintah |38| `Up/Down arrows` atau `Ctrl+P`/`Ctrl+N` | Pindahkan kursor atau navigasi riwayat perintah | Dalam input multiline, pertama-tama memindahkan kursor dalam prompt. Setelah kursor sudah berada di tepi atas atau bawah, menekan lagi menavigasi riwayat perintah |

39| `Esc` | Interupsi Claude | Hentikan respons atau panggilan alat saat ini di tengah-tengah giliran sehingga Anda dapat mengalihkan. Claude menyimpan pekerjaan yang telah dilakukan sejauh ini |

39| `Esc` + `Esc` | Putar ulang atau ringkas | Kembalikan kode dan/atau percakapan ke titik sebelumnya, atau ringkas dari pesan yang dipilih |40| `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). |41| `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 |42| `Option+P` (macOS) atau `Alt+P` (Windows/Linux) | Alihkan model | Alihkan model tanpa menghapus prompt Anda |


86 87 

87### Penampil transkrip88### Penampil transkrip

88 89 

89Ketika penampil transkrip terbuka (dialihkan dengan `Ctrl+O`), pintasan ini tersedia. `Ctrl+E` dapat diubah melalui [`transcript:toggleShowAll`](/id/keybindings).90Ketika penampil transkrip terbuka (dialihkan dengan `Ctrl+O`), pintasan ini tersedia. Dalam [rendering fullscreen](/id/fullscreen), tekan `?` untuk menampilkan panel referensi pintasan keyboard lengkap di dalam penampil. `Ctrl+E` dapat diubah melalui [`transcript:toggleShowAll`](/id/keybindings).

90 91 

91| Pintasan | Deskripsi |92| Pintasan | Deskripsi |

92| :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |93| :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

94| `?` | Alihkan panel bantuan pintasan keyboard. Memerlukan [rendering fullscreen](/id/fullscreen) |

95| `{` / `}` | Lompat ke prompt pengguna sebelumnya atau berikutnya, seperti gerakan paragraf vim. Memerlukan [rendering fullscreen](/id/fullscreen) |

93| `Ctrl+E` | Alihkan tampilkan semua konten |96| `Ctrl+E` | Alihkan tampilkan semua konten |

94| `[` | Tulis percakapan lengkap ke scrollback asli terminal Anda sehingga `Cmd+F`, mode copy tmux, dan alat asli lainnya dapat mencarinya. Memerlukan [fullscreen rendering](/id/fullscreen#search-and-review-the-conversation) |97| `[` | Tulis percakapan lengkap ke scrollback asli terminal Anda sehingga `Cmd+F`, mode copy tmux, dan alat asli lainnya dapat mencarinya. Memerlukan [rendering fullscreen](/id/fullscreen#search-and-review-the-conversation) |

95| `v` | Tulis percakapan ke file sementara dan buka di `$VISUAL` atau `$EDITOR`. Memerlukan [fullscreen rendering](/id/fullscreen) |98| `v` | Tulis percakapan ke file sementara dan buka di `$VISUAL` atau `$EDITOR`. Memerlukan [rendering fullscreen](/id/fullscreen) |

96| `q`, `Ctrl+C`, `Esc` | Keluar dari tampilan transkrip. Ketiganya dapat diubah melalui [`transcript:exit`](/id/keybindings) |99| `q`, `Ctrl+C`, `Esc` | Keluar dari tampilan transkrip. Ketiganya dapat diubah melalui [`transcript:exit`](/id/keybindings) |

97 100 

98### Input suara101### Input suara

llm-gateway.md +6 −2

Details

39 39 

40**Header permintaan**40**Header permintaan**

41 41 

42Claude Code menyertakan header berikut pada setiap permintaan API:42Claude Code menyertakan header berikut pada permintaan API:

43 43 

44| Header | Deskripsi |44| Header | Deskripsi |

45| :------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |45| :------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

46| `X-Claude-Code-Session-Id` | Pengidentifikasi unik untuk sesi Claude Code saat ini. Proxy dapat menggunakan ini untuk mengagregasi semua permintaan API dari sesi tunggal tanpa mengurai badan permintaan. |46| `X-Claude-Code-Session-Id` | Pengidentifikasi unik untuk sesi Claude Code saat ini. Proxy dapat menggunakan ini untuk mengagregasi semua permintaan API dari sesi tunggal tanpa mengurai badan permintaan. |

47| `X-Claude-Code-Agent-Id` | Pengidentifikasi subagen atau rekan kerja yang mengeluarkan permintaan. Proxy Anda dapat menggunakan ini untuk mengatribusikan biaya API ke subagen paralel individual dalam sesi, tanpa mengurai badan permintaan. Hanya ada untuk permintaan yang dibuat oleh subagen atau rekan kerja dalam proses. |

48| `X-Claude-Code-Parent-Agent-Id` | Pengidentifikasi agen yang melahirkan agen yang membuat permintaan. Gunakan ini dengan `X-Claude-Code-Agent-Id` untuk mengatribusikan biaya API di seluruh agen bersarang dalam proxy Anda. Hanya ada ketika agen yang meminta itu sendiri dilahirkan oleh agen lain. |

49 

50Kedua header ID agen adalah pengidentifikasi per-spawn yang bersifat sementara, bukan ID pengguna atau perangkat yang persisten.

47 51 

48Claude Code juga menambahkan blok atribusi singkat ke prompt sistem yang berisi versi klien dan sidik jari yang berasal dari percakapan. API Anthropic menghapus blok ini sebelum memproses, sehingga tidak mempengaruhi prompt caching pihak pertama. Jika gateway Anda menerapkan cache prompt sendiri yang dikunci pada badan permintaan lengkap, atur [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/id/env-vars) untuk menghilangkannya.52Claude Code juga menambahkan blok atribusi singkat ke prompt sistem yang berisi versi klien dan sidik jari yang berasal dari percakapan. API Anthropic menghapus blok ini sebelum memproses, sehingga tidak mempengaruhi prompt caching pihak pertama. Jika gateway Anda menerapkan cache prompt sendiri yang dikunci pada badan permintaan lengkap, atur [`CLAUDE_CODE_ATTRIBUTION_HEADER=0`](/id/env-vars) untuk menghilangkannya.

49 53 

mcp.md +36 −222

Details

6 6 

7> Pelajari cara menghubungkan Claude Code ke alat Anda dengan Model Context Protocol.7> Pelajari cara menghubungkan Claude Code ke alat Anda dengan Model Context Protocol.

8 8 

9export const MCPServersTable = ({platform = "all"}) => {

10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';

11 const [servers, setServers] = useState([]);

12 const [loading, setLoading] = useState(true);

13 const [error, setError] = useState(null);

14 useEffect(() => {

15 const fetchServers = async () => {

16 try {

17 setLoading(true);

18 const allServers = [];

19 let cursor = null;

20 do {

21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');

22 url.searchParams.set('version', 'latest');

23 url.searchParams.set('visibility', 'commercial');

24 url.searchParams.set('limit', '100');

25 if (cursor) {

26 url.searchParams.set('cursor', cursor);

27 }

28 const response = await fetch(url);

29 if (!response.ok) {

30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);

31 }

32 const data = await response.json();

33 allServers.push(...data.servers);

34 cursor = data.metadata?.nextCursor || null;

35 } while (cursor);

36 const transformedServers = allServers.map(item => {

37 const server = item.server;

38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});

39 const worksWith = meta.worksWith || [];

40 const availability = {

41 claudeCode: worksWith.includes('claude-code'),

42 mcpConnector: worksWith.includes('claude-api'),

43 claudeDesktop: worksWith.includes('claude-desktop')

44 };

45 const remotes = server.remotes || [];

46 const httpRemote = remotes.find(r => r.type === 'streamable-http');

47 const sseRemote = remotes.find(r => r.type === 'sse');

48 const preferredRemote = httpRemote || sseRemote;

49 const remoteUrl = preferredRemote?.url || meta.url;

50 const remoteType = preferredRemote?.type;

51 const isTemplatedUrl = remoteUrl?.includes('{');

52 let setupUrl;

53 if (isTemplatedUrl && meta.requiredFields) {

54 const urlField = meta.requiredFields.find(f => f.field === 'url');

55 setupUrl = urlField?.sourceUrl || meta.documentation;

56 }

57 const urls = {};

58 if (!isTemplatedUrl) {

59 if (remoteType === 'streamable-http') {

60 urls.http = remoteUrl;

61 } else if (remoteType === 'sse') {

62 urls.sse = remoteUrl;

63 }

64 }

65 let envVars = [];

66 if (server.packages && server.packages.length > 0) {

67 const npmPackage = server.packages.find(p => p.registryType === 'npm');

68 if (npmPackage) {

69 urls.stdio = `npx -y ${npmPackage.identifier}`;

70 if (npmPackage.environmentVariables) {

71 envVars = npmPackage.environmentVariables;

72 }

73 }

74 }

75 return {

76 name: meta.displayName || server.title || server.name,

77 description: meta.oneLiner || server.description,

78 documentation: meta.documentation,

79 urls: urls,

80 envVars: envVars,

81 availability: availability,

82 customCommands: meta.claudeCodeCopyText ? {

83 claudeCode: meta.claudeCodeCopyText

84 } : undefined,

85 setupUrl: setupUrl

86 };

87 });

88 setServers(transformedServers);

89 setError(null);

90 } catch (err) {

91 setError(err.message);

92 console.error('Error fetching MCP registry:', err);

93 } finally {

94 setLoading(false);

95 }

96 };

97 fetchServers();

98 }, []);

99 const generateClaudeCodeCommand = server => {

100 if (server.customCommands && server.customCommands.claudeCode) {

101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');

102 }

103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');

104 if (server.urls.http) {

105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;

106 }

107 if (server.urls.sse) {

108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;

109 }

110 if (server.urls.stdio) {

111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';

112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;

113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;

114 }

115 return null;

116 };

117 if (loading) {

118 return <div>Loading MCP servers...</div>;

119 }

120 if (error) {

121 return <div>Error loading MCP servers: {error}</div>;

122 }

123 const filteredServers = servers.filter(server => {

124 if (platform === "claudeCode") {

125 return server.availability.claudeCode;

126 } else if (platform === "mcpConnector") {

127 return server.availability.mcpConnector;

128 } else if (platform === "claudeDesktop") {

129 return server.availability.claudeDesktop;

130 } else if (platform === "all") {

131 return true;

132 } else {

133 throw new Error(`Unknown platform: ${platform}`);

134 }

135 });

136 return <>

137 <style jsx>{`

138 .cards-container {

139 display: grid;

140 gap: 1rem;

141 margin-bottom: 2rem;

142 }

143 .server-card {

144 border: 1px solid var(--border-color, #e5e7eb);

145 border-radius: 6px;

146 padding: 1rem;

147 }

148 .command-row {

149 display: flex;

150 align-items: center;

151 gap: 0.25rem;

152 }

153 .command-row code {

154 font-size: 0.75rem;

155 overflow-x: auto;

156 }

157 `}</style>

158 

159 <div className="cards-container">

160 {filteredServers.map(server => {

161 const claudeCodeCommand = generateClaudeCodeCommand(server);

162 const mcpUrl = server.urls.http || server.urls.sse;

163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;

164 return <div key={server.name} className="server-card">

165 <div>

166 {server.documentation ? <a href={server.documentation}>

167 <strong>{server.name}</strong>

168 </a> : <strong>{server.name}</strong>}

169 </div>

170 

171 <p style={{

172 margin: '0.5rem 0',

173 fontSize: '0.9rem'

174 }}>

175 {server.description}

176 </p>

177 

178 {server.setupUrl && <p style={{

179 margin: '0.25rem 0',

180 fontSize: '0.8rem',

181 fontStyle: 'italic',

182 opacity: 0.7

183 }}>

184 Requires user-specific URL.{' '}

185 <a href={server.setupUrl} style={{

186 textDecoration: 'underline'

187 }}>

188 Get your URL here

189 </a>.

190 </p>}

191 

192 {commandToShow && !server.setupUrl && <>

193 <p style={{

194 display: 'block',

195 fontSize: '0.75rem',

196 fontWeight: 500,

197 minWidth: 'fit-content',

198 marginTop: '0.5rem',

199 marginBottom: 0

200 }}>

201 {platform === "claudeCode" ? "Command" : "URL"}

202 </p>

203 <div className="command-row">

204 <code>

205 {commandToShow}

206 </code>

207 </div>

208 </>}

209 </div>;

210 })}

211 </div>

212 </>;

213};

214 

215Claude Code dapat terhubung ke ratusan alat eksternal dan sumber data melalui [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), standar sumber terbuka untuk integrasi AI-alat. Server MCP memberikan Claude Code akses ke alat, database, dan API Anda.9Claude Code dapat terhubung ke ratusan alat eksternal dan sumber data melalui [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), standar sumber terbuka untuk integrasi AI-alat. Server MCP memberikan Claude Code akses ke alat, database, dan API Anda.

216 10 

217Hubungkan server ketika Anda menemukan diri Anda menyalin data ke dalam chat dari alat lain, seperti pelacak masalah atau dasbor pemantauan. Setelah terhubung, Claude dapat membaca dan bertindak pada sistem tersebut secara langsung alih-alih bekerja dari apa yang Anda tempel.11Hubungkan server ketika Anda menemukan diri Anda menyalin data ke dalam chat dari alat lain, seperti pelacak masalah atau dasbor pemantauan. Setelah terhubung, Claude dapat membaca dan bertindak pada sistem tersebut secara langsung alih-alih bekerja dari apa yang Anda tempel.


227* **Mengotomatisasi alur kerja**: "Buat draf Gmail mengundang 10 pengguna ini ke sesi umpan balik tentang fitur baru."21* **Mengotomatisasi alur kerja**: "Buat draf Gmail mengundang 10 pengguna ini ke sesi umpan balik tentang fitur baru."

228* **Bereaksi terhadap peristiwa eksternal**: Server MCP juga dapat bertindak sebagai [saluran](/id/channels) yang mendorong pesan ke dalam sesi Anda, sehingga Claude bereaksi terhadap pesan Telegram, obrolan Discord, atau peristiwa webhook saat Anda sedang pergi.22* **Bereaksi terhadap peristiwa eksternal**: Server MCP juga dapat bertindak sebagai [saluran](/id/channels) yang mendorong pesan ke dalam sesi Anda, sehingga Claude bereaksi terhadap pesan Telegram, obrolan Discord, atau peristiwa webhook saat Anda sedang pergi.

229 23 

230## Server MCP populer24## Temukan dan bangun server MCP

231 25 

232Berikut adalah beberapa server MCP yang umum digunakan yang dapat Anda hubungkan ke Claude Code:26Jelajahi konektor yang telah ditinjau di [Direktori Anthropic](https://claude.ai/directory). Konektor Direktori menggunakan infrastruktur MCP yang sama dengan Claude Code, jadi Anda dapat menambahkan server jarak jauh apa pun yang terdaftar di sana dengan `claude mcp add`.

233 27 

234<Warning>28<Warning>

235 Gunakan server MCP pihak ketiga dengan risiko Anda sendiri - Anthropic belum memverifikasi29 Verifikasi bahwa Anda mempercayai setiap server sebelum menghubungkannya. Server yang mengambil konten eksternal dapat mengekspos Anda ke [risiko injeksi prompt](/id/security#protect-against-prompt-injection).

236 kebenaran atau keamanan semua server ini.

237 Pastikan Anda mempercayai server MCP yang Anda instal.

238 Berhati-hatilah terutama saat menggunakan server MCP yang dapat mengambil konten

239 yang tidak dipercaya, karena ini dapat mengekspos Anda ke risiko injeksi prompt.

240</Warning>30</Warning>

241 31 

242<MCPServersTable platform="claudeCode" />32Untuk membangun server Anda sendiri, lihat [panduan server MCP](https://modelcontextprotocol.io/docs/develop/build-server) untuk dasar-dasar protokol dan [dokumentasi pembangun konektor Claude](https://claude.com/docs/connectors/building) untuk autentikasi, pengujian, dan pengajuan Direktori.

243 33 

244<Note>34Anda juga dapat membuat Claude membangun server untuk Anda dengan plugin resmi [`mcp-server-dev`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/mcp-server-dev).

245 **Membutuhkan integrasi spesifik?** [Temukan ratusan server MCP lainnya di GitHub](https://github.com/modelcontextprotocol/servers), atau buat server Anda sendiri menggunakan [MCP SDK](https://modelcontextprotocol.io/quickstart/server).35 

246</Note>36<Steps>

37 <Step title="Instal plugin">

38 Dalam sesi Claude Code, jalankan:

39 

40 ```

41 /plugin install mcp-server-dev@claude-plugins-official

42 ```

43 

44 Kemudian jalankan `/reload-plugins` untuk mengaktifkannya dalam sesi saat ini.

45 </Step>

46 

47 <Step title="Jalankan skill build">

48 ```

49 /mcp-server-dev:build-mcp-server

50 ```

51 

52 Claude menanyakan tentang kasus penggunaan Anda dan membangun server HTTP jarak jauh atau server stdio lokal.

53 </Step>

54</Steps>

247 55 

248## Menginstal server MCP56## Menginstal server MCP

249 57 


289 97 

290Server stdio berjalan sebagai proses lokal di mesin Anda. Mereka ideal untuk alat yang memerlukan akses sistem langsung atau skrip khusus.98Server stdio berjalan sebagai proses lokal di mesin Anda. Mereka ideal untuk alat yang memerlukan akses sistem langsung atau skrip khusus.

291 99 

100Claude Code menetapkan `CLAUDE_PROJECT_DIR` di lingkungan server yang dihasilkan ke akar proyek, sehingga server Anda dapat menyelesaikan jalur relatif proyek tanpa bergantung pada direktori kerja. Ini adalah direktori yang sama yang diterima hooks dalam variabel `CLAUDE_PROJECT_DIR` mereka. Bacalah dari dalam proses server Anda, misalnya `process.env.CLAUDE_PROJECT_DIR` di Node atau `os.environ["CLAUDE_PROJECT_DIR"]` di Python. Server Anda juga dapat memanggil permintaan MCP `roots/list`, yang mengembalikan direktori tempat Claude Code diluncurkan.

101 

102Variabel ini ditetapkan di lingkungan server, bukan di lingkungan Claude Code itu sendiri, jadi mereferensikannya melalui ekspansi `${VAR}` dalam `.mcp.json` yang bersifat proyek atau pengguna `command` atau `args` memerlukan default seperti `${CLAUDE_PROJECT_DIR:-.}`. Konfigurasi MCP yang disediakan plugin mengganti `${CLAUDE_PROJECT_DIR}` secara langsung dan tidak memerlukan default.

103 

292```bash theme={null}104```bash theme={null}

293# Sintaks dasar105# Sintaks dasar

294claude mcp add [options] <name> -- <command> [args...]106claude mcp add [options] <name> -- <command> [args...]


406**Fitur MCP plugin**:218**Fitur MCP plugin**:

407 219 

408* **Siklus hidup otomatis**: Pada startup sesi, server untuk plugin yang diaktifkan terhubung secara otomatis. Jika Anda mengaktifkan atau menonaktifkan plugin selama sesi, jalankan `/reload-plugins` untuk menghubungkan atau memutuskan server MCP-nya220* **Siklus hidup otomatis**: Pada startup sesi, server untuk plugin yang diaktifkan terhubung secara otomatis. Jika Anda mengaktifkan atau menonaktifkan plugin selama sesi, jalankan `/reload-plugins` untuk menghubungkan atau memutuskan server MCP-nya

409* **Variabel lingkungan**: gunakan `${CLAUDE_PLUGIN_ROOT}` untuk file plugin bundel dan `${CLAUDE_PLUGIN_DATA}` untuk [status persisten](/id/plugins-reference#persistent-data-directory) yang bertahan pembaruan plugin221* **Variabel lingkungan**: gunakan `${CLAUDE_PLUGIN_ROOT}` untuk file plugin bundel, `${CLAUDE_PLUGIN_DATA}` untuk [status persisten](/id/plugins-reference#persistent-data-directory) yang bertahan pembaruan plugin, dan `${CLAUDE_PROJECT_DIR}` untuk akar proyek yang stabil

410* **Akses lingkungan pengguna**: Akses ke variabel lingkungan yang sama seperti server yang dikonfigurasi secara manual222* **Akses lingkungan pengguna**: Akses ke variabel lingkungan yang sama seperti server yang dikonfigurasi secara manual

411* **Jenis transport berganda**: Dukungan transport stdio, SSE, dan HTTP (dukungan transport dapat bervariasi menurut server)223* **Jenis transport berganda**: Dukungan transport stdio, SSE, dan HTTP (dukungan transport dapat bervariasi menurut server)

412 224 


646 458 

647Banyak server MCP berbasis cloud memerlukan autentikasi. Claude Code mendukung OAuth 2.0 untuk koneksi yang aman.459Banyak server MCP berbasis cloud memerlukan autentikasi. Claude Code mendukung OAuth 2.0 untuk koneksi yang aman.

648 460 

461Claude Code menandai server jarak jauh sebagai memerlukan autentikasi ketika server merespons dengan `401 Unauthorized` dan header `WWW-Authenticate` yang menunjuk ke server otorisasinya. Server kustom apa pun yang mengembalikan respons tersebut mendapatkan alur autentikasi `/mcp` yang sama seperti server jarak jauh lainnya.

462 

649<Steps>463<Steps>

650 <Step title="Tambahkan server yang memerlukan autentikasi">464 <Step title="Tambahkan server yang memerlukan autentikasi">

651 Sebagai contoh:465 Sebagai contoh:


1139 953 

1140### Konfigurasi pencarian alat954### Konfigurasi pencarian alat

1141 955 

1142Pencarian alat diaktifkan secara default: alat MCP ditangguhkan dan ditemukan sesuai permintaan. Pencarian alat dinonaktifkan secara default di Vertex AI, yang tidak menerima header beta pencarian alat, dan ketika `ANTHROPIC_BASE_URL` menunjuk ke host non-pihak pertama, karena sebagian besar proxy tidak meneruskan blok `tool_reference`. Atur `ENABLE_TOOL_SEARCH` secara eksplisit untuk memilih. Fitur ini memerlukan model yang mendukung blok `tool_reference`: Sonnet 4 dan lebih baru, atau Opus 4 dan lebih baru. Model Haiku tidak mendukung pencarian alat.956Pencarian alat diaktifkan secara default: alat MCP ditangguhkan dan ditemukan sesuai permintaan. Pencarian alat dinonaktifkan secara default di Vertex AI, yang tidak menerima header beta pencarian alat, dan ketika `ANTHROPIC_BASE_URL` menunjuk ke host non-pihak pertama, karena sebagian besar proxy tidak meneruskan blok `tool_reference`. Jika proxy Anda meneruskan blok `tool_reference`, atur `ENABLE_TOOL_SEARCH` secara eksplisit untuk mengganti fallback. Fitur ini memerlukan model yang mendukung blok `tool_reference`: Sonnet 4 dan lebih baru, atau Opus 4 dan lebih baru. Model Haiku tidak mendukung pencarian alat.

1143 957 

1144Kontrol perilaku pencarian alat dengan variabel lingkungan `ENABLE_TOOL_SEARCH`:958Kontrol perilaku pencarian alat dengan variabel lingkungan `ENABLE_TOOL_SEARCH`:

1145 959 

1146| Nilai | Perilaku |960| Nilai | Perilaku |

1147| :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |961| :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1148| (tidak diatur) | Semua alat MCP ditangguhkan dan dimuat sesuai permintaan. Kembali ke pemuatan sebelumnya di Vertex AI atau ketika `ANTHROPIC_BASE_URL` adalah host non-pihak pertama |962| (tidak diatur) | Semua alat MCP ditangguhkan dan dimuat sesuai permintaan. Kembali ke pemuatan sebelumnya di Vertex AI atau ketika `ANTHROPIC_BASE_URL` adalah host non-pihak pertama |

1149| `true` | Semua alat MCP ditangguhkan, termasuk di Vertex AI dan untuk `ANTHROPIC_BASE_URL` non-pihak pertama |963| `true` | Semua alat MCP ditangguhkan. Claude Code mengirim header beta bahkan di Vertex AI dan melalui proxy. Permintaan gagal jika backend tidak mendukung blok `tool_reference` |

1150| `auto` | Mode ambang batas: alat dimuat sebelumnya jika cocok dalam 10% jendela konteks, ditangguhkan sebaliknya |964| `auto` | Mode ambang batas: alat dimuat sebelumnya jika cocok dalam 10% jendela konteks, ditangguhkan sebaliknya |

1151| `auto:<N>` | Mode ambang batas dengan persentase khusus, di mana `<N>` adalah 0-100 (misalnya, `auto:5` untuk 5%) |965| `auto:<N>` | Mode ambang batas dengan persentase khusus, di mana `<N>` adalah 0-100 (misalnya, `auto:5` untuk 5%) |

1152| `false` | Semua alat MCP dimuat sebelumnya, tidak ada penundaan |966| `false` | Semua alat MCP dimuat sebelumnya, tidak ada penundaan |


1161 975 

1162Atau atur nilai dalam [field `env` settings.json](/id/settings#available-settings) Anda.976Atau atur nilai dalam [field `env` settings.json](/id/settings#available-settings) Anda.

1163 977 

1164Anda juga dapat menonaktifkan alat ToolSearch secara khusus:978Anda juga dapat menonaktifkan alat `ToolSearch` secara khusus:

1165 979 

1166```json theme={null}980```json theme={null}

1167{981{

memory.md +18 −2

Details

26| :------------------------ | :------------------------------------------------ | :---------------------------------------------------------------- |26| :------------------------ | :------------------------------------------------ | :---------------------------------------------------------------- |

27| **Siapa yang menulisnya** | Anda | Claude |27| **Siapa yang menulisnya** | Anda | Claude |

28| **Apa yang dikandungnya** | Instruksi dan aturan | Pembelajaran dan pola |28| **Apa yang dikandungnya** | Instruksi dan aturan | Pembelajaran dan pola |

29| **Cakupan** | Proyek, pengguna, atau organisasi | Per working tree |29| **Cakupan** | Proyek, pengguna, atau organisasi | Per repositori, dibagikan di seluruh worktrees |

30| **Dimuat ke dalam** | Setiap sesi | Setiap sesi (200 baris pertama atau 25KB) |30| **Dimuat ke dalam** | Setiap sesi | Setiap sesi (200 baris pertama atau 25KB) |

31| **Gunakan untuk** | Standar pengkodean, alur kerja, arsitektur proyek | Perintah build, wawasan debugging, preferensi yang Claude temukan |31| **Gunakan untuk** | Standar pengkodean, alur kerja, arsitektur proyek | Perintah build, wawasan debugging, preferensi yang Claude temukan |

32 32 


272 </Step>272 </Step>

273</Steps>273</Steps>

274 274 

275CLAUDE.md yang dikelola dan [pengaturan terkelola](/id/settings#settings-files) melayani tujuan yang berbeda. Gunakan pengaturan untuk penegakan teknis dan CLAUDE.md untuk panduan perilaku:275Kunci `claudeMd` memungkinkan Anda menempatkan konten CLAUDE.md terkelola langsung di dalam `managed-settings.json` alih-alih menerapkan file terpisah.

276 

277**Cakupan**: setiap sesi Claude Code di mesin, di setiap repositori. Untuk panduan khusus repositori, komit CLAUDE.md proyek sebagai gantinya.

278 

279**Prioritas**: sama dengan file CLAUDE.md terkelola. Dimuat sebelum CLAUDE.md pengguna dan proyek.

280 

281**Di mana itu dihormati**: pengaturan terkelola dan kebijakan saja. Menetapkan `claudeMd` dalam pengaturan pengguna, proyek, atau lokal tidak berpengaruh.

282 

283Contoh di bawah menambahkan instruksi perilaku langsung dalam file pengaturan terkelola:

284 

285```json theme={null}

286{

287 "claudeMd": "Always run `make lint` before committing.\nNever push directly to main."

288}

289```

290 

291CLAUDE.md terkelola dan [pengaturan terkelola](/id/settings#settings-files) melayani tujuan yang berbeda. Gunakan pengaturan untuk penegakan teknis dan CLAUDE.md untuk panduan perilaku:

276 292 

277| Kekhawatiran | Konfigurasi dalam |293| Kekhawatiran | Konfigurasi dalam |

278| :---------------------------------------------- | :------------------------------------------------------------ |294| :---------------------------------------------- | :------------------------------------------------------------ |

model-config.md +2 −0

Details

57 Pilihan `/model` Anda disimpan ke pengaturan pengguna dan bertahan di seluruh restart. Mulai dari v2.1.117, jika `.claude/settings.json` proyek menetapkan model yang berbeda, Claude Code juga menulis pilihan Anda ke `.claude/settings.local.json` sehingga terus berlaku di proyek tersebut setelah restart. Pengaturan yang dikelola memiliki prioritas dan diterapkan kembali pada peluncuran berikutnya.57 Pilihan `/model` Anda disimpan ke pengaturan pengguna dan bertahan di seluruh restart. Mulai dari v2.1.117, jika `.claude/settings.json` proyek menetapkan model yang berbeda, Claude Code juga menulis pilihan Anda ke `.claude/settings.local.json` sehingga terus berlaku di proyek tersebut setelah restart. Pengaturan yang dikelola memiliki prioritas dan diterapkan kembali pada peluncuran berikutnya.

58</Note>58</Note>

59 59 

60Bendera `--model` dan variabel lingkungan `ANTHROPIC_MODEL` hanya berlaku untuk sesi yang Anda luncurkan dengan mereka dan tidak disimpan. Untuk menjalankan model yang berbeda di terminal yang berbeda pada waktu yang sama, luncurkan masing-masing dengan bendera `--model` miliknya sendiri daripada beralih dengan `/model`.

61 

60Ketika model aktif saat startup berasal dari pengaturan proyek atau yang dikelola daripada pilihan Anda sendiri, header startup menunjukkan file pengaturan mana yang menetapkannya. Jalankan `/model` untuk mengganti untuk sesi saat ini.62Ketika model aktif saat startup berasal dari pengaturan proyek atau yang dikelola daripada pilihan Anda sendiri, header startup menunjukkan file pengaturan mana yang menetapkannya. Jalankan `/model` untuk mengganti untuk sesi saat ini.

61 63 

62Contoh penggunaan:64Contoh penggunaan:

Details

166**`claude_code.llm_request`**166**`claude_code.llm_request`**

167 167 

168| Atribut | Deskripsi | Gated by |168| Atribut | Deskripsi | Gated by |

169| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -------- |169| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------- |

170| `model` | Pengidentifikasi model | |170| `model` | Pengidentifikasi model | |

171| `gen_ai.system` | Selalu `anthropic`. Konvensi semantik GenAI OpenTelemetry | |171| `gen_ai.system` | Selalu `anthropic`. Konvensi semantik GenAI OpenTelemetry | |

172| `gen_ai.request.model` | Nilai yang sama dengan `model`. Konvensi semantik GenAI OpenTelemetry | |172| `gen_ai.request.model` | Nilai yang sama dengan `model`. Konvensi semantik GenAI OpenTelemetry | |

173| `query_source` | Subsistem yang mengeluarkan permintaan, seperti `repl_main_thread` atau nama subagent | |173| `query_source` | Subsistem yang mengeluarkan permintaan, seperti `repl_main_thread` atau nama subagent | |

174| `agent_id` | Pengidentifikasi subagent atau rekan kerja yang mengeluarkan permintaan. Tidak ada pada sesi utama | |

175| `parent_agent_id` | Pengidentifikasi agen yang menghasilkan yang ini. Tidak ada untuk sesi utama dan untuk agen yang dihasilkan langsung darinya | |

174| `speed` | `fast` atau `normal` | |176| `speed` | `fast` atau `normal` | |

175| `llm_request.context` | `interaction`, `tool`, atau `standalone` tergantung pada span induk | |177| `llm_request.context` | `interaction`, `tool`, atau `standalone` tergantung pada span induk | |

176| `duration_ms` | Durasi wall-clock termasuk retry | |178| `duration_ms` | Durasi wall-clock termasuk retry | |


446* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`448* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`

447* `speed`: `"fast"` saat permintaan menggunakan mode cepat. Tidak ada sebaliknya449* `speed`: `"fast"` saat permintaan menggunakan mode cepat. Tidak ada sebaliknya

448* `effort`: [Tingkat effort](/id/model-config#adjust-effort-level) yang diterapkan pada permintaan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Tidak ada saat model tidak mendukung effort.450* `effort`: [Tingkat effort](/id/model-config#adjust-effort-level) yang diterapkan pada permintaan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Tidak ada saat model tidak mendukung effort.

451* `agent.name`: Jenis subagent yang mengeluarkan permintaan. Nama agen built-in dan agen dari plugin marketplace resmi muncul verbatim. Nama agen yang ditentukan pengguna lainnya diganti dengan `"custom"`. Tidak ada saat permintaan tidak dikeluarkan oleh jenis subagent bernama.

452* `skill.name`: Skill aktif untuk permintaan, diatur oleh alat Skill, perintah `/`, atau diwarisi oleh subagent yang dihasilkan. Nama skill built-in, bundled, yang ditentukan pengguna, dan plugin marketplace resmi muncul verbatim. Nama skill plugin pihak ketiga diganti dengan `"third-party"`. Tidak ada saat tidak ada skill yang aktif.

453* `plugin.name`: Plugin pemilik saat skill atau subagent aktif disediakan oleh plugin. Nama plugin marketplace resmi muncul verbatim. Nama plugin pihak ketiga diganti dengan `"third-party"`. Tidak ada saat skill atau subagent tidak memiliki plugin pemilik.

454* `marketplace.name`: Marketplace tempat plugin pemilik diinstal. Hanya dipancarkan untuk plugin marketplace resmi. Tidak ada sebaliknya.

449 455 

450#### Penghitung token456#### Penghitung token

451 457 


459* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`465* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`

460* `speed`: `"fast"` saat permintaan menggunakan mode cepat. Tidak ada sebaliknya466* `speed`: `"fast"` saat permintaan menggunakan mode cepat. Tidak ada sebaliknya

461* `effort`: [Tingkat effort](/id/model-config#adjust-effort-level) yang diterapkan pada permintaan. Lihat [Penghitung biaya](#cost-counter) untuk detail.467* `effort`: [Tingkat effort](/id/model-config#adjust-effort-level) yang diterapkan pada permintaan. Lihat [Penghitung biaya](#cost-counter) untuk detail.

468* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`: Atribusi skill, plugin, dan agen untuk permintaan. Lihat [Penghitung biaya](#cost-counter) untuk definisi dan perilaku redaksi.

462 469 

463#### Penghitung keputusan alat pengeditan kode470#### Penghitung keputusan alat pengeditan kode

464 471 


647* `tool_use_id`: Pengidentifikasi unik untuk invokasi alat ini. Cocok dengan `tool_use_id` yang diteruskan ke hooks, memungkinkan korelasi antara acara OTel dan data yang ditangkap hook.654* `tool_use_id`: Pengidentifikasi unik untuk invokasi alat ini. Cocok dengan `tool_use_id` yang diteruskan ke hooks, memungkinkan korelasi antara acara OTel dan data yang ditangkap hook.

648* `decision`: Baik `"accept"` atau `"reject"`655* `decision`: Baik `"accept"` atau `"reject"`

649* `source`: Sumber keputusan:656* `source`: Sumber keputusan:

650 * `"config"`: Diputuskan secara otomatis tanpa diminta, berdasarkan pengaturan proyek, kebijakan terkelola perusahaan, flag `--allowedTools` atau `--disallowedTools`, mode izin aktif, atau karena alat itu aman secara inheren.657 * `"config"`: Diputuskan secara otomatis tanpa diminta, berdasarkan pengaturan proyek, kebijakan terkelola perusahaan, flag `--allowedTools` atau `--disallowedTools`, mode izin aktif, atau karena alat itu aman secara inheren. Acara tidak menunjukkan sumber mana yang cocok.

651 * `"hook"`: Hook `PreToolUse` atau `PermissionRequest` mengembalikan keputusan.658 * `"hook"`: Hook `PreToolUse` atau `PermissionRequest` mengembalikan keputusan.

652 * `"user_permanent"`: Dipancarkan saat pengguna memilih "Selalu izinkan" saat diminta, menyimpan aturan ke pengaturan pribadi mereka. Juga dipancarkan untuk panggilan nanti yang cocok dengan aturan tersimpan itu. Diperlakukan sebagai penerimaan.659 * `"user_permanent"`: Dipancarkan saat pengguna memilih "Ya, dan jangan tanya lagi untuk ..." saat diminta, yang menyimpan aturan izin ke pengaturan pribadi mereka. Dalam CLI interaktif ini dipancarkan hanya untuk pilihan itu sendiri; panggilan nanti yang cocok dengan aturan tersimpan memancarkan `"config"` sebagai gantinya. Dalam sesi Agent SDK atau non-interaktif `-p`, baik pilihan awal maupun kecocokan aturan nanti memancarkan `"user_permanent"`. Diperlakukan sebagai penerimaan.

653 * `"user_temporary"`: Dipancarkan saat pengguna memilih "Ya" atau "Ya, untuk sesi ini" saat diminta, tanpa menyimpan aturan. Juga dipancarkan untuk panggilan nanti dalam sesi yang sama yang cocok dengan izin berskop sesi itu. Diperlakukan sebagai penerimaan.660 * `"user_temporary"`: Dipancarkan saat pengguna memilih "Ya" saat diminta untuk persetujuan satu kali, atau memilih salah satu opsi "... selama sesi ini" pada prompt pengeditan atau pembacaan file. Dalam CLI interaktif ini dipancarkan hanya untuk pilihan itu sendiri; panggilan nanti yang diizinkan oleh hibah berskop sesi itu memancarkan `"config"` sebagai gantinya. Dalam sesi Agent SDK atau non-interaktif `-p`, baik pilihan maupun kecocokan nanti memancarkan `"user_temporary"`. Diperlakukan sebagai penerimaan.

654 * `"user_abort"`: Dipancarkan saat pengguna menutup prompt izin tanpa menjawab. Diperlakukan sebagai penolakan.661 * `"user_abort"`: Dipancarkan saat pengguna menutup prompt izin tanpa menjawab. Diperlakukan sebagai penolakan.

655 * `"user_reject"`: Dipancarkan saat pengguna memilih "Tidak" saat diminta, atau panggilan cocok dengan aturan penolakan dalam pengaturan pribadi mereka. Diperlakukan sebagai penolakan.662 * `"user_reject"`: Dipancarkan saat pengguna memilih "Tidak" saat diminta, atau panggilan cocok dengan aturan penolakan dalam pengaturan pribadi mereka. Diperlakukan sebagai penolakan.

656 663 


741* `plugin.version`: Versi plugin saat dideklarasikan dalam entri marketplace. Untuk marketplace pihak ketiga ini disertakan hanya saat `OTEL_LOG_TOOL_DETAILS=1`748* `plugin.version`: Versi plugin saat dideklarasikan dalam entri marketplace. Untuk marketplace pihak ketiga ini disertakan hanya saat `OTEL_LOG_TOOL_DETAILS=1`

742* `marketplace.name`: Marketplace plugin diinstal dari. Untuk marketplace pihak ketiga ini disertakan hanya saat `OTEL_LOG_TOOL_DETAILS=1`749* `marketplace.name`: Marketplace plugin diinstal dari. Untuk marketplace pihak ketiga ini disertakan hanya saat `OTEL_LOG_TOOL_DETAILS=1`

743 750 

751#### Acara plugin dimuat

752 

753Dicatat sekali per plugin yang diaktifkan saat startup sesi. Gunakan acara ini untuk menginventarisasi plugin mana yang aktif di seluruh armada Anda, sebagai pelengkap `plugin_installed` yang mencatat tindakan instalasi itu sendiri.

754 

755**Nama Acara**: `claude_code.plugin_loaded`

756 

757**Atribut**:

758 

759* Semua [atribut standar](#standard-attributes)

760* `event.name`: `"plugin_loaded"`

761* `event.timestamp`: Stempel waktu ISO 8601

762* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi

763* `plugin.name`: nama plugin. Untuk plugin di luar marketplace resmi dan bundel built-in nilainya adalah `"third-party"` kecuali `OTEL_LOG_TOOL_DETAILS=1`

764* `marketplace.name`: marketplace tempat plugin diinstal, saat diketahui. Diredaksi menjadi `"third-party"` di bawah kondisi yang sama dengan `plugin.name`

765* `plugin.version`: versi dari manifest plugin. Disertakan hanya saat nama tidak diredaksi dan manifest mendeklarasikan versi

766* `plugin.scope`: kategori provenance untuk plugin: `"official"`, `"org"`, `"user-local"`, atau `"default-bundle"`

767* `enabled_via`: bagaimana plugin menjadi diaktifkan: `"default-enable"`, `"org-policy"`, `"seed-mount"`, atau `"user-install"`

768* `plugin_id_hash`: hash deterministik dari nama plugin dan marketplace, dikirim hanya ke pengekspor yang dikonfigurasi. Memungkinkan Anda menghitung berapa banyak plugin pihak ketiga yang berbeda dimuat di seluruh armada Anda tanpa merekam nama mereka

769* `has_hooks`: apakah plugin berkontribusi hooks

770* `has_mcp`: apakah plugin berkontribusi server MCP

771* `skill_path_count`: jumlah direktori skill yang dideklarasikan plugin

772* `command_path_count`: jumlah direktori perintah yang dideklarasikan plugin

773* `agent_path_count`: jumlah direktori agen yang dideklarasikan plugin

774 

744#### Acara skill diaktifkan775#### Acara skill diaktifkan

745 776 

746Dicatat saat skill dipanggil, baik Claude memanggilnya melalui alat Skill atau Anda menjalankannya sebagai perintah `/`.777Dicatat saat skill dipanggil, baik Claude memanggilnya melalui alat Skill atau Anda menjalankannya sebagai perintah `/`.


793* `total_retry_duration_ms`: Total waktu wall-clock di semua upaya824* `total_retry_duration_ms`: Total waktu wall-clock di semua upaya

794* `speed`: `"fast"` atau `"normal"`825* `speed`: `"fast"` atau `"normal"`

795 826 

827#### Acara hook terdaftar

828 

829Dicatat sekali per hook yang dikonfigurasi saat startup sesi. Gunakan acara ini untuk menginventarisasi hook mana yang aktif di seluruh armada Anda, sebagai pelengkap acara `hook_execution_start` dan `hook_execution_complete` per eksekusi.

830 

831**Nama Acara**: `claude_code.hook_registered`

832 

833**Atribut**:

834 

835* Semua [atribut standar](#standard-attributes)

836* `event.name`: `"hook_registered"`

837* `event.timestamp`: Stempel waktu ISO 8601

838* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi

839* `hook_event`: jenis acara hook, seperti `"PreToolUse"` atau `"PostToolUse"`

840* `hook_type`: jenis implementasi hook: `"command"`, `"prompt"`, `"mcp_tool"`, `"http"`, atau `"agent"`

841* `hook_source`: tempat hook didefinisikan: `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"`, atau `"pluginHook"`

842* `hook_matcher` (saat `OTEL_LOG_TOOL_DETAILS=1`): string matcher dari konfigurasi hook, saat satu diatur

843* `plugin.name` (saat `hook_source` adalah `"pluginHook"`): nama plugin yang berkontribusi. Untuk plugin di luar marketplace resmi dan bundel built-in nilainya adalah `"third-party"` kecuali `OTEL_LOG_TOOL_DETAILS=1`

844* `plugin_id_hash` (saat `hook_source` adalah `"pluginHook"`): hash deterministik dari nama plugin dan marketplace, dikirim hanya ke pengekspor yang dikonfigurasi. Memungkinkan Anda menghitung plugin yang berkontribusi berbeda tanpa merekam nama mereka

845 

796#### Acara mulai eksekusi hook846#### Acara mulai eksekusi hook

797 847 

798Dicatat saat satu atau lebih hooks mulai dieksekusi untuk acara hook.848Dicatat saat satu atau lebih hooks mulai dieksekusi untuk acara hook.


855* `post_tokens`: Jumlah token perkiraan setelah pemadatan905* `post_tokens`: Jumlah token perkiraan setelah pemadatan

856* `error`: Pesan kesalahan saat pemadatan gagal906* `error`: Pesan kesalahan saat pemadatan gagal

857 907 

908#### Acara survei umpan balik

909 

910Dicatat saat survei kualitas sesi ditampilkan atau dijawab. Lihat [Survei kualitas sesi](/id/data-usage#session-quality-surveys) untuk mengetahui apa yang dikumpulkan survei dan cara mengontrolnya.

911 

912**Nama Acara**: `claude_code.feedback_survey`

913 

914**Atribut**:

915 

916* Semua [atribut standar](#standard-attributes)

917* `event.name`: `"feedback_survey"`

918* `event.timestamp`: Stempel waktu ISO 8601

919* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi

920* `event_type`: Acara siklus hidup survei, misalnya `"appeared"`, `"responded"`, atau `"transcript_prompt_appeared"`

921* `appearance_id`: ID unik yang menghubungkan acara yang dipancarkan untuk satu instance survei

922* `survey_type`: Survei mana yang menghasilkan acara. `"session"` adalah prompt rating "Bagaimana Claude melakukannya?"

923* `response`: Pilihan pengguna pada acara `responded`

924* `enabled_via_override`: `true` saat [`CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`](/id/env-vars) diatur. Dipancarkan sebagai boolean, bukan string. Hadir pada acara survei `session`. Filter pada atribut ini untuk mengkonfirmasi override diterapkan di seluruh armada

925 

858## Menafsirkan data metrik dan acara926## Menafsirkan data metrik dan acara

859 927 

860Metrik dan acara yang diekspor mendukung berbagai analisis:928Metrik dan acara yang diekspor mendukung berbagai analisis:


862### Pemantauan penggunaan930### Pemantauan penggunaan

863 931 

864| Metrik | Peluang Analisis |932| Metrik | Peluang Analisis |

865| ------------------------------------------------------------- | --------------------------------------------------------------------- |933| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |

866| `claude_code.token.usage` | Pecahkan berdasarkan `type` (input/output), pengguna, tim, atau model |934| `claude_code.token.usage` | Pecahkan berdasarkan `type` (input/output), pengguna, tim, model, `skill.name`, `plugin.name`, atau `agent.name` |

867| `claude_code.session.count` | Lacak adopsi dan keterlibatan dari waktu ke waktu |935| `claude_code.session.count` | Lacak adopsi dan keterlibatan dari waktu ke waktu |

868| `claude_code.lines_of_code.count` | Ukur produktivitas dengan melacak penambahan/penghapusan kode |936| `claude_code.lines_of_code.count` | Ukur produktivitas dengan melacak penambahan/penghapusan kode |

869| `claude_code.commit.count` & `claude_code.pull_request.count` | Pahami dampak pada alur kerja pengembangan |937| `claude_code.commit.count` & `claude_code.pull_request.count` | Pahami dampak pada alur kerja pengembangan |


874 942 

875* Melacak tren penggunaan di seluruh tim atau individu943* Melacak tren penggunaan di seluruh tim atau individu

876* Mengidentifikasi sesi penggunaan tinggi untuk optimasi944* Mengidentifikasi sesi penggunaan tinggi untuk optimasi

945* Atribusi pengeluaran ke skill, plugin, atau jenis subagent tertentu melalui atribut `skill.name`, `plugin.name`, dan `agent.name`

877 946 

878<Note>947<Note>

879 Metrik biaya adalah perkiraan. Untuk data penagihan resmi, lihat penyedia API Anda (Claude Console, Amazon Bedrock, atau Google Cloud Vertex).948 Metrik biaya adalah perkiraan. Untuk data penagihan resmi, lihat penyedia API Anda (Claude Console, Amazon Bedrock, atau Google Cloud Vertex).

output-styles.md +14 −12

Details

10 10 

11Untuk instruksi tentang proyek, konvensi, atau codebase Anda, gunakan [CLAUDE.md](/id/memory) sebagai gantinya.11Untuk instruksi tentang proyek, konvensi, atau codebase Anda, gunakan [CLAUDE.md](/id/memory) sebagai gantinya.

12 12 

13## Built-in output styles13## Gaya output bawaan

14 14 

15Output style **Default** Claude Code adalah system prompt yang ada, dirancang15Gaya output **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 tiga gaya output bawaan tambahan:

19codebase dan cara Claude beroperasi:19 

20* **Proactive**: Claude dieksekusi segera, membuat asumsi yang masuk akal

21 alih-alih berhenti untuk keputusan rutin, dan lebih memilih tindakan daripada perencanaan.

22 Ini menerapkan panduan yang sama seperti

23 [mode otomatis](/id/permission-modes#eliminate-prompts-with-auto-mode) tanpa

24 mengubah mode izin Anda, jadi Anda masih melihat prompt izin sebelum

25 alat dijalankan.

20 26 

21* **Explanatory**: Menyediakan "Insights" edukatif di antara membantu Anda27* **Explanatory**: Menyediakan "Insights" edukatif di antara membantu Anda

22 menyelesaikan tugas-tugas rekayasa perangkat lunak. Membantu Anda memahami28 menyelesaikan tugas-tugas rekayasa perangkat lunak. Membantu Anda memahami


109 115 

110### Output Styles vs. CLAUDE.md vs. --append-system-prompt116### Output Styles vs. CLAUDE.md vs. --append-system-prompt

111 117 

112Output styles sepenuhnya "mematikan" bagian-bagian dari default system prompt Claude Code118Pilih berdasarkan apakah Claude harus berhenti bertindak sebagai asisten pengkodean atau mempertahankan peran defaultnya dan belajar lebih banyak. Output styles menggantikan bagian-bagian rekayasa perangkat lunak dari system prompt Claude Code dengan peran dan suara Anda sendiri, jadi gunakan satu ketika Claude harus mengadopsi identitas yang berbeda, seperti editor penulisan atau asisten analisis data. CLAUDE.md dan `--append-system-prompt` keduanya mempertahankan identitas default Claude Code dan menambahnya, jadi gunakan mereka ketika Claude harus tetap menjadi asisten pengkodean yang juga mengikuti konvensi proyek Anda atau instruksi tambahan.

113yang spesifik untuk rekayasa perangkat lunak. Baik CLAUDE.md maupun119 

114`--append-system-prompt` tidak mengedit default system prompt Claude Code. CLAUDE.md120Mekanismenya juga berbeda. Output styles mengedit system prompt secara langsung. CLAUDE.md menambahkan kontennya sebagai pesan pengguna setelah system prompt. `--append-system-prompt` menambahkan konten ke akhir system prompt tanpa menghapus apa pun.

115menambahkan konten sebagai pesan pengguna *setelah* default system prompt Claude Code. `--append-system-prompt` menambahkan konten ke system prompt.

116 121 

117### Output Styles vs. [Agents](/id/sub-agents)122### Output Styles vs. [Agents](/id/sub-agents)

118 123 

119Output styles secara langsung mempengaruhi loop agen utama dan hanya mempengaruhi system124Gunakan output style untuk mengubah cara percakapan utama merespons di setiap sesi. Gunakan [subagent](/id/sub-agents) ketika Anda menginginkan helper dengan cakupan terpisah yang didelegasikan oleh percakapan utama. Output styles hanya mempengaruhi system prompt dari loop agen utama. Agents menangani tugas-tugas spesifik dan dapat membawa model mereka sendiri, tools, dan konteks tentang kapan menggunakannya.

120prompt. Agents dipanggil untuk menangani tugas-tugas spesifik dan dapat mencakup pengaturan tambahan

121seperti model yang akan digunakan, tools yang tersedia bagi mereka, dan beberapa konteks

122tentang kapan menggunakan agent.

123 125 

124### Output Styles vs. [Skills](/id/skills)126### Output Styles vs. [Skills](/id/skills)

125 127 

Details

128 128 

129Tekan `Shift+Tab` lagi untuk meninggalkan mode rencana tanpa menyetujui rencana.129Tekan `Shift+Tab` lagi untuk meninggalkan mode rencana tanpa menyetujui rencana.

130 130 

131### Tinjau dan setujui rencana

132 

131Ketika rencana siap, Claude menyajikannya dan menanyakan cara melanjutkan. Dari prompt itu Anda dapat:133Ketika rencana siap, Claude menyajikannya dan menanyakan cara melanjutkan. Dari prompt itu Anda dapat:

132 134 

133* Setujui dan mulai dalam mode otomatis135* Setujui dan mulai dalam mode otomatis


136* Terus merencanakan dengan umpan balik138* Terus merencanakan dengan umpan balik

137* Perbaiki dengan [Ultraplan](/id/ultraplan) untuk tinjauan berbasis browser139* Perbaiki dengan [Ultraplan](/id/ultraplan) untuk tinjauan berbasis browser

138 140 

139Setiap opsi persetujuan juga menawarkan untuk menghapus konteks perencanaan terlebih dahulu.141Menyetujui rencana keluar dari mode rencana dan mengalihkan sesi ke mode izin yang dijelaskan oleh setiap opsi persetujuan, sehingga Claude mulai mengedit. Untuk merencanakan lagi, kembali ke mode rencana dengan `Shift+Tab`, atau awali prompt berikutnya dengan `/plan`.

142 

143Tekan `Ctrl+G` untuk membuka rencana yang diusulkan di editor teks default Anda dan mengeditnya secara langsung sebelum Claude melanjutkan. Ketika [`showClearContextOnPlanAccept`](/id/settings#available-settings) diaktifkan, setiap opsi persetujuan juga menawarkan untuk menghapus konteks perencanaan terlebih dahulu.

144 

145Menerima rencana juga memberi nama sesi dari konten rencana secara otomatis, kecuali Anda telah menetapkan nama dengan `--name` atau `/rename`.

146 

147### Atur mode rencana sebagai default

148 

149Untuk membuat mode rencana sebagai default untuk proyek, atur `defaultMode` dalam `.claude/settings.json`:

150 

151```json theme={null}

152{

153 "permissions": {

154 "defaultMode": "plan"

155 }

156}

157```

140 158 

141## Hilangkan prompt dengan mode otomatis159## Hilangkan prompt dengan mode otomatis

142 160 


146 164 

147Mode otomatis memungkinkan Claude menjalankan tanpa prompt izin. Model pengklasifikasi terpisah meninjau tindakan sebelum berjalan, memblokir apa pun yang melampaui permintaan Anda, menargetkan infrastruktur yang tidak dikenali, atau tampak didorong oleh konten bermusuhan yang dibaca Claude.165Mode otomatis memungkinkan Claude menjalankan tanpa prompt izin. Model pengklasifikasi terpisah meninjau tindakan sebelum berjalan, memblokir apa pun yang melampaui permintaan Anda, menargetkan infrastruktur yang tidak dikenali, atau tampak didorong oleh konten bermusuhan yang dibaca Claude.

148 166 

167Mode otomatis juga menginstruksikan Claude untuk menjalankan segera dan meminimalkan pertanyaan klarifikasi. Untuk mendapatkan perilaku itu sambil tetap mempertahankan prompt izin, atur [gaya output Proaktif](/id/output-styles) sebagai gantinya.

168 

149<Warning>169<Warning>

150 Mode otomatis adalah pratinjau penelitian. Ini mengurangi prompt tetapi tidak menjamin keamanan. Gunakan untuk tugas di mana Anda mempercayai arah umum, bukan sebagai pengganti tinjauan pada operasi sensitif.170 Mode otomatis adalah pratinjau penelitian. Ini mengurangi prompt tetapi tidak menjamin keamanan. Gunakan untuk tugas di mana Anda mempercayai arah umum, bukan sebagai pengganti tinjauan pada operasi sensitif.

151</Warning>171</Warning>


256 276 

257Flag `--dangerously-skip-permissions` setara.277Flag `--dangerously-skip-permissions` setara.

258 278 

279Di Linux dan macOS, Claude Code menolak untuk memulai dalam mode ini saat berjalan sebagai root atau di bawah `sudo`:

280 

281```text theme={null}

282--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons

283```

284 

285Pemeriksaan dilewati secara otomatis di dalam sandbox yang dikenali. Untuk menjalankan secara otonom dalam kontainer, gunakan konfigurasi [dev container](/id/devcontainer), yang menjalankan Claude Code sebagai pengguna non-root.

286 

259<Warning>287<Warning>

260 `bypassPermissions` tidak menawarkan perlindungan terhadap injeksi prompt atau tindakan yang tidak diinginkan. Untuk pemeriksaan keamanan latar belakang tanpa prompt, gunakan [mode otomatis](#eliminate-prompts-with-auto-mode) sebagai gantinya. Administrator dapat memblokir mode ini dengan mengatur `permissions.disableBypassPermissionsMode` ke `"disable"` di [pengaturan terkelola](/id/permissions#managed-settings).288 `bypassPermissions` tidak menawarkan perlindungan terhadap injeksi prompt atau tindakan yang tidak diinginkan. Untuk pemeriksaan keamanan latar belakang tanpa prompt, gunakan [mode otomatis](#eliminate-prompts-with-auto-mode) sebagai gantinya. Administrator dapat memblokir mode ini dengan mengatur `permissions.disableBypassPermissionsMode` ke `"disable"` di [pengaturan terkelola](/id/permissions#managed-settings).

261</Warning>289</Warning>

permissions.md +5 −1

Details

28 28 

29Aturan dievaluasi secara berurutan: **deny -> ask -> allow**. Aturan pertama yang cocok menang, jadi aturan deny selalu memiliki prioritas.29Aturan dievaluasi secara berurutan: **deny -> ask -> allow**. Aturan pertama yang cocok menang, jadi aturan deny selalu memiliki prioritas.

30 30 

31<Note>

32 Aturan izin ditegakkan oleh Claude Code, bukan oleh model. Instruksi dalam prompt Anda atau `CLAUDE.md` membentuk apa yang Claude coba lakukan, tetapi mereka tidak mengubah apa yang Claude Code izinkan. Untuk memberikan atau mencabut akses, gunakan `/permissions`, aturan yang dijelaskan di sini, [mode izin](/id/permission-modes), atau [hook PreToolUse](#extend-permissions-with-hooks).

33</Note>

34 

31## Mode izin35## Mode izin

32 36 

33Claude Code mendukung beberapa mode izin yang mengontrol bagaimana alat disetujui. Lihat [Permission modes](/id/permission-modes) untuk mengetahui kapan menggunakan masing-masing. Atur `defaultMode` dalam [file pengaturan](/id/settings#settings-files) Anda:37Claude Code mendukung beberapa mode izin yang mengontrol bagaimana alat disetujui. Lihat [Permission modes](/id/permission-modes) untuk mengetahui kapan menggunakan masing-masing. Atur `defaultMode` dalam [file pengaturan](/id/settings#settings-files) Anda:


153 157 

154 * **Batasi alat jaringan Bash**: gunakan aturan deny untuk memblokir `curl`, `wget`, dan perintah serupa, kemudian gunakan alat WebFetch dengan izin `WebFetch(domain:github.com)` untuk domain yang diizinkan158 * **Batasi alat jaringan Bash**: gunakan aturan deny untuk memblokir `curl`, `wget`, dan perintah serupa, kemudian gunakan alat WebFetch dengan izin `WebFetch(domain:github.com)` untuk domain yang diizinkan

155 * **Gunakan hook PreToolUse**: implementasikan hook yang memvalidasi URL dalam perintah Bash dan memblokir domain yang tidak diizinkan159 * **Gunakan hook PreToolUse**: implementasikan hook yang memvalidasi URL dalam perintah Bash dan memblokir domain yang tidak diizinkan

156 * Menginstruksikan Claude Code tentang pola curl yang diizinkan Anda melalui CLAUDE.md160 * **Tambahkan panduan CLAUDE.md**: jelaskan pola curl yang diizinkan Anda di `CLAUDE.md`. Ini membentuk apa yang Claude coba tetapi tidak memberlakukan batas, jadi pasangkan dengan salah satu opsi di atas

157 161 

158 Perhatikan bahwa menggunakan WebFetch saja tidak mencegah akses jaringan. Jika Bash diizinkan, Claude masih dapat menggunakan `curl`, `wget`, atau alat lain untuk menjangkau URL apa pun.162 Perhatikan bahwa menggunakan WebFetch saja tidak mencegah akses jaringan. Jika Bash diizinkan, Claude masih dapat menggunakan `curl`, `wget`, atau alat lain untuk menjangkau URL apa pun.

159</Warning>163</Warning>

plugins.md +6 −0

Details

299claude --plugin-dir ./my-plugin299claude --plugin-dir ./my-plugin

300```300```

301 301 

302Flag juga menerima arsip `.zip` dari direktori plugin, yang memerlukan Claude Code v2.1.128 atau lebih baru.

303 

304```bash theme={null}

305claude --plugin-dir ./my-plugin.zip

306```

307 

302Ketika plugin `--plugin-dir` memiliki nama yang sama dengan plugin marketplace yang diinstal, salinan lokal mengambil prioritas untuk sesi itu. Ini memungkinkan Anda menguji perubahan pada plugin yang sudah Anda instal tanpa mencopot pemasangannya terlebih dahulu. Plugin marketplace yang dipaksa diaktifkan oleh managed settings adalah satu-satunya pengecualian dan tidak dapat ditimpa.308Ketika plugin `--plugin-dir` memiliki nama yang sama dengan plugin marketplace yang diinstal, salinan lokal mengambil prioritas untuk sesi itu. Ini memungkinkan Anda menguji perubahan pada plugin yang sudah Anda instal tanpa mencopot pemasangannya terlebih dahulu. Plugin marketplace yang dipaksa diaktifkan oleh managed settings adalah satu-satunya pengecualian dan tidak dapat ditimpa.

303 309 

304Saat Anda membuat perubahan pada plugin Anda, jalankan `/reload-plugins` untuk mengambil pembaruan tanpa memulai ulang. Ini memuat ulang plugins, skills, agents, hooks, plugin MCP servers, dan plugin LSP servers. Uji komponen plugin Anda:310Saat Anda membuat perubahan pada plugin Anda, jalankan `/reload-plugins` untuk mengambil pembaruan tanpa memulai ulang. Ini memuat ulang plugins, skills, agents, hooks, plugin MCP servers, dan plugin LSP servers. Uji komponen plugin Anda:

Details

97 "hooks": [97 "hooks": [

98 {98 {

99 "type": "command",99 "type": "command",

100 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format-code.sh"100 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/format-code.sh"

101 }101 }

102 ]102 ]

103 }103 }


289[289[

290 {290 {

291 "name": "deploy-status",291 "name": "deploy-status",

292 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/poll-deploy.sh ${user_config.api_endpoint}",292 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/poll-deploy.sh ${user_config.api_endpoint}",

293 "description": "Deployment status changes"293 "description": "Deployment status changes"

294 },294 },

295 {295 {


317| :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |317| :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

318| `when` | Mengontrol kapan monitor dimulai. `"always"` memulainya saat startup sesi dan pada reload plugin, dan merupakan default. `"on-skill-invoke:<skill-name>"` memulainya pertama kali skill bernama dalam plugin ini dikirim |318| `when` | Mengontrol kapan monitor dimulai. `"always"` memulainya saat startup sesi dan pada reload plugin, dan merupakan default. `"on-skill-invoke:<skill-name>"` memulainya pertama kali skill bernama dalam plugin ini dikirim |

319 319 

320Nilai `command` mendukung [substitusi variabel](#environment-variables) yang sama seperti konfigurasi MCP dan LSP server: `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}`, `${user_config.*}`, dan `${ENV_VAR}` apa pun dari lingkungan. Awali perintah dengan `cd "${CLAUDE_PLUGIN_ROOT}" && ` jika script perlu berjalan dari direktori plugin itu sendiri.320Nilai `command` mendukung [substitusi variabel](#environment-variables) yang sama seperti konfigurasi MCP dan LSP server: `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}`, `${CLAUDE_PROJECT_DIR}`, `${user_config.*}`, dan `${ENV_VAR}` apa pun dari lingkungan. Awali perintah dengan `cd "${CLAUDE_PLUGIN_ROOT}" && ` jika script perlu berjalan dari direktori plugin itu sendiri.

321 321 

322Menonaktifkan plugin di tengah sesi tidak menghentikan monitors yang sudah berjalan. Mereka berhenti saat sesi berakhir.322Menonaktifkan plugin di tengah sesi tidak menghentikan monitors yang sudah berjalan. Mereka berhenti saat sesi berakhir.

323 323 


540 540 

541### Variabel lingkungan541### Variabel lingkungan

542 542 

543Claude Code menyediakan dua variabel untuk mereferensikan jalur plugin. Keduanya disubstitusi inline di mana pun mereka muncul dalam konten skill, konten agent, perintah hook, perintah monitor, dan konfigurasi MCP atau LSP server. Keduanya juga diekspor sebagai variabel lingkungan ke proses hook dan subprocess MCP atau LSP server.543Claude Code menyediakan tiga variabel untuk mereferensikan jalur. Semuanya disubstitusi inline di mana pun mereka muncul dalam konten skill, konten agent, perintah hook, perintah monitor, dan konfigurasi MCP atau LSP server. Semuanya juga diekspor sebagai variabel lingkungan ke proses hook dan subprocess MCP atau LSP server.

544 544 

545**`${CLAUDE_PLUGIN_ROOT}`**: jalur absolut ke direktori instalasi plugin Anda. Gunakan ini untuk mereferensikan scripts, binaries, dan file konfigurasi yang disertakan dengan plugin. Jalur ini berubah saat plugin diperbarui. Direktori versi sebelumnya tetap berada di disk selama sekitar tujuh hari setelah update sebelum pembersihan, tetapi perlakukan sebagai ephemeral dan jangan tulis state di sini.545**`${CLAUDE_PLUGIN_ROOT}`**: jalur absolut ke direktori instalasi plugin Anda. Gunakan ini untuk mereferensikan scripts, binaries, dan file konfigurasi yang disertakan dengan plugin. Dalam perintah hook, gunakan [exec form](/id/hooks#exec-form-and-shell-form) dengan `args` sehingga jalur dilewatkan sebagai satu argumen tanpa quoting. Dalam hook bentuk shell dan perintah monitor, bungkus dalam tanda kutip ganda, seperti `"${CLAUDE_PLUGIN_ROOT}"`. Jalur ini berubah saat plugin diperbarui. Direktori versi sebelumnya tetap berada di disk selama sekitar tujuh hari setelah update sebelum pembersihan, tetapi perlakukan sebagai ephemeral dan jangan tulis state di sini.

546 546 

547Saat plugin diperbarui di tengah sesi, perintah hook, monitor, MCP server, dan LSP server terus menggunakan jalur versi sebelumnya. Jalankan `/reload-plugins` untuk mengalihkan hooks, MCP server, dan LSP server ke jalur baru; monitor memerlukan restart sesi.547Saat plugin diperbarui di tengah sesi, perintah hook, monitor, MCP server, dan LSP server terus menggunakan jalur versi sebelumnya. Jalankan `/reload-plugins` untuk mengalihkan hooks, MCP server, dan LSP server ke jalur baru; monitor memerlukan restart sesi.

548 548 

549**`${CLAUDE_PLUGIN_DATA}`**: direktori persisten untuk state plugin yang bertahan setelah updates. Gunakan ini untuk dependensi yang dipasang seperti `node_modules` atau Python virtual environments, kode yang dihasilkan, caches, dan file lainnya yang harus bertahan di seluruh versi plugin. Direktori dibuat secara otomatis pertama kali variabel ini direferensikan.549**`${CLAUDE_PLUGIN_DATA}`**: direktori persisten untuk state plugin yang bertahan setelah updates. Gunakan ini untuk dependensi yang dipasang seperti `node_modules` atau Python virtual environments, kode yang dihasilkan, caches, dan file lainnya yang harus bertahan di seluruh versi plugin. Direktori dibuat secara otomatis pertama kali variabel ini direferensikan.

550 550 

551**`${CLAUDE_PROJECT_DIR}`**: root proyek. Ini adalah direktori yang sama yang diterima hooks di variabel `CLAUDE_PROJECT_DIR` mereka. Gunakan ini untuk mereferensikan scripts atau file konfigurasi lokal proyek. Bungkus dalam tanda kutip untuk menangani jalur dengan spasi, misalnya `"${CLAUDE_PROJECT_DIR}/scripts/server.sh"`. MCP server juga dapat memanggil permintaan MCP `roots/list`, yang mengembalikan direktori tempat Claude Code diluncurkan.

552 

551```json theme={null}553```json theme={null}

552{554{

553 "hooks": {555 "hooks": {


556 "hooks": [558 "hooks": [

557 {559 {

558 "type": "command",560 "type": "command",

559 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/process.sh"561 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/process.sh"

560 }562 }

561 ]563 ]

562 }564 }


629 631 

630Plugin yang dipasang tidak dapat mereferensikan file di luar direktorinya. Jalur yang melintasi di luar root plugin (seperti `../shared-utils`) tidak akan berfungsi setelah instalasi karena file eksternal tersebut tidak disalin ke cache.632Plugin yang dipasang tidak dapat mereferensikan file di luar direktorinya. Jalur yang melintasi di luar root plugin (seperti `../shared-utils`) tidak akan berfungsi setelah instalasi karena file eksternal tersebut tidak disalin ke cache.

631 633 

632### Bekerja dengan dependensi eksternal634### Bagikan file dalam marketplace dengan symlinks

635 

636Jika plugin Anda perlu berbagi file dengan bagian lain dari marketplace yang sama, Anda dapat membuat symbolic links di dalam direktori plugin Anda. Cara symlink ditangani saat plugin disalin ke cache tergantung pada di mana targetnya diselesaikan:

637 

638* **Dalam direktori plugin itu sendiri:** symlink dipertahankan sebagai symlink relatif dalam cache, sehingga terus diselesaikan ke target yang disalin saat runtime.

639* **Di tempat lain dalam marketplace yang sama:** symlink didereferensikan. Konten target disalin ke cache di tempatnya. Ini memungkinkan direktori `skills/` meta-plugin untuk menghubungkan ke skills yang ditentukan oleh plugins lain dalam marketplace.

640* **Di luar marketplace:** symlink dilewati untuk keamanan. Ini mencegah plugins dari menarik file host arbitrer seperti jalur sistem ke dalam cache.

633 641 

634Jika plugin Anda perlu mengakses file di luar direktorinya, Anda dapat membuat symbolic links ke file eksternal dalam direktori plugin Anda. Symlinks dipertahankan dalam cache daripada didereferensikan, dan mereka diselesaikan ke target mereka saat runtime. Perintah berikut membuat link dari dalam direktori plugin Anda ke lokasi utilitas bersama:642Untuk plugins yang dipasang dengan `--plugin-dir` atau dari jalur lokal, hanya symlinks yang diselesaikan dalam direktori plugin itu sendiri yang dipertahankan. Semua yang lain dilewati.

643 

644Perintah berikut membuat link dari dalam plugin marketplace ke skill bersama yang ditentukan oleh plugin sibling. Di Windows, gunakan `mklink /D` dari Command Prompt yang ditingkatkan atau aktifkan Developer Mode:

635 645 

636```bash theme={null}646```bash theme={null}

637ln -s /path/to/shared-utils ./shared-utils647ln -s ../../shared-plugin/skills/foo ./skills/foo

638```648```

639 649 

640Ini memberikan fleksibilitas sambil mempertahankan manfaat keamanan dari sistem caching.650Ini memberikan fleksibilitas sambil mempertahankan manfaat keamanan dari sistem caching.


875| `--available` | Sertakan plugin yang tersedia dari marketplace. Memerlukan `--json` | |885| `--available` | Sertakan plugin yang tersedia dari marketplace. Memerlukan `--json` | |

876| `-h, --help` | Tampilkan bantuan untuk perintah | |886| `-h, --help` | Tampilkan bantuan untuk perintah | |

877 887 

888### plugin details

889 

890Tampilkan inventaris komponen plugin dan perkiraan biaya token. Output mencantumkan semua komponen yang disumbangkan plugin, dikelompokkan sebagai Skills (skills dan commands), Agents, Hooks, dan MCP servers, bersama dengan perkiraan berapa banyak token yang ditambahkannya ke setiap sesi.

891 

892```bash theme={null}

893claude plugin details <name>

894```

895 

896**Argumen:**

897 

898* `<name>`: Nama plugin atau `plugin-name@marketplace-name`

899 

900**Opsi:**

901 

902| Opsi | Deskripsi | Default |

903| :----------- | :------------------------------- | :------ |

904| `-h, --help` | Tampilkan bantuan untuk perintah | |

905 

906Output menampilkan dua angka biaya untuk setiap komponen:

907 

908* **Always-on:** token yang ditambahkan ke setiap sesi oleh teks daftar plugin, seperti deskripsi skill, deskripsi agent, dan nama perintah, terlepas dari apakah ada komponen yang diaktifkan.

909* **On-invoke:** token yang dihabiskan komponen saat diaktifkan. Ditampilkan per komponen, bukan sebagai total plugin, karena sesi khas hanya mengaktifkan subset komponen.

910 

911Contoh ini menunjukkan seperti apa output untuk plugin dengan dua skill:

912 

913```

914security-guidance 1.2.0

915 Real-time security analysis for Claude Code sessions

916 Source: security-guidance@claude-code-marketplace

917 

918Component inventory

919 Skills (2) scan-dependencies, review-changes

920 Agents (0)

921 Hooks (1) (harness-only — no model context cost)

922 MCP servers (0)

923 

924Projected token cost

925 Always-on: ~180 tok added to every session

926 

927Per-component (rounded)

928 component always-on on-invoke

929 scan-dependencies ~100 ~2400

930 review-changes ~80 ~1800

931 

932 On-invoke cost is paid each time a skill or agent fires.

933 Token counts are estimates and may differ from actual usage.

934```

935 

936Total always-on dihitung melalui API `count_tokens` untuk model aktif Anda. Angka per-komponen diskalakan secara proporsional dari total tersebut. Jika API tidak dapat dijangkau, perintah kembali ke perkiraan berbasis karakter.

937 

878### plugin tag938### plugin tag

879 939 

880Buat tag rilis git untuk plugin di direktori saat ini. Jalankan dari dalam folder plugin. Lihat [Tag plugin releases](/id/plugin-dependencies#tag-plugin-releases-for-version-resolution).940Buat tag rilis git untuk plugin di direktori saat ini. Jalankan dari dalam folder plugin. Lihat [Tag plugin releases](/id/plugin-dependencies#tag-plugin-releases-for-version-resolution).

quickstart.md +2 −2

Details

307 </Accordion>307 </Accordion>

308 308 

309 <Accordion title="Hemat waktu dengan pintasan keyboard">309 <Accordion title="Hemat waktu dengan pintasan keyboard">

310 * Tekan `?` untuk melihat semua pintasan keyboard yang tersedia310 * Tekan `/` untuk melihat semua perintah dan skills

311 * Gunakan Tab untuk penyelesaian perintah311 * Gunakan Tab untuk penyelesaian perintah

312 * Tekan ↑ untuk riwayat perintah312 * Tekan ↑ untuk riwayat perintah

313 * Ketik `/` untuk melihat semua perintah dan skills313 * Tekan `Shift+Tab` untuk mengubah mode izin

314 </Accordion>314 </Accordion>

315</AccordionGroup>315</AccordionGroup>

316 316 

routines.md +2 −0

Details

318 318 

319Rutinitas dapat menggunakan konektor MCP yang terhubung untuk membaca dari dan menulis ke layanan eksternal selama setiap jalankan. Misalnya, rutinitas yang melakukan triase permintaan dukungan mungkin membaca dari saluran Slack dan membuat masalah di Linear.319Rutinitas dapat menggunakan konektor MCP yang terhubung untuk membaca dari dan menulis ke layanan eksternal selama setiap jalankan. Misalnya, rutinitas yang melakukan triase permintaan dukungan mungkin membaca dari saluran Slack dan membuat masalah di Linear.

320 320 

321Konektor adalah [integrasi claude.ai](/id/mcp#use-mcp-servers-from-claude-ai) di akun Anda. Server MCP yang Anda tambahkan secara lokal di CLI dengan `claude mcp add` disimpan di mesin Anda daripada akun claude.ai Anda, jadi mereka tidak muncul dalam daftar konektor. Untuk menggunakan salah satu server tersebut dalam rutinitas, tambahkan sebagai konektor di [claude.ai/customize/connectors](https://claude.ai/customize/connectors), atau deklarasikan dalam [`.mcp.json`](/id/mcp#project-scope) yang berkomitmen sehingga itu adalah bagian dari repositori yang diklon.

322 

321Ketika Anda membuat rutinitas, semua konektor yang saat ini terhubung disertakan secara default. Hapus yang tidak diperlukan untuk membatasi alat mana yang dapat diakses Claude selama jalankan. Anda juga dapat menambahkan konektor langsung dari formulir rutinitas.323Ketika Anda membuat rutinitas, semua konektor yang saat ini terhubung disertakan secara default. Hapus yang tidak diperlukan untuk membatasi alat mana yang dapat diakses Claude selama jalankan. Anda juga dapat menambahkan konektor langsung dari formulir rutinitas.

322 324 

323Untuk mengelola atau menambahkan konektor di luar formulir rutinitas, kunjungi **Settings > Connectors** di claude.ai atau gunakan `/schedule update` di CLI.325Untuk mengelola atau menambahkan konektor di luar formulir rutinitas, kunjungi **Settings > Connectors** di claude.ai atau gunakan `/schedule update` di CLI.

security.md +1 −1

Details

87 87 

88Claude Code memungkinkan pengguna untuk mengonfigurasi server Model Context Protocol (MCP). Daftar server MCP yang diizinkan dikonfigurasi dalam kode sumber Anda, sebagai bagian dari pengaturan Claude Code yang diperiksa insinyur ke dalam kontrol sumber.88Claude Code memungkinkan pengguna untuk mengonfigurasi server Model Context Protocol (MCP). Daftar server MCP yang diizinkan dikonfigurasi dalam kode sumber Anda, sebagai bagian dari pengaturan Claude Code yang diperiksa insinyur ke dalam kontrol sumber.

89 89 

90Kami mendorong untuk menulis server MCP Anda sendiri atau menggunakan server MCP dari penyedia yang Anda percayai. Anda dapat mengonfigurasi izin Claude Code untuk server MCP. Anthropic tidak mengelola atau mengaudit server MCP apa pun.90Kami mendorong untuk menulis server MCP Anda sendiri atau menggunakan server MCP dari penyedia yang Anda percayai. Anda dapat mengonfigurasi izin Claude Code untuk server MCP. Anthropic meninjau konektor terhadap [kriteria pendaftarannya](https://claude.com/docs/connectors/building/review-criteria) sebelum menambahkannya ke [Direktori Anthropic](https://claude.ai/directory), tetapi tidak melakukan audit keamanan atau mengelola server MCP apa pun.

91 91 

92## Keamanan IDE92## Keamanan IDE

93 93 

settings.md +3 −1

Details

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| `claudeMd` | (Pengaturan yang dikelola saja) Instruksi gaya CLAUDE.md yang disuntikkan sebagai memori yang dikelola organisasi. Hanya dihormati saat diatur dalam pengaturan yang dikelola atau kebijakan dan diabaikan dalam pengaturan pengguna, proyek, dan lokal. Lihat [CLAUDE.md di seluruh organisasi](/id/memory#deploy-organization-wide-claude-md) | `"Always run make lint before committing."` |

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"]` |182| `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"]` |

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

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"]` |184| `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"]` |


253</Note>254</Note>

254 255 

255| Kunci | Deskripsi | Contoh |256| Kunci | Deskripsi | Contoh |

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

257| `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` |258| `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` |

258| `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` |259| `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` |

259| `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` |260| `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` |

261| `teammateDefaultModel` | Model default untuk [agent team](/id/agent-teams) teammates saat prompt spawn tidak menentukan satu. Atur ke alias model seperti `"sonnet"`, atau `null` untuk mewarisi pemilihan `/model` saat ini lead. Muncul di `/config` sebagai **Default teammate model** | `"sonnet"` |

260 262 

261### Pengaturan worktree263### Pengaturan worktree

262 264 

vs-code.md +4 −2

Details

233</Note>233</Note>

234 234 

235| Perintah | Pintasan | Deskripsi |235| Perintah | Pintasan | Deskripsi |

236| -------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |236| -------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

237| Focus Input | `Cmd+Esc` (Mac) / `Ctrl+Esc` (Windows/Linux) | Alihkan fokus antara editor dan Claude |237| Focus Input | `Cmd+Esc` (Mac) / `Ctrl+Esc` (Windows/Linux) | Alihkan fokus antara editor dan Claude |

238| Open in Side Bar | - | Buka Claude di sidebar kiri |238| Open in Side Bar | - | Buka Claude di sidebar kiri |

239| Open in Terminal | - | Buka Claude dalam mode terminal |239| Open in Terminal | - | Buka Claude dalam mode terminal |

240| Open in New Tab | `Cmd+Shift+Esc` (Mac) / `Ctrl+Shift+Esc` (Windows/Linux) | Buka percakapan baru sebagai tab editor |240| Open in New Tab | `Cmd+Shift+Esc` (Mac) / `Ctrl+Shift+Esc` (Windows/Linux) | Buka percakapan baru sebagai tab editor |

241| Open in New Window | - | Buka percakapan baru di jendela terpisah |241| Open in New Window | - | Buka percakapan baru di jendela terpisah |

242| New Conversation | `Cmd+N` (Mac) / `Ctrl+N` (Windows/Linux) | Mulai percakapan baru. Memerlukan Claude difokuskan dan `enableNewConversationShortcut` diatur ke `true` |242| New Conversation | `Cmd+N` (Mac) / `Ctrl+N` (Windows/Linux) | Mulai percakapan baru. Memerlukan Claude difokuskan dan `enableNewConversationShortcut` diatur ke `true` |

243| Reopen Closed Session | `Cmd+Shift+T` (Mac) / `Ctrl+Shift+T` (Windows/Linux) | Buka kembali tab sesi Claude yang paling baru ditutup. Jatuh kembali ke pembukaan ulang editor normal VS Code ketika tab terakhir yang ditutup bukan sesi Claude. Nonaktifkan dengan `enableReopenClosedSessionShortcut` |

243| Insert @-Mention Reference | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | Sisipkan referensi ke file saat ini dan pilihan (memerlukan editor difokuskan) |244| Insert @-Mention Reference | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | Sisipkan referensi ke file saat ini dan pilihan (memerlukan editor difokuskan) |

244| Show Logs | - | Lihat log debug ekstensi |245| Show Logs | - | Lihat log debug ekstensi |

245| Logout | - | Keluar dari akun Anthropic Anda |246| Logout | - | Keluar dari akun Anthropic Anda |


307### Pengaturan ekstensi308### Pengaturan ekstensi

308 309 

309| Pengaturan | Default | Deskripsi |310| Pengaturan | Default | Deskripsi |

310| --------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |311| ----------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

311| `useTerminal` | `false` | Luncurkan Claude dalam mode terminal alih-alih panel grafis |312| `useTerminal` | `false` | Luncurkan Claude dalam mode terminal alih-alih panel grafis |

312| `initialPermissionMode` | `default` | Mengontrol prompt persetujuan untuk percakapan baru: `default`, `plan`, `acceptEdits`, atau `bypassPermissions`. Lihat [permission modes](/id/permission-modes). |313| `initialPermissionMode` | `default` | Mengontrol prompt persetujuan untuk percakapan baru: `default`, `plan`, `acceptEdits`, atau `bypassPermissions`. Lihat [permission modes](/id/permission-modes). |

313| `preferredLocation` | `panel` | Di mana Claude terbuka: `sidebar` (kanan) atau `panel` (tab baru) |314| `preferredLocation` | `panel` | Di mana Claude terbuka: `sidebar` (kanan) atau `panel` (tab baru) |

314| `autosave` | `true` | Auto-save file sebelum Claude membaca atau menulisnya |315| `autosave` | `true` | Auto-save file sebelum Claude membaca atau menulisnya |

315| `useCtrlEnterToSend` | `false` | Gunakan Ctrl/Cmd+Enter alih-alih Enter untuk mengirim prompt |316| `useCtrlEnterToSend` | `false` | Gunakan Ctrl/Cmd+Enter alih-alih Enter untuk mengirim prompt |

316| `enableNewConversationShortcut` | `false` | Aktifkan Cmd/Ctrl+N untuk memulai percakapan baru |317| `enableNewConversationShortcut` | `false` | Aktifkan Cmd/Ctrl+N untuk memulai percakapan baru |

318| `enableReopenClosedSessionShortcut` | `true` | Gunakan Cmd/Ctrl+Shift+T untuk membuka kembali tab sesi Claude yang paling baru ditutup. Ketika tab terakhir yang ditutup bukan sesi Claude, pintasan keyboard menjalankan perintah reopen-closed-editor normal VS Code sebagai gantinya. |

317| `hideOnboarding` | `false` | Sembunyikan daftar periksa onboarding (ikon graduation cap) |319| `hideOnboarding` | `false` | Sembunyikan daftar periksa onboarding (ikon graduation cap) |

318| `respectGitIgnore` | `true` | Kecualikan pola .gitignore dari pencarian file |320| `respectGitIgnore` | `true` | Kecualikan pola .gitignore dari pencarian file |

319| `usePythonEnvironment` | `true` | Aktifkan lingkungan Python workspace saat menjalankan Claude. Memerlukan ekstensi Python. |321| `usePythonEnvironment` | `true` | Aktifkan lingkungan Python workspace saat menjalankan Claude. Memerlukan ekstensi Python. |