SpyBara
Go Premium

Documentation 2026-09-13 21:00 UTC to 2026-09-14 22:58 UTC

50 files changed +520 −410. View all changes and history on the product overview
2026
Fri 25 23:58 Thu 24 22:57 Wed 23 23:57 Tue 22 23:59 Mon 21 22:59 Sun 20 23:59 Sat 19 23:57 Fri 18 23:58 Tue 15 23:58 Mon 14 22:58 Sun 13 21:00 Sat 12 03:02 Thu 10 23:00 Wed 9 22:58 Tue 8 20:00 Tue 1 21:02

admin-setup.md +1 −3

Details

83Setelah sesi WSL diaktifkan, perluas pengaturan terkelola Anda ke mereka:83Setelah sesi WSL diaktifkan, perluas pengaturan terkelola Anda ke mereka:

84 84 

85* Terapkan `wslInheritsWindowsSettings: true` melalui registry HKLM atau file `C:\Program Files\ClaudeCode` sehingga sesi WSL mewarisi kebijakan yang sama dengan sesi host.85* Terapkan `wslInheritsWindowsSettings: true` melalui registry HKLM atau file `C:\Program Files\ClaudeCode` sehingga sesi WSL mewarisi kebijakan yang sama dengan sesi host.

86* Verifikasi dengan menjalankan `/status` di dalam sesi WSL dan membaca baris `Setting sources`. Claude Code hanya menamai [sumber terkelola yang dipilihnya](/docs/id/server-managed-settings#settings-precedence), jadi apa yang diberitahukan baris kepada Anda tergantung pada sesi:86* Verifikasi dengan menjalankan `/status` di dalam sesi WSL dan membaca baris `Setting sources`. Untuk menginterpretasikan apa yang ditampilkannya, lihat [Baca sumber dalam /status](/docs/id/managed-settings#read-the-source-in-/status).

87 * **Dalam sesi yang [mengambil pengaturan terkelola server](/docs/id/server-managed-settings#platform-availability) dan menerima kunci apa pun**: `Enterprise managed settings (remote)`, karena Claude Code memilihnya di depan sumber Windows, jadi baris tidak menunjukkan apakah bendera tiba.

88 * **Dalam sesi lain apa pun**: `Enterprise managed settings (HKLM)` mengonfirmasi penerapan registry. `(file)` menamai file Windows atau `/etc/claude-code/managed-settings.json` distribusi sendiri, jadi mengonfirmasi penerapan file Windows hanya ketika distribusi tidak memiliki file terkelola sendiri.

89 87 

90Proses di dalam VM utilitas WSL 2 tidak terlihat oleh sensor deteksi endpoint sisi Windows. Untuk mengamati aktivitas proses dan file dalam-distro, periksa panduan WSL vendor deteksi endpoint Anda untuk sensor Linux yang dapat Anda jalankan di dalam distribusi dan pengecualian yang diperlukannya. [Telemetri eksekusi alat OpenTelemetry](/docs/id/monitoring-usage) Claude Code dipancarkan secara identik untuk sesi WSL dan native.88Proses di dalam VM utilitas WSL 2 tidak terlihat oleh sensor deteksi endpoint sisi Windows. Untuk mengamati aktivitas proses dan file dalam-distro, periksa panduan WSL vendor deteksi endpoint Anda untuk sensor Linux yang dapat Anda jalankan di dalam distribusi dan pengecualian yang diperlukannya. [Telemetri eksekusi alat OpenTelemetry](/docs/id/monitoring-usage) Claude Code dipancarkan secara identik untuk sesi WSL dan native.

91 89 

advisor.md +10 −7

Details

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

99 99 

100| Model utama | Advisor yang diterima | Catatan |100| Model utama | Advisor yang diterima | Catatan |

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

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

103| Sonnet 4.6 | Fable, Opus, Sonnet | |103| Sonnet 4.6 | Fable, Opus, Sonnet | |

104| Sonnet 5 | Fable, Opus, Sonnet 5 | Advisor Sonnet 4.6 ditolak |104| Sonnet 5 | Fable, Opus 4.7 atau lebih baru, Sonnet 5 | Advisor Sonnet 4.6 ditolak, dan permintaan dengan advisor Opus 4.6 gagal dengan kesalahan API |

105| Opus 4.6 | Fable, Opus, Sonnet 5 | Sonnet 5 dan Opus 4.6 diperingkat sebagai sama mampu, jadi Opus 4.6 utama menerima advisor Sonnet 5 |105| Opus 4.6 | Fable, Opus, Sonnet 5 | Advisor Sonnet 4.6 ditolak |

106| Opus 4.7 atau lebih baru | Fable, dan Opus 4.7 atau lebih baru | Opus 4.7 dan model Opus yang lebih baru diperingkat sebagai sama mampu, jadi salah satu dari mereka menerima yang lain sebagai advisor. Opus 4.7 utama dengan advisor Opus 4.6 atau Sonnet 5 ditolak |106| Opus 4.7 atau Opus 4.8 | Fable, dan Opus 4.7 atau lebih baru | Advisor Opus 4.6 atau Sonnet ditolak |

107| Fable 5.1 atau Fable 5 | Fable 5.1 atau Fable 5 | Advisor Opus atau Sonnet ditolak |107| Opus 5 | Fable, Opus 5 | Advisor Opus 4.6 atau Sonnet ditolak, dan permintaan dengan advisor Opus 4.7 atau Opus 4.8 gagal dengan kesalahan API |

108| Fable 5 | Fable 5.1 atau Fable 5 | Advisor Opus atau Sonnet ditolak |

109| Fable 5.1 | Fable 5.1 | Advisor Opus atau Sonnet ditolak, dan permintaan dengan advisor Fable 5 gagal dengan kesalahan API |

108 110 

109Fable 5.1 memerlukan Claude Code v2.1.257 atau lebih baru. Kedua model Fable memerlukan [akses Fable](/docs/id/model-config#work-with-fable).111Fable 5.1 memerlukan Claude Code v2.1.257 atau lebih baru. Kedua model Fable memerlukan [akses Fable](/docs/id/model-config#work-with-fable).

110 112 


112 114 

113Subagent mewarisi advisor yang dikonfigurasi dan menerapkan pemeriksaan pasangan yang sama terhadap model mereka sendiri.115Subagent mewarisi advisor yang dikonfigurasi dan menerapkan pemeriksaan pasangan yang sama terhadap model mereka sendiri.

114 116 

115Claude Code memvalidasi pasangan sebelum mengirim permintaan:117Claude Code memvalidasi pasangan sebelum mengirim permintaan, dan API memvalidasinya lagi:

116 118 

117* Jika advisor kurang mampu daripada model utama, advisor tidak dilampirkan ke permintaan model utama. Output perintah `/advisor` dan notifikasi menunjukkan hal ini. Subagent yang model mereka sendiri memenuhi pasangan mungkin masih menggunakan advisor.119* Untuk advisor yang tabel cantumkan sebagai ditolak, Claude Code tidak melampirkannya ke permintaan model utama. Output perintah `/advisor` dan notifikasi menunjukkan hal ini. Subagent yang model mereka sendiri memenuhi pasangan mungkin masih menggunakan advisor.

120* Untuk advisor yang tabel cantumkan sebagai gagal dengan kesalahan API, Claude Code melampirkannya dan API menolaknya. Setiap permintaan gagal dengan `'<advisor model>' tidak dapat digunakan sebagai advisor ketika model permintaan adalah '<main model>'` sampai Anda mengubah advisor dengan `/advisor` atau mematikannya.

118* Jika model utama atau advisor adalah model yang Claude Code tidak kenali, advisor tidak dilampirkan.121* Jika model utama atau advisor adalah model yang Claude Code tidak kenali, advisor tidak dilampirkan.

119 122 

120<h3 id="fable-advisor-and-usage-credits">123<h3 id="fable-advisor-and-usage-credits">

Details

62 * `"init"`: session metadata untuk run. Ketika hook `SessionStart` atau `Setup` berjalan selama session startup, [hook lifecycle messages](/docs/id/agent-sdk/typescript#sdkhookstartedmessage) tiba sebelum message `init`62 * `"init"`: session metadata untuk run. Ketika hook `SessionStart` atau `Setup` berjalan selama session startup, [hook lifecycle messages](/docs/id/agent-sdk/typescript#sdkhookstartedmessage) tiba sebelum message `init`

63 * `"compact_boundary"`: menyala setelah [compaction](#automatic-compaction)63 * `"compact_boundary"`: menyala setelah [compaction](#automatic-compaction)

64 * `"informational"`: plain-text status banners dari loop64 * `"informational"`: plain-text status banners dari loop

65 * `"worker_shutting_down"`: loop akan berakhir setelah turn saat ini karena host sedang keluar atau Remote Control terputus65 * `"worker_shutting_down"`: host sedang keluar atau Remote Control terputus

66 66 

67 Di TypeScript, setiap subtype selain `"init"` adalah tipenya sendiri dalam union [`SDKMessage`](/docs/id/agent-sdk/typescript#sdkmessage) daripada subtype dari `SDKSystemMessage`.67 Di TypeScript, setiap subtype selain `"init"` adalah tipenya sendiri dalam union [`SDKMessage`](/docs/id/agent-sdk/typescript#sdkmessage) daripada subtype dari `SDKSystemMessage`.

68* **`AssistantMessage`:** dipancarkan untuk setiap content block dalam respons Claude, termasuk yang hanya teks final. Masing-masing membawa satu content block, seperti text atau tool call, dan messages dari satu respons berbagi message ID.68* **`AssistantMessage`:** dipancarkan untuk setiap content block dalam respons Claude, termasuk yang hanya teks final. Masing-masing membawa satu content block, seperti text atau tool call, dan messages dari satu respons berbagi message ID.


238| `"xhigh"` | Extended reasoning depth | Coding dan agentic tasks pada [models yang mendukungnya](/docs/id/model-config#adjust-effort-level) |238| `"xhigh"` | Extended reasoning depth | Coding dan agentic tasks pada [models yang mendukungnya](/docs/id/model-config#adjust-effort-level) |

239| `"max"` | Maximum reasoning depth | Multi-step problems memerlukan deep analysis |239| `"max"` | Maximum reasoning depth | Multi-step problems memerlukan deep analysis |

240 240 

241Jika Anda tidak set `effort`, kedua SDKs membiarkan parameter unset dan menunda ke model's default behavior.241Jika Anda tidak set `effort`, Claude Code menyelesaikan effort level itu sendiri, dalam urutan yang dijelaskan [Adjust effort level](/docs/id/model-config#adjust-effort-level).

242 242 

243<Note>243<Note>

244 `effort` trades latency dan token cost untuk reasoning depth dalam setiap respons. [Extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) adalah fitur terpisah yang menghasilkan `thinking` blocks dalam output, dan field `display` pada `ThinkingConfig` untuk [Python](/docs/id/agent-sdk/python#thinkingconfig) atau [TypeScript](/docs/id/agent-sdk/typescript#thinkingconfig) mengontrol apakah Anda menerima text mereka. Mereka independen: Anda dapat set `effort: "low"` dengan extended thinking diaktifkan, atau `effort: "max"` tanpanya.244 `effort` trades latency dan token cost untuk reasoning depth dalam setiap respons. [Extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) adalah fitur terpisah yang menghasilkan `thinking` blocks dalam output, dan field `display` pada `ThinkingConfig` untuk [Python](/docs/id/agent-sdk/python#thinkingconfig) atau [TypeScript](/docs/id/agent-sdk/typescript#thinkingconfig) mengontrol apakah Anda menerima text mereka. Mereka independen: Anda dapat set `effort: "low"` dengan extended thinking diaktifkan, atau `effort: "max"` tanpanya.


357| `success` | Claude menyelesaikan tugas secara normal | Ya |357| `success` | Claude menyelesaikan tugas secara normal | Ya |

358| `error_max_turns` | Mencapai batas `maxTurns` sebelum selesai | Tidak |358| `error_max_turns` | Mencapai batas `maxTurns` sebelum selesai | Tidak |

359| `error_max_budget_usd` | Mencapai batas `maxBudgetUsd` sebelum selesai | Tidak |359| `error_max_budget_usd` | Mencapai batas `maxBudgetUsd` sebelum selesai | Tidak |

360| `error_during_execution` | Error mengganggu loop (misalnya, API failure atau cancelled request) | Tidak |360| `error_during_execution` | Sebuah error mengganggu loop (misalnya, permintaan yang dibatalkan) | Tidak |

361| `error_max_structured_output_retries` | Tidak ada structured output yang valid diproduksi dalam configured retry limit: setiap upaya gagal validation, atau model fallback mencabut output yang sudah selesai tanpa successful retry | Tidak |361| `error_max_structured_output_retries` | Tidak ada structured output yang valid diproduksi dalam configured retry limit: setiap upaya gagal validation, atau model fallback mencabut output yang sudah selesai tanpa successful retry | Tidak |

362 362 

363Field `result` menyimpan final text output dan hanya present pada variant `success`, jadi selalu periksa subtype sebelum membacanya.363Field `result` menyimpan final text output dan hanya present pada variant `success`, jadi selalu periksa subtype sebelum membacanya.

Details

196* **Filesystem hooks:** perintah shell yang didefinisikan di `settings.json`, dimuat ketika `settingSources` mencakup sumber yang relevan. Ini adalah hooks yang sama yang akan Anda konfigurasi untuk [sesi Claude Code interaktif](/docs/id/hooks-guide).196* **Filesystem hooks:** perintah shell yang didefinisikan di `settings.json`, dimuat ketika `settingSources` mencakup sumber yang relevan. Ini adalah hooks yang sama yang akan Anda konfigurasi untuk [sesi Claude Code interaktif](/docs/id/hooks-guide).

197* **Programmatic hooks:** fungsi callback yang diteruskan langsung ke `query()`. Ini berjalan dalam proses aplikasi Anda dan dapat mengembalikan keputusan terstruktur. Lihat [Kontrol eksekusi dengan hooks](/docs/id/agent-sdk/hooks).197* **Programmatic hooks:** fungsi callback yang diteruskan langsung ke `query()`. Ini berjalan dalam proses aplikasi Anda dan dapat mengembalikan keputusan terstruktur. Lihat [Kontrol eksekusi dengan hooks](/docs/id/agent-sdk/hooks).

198 198 

199Kedua tipe berjalan selama siklus hidup hook yang sama. Jika Anda sudah memiliki hooks di `.claude/settings.json` proyek Anda dan Anda menetapkan `settingSources: ["project"]`, hooks tersebut berjalan secara otomatis di SDK tanpa konfigurasi tambahan.

200 

201Callback hook menerima input tool dan mengembalikan dict keputusan. Mengembalikan `{}` berarti izinkan tool untuk melanjutkan. Untuk memblokir eksekusi, kembalikan objek `hookSpecificOutput` dengan `permissionDecision: "deny"` dan `permissionDecisionReason`. Alasan dikirim ke Claude sebagai hasil tool. Lihat [panduan hooks](/docs/id/agent-sdk/hooks) untuk tanda tangan callback lengkap dan tipe pengembalian.199Callback hook menerima input tool dan mengembalikan dict keputusan. Mengembalikan `{}` berarti izinkan tool untuk melanjutkan. Untuk memblokir eksekusi, kembalikan objek `hookSpecificOutput` dengan `permissionDecision: "deny"` dan `permissionDecisionReason`. Alasan dikirim ke Claude sebagai hasil tool. Lihat [panduan hooks](/docs/id/agent-sdk/hooks) untuk tanda tangan callback lengkap dan tipe pengembalian.

202 200 

203<CodeGroup>201<CodeGroup>

Details

589 Buat HTTP requests dari hooks589 Buat HTTP requests dari hooks

590</h3>590</h3>

591 591 

592Hooks dapat melakukan operasi asynchronous seperti HTTP requests. Tangkap errors di dalam hook Anda daripada membiarkan mereka menyebar, karena exception yang tidak ditangani dapat mengganggu agent.592Hooks dapat melakukan operasi asynchronous seperti HTTP requests. Tangkap errors di dalam hook Anda daripada membiarkan mereka menyebar.

593 593 

594Contoh ini mengirim webhook setelah setiap tool selesai, mencatat tool mana yang berjalan dan kapan. Hook menangkap errors sehingga webhook yang gagal tidak mengganggu agent:594Contoh ini mengirim webhook setelah setiap tool selesai, mencatat tool mana yang berjalan dan kapan. Hook menangkap errors dari webhook yang gagal:

595 595 

596<CodeGroup>596<CodeGroup>

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


627 # Run the blocking HTTP call in a thread to avoid blocking the event loop627 # Run the blocking HTTP call in a thread to avoid blocking the event loop

628 await asyncio.to_thread(_send_webhook, input_data["tool_name"])628 await asyncio.to_thread(_send_webhook, input_data["tool_name"])

629 except Exception as e:629 except Exception as e:

630 # Log the error but don't raise. A failed webhook shouldn't stop the agent630 # Log the error but don't raise

631 print(f"Webhook request failed: {e}")631 print(f"Webhook request failed: {e}")

632 632 

633 return {}633 return {}


656 if (error instanceof Error && error.name === "AbortError") {656 if (error instanceof Error && error.name === "AbortError") {

657 console.log("Webhook request cancelled");657 console.log("Webhook request cancelled");

658 }658 }

659 // Don't re-throw. A failed webhook shouldn't stop the agent659 // Don't re-throw

660 }660 }

661 661 

662 return {};662 return {};


901 901 

902Hook `UserPromptSubmit` yang spawns subagents dapat membuat infinite loops jika subagents tersebut memicu hook yang sama. Untuk mencegah ini:902Hook `UserPromptSubmit` yang spawns subagents dapat membuat infinite loops jika subagents tersebut memicu hook yang sama. Untuk mencegah ini:

903 903 

904* Periksa indikator subagent di hook input sebelum spawning

905* Gunakan shared variable atau session state untuk track apakah Anda sudah berada di dalam subagent904* Gunakan shared variable atau session state untuk track apakah Anda sudah berada di dalam subagent

906* Scope hooks untuk hanya berjalan untuk sesi top-level agent905* Scope hooks untuk hanya berjalan untuk sesi top-level agent

907 906 

Details

162| :---------------------------------------------------------------------------------------------------- | :------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------- |162| :---------------------------------------------------------------------------------------------------- | :------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------- |

163| Server stdio, atau server HTTP/SSE tanpa daftar alat yang di-cache | Ya, sampai terhubung | [`MCP_TIMEOUT`](/docs/id/env-vars), 30 detik secara default; koneksi gagal pada batas waktu tersebut |163| Server stdio, atau server HTTP/SSE tanpa daftar alat yang di-cache | Ya, sampai terhubung | [`MCP_TIMEOUT`](/docs/id/env-vars), 30 detik secara default; koneksi gagal pada batas waktu tersebut |

164| Server jarak jauh dengan daftar alat yang di-cache, disimpan oleh Claude Code dari koneksi sebelumnya | Tidak; alat yang di-cache tersedia dari putaran pertama | Tidak ada; terhubung pada panggilan alat pertamanya, dan koneksi tertunda tersebut memiliki batas waktu sendiri |164| Server jarak jauh dengan daftar alat yang di-cache, disimpan oleh Claude Code dari koneksi sebelumnya | Tidak; alat yang di-cache tersedia dari putaran pertama | Tidak ada; terhubung pada panggilan alat pertamanya, dan koneksi tertunda tersebut memiliki batas waktu sendiri |

165| Server [SDK](#sdk-mcp-servers) dalam proses | Tidak; tidak pernah menunda putaran pertama | Tidak ada |165| Server [SDK](#sdk-mcp-servers) dalam proses | Ya, sampai terhubung dan mencantumkan alatnya | Tidak ada; permintaan koneksi dan pencantuman alat masing-masing memiliki batas waktu sendiri |

166 166 

167Untuk memblokir startup itu sendiri pada fase terpisah yang lebih awal daripada penundaan putaran pertama, sebelum pesan init dikirim:167Untuk memblokir startup itu sendiri pada fase terpisah yang lebih awal daripada penundaan putaran pertama, sebelum pesan init dikirim:

168 168 

Details

160 const options = { settings: { outputStyle: "Explanatory" } };160 const options = { settings: { outputStyle: "Explanatory" } };

161 ```161 ```

162 162 

163Python 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.163Dalam Python SDK, atur `outputStyle` melalui opsi `settings`, yang mengambil string JSON seperti `'{"outputStyle": "Explanatory"}'` atau jalur ke file pengaturan yang menetapkannya.

164 164 

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

166 166 

Details

16 16 

17| Jika Anda... | Gunakan | Mengapa |17| Jika Anda... | Gunakan | Mengapa |

18| ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |18| ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |

19| Membangun agen tanpa mengimplementasikan loop alat sendiri | **Agent SDK** | Sebuah library yang menjalankan loop agen dalam proses Anda sendiri, dalam Python atau TypeScript. |19| Membangun agen tanpa mengimplementasikan loop alat sendiri | **Agent SDK** | Sebuah library Python atau TypeScript yang menjalankan loop agen untuk Anda. |

20| Melakukan pengembangan interaktif atau menjalankan tugas sekali jadi dari terminal | [**Claude Code CLI**](/docs/id/overview) | Antarmuka terminal, dibangun untuk penggunaan interaktif sehari-hari. |20| Melakukan pengembangan interaktif atau menjalankan tugas sekali jadi dari terminal | [**Claude Code CLI**](/docs/id/overview) | Antarmuka terminal, dibangun untuk penggunaan interaktif sehari-hari. |

21| Memanggil API secara langsung dan mengimplementasikan loop alat sendiri | [**Client SDK**](https://platform.claude.com/docs/en/api/client-sdks) | Akses langsung ke API Anthropic daripada ke Claude Code. Anda mengimplementasikan loop alat sendiri. |21| Memanggil API secara langsung dan mengimplementasikan loop alat sendiri | [**Client SDK**](https://platform.claude.com/docs/en/api/client-sdks) | Akses langsung ke API Anthropic daripada ke Claude Code. Anda mengimplementasikan loop alat sendiri. |

22| Menjalankan agen jangka panjang atau asinkron tanpa mengelola infrastruktur sandbox atau sesi Anda sendiri | [**Managed Agents**](https://platform.claude.com/docs/en/managed-agents/overview) | REST API yang dihosting, produk terpisah dari Agent SDK. Anthropic menjalankan agen dan sandbox. |22| Menjalankan agen jangka panjang atau asinkron tanpa mengelola infrastruktur sandbox atau sesi Anda sendiri | [**Managed Agents**](https://platform.claude.com/docs/en/managed-agents/overview) | REST API yang dihosting, produk terpisah dari Agent SDK. Anthropic menjalankan agen dan sandbox. |

Details

8 8 

9Claude Agent SDK menyediakan kontrol izin untuk mengelola bagaimana Claude menggunakan alat. Gunakan mode izin dan aturan untuk menentukan apa yang diizinkan secara otomatis, dan callback [`canUseTool`](/docs/id/agent-sdk/user-input) untuk menangani segalanya di runtime.9Claude Agent SDK menyediakan kontrol izin untuk mengelola bagaimana Claude menggunakan alat. Gunakan mode izin dan aturan untuk menentukan apa yang diizinkan secara otomatis, dan callback [`canUseTool`](/docs/id/agent-sdk/user-input) untuk menangani segalanya di runtime.

10 10 

11<Note>

12 Halaman ini mencakup mode izin dan aturan. Untuk membangun alur persetujuan interaktif di mana pengguna menyetujui atau menolak permintaan alat di runtime, lihat [Tangani persetujuan dan input pengguna](/docs/id/agent-sdk/user-input).

13</Note>

14 

15<h2 id="how-permissions-are-evaluated">11<h2 id="how-permissions-are-evaluated">

16 Bagaimana izin dievaluasi12 Bagaimana izin dievaluasi

17</h2>13</h2>


20 16 

21<Steps>17<Steps>

22 <Step title="Hooks">18 <Step title="Hooks">

23 Jalankan [hooks](/docs/id/agent-sdk/hooks) terlebih dahulu. Hook dapat menolak panggilan sepenuhnya atau meneruskannya. Hook yang mengembalikan `allow` tidak melewati aturan deny dan ask di bawah; aturan tersebut dievaluasi terlepas dari hasil hook.19 Jalankan [hooks](/docs/id/agent-sdk/hooks) terlebih dahulu. Hook dapat menolak panggilan sepenuhnya atau meneruskannya. Hook yang mengembalikan `allow` tidak melewati aturan deny dan ask di bawah; aturan tersebut dievaluasi terlepas dari hasil hook. Hook `PreToolUse` allow juga tidak dapat menyetujui penghapusan `rm` atau `rmdir` yang menargetkan [jalur kritis](/docs/id/permission-modes#critical-paths).

24 </Step>20 </Step>

25 21 

26 <Step title="Deny rules">22 <Step title="Deny rules">

27 Periksa aturan `deny` (dari `disallowed_tools` dan [settings.json](/docs/id/settings#permission-settings)). Jika aturan deny cocok, alat diblokir, bahkan dalam mode `bypassPermissions`. Aturan deny dengan nama bare seperti `Bash` menghapus alat dari konteks Claude sebelum evaluasi ini dimulai, jadi hanya aturan berscopе seperti `Bash(rm *)` yang diperiksa pada langkah ini.23 Periksa aturan `deny` (dari `disallowed_tools` dan [settings.json](/docs/id/settings-reference#permission-settings)). Jika aturan deny cocok, alat diblokir, bahkan dalam mode `bypassPermissions`. Aturan deny dengan nama bare seperti `Bash` menghapus alat dari konteks Claude sebelum evaluasi ini dimulai, jadi hanya aturan yang dibatasi seperti `Bash(rm *)` yang diperiksa pada langkah ini.

28 </Step>24 </Step>

29 25 

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

31 Periksa aturan `ask` dari [settings.json](/docs/id/settings#permission-settings). Jika aturan ask cocok, panggilan jatuh melalui callback [`canUseTool`](/docs/id/agent-sdk/user-input) Anda untuk konfirmasi, bahkan dalam mode `bypassPermissions`.27 Periksa aturan `ask` dari [settings.json](/docs/id/settings-reference#permission-settings). Jika aturan ask cocok, panggilan jatuh melalui callback [`canUseTool`](/docs/id/agent-sdk/user-input) Anda untuk konfirmasi, bahkan dalam mode `bypassPermissions`.

32 28 

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

34 30 

35 Alat konektor [claude.ai](/docs/id/mcp#organization-controls-on-connector-tools) yang organisasi Anda telah atur ke `ask` juga meninggalkan alur pada langkah ini. Setiap panggilan jatuh melalui callback, bahkan dalam mode `bypassPermissions` dan bahkan ketika aturan allow cocok. Callback menerima alasan `Organisasi Anda memerlukan persetujuan untuk alat ini`. Dalam mode `dontAsk` panggilan ditolak sebagai gantinya, karena mode itu tidak pernah meminta.31 Alat konektor [claude.ai](/docs/id/mcp#organization-controls-on-connector-tools) yang organisasi Anda atur ke `ask` juga meninggalkan alur pada langkah ini. Setiap panggilan jatuh melalui callback, bahkan dalam mode `bypassPermissions` dan bahkan ketika aturan allow cocok. Callback menerima alasan `Your organization requires approval for this tool`. Dalam mode `dontAsk` panggilan ditolak sebagai gantinya, karena mode itu tidak pernah meminta.

36 </Step>32 </Step>

37 33 

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

39 Terapkan [mode izin](#permission-modes) yang aktif. `bypassPermissions` menyetujui semua yang mencapai langkah ini. `acceptEdits` menyetujui operasi file. `plan` merutekan alat file-edit dan shell-write ke callback `canUseTool` Anda terlepas dari aturan allow, jadi operasi write tidak dapat disetujui secara otomatis saat merencanakan. Mode lain jatuh melalui.35 Terapkan [mode izin](#permission-modes) yang aktif:

36 

37 * Dalam mode `bypassPermissions`, Claude Code menyetujui semua yang mencapai langkah ini kecuali penghapusan `rm` dan `rmdir` yang menargetkan [jalur kritis](/docs/id/permission-modes#critical-paths), yang jatuh melalui sebagai gantinya.

38 * Dalam mode `acceptEdits`, Claude Code menyetujui operasi file yang tercantum di bawah [Accept edits mode](#accept-edits-mode-acceptedits).

39 * Dalam mode `plan`, Claude Code mengirim alat file-edit dan shell-write ke callback `canUseTool` Anda terlepas dari aturan allow, sehingga operasi write tidak dapat disetujui secara otomatis saat merencanakan.

40 * Dalam mode lain, permintaan jatuh melalui.

40 </Step>41 </Step>

41 42 

42 <Step title="Allow rules">43 <Step title="Allow rules">

43 Periksa aturan `allow` (dari `allowed_tools` dan settings.json). Jika aturan cocok, alat disetujui.44 Periksa aturan `allow` (dari `allowed_tools` dan settings.json). Jika aturan cocok, alat disetujui. Panggilan yang alat setujui sendiri juga diselesaikan pada langkah ini, tanpa aturan yang diperlukan: misalnya pembacaan file di dalam direktori kerja Anda atau [perintah Bash read-only](/docs/id/permissions#read-only-commands). Penghapusan `rm` dan `rmdir` yang menargetkan [jalur kritis](/docs/id/permission-modes#critical-paths) tidak pernah disetujui oleh aturan allow: mereka mencapai callback Anda dalam mode yang meminta, pergi ke [classifier](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) dalam mode `auto` pada Claude Code v2.1.218 atau lebih baru, dan ditolak dalam mode `dontAsk`.

44 </Step>45 </Step>

45 46 

46 <Step title="canUseTool callback">47 <Step title="canUseTool callback">

47 Jika tidak diselesaikan oleh salah satu di atas, panggil callback [`canUseTool`](/docs/id/agent-sdk/user-input) Anda untuk keputusan. Dalam mode `dontAsk`, langkah ini dilewati dan alat ditolak.48 Jika tidak diselesaikan oleh salah satu di atas, panggil callback [`canUseTool`](/docs/id/agent-sdk/user-input) Anda untuk keputusan. Dalam mode `dontAsk`, langkah ini dilewati dan alat ditolak.

49 

50 Dalam SDK TypeScript, jika Anda menetapkan [`permissionPrompts: 'none'`](/docs/id/agent-sdk/typescript#options), callback Anda tidak dipanggil pada langkah ini. Hook [`PermissionRequest`](/docs/id/hooks#permissionrequest) masih mendapat kesempatan untuk memutuskan, dan jika tidak, Claude Code menolak panggilan. Opsi memerlukan Claude Code v2.1.259 atau lebih baru.

48 </Step>51 </Step>

49</Steps>52</Steps>

50 53 

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

52 55 

53Mulai dari v2.1.198, jika Anda meneruskan callback `canUseTool` yang urutan evaluasi ini tidak pernah dapat mencapai, SDK TypeScript mengeluarkan peringatan proses Node.js sekali ketika kueri dibangun. Kode peringatan adalah `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Dua konfigurasi memicunya:56<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/agent-sdk/permissions-flow-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=e53a91e9059cbf51852b7cedb4dd4251" className="hidden dark:block" alt="Diagram dari alur evaluasi izin enam langkah yang cocok dengan langkah-langkah di atas: permintaan alat melewati hooks, deny rules, ask rules, permission mode, allow rules, dan canUseTool. Hooks, deny rules, dan canUseTool dapat merutekan ke Blocked; permission mode bypass, allow rules, dan canUseTool dapat merutekan ke Execute; ask rules merutekan ke canUseTool." width="1180" height="260" data-path="images/agent-sdk/permissions-flow-dark.svg" />

54 57 

55* `permissionMode: 'bypassPermissions'`, yang secara otomatis menyetujui setiap panggilan yang mencapai langkah mode izin58Jika Anda meneruskan callback `canUseTool` dalam konfigurasi di mana SDK TypeScript mengharapkan urutan evaluasi untuk menyetujui panggilan secara otomatis sebelum callback dikonsultasikan, SDK memancarkan peringatan proses Node.js sekali ketika kueri dibangun. Kode peringatan adalah `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. Dua konfigurasi memicunya:

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

57 59 

58Entri dengan specifier seperti `Bash(ls *)` dan mode `acceptEdits` tidak memicunya, dan aturan allow yang berasal dari file pengaturan tidak terlihat oleh pemeriksaan.60* `permissionMode: 'bypassPermissions'`, yang menyetujui setiap panggilan yang mencapai langkah mode izin terlepas dari [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves)

61* Setiap entri `allowedTools` bare seperti `"Read"`, yang menyetujui seluruh alat itu sebelum callback dikonsultasikan, terlepas dari [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves)

62 

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

59 64 

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

61 66 

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

63 68 

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

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

66 71 

67<h2 id="allow-and-deny-rules">72<h2 id="allow-and-deny-rules">

68 Aturan allow dan deny73 Aturan izin dan penolakan

69</h2>74</h2>

70 75 

71`allowed_tools` dan `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) menambahkan entri ke daftar aturan allow dan deny dalam alur evaluasi di atas. Aturan allow hanya mempengaruhi persetujuan: alat yang tidak tercantum dalam `allowed_tools` masih tersedia untuk Claude dan jatuh melalui mode izin. Aturan deny berperilaku berbeda tergantung pada apakah mereka menamai alat atau membatasi pola dalam satu alat.76`allowed_tools` dan `disallowed_tools` (TypeScript: `allowedTools` / `disallowedTools`) menambahkan entri ke daftar aturan izin dan penolakan dalam alur evaluasi di atas. Jika Anda menyebutkan salah satu dari [alat pelacakan tugas](/docs/id/agent-sdk/todo-tracking#model-availability) dalam `allowed_tools`, Claude Code juga memilih sesi masuk. Alat lain apa pun yang tidak tercantum dalam `allowed_tools` masih tersedia untuk Claude, dan panggilan ke alat tersebut yang memerlukan persetujuan jatuh melalui mode izin. Aturan penolakan berperilaku berbeda tergantung pada apakah mereka menyebutkan alat atau membatasi pola dalam satu.

72 77 

73| Opsi | Efek |78| Opsi | Efek |

74| :-------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |79| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

75| `allowed_tools=["Read", "Grep"]` | `Read` dan `Grep` disetujui secara otomatis. Alat yang tidak tercantum di sini masih ada dan jatuh melalui mode izin dan `canUseTool`. |80| `allowed_tools=["Read", "Grep"]` | `Read` dan `Grep` disetujui secara otomatis. Alat lain yang tidak tercantum di sini masih ada, dan panggilan ke alat tersebut yang memerlukan persetujuan jatuh melalui mode izin dan `canUseTool`. |

76| `disallowed_tools=["Bash"]` | Definisi alat `Bash` dihapus dari permintaan. Claude tidak melihat alat dan tidak dapat mencobanya. |81| `disallowed_tools=["Bash"]` | Definisi alat `Bash` dihapus dari permintaan. Claude tidak melihat alat dan tidak dapat mencobanya. |

77| `disallowed_tools=["Bash(rm *)"]` | `Bash` tetap tersedia. Panggilan yang cocok dengan `rm *` ditolak di setiap mode izin, termasuk `bypassPermissions`. Panggilan `Bash` lainnya jatuh melalui mode izin. |82| `disallowed_tools=["Bash(rm *)"]` | `Bash` tetap tersedia. Panggilan yang cocok dengan `rm *` [seperti yang ditulis](/docs/id/permissions#bash-rule-limits) ditolak dalam setiap mode izin, termasuk `bypassPermissions`. Panggilan `Bash` lainnya, termasuk `/bin/rm`, jatuh melalui mode izin. |

78| `disallowed_tools=["*"]` | Setiap definisi alat dihapus dari permintaan. Glob nama-alat didukung dalam aturan deny: `"*"` cocok dengan setiap alat dan `"mcp__*"` cocok dengan setiap alat MCP di semua server. |83| `disallowed_tools=["*"]` | Setiap definisi alat dihapus dari permintaan. Glob nama alat didukung dalam aturan penolakan: `"*"` cocok dengan setiap alat dan `"mcp__*"` cocok dengan setiap alat MCP di semua server. |

79 84 

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

81 86 

82Aturan yang dibatasi untuk `Read` dan `Edit` mengambil pola jalur. Aturan `Edit(path)` mengatur semua alat bawaan yang menulis file, termasuk `Write` dan `NotebookEdit`; aturan `Write(path)` tidak pernah cocok dengan pemeriksaan izin file.87Aturan berskop untuk `Read` dan `Edit` mengambil pola jalur. Aturan `Edit(path)` mengatur semua alat bawaan yang menulis file, termasuk `Write` dan `NotebookEdit`; aturan `Write(path)` tidak pernah cocok dengan pemeriksaan izin file.

83 88 

84Gunakan `//path` untuk jalur sistem file absolut: aturan deny dari `Edit(//secrets/**)` memblokir penulisan di mana pun di bawah `/secrets` di disk. Dengan garis miring tunggal di depan, `Edit(/secrets/**)` berlabuh di sumber aturan sebagai gantinya. Untuk aturan yang dilewatkan melalui `allowed_tools` atau `disallowed_tools`, itu berarti direktori kerja sesi, sehingga aturan tidak memblokir `/secrets` di disk. Lihat [Aturan Read dan Edit](/docs/id/permissions#read-and-edit) untuk empat bentuk jangkar dan bagaimana aturan dari file pengaturan diselesaikan.89Gunakan `//path` untuk jalur sistem file absolut: aturan penolakan `Edit(//secrets/**)` memblokir penulisan di mana pun di bawah `/secrets` di disk. Dengan garis miring tunggal di depan, `Edit(/secrets/**)` berlabuh di sumber aturan sebagai gantinya. Untuk aturan yang dilewatkan melalui `allowed_tools` atau `disallowed_tools`, itu berarti direktori kerja sesi, sehingga aturan tidak memblokir `/secrets` di disk. Lihat [Aturan Read dan Edit](/docs/id/permissions#read-and-edit) untuk empat bentuk jangkar dan bagaimana aturan dari file pengaturan diselesaikan.

85 90 

86<Warning>91<Warning>

87 **Alat yang disetujui otomatis tidak pernah mencapai `canUseTool`.** Panggilan alat yang disetujui pada langkah sebelumnya apa pun, oleh `acceptEdits` atau `bypassPermissions`, atau oleh aturan allow, melewati callback `canUseTool` Anda, sehingga pemeriksaan izin yang Anda letakkan di sana secara diam-diam dilewati untuk alat tersebut. `AskUserQuestion`, alat MCP yang ditandai [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool), dan alat konektor [yang organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools) masih mencapai callback, bahkan ketika aturan allow cocok.92 **Alat yang disetujui secara otomatis tidak pernah mencapai `canUseTool`.** Panggilan alat yang disetujui pada langkah sebelumnya apa pun, oleh `acceptEdits` atau `bypassPermissions`, atau oleh aturan izin, melewati callback `canUseTool` Anda, sehingga pemeriksaan izin yang Anda letakkan di sana diam-diam dilewati untuk alat tersebut. `AskUserQuestion`, alat MCP yang ditandai [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool), alat konektor [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools), dan penghapusan `rm` dan `rmdir` yang menargetkan [jalur kritis](/docs/id/permission-modes#critical-paths) masih mencapai callback, bahkan ketika aturan izin cocok. Dalam mode `auto`, penghapusan jalur kritis pergi ke [pengklasifikasi](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) alih-alih callback, sementara panggilan lain yang tercantum di sini masih mencapainya; perutean pengklasifikasi memerlukan Claude Code v2.1.218 atau lebih baru. Dalam mode `dontAsk` panggilan ini ditolak sebagai gantinya, tanpa memanggil callback.

88 93 

89 Cakupan tergantung pada bentuk entri: nama bare seperti `Read` atau `mcp__github__get_issue` menyetujui secara otomatis setiap panggilan ke alat tersebut, sementara aturan yang dibatasi seperti `Bash(ls *)` hanya menyetujui panggilan yang cocok dan panggilan `Bash` lainnya masih jatuh melalui callback. Untuk pemeriksaan yang harus berjalan pada setiap panggilan alat, gunakan hook [`PreToolUse`](/docs/id/agent-sdk/hooks): hook berjalan sebelum setiap langkah lainnya, dan penolakan hook berlaku bahkan dalam mode `bypassPermissions`.94 Cakupan tergantung pada bentuk entri: nama telanjang seperti `Read` atau `mcp__github__get_issue` menyetujui setiap panggilan ke alat tersebut terlepas dari pengecualian di atas, sementara aturan berskop seperti `Bash(npm test *)` hanya menyetujui panggilan yang cocok, dan panggilan `Bash` lainnya yang memerlukan persetujuan masih jatuh melalui callback. Untuk pemeriksaan yang harus berjalan pada setiap panggilan alat, gunakan [hook `PreToolUse`](/docs/id/agent-sdk/hooks): hook berjalan sebelum setiap langkah lainnya, dan penolakan hook bahkan berlaku dalam mode `bypassPermissions`.

90</Warning>95</Warning>

91 96 

92Untuk agen yang terkunci, pasangkan `allowedTools` dengan `permissionMode: "dontAsk"`. Alat yang tercantum disetujui, terlepas dari alat yang selalu diminta dalam Peringatan di atas; apa pun yang lain ditolak sepenuhnya daripada meminta:97Untuk agen yang terkunci, pasangkan `allowedTools` dengan `permissionMode: "dontAsk"`:

93 98 

94```typescript theme={null}99```typescript theme={null}

95const options = {100const options = {


98};103};

99```104```

100 105 

106Alat yang tercantum disetujui, terlepas dari [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves), dan setiap panggilan lain yang akan meminta ditolak sebagai gantinya. Panggilan yang tidak memerlukan persetujuan dalam mode `default` berjalan apakah atau tidak Anda mencantumnya, seperti [perintah Bash hanya-baca](/docs/id/permissions#read-only-commands), alat seperti `Agent` yang tidak bertanya sebelum menjalankan, dan pembacaan file di dalam direktori kerja Anda. Untuk menempatkan alat di luar jangkauan Claude sepenuhnya, tambahkan nama telanjangnya ke `disallowedTools`.

107 

101<Warning>108<Warning>

102 **`allowed_tools` tidak membatasi `bypassPermissions`.** `allowed_tools` hanya pra-menyetujui alat yang Anda cantumkan. Alat yang tidak tercantum tidak cocok dengan aturan allow apa pun dan jatuh melalui mode izin, di mana `bypassPermissions` menyetujuinya. Menetapkan `allowed_tools=["Read"]` bersama dengan `permission_mode="bypassPermissions"` masih menyetujui setiap alat, termasuk `Bash`, `Write`, dan `Edit`. Jika Anda memerlukan `bypassPermissions` tetapi ingin alat tertentu diblokir, gunakan `disallowed_tools`.109 **`allowed_tools` tidak membatasi `bypassPermissions`.** `allowed_tools` pra-menyetujui alat yang Anda cantumkan. Alat unlisted lainnya tidak cocok dengan aturan izin apa pun dan jatuh melalui mode izin, di mana `bypassPermissions` menyetujuinya. Mengatur `allowed_tools=["Read"]` bersama dengan `permission_mode="bypassPermissions"` masih menyetujui setiap alat, termasuk `Bash`, `Write`, dan `Edit`. Jika Anda memerlukan `bypassPermissions` tetapi menginginkan alat spesifik diblokir, gunakan `disallowed_tools`.

103</Warning>110</Warning>

104 111 

105Anda juga dapat mengonfigurasi aturan allow, deny, dan ask secara deklaratif di `.claude/settings.json`. Aturan ini dibaca ketika sumber pengaturan `project` diaktifkan, yang merupakan default untuk opsi `query()`. Jika Anda menetapkan `setting_sources` (TypeScript: `settingSources`) secara eksplisit, sertakan `"project"` agar aturan diterapkan. Lihat [Pengaturan izin](/docs/id/settings#permission-settings) untuk sintaks aturan.112Anda juga dapat mengonfigurasi aturan izin, penolakan, dan tanya secara deklaratif dalam `.claude/settings.json`. Aturan ini dibaca ketika sumber pengaturan `project` diaktifkan, yang mana untuk opsi `query()` default. Jika Anda mengatur `setting_sources` (TypeScript: `settingSources`) secara eksplisit, sertakan `"project"` agar aturan diterapkan. Lihat [Pengaturan Izin](/docs/id/settings-reference#permission-settings) untuk sintaks aturan.

106 113 

107<h2 id="permission-modes">114<h2 id="permission-modes">

108 Mode izin115 Mode izin

109</h2>116</h2>

110 117 

111Mode izin memberikan kontrol global atas bagaimana Claude menggunakan alat. Anda dapat menetapkan mode izin saat memanggil `query()` atau mengubahnya secara dinamis selama sesi streaming.118Mode izin memberikan kontrol global atas cara Claude menggunakan tools. Anda dapat mengatur mode izin saat memanggil `query()` atau mengubahnya secara dinamis selama sesi streaming.

112 119 

113<h3 id="available-modes">120<h3 id="available-modes">

114 Mode yang tersedia121 Mode yang tersedia

115</h3>122</h3>

116 123 

117SDK mendukung mode izin ini:124SDK mendukung mode izin berikut:

118 125 

119| Mode | Deskripsi | Perilaku alat |126| Mode | Deskripsi | Perilaku Tool |

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

121| `default` | Perilaku izin standar | Tidak ada persetujuan otomatis; alat yang tidak cocok memicu callback `canUseTool` Anda |128| `default` | Perilaku izin standar | Tidak ada persetujuan otomatis berbasis mode; panggilan yang memerlukan persetujuan dan tidak cocok dengan aturan izin memicu callback `canUseTool` Anda |

122| `dontAsk` | Tolak daripada meminta | Apa pun yang tidak pra-disetujui oleh `allowed_tools` atau aturan ditolak; alat konektor [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools) dan alat yang memerlukan interaksi pengguna ditolak bahkan jika Anda telah pra-menyetujuinya. `canUseTool` tidak pernah dipanggil |129| `dontAsk` | Tolak alih-alih meminta | Setiap panggilan yang sebaliknya akan meminta ditolak. Panggilan yang disetujui oleh `allowed_tools` atau aturan berjalan, begitu juga panggilan yang tidak memerlukan persetujuan dalam mode `default`, seperti pembacaan file di dalam direktori kerja Anda dan panggilan ke `Agent`. Connector tools [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools) dan tools yang memerlukan interaksi pengguna ditolak bahkan jika Anda telah menyetujuinya sebelumnya, begitu juga penghapusan `rm` dan `rmdir` yang menargetkan [jalur kritis](/docs/id/permission-modes#critical-paths). `canUseTool` tidak pernah dipanggil |

123| `acceptEdits` | Terima otomatis edit file | Edit file dan [operasi sistem file](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, dll.) disetujui secara otomatis |130| `acceptEdits` | Terima otomatis pengeditan file | Pengeditan file dan [operasi sistem file](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, dll.) secara otomatis disetujui |

124| `bypassPermissions` | Lewati pemeriksaan izin | Alat berjalan tanpa prompt izin, kecuali aturan [`ask`](#how-permissions-are-evaluated) eksplisit cocok, alat konektor [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools), dan alat yang memerlukan interaksi pengguna (gunakan dengan hati-hati) |131| `bypassPermissions` | Lewati pemeriksaan izin | Tools berjalan tanpa prompt izin, kecuali untuk [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves). Gunakan dengan hati-hati |

125| `plan` | Mode perencanaan | Claude menjelajahi dan merencanakan tanpa mengedit file sumber Anda; edit file tidak pernah disetujui secara otomatis dan diminta melalui callback `canUseTool` Anda |132| `plan` | Mode perencanaan | Claude menjelajahi dan merencanakan tanpa mengedit file sumber Anda; pengeditan file tidak pernah auto-approved dan meminta melalui callback `canUseTool` Anda |

126| `auto` | Persetujuan yang diklasifikasikan model | Pengklasifikasi model menyetujui atau menolak setiap panggilan alat. Lihat [Mode Auto](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) untuk ketersediaan |133| `auto` | Persetujuan yang diklasifikasikan model | Pengklasifikasi model menyetujui atau menolak prompt izin. Lihat [Mode Auto](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) untuk ketersediaan |

127 134 

128<Warning>135<Warning>

129 **Warisan subagen:** Ketika induk menggunakan `bypassPermissions`, `acceptEdits`, atau `auto`, semua subagen mewarisi mode tersebut dan tidak dapat ditimpa per subagen. Subagen mungkin memiliki prompt sistem yang berbeda dan perilaku yang kurang terbatas daripada agen utama Anda, jadi mewarisi `bypassPermissions` memberikan mereka akses sistem penuh dan otonom. Aturan [`ask`](#how-permissions-are-evaluated) eksplisit, alat konektor [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools), dan alat yang memerlukan interaksi pengguna masih memaksa prompt.136 **Pewarisan subagent:** Subagent berjalan dalam mode izin sesi induk kecuali Anda mengatur `permissionMode` pada [`AgentDefinition`](/docs/id/agent-sdk/typescript#agentdefinition) dan sesi induk berada dalam mode `default`, `dontAsk`, atau `plan`. Bahkan kemudian, Claude Code tidak pernah menerapkan nilai `"bypassPermissions"`. Subagent berjalan dalam mode `bypassPermissions` hanya ketika sesi induk itu sendiri melakukannya. Pengecualian `bypassPermissions` memerlukan Claude Code v2.1.267 atau lebih baru.

137 

138 Subagent mungkin memiliki prompt sistem yang berbeda dan perilaku yang kurang terbatas daripada agen utama Anda, jadi mewarisi `bypassPermissions` memberi mereka akses sistem penuh dan otonom. [Tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves) masih berlaku.

130</Warning>139</Warning>

131 140 

132<h3 id="set-permission-mode">141<h3 id="set-permission-mode">

133 Tetapkan mode izin142 Atur mode izin

134</h3>143</h3>

135 144 

136Anda dapat menetapkan mode izin sekali saat memulai kueri, atau mengubahnya secara dinamis saat sesi aktif.145Anda dapat mengatur mode izin sekali saat memulai query, atau mengubahnya secara dinamis saat sesi aktif.

137 146 

138<Tabs>147<Tabs>

139 <Tab title="Pada waktu kueri">148 <Tab title="Pada waktu query">

140 Teruskan `permission_mode` (Python) atau `permissionMode` (TypeScript) saat membuat kueri. Mode ini berlaku untuk seluruh sesi kecuali diubah secara dinamis.149 Lewatkan `permission_mode` (Python) atau `permissionMode` (TypeScript) saat membuat query. Mode ini berlaku untuk seluruh sesi kecuali diubah secara dinamis.

141 150 

142 <CodeGroup>151 <CodeGroup>

143 ```python Python theme={null}152 ```python Python theme={null}


181 </Tab>190 </Tab>

182 191 

183 <Tab title="Selama streaming">192 <Tab title="Selama streaming">

184 Panggil `set_permission_mode()` (Python) atau `setPermissionMode()` (TypeScript) untuk mengubah mode di tengah sesi. Mode baru berlaku segera untuk semua permintaan alat berikutnya. Ini memungkinkan Anda memulai dengan pembatasan dan melonggarkan izin seiring kepercayaan berkembang, misalnya beralih ke `acceptEdits` setelah meninjau pendekatan awal Claude.193 Panggil `set_permission_mode()` (Python) atau `setPermissionMode()` (TypeScript) untuk mengubah mode di tengah sesi. Mode baru berlaku segera untuk semua permintaan tool berikutnya. Ini memungkinkan Anda untuk memulai dengan pembatasan dan melonggarkan izin seiring kepercayaan berkembang, misalnya beralih ke `acceptEdits` setelah meninjau pendekatan awal Claude.

185 194 

186 <CodeGroup>195 <CodeGroup>

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


242</h3>251</h3>

243 252 

244<h4 id="accept-edits-mode-acceptedits">253<h4 id="accept-edits-mode-acceptedits">

245 Mode terima edit (`acceptEdits`)254 Mode terima pengeditan (`acceptEdits`)

246</h4>255</h4>

247 256 

248Menyetujui operasi file secara otomatis sehingga Claude dapat mengedit kode tanpa meminta. Alat lain (seperti perintah Bash yang bukan operasi sistem file) masih memerlukan izin normal.257Auto-approve operasi file sehingga Claude dapat mengedit kode tanpa meminta. Tools lain (seperti perintah Bash yang bukan operasi sistem file) masih memerlukan izin normal.

249 258 

250**Operasi yang disetujui secara otomatis:**259**Operasi yang auto-approved:**

251 260 

252* Edit file (alat Edit, Write)261* Pengeditan file (tools Edit, Write)

253* Perintah sistem file: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, `sed`262* Perintah sistem file: `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, `sed`

254 263 

255Keduanya hanya berlaku untuk jalur di dalam direktori kerja atau `additionalDirectories`. Jalur di luar cakupan itu dan penulisan ke jalur yang dilindungi masih meminta.264Keduanya hanya berlaku untuk jalur di dalam direktori kerja atau `additionalDirectories`. Dalam mode `acceptEdits`, Claude Code tidak auto-approve permintaan ketika Claude:

265 

266* Bekerja pada jalur di luar cakupan itu

267* Menulis ke jalur yang dilindungi

268* Menghapus [jalur kritis](/docs/id/permission-modes#critical-paths) dengan `rm` atau `rmdir`

256 269 

257**Gunakan ketika:** Anda mempercayai edit Claude dan menginginkan iterasi yang lebih cepat, seperti selama prototyping atau saat bekerja di direktori terisolasi.270**Gunakan ketika:** Anda mempercayai pengeditan Claude dan menginginkan iterasi yang lebih cepat, seperti selama prototyping atau saat bekerja di direktori terisolasi.

258 271 

259<h4 id="don’t-ask-mode-dontask">272<h4 id="don’t-ask-mode-dontask">

260 Mode jangan tanya (`dontAsk`)273 Mode jangan tanya (`dontAsk`)

261</h4>274</h4>

262 275 

263Mengonversi prompt izin apa pun menjadi penolakan. Alat yang pra-disetujui oleh `allowed_tools`, aturan allow `settings.json`, atau hook berjalan normal. Alat konektor [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools) dan alat yang memerlukan interaksi pengguna ditolak bahkan ketika aturan allow cocok. Segalanya ditolak tanpa memanggil `canUseTool`.276Mengonversi prompt izin apa pun menjadi penolakan, tanpa memanggil `canUseTool`. Tools yang disetujui sebelumnya oleh `allowed_tools`, aturan izin `settings.json`, atau hook berjalan seperti biasa, begitu juga panggilan yang tidak memerlukan persetujuan dalam mode `default`, seperti pembacaan file di dalam direktori kerja Anda dan panggilan ke `Agent`. Connector tools [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools), tools yang memerlukan interaksi pengguna, dan penghapusan `rm` dan `rmdir` yang menargetkan [jalur kritis](/docs/id/permission-modes#critical-paths) ditolak bahkan ketika aturan izin cocok. Hook allow `PreToolUse` juga tidak menghapus penghapusan jalur kritis.

264 277 

265**Gunakan ketika:** Anda menginginkan permukaan alat yang tetap dan eksplisit untuk agen headless dan lebih suka penolakan keras daripada ketergantungan diam pada `canUseTool` yang tidak ada.278**Gunakan ketika:** Anda menginginkan permukaan tool yang tetap dan eksplisit untuk agen headless dan lebih suka penolakan keras daripada ketergantungan diam pada `canUseTool` yang tidak ada.

266 279 

267<h4 id="bypass-permissions-mode-bypasspermissions">280<h4 id="bypass-permissions-mode-bypasspermissions">

268 Mode lewati izin (`bypassPermissions`)281 Mode lewati izin (`bypassPermissions`)

269</h4>282</h4>

270 283 

271Menyetujui semua penggunaan alat secara otomatis tanpa prompt. Hooks masih dijalankan dan dapat memblokir operasi jika diperlukan.284Auto-approve penggunaan tool tanpa meminta, kecuali kasus yang tercantum dalam peringatan di bawah. Hook masih dijalankan dan dapat memblokir operasi jika diperlukan.

272 285 

273<Warning>286<Warning>

274 Gunakan dengan sangat hati-hati. Claude memiliki akses sistem penuh dalam mode ini. Hanya gunakan di lingkungan terkontrol di mana Anda mempercayai semua operasi yang mungkin.287 Gunakan dengan sangat hati-hati. Claude memiliki akses sistem penuh dalam mode ini. Hanya gunakan di lingkungan terkontrol di mana Anda mempercayai semua operasi yang mungkin.

275 288 

276 `allowed_tools` tidak membatasi mode ini. Setiap alat disetujui, bukan hanya yang Anda cantumkan. Aturan deny (`disallowed_tools`), aturan `ask` eksplisit, dan hooks dievaluasi sebelum pemeriksaan mode dan masih dapat memblokir alat. Alat konektor [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools) dan alat yang memerlukan interaksi pengguna masih jatuh melalui callback `canUseTool` Anda.289 `allowed_tools` tidak membatasi mode ini. Setiap tool disetujui, bukan hanya yang Anda daftarkan. Kontrol ini masih berlaku:

290 

291 * Aturan penolakan, aturan `ask` eksplisit, dan hook dievaluasi sebelum pemeriksaan mode dan masih dapat memblokir tool.

292 * Connector tools [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools), tools yang memerlukan interaksi pengguna, dan penghapusan `rm` dan `rmdir` yang menargetkan [jalur kritis](/docs/id/permission-modes#critical-paths) masih jatuh ke callback `canUseTool` Anda.

293 * [Perlindungan pesan lintas sesi](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) masih berlaku.

277</Warning>294</Warning>

278 295 

279<h4 id="plan-mode-plan">296<h4 id="plan-mode-plan">

280 Mode rencana (`plan`)297 Mode rencana (`plan`)

281</h4>298</h4>

282 299 

283Claude menjelajahi basis kode dan menghasilkan rencana tanpa mengedit file sumber Anda. Alat baca saja berjalan seperti dalam mode default. Edit file tidak pernah disetujui secara otomatis dalam mode rencana, bahkan ketika aturan allow cocok. Mereka diminta melalui callback `canUseTool` Anda sebagai gantinya. Claude dapat menggunakan `AskUserQuestion` untuk mengklarifikasi persyaratan sebelum menyelesaikan rencana. Lihat [Tangani persetujuan dan input pengguna](/docs/id/agent-sdk/user-input#handle-clarifying-questions) untuk menangani prompt ini.300Claude menjelajahi basis kode dan menghasilkan rencana tanpa mengedit file sumber Anda. Tools read-only berjalan seperti dalam mode izin `default`.

301 

302Pengeditan file tidak pernah auto-approved dalam mode rencana, bahkan ketika aturan izin cocok. Mereka meminta melalui callback `canUseTool` Anda sebagai gantinya. Pada Claude Code v2.1.212 atau lebih baru, perintah shell yang memodifikasi file, seperti `touch` dan `rm`, mencapai callback `canUseTool` Anda dengan cara yang sama.

303 

304Claude dapat menggunakan `AskUserQuestion` untuk mengklarifikasi persyaratan sebelum menyelesaikan rencana. Lihat [Tangani persetujuan dan input pengguna](/docs/id/agent-sdk/user-input#handle-clarifying-questions) untuk menangani prompt ini.

284 305 

285**Gunakan ketika:** Anda ingin Claude mengusulkan perubahan tanpa menjalankannya, seperti selama tinjauan kode atau ketika Anda perlu menyetujui perubahan sebelum dibuat.306**Gunakan ketika:** Anda ingin Claude mengusulkan perubahan tanpa menjalankannya, seperti selama tinjauan kode atau ketika Anda perlu menyetujui perubahan sebelum dibuat.

286 307 


288 Sumber daya terkait309 Sumber daya terkait

289</h2>310</h2>

290 311 

291Untuk langkah lain dalam alur evaluasi izin:312Untuk langkah-langkah lain dalam alur evaluasi izin:

292 313 

293* [Tangani persetujuan dan input pengguna](/docs/id/agent-sdk/user-input): prompt persetujuan interaktif dan pertanyaan klarifikasi314* [Menangani persetujuan dan input pengguna](/docs/id/agent-sdk/user-input): prompt persetujuan interaktif dan pertanyaan klarifikasi

294* [Panduan hooks](/docs/id/agent-sdk/hooks): jalankan kode khusus di titik kunci dalam siklus hidup agen315* [Panduan hooks](/docs/id/agent-sdk/hooks): jalankan kode khusus pada titik-titik kunci dalam siklus hidup agen

295* [Aturan izin](/docs/id/settings#permission-settings): aturan allow/deny deklaratif di `settings.json`316* [Aturan izin](/docs/id/settings-reference#permission-settings): aturan allow/deny deklaratif dalam `settings.json`

Details

69 69 

70Jalur plugin dapat berupa:70Jalur plugin dapat berupa:

71 71 

72* **Jalur relatif**: diselesaikan relatif terhadap direktori kerja saat ini (misalnya, `"./plugins/my-plugin"`)72* **Jalur relatif**: diselesaikan relatif terhadap opsi `cwd` (misalnya, `"./plugins/my-plugin"`)

73* **Jalur absolut**: jalur sistem file lengkap (misalnya, `"/home/user/plugins/my-plugin"`)73* **Jalur absolut**: jalur sistem file lengkap (misalnya, `"/home/user/plugins/my-plugin"`)

74 74 

75<Note>75<Note>

Details

513 async def receive_messages(self) -> AsyncIterator[Message]513 async def receive_messages(self) -> AsyncIterator[Message]

514 async def receive_response(self) -> AsyncIterator[Message]514 async def receive_response(self) -> AsyncIterator[Message]

515 async def interrupt(self) -> None515 async def interrupt(self) -> None

516 async def set_permission_mode(self, mode: str) -> None516 async def set_permission_mode(self, mode: PermissionMode) -> None

517 async def set_model(self, model: str | None = None) -> None517 async def set_model(self, model: str | None = None) -> None

518 async def rewind_files(self, user_message_id: str) -> None518 async def rewind_files(self, user_message_id: str) -> None

519 async def get_mcp_status(self) -> McpStatusResponse519 async def get_mcp_status(self) -> McpStatusResponse


543| `reconnect_mcp_server(server_name)` | Coba lagi menghubungkan ke server MCP yang gagal atau terputus |543| `reconnect_mcp_server(server_name)` | Coba lagi menghubungkan ke server MCP yang gagal atau terputus |

544| `toggle_mcp_server(server_name, enabled)` | Aktifkan atau nonaktifkan server MCP di tengah sesi. Menonaktifkan menghapus toolnya |544| `toggle_mcp_server(server_name, enabled)` | Aktifkan atau nonaktifkan server MCP di tengah sesi. Menonaktifkan menghapus toolnya |

545| `stop_task(task_id)` | Hentikan tugas latar belakang yang sedang berjalan. [`TaskNotificationMessage`](#tasknotificationmessage) dengan status `"stopped"` mengikuti dalam aliran pesan |545| `stop_task(task_id)` | Hentikan tugas latar belakang yang sedang berjalan. [`TaskNotificationMessage`](#tasknotificationmessage) dengan status `"stopped"` mengikuti dalam aliran pesan |

546| `get_server_info()` | Dapatkan informasi server termasuk ID sesi dan kemampuan |546| `get_server_info()` | Dapatkan informasi inisialisasi server, termasuk perintah yang tersedia dan gaya output |

547| `disconnect()` | Putuskan sambungan dari Claude |547| `disconnect()` | Putuskan sambungan dari Claude |

548 548 

549<h4 id="context-manager-support">549<h4 id="context-manager-support">


2006Tipe union dari semua blok konten.2006Tipe union dari semua blok konten.

2007 2007 

2008```python theme={null}2008```python theme={null}

2009ContentBlock = TextBlock | ThinkingBlock | ToolUseBlock | ToolResultBlock2009ContentBlock = (

2010 TextBlock

2011 | ThinkingBlock

2012 | ToolUseBlock

2013 | ToolResultBlock

2014 | ServerToolUseBlock

2015 | ServerToolResultBlock

2016)

2010```2017```

2011 2018 

2012<h3 id="textblock">2019<h3 id="textblock">


3587 `SandboxSettings`3594 `SandboxSettings`

3588</h3>3595</h3>

3589 3596 

3590Konfigurasi untuk perilaku sandbox. Gunakan ini untuk mengaktifkan sandboxing perintah dan mengonfigurasi pembatasan jaringan secara programatis.3597Konfigurasi untuk perilaku sandbox. Gunakan ini untuk mengaktifkan sandboxing perintah dan mengonfigurasi pembatasan jaringan secara terprogram.

3591 3598 

3592```python theme={null}3599```python theme={null}

3593class SandboxSettings(TypedDict, total=False):3600class SandboxSettings(TypedDict, total=False):


3600 enableWeakerNestedSandbox: bool3607 enableWeakerNestedSandbox: bool

3601```3608```

3602 3609 

3603| Properti | Tipe | Default | Deskripsi |3610| Property | Type | Default | Description |

3604| :-------------------------- | :---------------------------------------------------- | :------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3611| :-------------------------- | :---------------------------------------------------- | :------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

3605| `enabled` | `bool` | `False` | Aktifkan mode sandbox untuk eksekusi perintah |3612| `enabled` | `bool` | `False` | Aktifkan mode sandbox untuk eksekusi perintah |

3606| `autoAllowBashIfSandboxed` | `bool` | `True` | Persetujuan otomatis perintah bash ketika sandbox diaktifkan |3613| `autoAllowBashIfSandboxed` | `bool` | `True` | Persetujuan otomatis untuk perintah bash ketika sandbox diaktifkan |

3607| `excludedCommands` | `list[str]` | `[]` | Perintah yang selalu melewati pembatasan sandbox (misalnya, `["docker"]`). Ini berjalan tanpa sandbox secara otomatis tanpa keterlibatan model |3614| `excludedCommands` | `list[str]` | `[]` | Perintah yang selalu melewati pembatasan sandbox (misalnya, `["docker"]`). Perintah ini berjalan tanpa sandbox secara otomatis tanpa keterlibatan model |

3608| `allowUnsandboxedCommands` | `bool` | `True` | Izinkan model untuk meminta menjalankan perintah di luar sandbox. Ketika `True`, model dapat mengatur `dangerouslyDisableSandbox` dalam input tool, yang jatuh kembali ke [sistem izin](#permissions-fallback-for-unsandboxed-commands) |3615| `allowUnsandboxedCommands` | `bool` | `True` | Izinkan model untuk meminta menjalankan perintah di luar sandbox. Ketika `True`, model dapat mengatur `dangerouslyDisableSandbox` dalam input tool, yang kembali ke [sistem izin](#permissions-fallback-for-unsandboxed-commands) |

3609| `network` | [`SandboxNetworkConfig`](#sandboxnetworkconfig) | `None` | Konfigurasi sandbox spesifik jaringan |3616| `network` | [`SandboxNetworkConfig`](#sandboxnetworkconfig) | `None` | Konfigurasi sandbox khusus jaringan |

3610| `ignoreViolations` | [`SandboxIgnoreViolations`](#sandboxignoreviolations) | `None` | Konfigurasi pelanggaran sandbox mana yang akan diabaikan |3617| `ignoreViolations` | [`SandboxIgnoreViolations`](#sandboxignoreviolations) | `None` | Konfigurasi pelanggaran sandbox mana yang akan diabaikan |

3611| `enableWeakerNestedSandbox` | `bool` | `False` | Aktifkan sandbox bersarang yang lebih lemah untuk kompatibilitas |3618| `enableWeakerNestedSandbox` | `bool` | `False` | Aktifkan sandbox bersarang yang lebih lemah untuk kompatibilitas |

3612 3619 

3613<Note>3620<Note>

3614 Sandbox bergantung pada dukungan platform dan, di Linux, alat seperti `bubblewrap` dan `socat`. Secara default, ketika `enabled` adalah `True` tetapi sandbox tidak dapat dimulai, perintah berjalan tanpa sandbox dengan peringatan di stderr. Default ini berbeda dari SDK TypeScript, di mana `failIfUnavailable` default ke `true`.3621 Sandbox bergantung pada dukungan platform dan, di Linux, alat seperti `bubblewrap` dan `socat`. Secara default, ketika `enabled` adalah `True` tetapi sandbox tidak dapat dimulai, perintah berjalan tanpa sandbox dengan peringatan di stderr. Default ini berbeda dari SDK TypeScript, di mana `failIfUnavailable` default ke `true`.

3615 3622 

3616 Atur `"failIfUnavailable": True` dalam pengaturan sandbox Anda untuk berhenti sebagai gantinya. Kunci belum dideklarasikan pada `SandboxSettings` namun, tetapi SDK meneruskannya ke Claude Code, yang menghormatinya. `query()` kemudian melaporkan `ResultMessage` dengan `subtype="error_during_execution"` dan alasannya dalam `errors`. Karena ini adalah panggilan `query()` single-shot, SDK menaikkan setelah menghasilkan hasil error tersebut, jadi bungkus loop dalam blok try untuk melanjutkan melewatinya. Lihat [Menangani hasil](/docs/id/agent-sdk/agent-loop#handle-the-result) untuk kontrak error.3623 Atur `"failIfUnavailable": True` dalam pengaturan sandbox Anda untuk berhenti sebagai gantinya. Kunci belum dideklarasikan pada `SandboxSettings` namun, tetapi SDK meneruskannya ke Claude Code, yang menghormatinya. `query()` kemudian melaporkan `ResultMessage` dengan `subtype="error_during_execution"` dan alasan dalam `errors`. Karena ini adalah panggilan `query()` sekali jalan, SDK menaikkan setelah menghasilkan hasil kesalahan itu, jadi bungkus loop dalam blok try untuk melanjutkan melewatinya. Lihat [Tangani hasil](/docs/id/agent-sdk/agent-loop#handle-the-result) untuk kontrak kesalahan.

3617</Note>3624</Note>

3618 3625 

3619<h4 id="example-usage">3626<h4 id="example-usage">


3650```3657```

3651 3658 

3652<Warning>3659<Warning>

3653 **Keamanan Unix socket**: Opsi `allowUnixSockets` dapat memberikan akses ke layanan sistem yang menjangkau di luar sandbox. Misalnya, mengizinkan `/var/run/docker.sock` secara efektif memberikan akses sistem host penuh melalui API Docker, melewati isolasi sandbox. Hanya izinkan Unix sockets yang benar-benar diperlukan dan pahami implikasi keamanan dari masing-masing.3660 **Keamanan Unix socket**: Opsi `allowUnixSockets` dapat memberikan akses ke layanan sistem yang menjangkau di luar sandbox. Misalnya, mengizinkan `/var/run/docker.sock` secara efektif memberikan akses sistem host penuh melalui API Docker, melewati isolasi sandbox. Hanya izinkan Unix socket yang benar-benar diperlukan dan pahami implikasi keamanan dari masing-masing.

3654</Warning>3661</Warning>

3655 3662 

3656<h3 id="sandboxnetworkconfig">3663<h3 id="sandboxnetworkconfig">

3657 `SandboxNetworkConfig`3664 `SandboxNetworkConfig`

3658</h3>3665</h3>

3659 3666 

3660Konfigurasi spesifik jaringan untuk mode sandbox. Pengaturan ini berlaku untuk perintah Bash dalam sandbox ketika `enabled` adalah `True` dalam [`SandboxSettings`](#sandboxsettings) induk. Mereka tidak membatasi tool WebFetch, yang menggunakan [aturan izin](/docs/id/permissions#webfetch) sebagai gantinya.3667Konfigurasi khusus jaringan untuk mode sandbox. Pengaturan ini berlaku untuk perintah Bash yang di-sandbox ketika `enabled` adalah `True` dalam [`SandboxSettings`](#sandboxsettings) induk. Mereka tidak membatasi tool WebFetch, yang menggunakan [aturan izin](/docs/id/permissions#webfetch) sebagai gantinya.

3661 3668 

3662```python theme={null}3669```python theme={null}

3663class SandboxNetworkConfig(TypedDict, total=False):3670class SandboxNetworkConfig(TypedDict, total=False):


3672 socksProxyPort: int3679 socksProxyPort: int

3673```3680```

3674 3681 

3675| Properti | Tipe | Default | Deskripsi |3682| Property | Type | Default | Description |

3676| :------------------------ | :---------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3683| :------------------------ | :---------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

3677| `allowedDomains` | `list[str]` | `[]` | Nama domain yang dapat diakses oleh proses dalam sandbox |3684| `allowedDomains` | `list[str]` | `[]` | Nama domain yang dapat diakses oleh proses yang di-sandbox |

3678| `deniedDomains` | `list[str]` | `[]` | Nama domain yang tidak dapat diakses oleh proses dalam sandbox. Mengambil prioritas atas `allowedDomains` |3685| `deniedDomains` | `list[str]` | `[]` | Nama domain yang tidak dapat diakses oleh proses yang di-sandbox. Mengambil prioritas atas `allowedDomains` |

3679| `allowManagedDomainsOnly` | `bool` | `False` | Hanya pengaturan terkelola: ketika diatur dalam pengaturan terkelola, abaikan `allowedDomains` dan aturan izin `WebFetch(domain:...)` dari sumber pengaturan non-terkelola. Tidak berpengaruh ketika diatur melalui opsi SDK |3686| `allowManagedDomainsOnly` | `bool` | `False` | Hanya pengaturan terkelola: ketika diatur dalam pengaturan terkelola, abaikan `allowedDomains` dan aturan izin `WebFetch(domain:...)` dari sumber pengaturan non-terkelola. Tidak berpengaruh ketika diatur melalui opsi SDK |

3680| `allowUnixSockets` | `list[str]` | `[]` | Jalur Unix socket yang dapat diakses proses (misalnya, Docker socket) |3687| `allowUnixSockets` | `list[str]` | `[]` | Hanya macOS: Jalur Unix socket yang dapat diakses oleh proses, seperti socket Docker. Diabaikan di Linux |

3681| `allowAllUnixSockets` | `bool` | `False` | Izinkan akses ke semua Unix socket |3688| `allowAllUnixSockets` | `bool` | `False` | Izinkan akses ke semua Unix socket |

3682| `allowLocalBinding` | `bool` | `False` | Izinkan proses untuk mengikat ke port lokal (misalnya, untuk dev server) |3689| `allowLocalBinding` | `bool` | `False` | Izinkan proses untuk mengikat ke port lokal (misalnya, untuk server dev) |

3683| `allowMachLookup` | `list[str]` | `[]` | Hanya macOS: nama layanan XPC/Mach yang diizinkan. Mendukung wildcard di akhir |3690| `allowMachLookup` | `list[str]` | `[]` | Hanya macOS: Nama layanan XPC/Mach yang diizinkan. Mendukung wildcard trailing |

3684| `httpProxyPort` | `int` | `None` | Port proxy HTTP untuk permintaan jaringan |3691| `httpProxyPort` | `int` | `None` | Port proxy HTTP untuk permintaan jaringan |

3685| `socksProxyPort` | `int` | `None` | Port proxy SOCKS untuk permintaan jaringan |3692| `socksProxyPort` | `int` | `None` | Port proxy SOCKS untuk permintaan jaringan |

3686 3693 

3687<Note>3694<Note>

3688 Proxy sandbox bawaan memberlakukan daftar izin jaringan berdasarkan nama host yang diminta dan tidak menghentikan atau memeriksa lalu lintas TLS, sehingga teknik seperti [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) dapat berpotensi melewatinya. Lihat [Batasan keamanan sandboxing](/docs/id/sandboxing#security-limitations) untuk detail dan [Penyebaran aman](/docs/id/agent-sdk/secure-deployment#traffic-forwarding) untuk mengonfigurasi proxy yang menghentikan TLS.3695 Proxy sandbox bawaan memberlakukan daftar izin jaringan berdasarkan nama host yang diminta dan tidak menghentikan atau memeriksa lalu lintas TLS, sehingga teknik seperti [domain fronting](https://en.wikipedia.org/wiki/Domain_fronting) berpotensi dapat melewatinya. Lihat [Batasan keamanan sandboxing](/docs/id/sandboxing#security-limitations) untuk detail dan [Penyebaran aman](/docs/id/agent-sdk/secure-deployment#traffic-forwarding) untuk mengonfigurasi proxy yang menghentikan TLS.

3689</Note>3696</Note>

3690 3697 

3691<h3 id="sandboxignoreviolations">3698<h3 id="sandboxignoreviolations">


3700 network: list[str]3707 network: list[str]

3701```3708```

3702 3709 

3703| Properti | Tipe | Default | Deskripsi |3710| Property | Type | Default | Description |

3704| :-------- | :---------- | :------ | :-------------------------------------------- |3711| :-------- | :---------- | :------ | :-------------------------------------------- |

3705| `file` | `list[str]` | `[]` | Pola jalur file untuk mengabaikan pelanggaran |3712| `file` | `list[str]` | `[]` | Pola jalur file untuk mengabaikan pelanggaran |

3706| `network` | `list[str]` | `[]` | Pola jaringan untuk mengabaikan pelanggaran |3713| `network` | `list[str]` | `[]` | Pola jaringan untuk mengabaikan pelanggaran |


3709 Fallback Izin untuk Perintah Tanpa Sandbox3716 Fallback Izin untuk Perintah Tanpa Sandbox

3710</h3>3717</h3>

3711 3718 

3712Ketika `allowUnsandboxedCommands` diaktifkan, model dapat meminta untuk menjalankan perintah di luar sandbox dengan mengatur `dangerouslyDisableSandbox: True` dalam input tool. Permintaan ini jatuh kembali ke sistem izin yang ada, berarti handler `can_use_tool` Anda akan dipanggil, memungkinkan Anda menerapkan logika otorisasi kustom. Perintah yang tercantum dalam `excludedCommands` sebagai gantinya melewati sandbox secara otomatis, tanpa keterlibatan model; lihat [`SandboxSettings`](#sandboxsettings).3719Ketika `allowUnsandboxedCommands` diaktifkan, model dapat meminta untuk menjalankan perintah di luar sandbox dengan mengatur `dangerouslyDisableSandbox: True` dalam input tool. Permintaan ini kembali ke sistem izin yang ada, berarti handler `can_use_tool` Anda akan dipanggil, memungkinkan Anda menerapkan logika otorisasi khusus. Perintah yang tercantum dalam `excludedCommands` sebagai gantinya melewati sandbox secara otomatis, tanpa keterlibatan model; lihat [`SandboxSettings`](#sandboxsettings).

3713 3720 

3714Contoh berikut mencatat setiap permintaan tanpa sandbox dan menolaknya kecuali logika otorisasi Anda sendiri mengizinkannya:3721Contoh berikut mencatat setiap permintaan tanpa sandbox dan menolaknya kecuali logika otorisasi Anda sendiri mengizinkannya:

3715 3722 


3781<Warning>3788<Warning>

3782 Perintah yang berjalan dengan `dangerouslyDisableSandbox: True` memiliki akses sistem penuh. Pastikan handler `can_use_tool` Anda memvalidasi permintaan ini dengan hati-hati.3789 Perintah yang berjalan dengan `dangerouslyDisableSandbox: True` memiliki akses sistem penuh. Pastikan handler `can_use_tool` Anda memvalidasi permintaan ini dengan hati-hati.

3783 3790 

3784 Jika `permission_mode` diatur ke `bypassPermissions` dan `allow_unsandboxed_commands` diaktifkan, model dapat secara otonom menjalankan perintah di luar sandbox tanpa prompt persetujuan apa pun, terlepas dari [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves). Kombinasi ini secara efektif memungkinkan model untuk melarikan diri dari isolasi sandbox secara diam-diam.3791 Jika `permission_mode` diatur ke `bypassPermissions` dan `allow_unsandboxed_commands` diaktifkan, model dapat secara otonom menjalankan perintah di luar sandbox tanpa prompt persetujuan, kecuali untuk [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves). Kombinasi ini secara efektif memungkinkan model untuk melarikan diri dari isolasi sandbox secara diam-diam.

3785</Warning>3792</Warning>

3786 3793 

3787<h2 id="see-also">3794<h2 id="see-also">

Details

103 Konfirmasi skills dimuat103 Konfirmasi skills dimuat

104</h3>104</h3>

105 105 

106Dekat awal aliran, SDK menghasilkan pesan sistem dengan subtype `init`. Periksa array `skills` untuk mengonfirmasi skills Anda dimuat sebelum Claude mulai bekerja. Array mencakup skills yang dapat dipanggil pengguna yang telah Anda definisikan, bersama dengan [skills bundel yang disertakan dengan Claude Code](/docs/id/skills#bundled-skills).106Dekat awal aliran, SDK menghasilkan pesan sistem dengan subtype `init`. Periksa array `skills` untuk mengonfirmasi skills Anda dimuat sebelum Claude mulai bekerja. Array mencakup skills yang dapat dipanggil pengguna yang telah Anda definisikan dengan bidang frontmatter `description` atau `when_to_use`, bersama dengan [skills bundel yang disertakan dengan Claude Code](/docs/id/skills#bundled-skills).

107 107 

108Array hanya mencantumkan skills yang dapat dipanggil pengguna. Skill dengan [`user-invocable: false`](/docs/id/skills#control-who-invokes-a-skill) dalam frontmatter dimuat dan tetap tersedia untuk Claude, tetapi tidak muncul dalam array. Array mencerminkan apa yang sesi temukan dan mencantumkan skills yang sama apakah atau tidak mereka ada dalam daftar `skills` Anda.108Array hanya mencantumkan skills yang dapat dipanggil pengguna. Skill dengan [`user-invocable: false`](/docs/id/skills#control-who-invokes-a-skill) dalam frontmatter dimuat dan tetap tersedia untuk Claude, tetapi tidak muncul dalam array. Array mencantumkan skills yang sama apakah atau tidak mereka ada dalam daftar `skills` Anda.

109 109 

110<h3 id="allow-only-specific-skills">110<h3 id="allow-only-specific-skills">

111 Izinkan hanya skills tertentu111 Izinkan hanya skills tertentu


173Available commands: ["clear", "compact", "context", "usage", "code-review", "verify", "security-check", ...]173Available commands: ["clear", "compact", "context", "usage", "code-review", "verify", "security-check", ...]

174```174```

175 175 

176Skills yang dapat dipanggil pengguna Anda muncul dalam daftar ini dan array `skills` dari [Konfirmasi skills dimuat](#confirm-skills-loaded). Daftar `slash_commands` menambahkan sisa perintah yang tersedia dalam sesi Anda. Skill dengan [`user-invocable: false`](/docs/id/skills#control-who-invokes-a-skill) dalam frontmatter tidak muncul di salah satu. Sesi yang mengonfigurasi [server MCP](/docs/id/agent-sdk/mcp) juga dapat mengekspos [prompt MCP sebagai perintah](/docs/id/mcp#use-mcp-prompts-as-commands).176Skill dengan [`user-invocable: false`](/docs/id/skills#control-who-invokes-a-skill) dalam frontmatter tidak muncul dalam daftar ini atau dalam array `skills` dari [Konfirmasi skills dimuat](#confirm-skills-loaded). Sesi yang mengonfigurasi [server MCP](/docs/id/agent-sdk/mcp) juga dapat mengekspos [prompt MCP sebagai perintah](/docs/id/mcp#use-mcp-prompts-as-commands).

177 177 

178<h3 id="dispatch-commands-by-name">178<h3 id="dispatch-commands-by-name">

179 Dispatch perintah berdasarkan nama179 Dispatch perintah berdasarkan nama

Details

79 79 

80Ketika partial messages diaktifkan, Anda menerima raw Claude API streaming events yang dibungkus dalam objek. Tipe memiliki nama berbeda di setiap SDK:80Ketika partial messages diaktifkan, Anda menerima raw Claude API streaming events yang dibungkus dalam objek. Tipe memiliki nama berbeda di setiap SDK:

81 81 

82* **Python**: `StreamEvent` (import dari `claude_agent_sdk.types`)82* **Python**: [`StreamEvent`](/docs/id/agent-sdk/python#streamevent) (import dari `claude_agent_sdk.types`)

83* **TypeScript**: `SDKPartialAssistantMessage` dengan `type: 'stream_event'`83* **TypeScript**: [`SDKPartialAssistantMessage`](/docs/id/agent-sdk/typescript#sdkpartialassistantmessage) dengan `type: 'stream_event'`

84 84 

85Keduanya berisi raw Claude API events, bukan teks terakumulasi. Anda perlu mengekstrak dan mengakumulasi text deltas sendiri. Berikut adalah struktur setiap tipe:85Keduanya berisi raw Claude API events, bukan teks terakumulasi. Anda perlu mengekstrak dan mengakumulasi text deltas sendiri.

86 

87<CodeGroup>

88 ```python Python theme={null}

89 @dataclass

90 class StreamEvent:

91 uuid: str # Unique identifier for this event

92 session_id: str # Session identifier

93 event: dict[str, Any] # The raw Claude API stream event

94 parent_tool_use_id: str | None # Always None

95 ```

96 

97 ```typescript TypeScript theme={null}

98 type SDKPartialAssistantMessage = {

99 type: "stream_event";

100 event: BetaRawMessageStreamEvent; // From Anthropic SDK

101 parent_tool_use_id: string | null;

102 uuid: UUID;

103 session_id: string;

104 ttft_ms?: number; // Time to first token in ms, present only on message_start events

105 user_message_uuid?: string;

106 };

107 ```

108</CodeGroup>

109 86 

110Field `parent_tool_use_id` selalu `None` di Python dan `null` di TypeScript. Stream events dipancarkan untuk sesi utama saja; token-level deltas dari subagents tidak diteruskan. Untuk mengatribusikan output ke subagent, gunakan complete messages, yang membawa `parent_tool_use_id`. Lihat [Detect subagent invocation](/docs/id/agent-sdk/subagents#detect-subagent-invocation).87Field `parent_tool_use_id` selalu `None` di Python dan `null` di TypeScript. Stream events dipancarkan untuk sesi utama saja; token-level deltas dari subagents tidak diteruskan. Untuk mengatribusikan output ke subagent, gunakan complete messages, yang membawa `parent_tool_use_id`. Lihat [Detect subagent invocation](/docs/id/agent-sdk/subagents#detect-subagent-invocation).

111 88 

Details

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

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

498| `disallowedTools` | `string[]` | `[]` | Tool untuk tolak. Nama bare seperti `"Bash"` menghapus tool dari konteks Claude. Aturan scoped seperti `"Bash(rm *)"` membiarkan tool tersedia dan menolak panggilan yang cocok dalam setiap mode izin, termasuk `bypassPermissions`, untuk perintah [seperti yang ditulis](/docs/id/permissions#bash-rule-limits). Lihat [Izin](/docs/id/agent-sdk/permissions#allow-and-deny-rules) |498| `disallowedTools` | `string[]` | `[]` | Tool untuk tolak. Nama bare seperti `"Bash"` menghapus tool dari konteks Claude. Aturan scoped seperti `"Bash(rm *)"` membiarkan tool tersedia dan menolak panggilan yang cocok dalam setiap mode izin, termasuk `bypassPermissions`, untuk perintah [seperti yang ditulis](/docs/id/permissions#bash-rule-limits). Lihat [Izin](/docs/id/agent-sdk/permissions#allow-and-deny-rules) |

499| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | Model default | Mengontrol seberapa banyak usaha yang Claude masukkan ke dalam responsnya. Bekerja dengan pemikiran adaptif untuk memandu kedalaman pemikiran. Lihat [sesuaikan tingkat usaha](/docs/id/model-config#adjust-effort-level) |499| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `undefined` | Mengontrol seberapa banyak usaha yang Claude masukkan ke dalam responsnya. Bekerja dengan pemikiran adaptif untuk memandu kedalaman pemikiran. Lihat [sesuaikan tingkat usaha](/docs/id/model-config#adjust-effort-level) |

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

501| `env` | `Record<string, string \| undefined>` | `process.env` | Variabel lingkungan. Ketika diatur, ini mengganti lingkungan subprocess alih-alih menggabungkan dengan `process.env`, jadi lewatkan `{ ...process.env, YOUR_VAR: 'value' }` untuk menyimpan variabel yang diwariskan seperti `PATH`. Lihat [Tangani respons API yang lambat atau terhenti](#handle-slow-or-stalled-api-responses) untuk contoh pola ini, dan [Variabel lingkungan](/docs/id/env-vars) untuk variabel yang dibaca CLI yang mendasarinya. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |501| `env` | `Record<string, string \| undefined>` | `process.env` | Variabel lingkungan. Ketika diatur, ini mengganti lingkungan subprocess alih-alih menggabungkan dengan `process.env`, jadi lewatkan `{ ...process.env, YOUR_VAR: 'value' }` untuk menyimpan variabel yang diwariskan seperti `PATH`. Lihat [Tangani respons API yang lambat atau terhenti](#handle-slow-or-stalled-api-responses) untuk contoh pola ini, dan [Variabel lingkungan](/docs/id/env-vars) untuk variabel yang dibaca CLI yang mendasarinya. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |

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


5559 `SDKLocalCommandOutputMessage`5559 `SDKLocalCommandOutputMessage`

5560</h3>5560</h3>

5561 5561 

5562Output dari perintah lokal seperti `/voice` atau `/usage`. Ditampilkan sebagai teks gaya asisten dalam transkrip.5562Claude Code tidak memancarkan tipe pesan ini. Ketika Anda mengirimkan perintah seperti `/context` atau `/usage` sebagai prompt, outputnya tiba sebagai [`SDKAssistantMessage`](#sdkassistantmessage).

5563 5563 

5564```typescript theme={null}5564```typescript theme={null}

5565type SDKLocalCommandOutputMessage = {5565type SDKLocalCommandOutputMessage = {

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, daftarkan hook [`PreToolUse`](/docs/id/agent-sdk/hooks) yang mengembalikan keputusan [`defer`](/docs/id/hooks#defer-a-tool-call-for-later) alih-alih menunggu dalam callback, sehingga proses dapat keluar dan dilanjutkan nanti dari sesi yang disimpan.15Callback dapat tetap tertunda tanpa batas waktu. Eksekusi tetap dijeda sampai callback Anda kembali. Jika pengguna mungkin membutuhkan waktu lebih lama untuk merespons daripada yang dapat ditahan proses Anda, daftarkan hook [`PreToolUse`](/docs/id/agent-sdk/hooks) yang mengembalikan keputusan [`defer`](/docs/id/hooks#defer-a-tool-call-for-later) alih-alih menunggu dalam callback, sehingga proses dapat 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 


204 ```204 ```

205</CodeGroup>205</CodeGroup>

206 206 

207<Note>

208 Di Python, `can_use_tool` memerlukan [mode streaming](/docs/id/agent-sdk/streaming-vs-single-mode). Ketika Anda melewatkan aliran pesan terbatas melalui `query(prompt=generator)` atau `ClaudeSDKClient.connect(prompt=async_iterable)`, SDK menutup aliran input setelah pesan terakhir, sebelum callback izin dapat dipanggil, kecuali hook terdaftar atau server MCP dalam proses menjaganya tetap terbuka. Contoh di atas menjaganya tetap terbuka dengan hook `PreToolUse` yang mengembalikan `{"continue_": True}`. Menghubungkan tanpa prompt dan mengirim pesan melalui `ClaudeSDKClient.query()` menjaga aliran tetap terbuka dengan sendirinya dan tidak memerlukan hook.

209</Note>

210 

211Contoh ini menggunakan alur `y/n` di mana input apa pun selain `y` diperlakukan sebagai penolakan. Dalam praktik, Anda mungkin membangun UI yang lebih kaya yang memungkinkan pengguna memodifikasi permintaan, memberikan umpan balik, atau mengarahkan Claude sepenuhnya. Lihat [Merespons permintaan alat](#respond-to-tool-requests) untuk semua cara Anda dapat merespons.207Contoh ini menggunakan alur `y/n` di mana input apa pun selain `y` diperlakukan sebagai penolakan. Dalam praktik, Anda mungkin membangun UI yang lebih kaya yang memungkinkan pengguna memodifikasi permintaan, memberikan umpan balik, atau mengarahkan Claude sepenuhnya. Lihat [Merespons permintaan alat](#respond-to-tool-requests) untuk semua cara Anda dapat merespons.

212 208 

213<h3 id="respond-to-tool-requests">209<h3 id="respond-to-tool-requests">

Details

239 239 

240Mulai dari Claude Code v2.1.181, output datar dari `aws configure export-credentials --format process` juga diterima, dengan kunci yang sama di tingkat atas alih-alih bersarang di bawah `Credentials`.240Mulai dari Claude Code v2.1.181, output datar dari `aws configure export-credentials --format process` juga diterima, dengan kunci yang sama di tingkat atas alih-alih bersarang di bawah `Credentials`.

241 241 

242`Expiration` bersifat opsional. Mulai dari Claude Code v2.1.176, ketika perintah mengembalikan `Expiration` ISO 8601 yang valid, Claude Code menyimpan kredensial dalam cache hingga lima menit sebelum waktu itu. Tanpanya, atau pada versi sebelumnya, kredensial disimpan dalam cache selama satu jam.242`Expiration` bersifat opsional. Ketika perintah mengembalikan `Expiration` ISO 8601 yang valid, Claude Code menyimpan kredensial dalam cache hingga lima menit sebelum waktu itu. Tanpanya, kredensial disimpan dalam cache selama satu jam.

243 243 

244Ketika Anda mengonfigurasi `awsCredentialExport` tanpa `awsAuthRefresh`, Claude Code menggunakan kredensial yang diekspor secara langsung dan tidak menyelesaikan kembali rantai penyedia kredensial default AWS pada startup. Memerlukan Claude Code v2.1.206 atau lebih baru.244Ketika Anda mengonfigurasi `awsCredentialExport` tanpa `awsAuthRefresh`, Claude Code menggunakan kredensial yang diekspor secara langsung dan tidak menyelesaikan kembali rantai penyedia kredensial default AWS pada startup. Memerlukan Claude Code v2.1.206 atau lebih baru.

245 245 

Details

170* **`claude setup-token` dan `/install-github-app`**: hanya berlakukan `forceLoginMethod`, jadi mereka dapat membuat token di organisasi yang berbeda170* **`claude setup-token` dan `/install-github-app`**: hanya berlakukan `forceLoginMethod`, jadi mereka dapat membuat token di organisasi yang berbeda

171* **Masuk [gateway](/docs/id/claude-apps-gateway)**: dipilih oleh `forceLoginMethod: "gateway"` daripada dibatasi olehnya, dan tidak mengautentikasi terhadap organisasi Anthropic, jadi `forceLoginOrgUUID` tidak berlaku; gunakan penyedia identitas gateway Anda untuk membatasi akses171* **Masuk [gateway](/docs/id/claude-apps-gateway)**: dipilih oleh `forceLoginMethod: "gateway"` daripada dibatasi olehnya, dan tidak mengautentikasi terhadap organisasi Anthropic, jadi `forceLoginOrgUUID` tidak berlaku; gunakan penyedia identitas gateway Anda untuk membatasi akses

172 172 

173Terapkan kunci melalui alat manajemen perangkat Anda. [Pengaturan terkelola server](/docs/id/server-managed-settings) hanya menjangkau akun yang sudah diautentikasi ke organisasi Anda, jadi mereka tidak dapat mengarahkan login pertama pengembang. Jika organisasi Anda juga mendistribusikan pengaturan terkelola server, atur kunci di kedua tempat: sumber [pengaturan terkelola tidak bergabung](/docs/id/server-managed-settings#settings-precedence), dan pengaturan terkelola server yang di-cache menggantikan file yang dikelola perangkat, terlepas dari dua jenis kunci yang masih diisi dari sumber yang kalah:173Terapkan kunci melalui alat manajemen perangkat Anda. [Pengaturan terkelola server](/docs/id/server-managed-settings) hanya menjangkau akun yang sudah diautentikasi ke organisasi Anda, jadi mereka tidak dapat mengarahkan login pertama pengembang. Jika organisasi Anda juga mendistribusikan pengaturan terkelola server, atur kunci di kedua tempat: sumber [pengaturan terkelola tidak bergabung](/docs/id/server-managed-settings#settings-precedence), dan pengaturan terkelola server yang di-cache menggantikan file yang dikelola perangkat, terlepas dari beberapa [pengecualian per-kunci](/docs/id/server-managed-settings#per-key-exceptions-across-managed-sources). `forceLoginOrgUUID` dan nilai `"claudeai"` dan `"console"` dari `forceLoginMethod` bukan di antara pengecualian tersebut, jadi simpan di kedua tempat.

174 

175* **Blok `env`**: [bergabung per kunci](/docs/id/server-managed-settings#per-key-exceptions-across-managed-sources) dalam Claude Code v2.1.223 atau lebih baru

176* **[Kunci kunci lintas sumber](/docs/id/server-managed-settings#per-key-exceptions-across-managed-sources)**: dihormati dari sumber admin apa pun

177 

178`forceLoginMethod` dan `forceLoginOrgUUID` bukan keduanya, jadi simpan di kedua tempat.

179 174 

180Kunci juga memutuskan apakah sesi yang tidak menggunakan kredensial login dapat dimulai. Lihat [`forceLoginOrgUUID`](/docs/id/settings-reference#forceloginorguuid) dalam referensi pengaturan untuk perilaku lengkap.175Kunci juga memutuskan apakah sesi yang tidak menggunakan kredensial login dapat dimulai. Lihat [`forceLoginOrgUUID`](/docs/id/settings-reference#forceloginorguuid) dalam referensi pengaturan untuk perilaku lengkap.

181 176 

Details

568claude -p "<your prompt>" --output-format json | your_command568claude -p "<your prompt>" --output-format json | your_command

569```569```

570 570 

571Gunakan `--verbose` untuk debugging selama pengembangan, dan matikan dalam produksi.

572 

573<h3 id="run-autonomously-with-auto-mode">571<h3 id="run-autonomously-with-auto-mode">

574 Jalankan secara otonom dengan auto mode572 Jalankan secara otonom dengan auto mode

575</h3>573</h3>

chrome.md +2 −5

Details

123 Alat browser dalam plan mode123 Alat browser dalam plan mode

124</h3>124</h3>

125 125 

126Dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), panggilan alat browser yang hanya membaca halaman atau status browser berjalan tanpa permintaan izin, dan panggilan yang mengubah status meminta persetujuan.126Dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), prompt izin muncul sebelum Claude merekam GIF, membuka tab baru, atau menjalankan pintasan. Jika [mode bypass permissions tersedia](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) dalam sesi Anda dan [pengambilan feature-flag](/docs/id/env-vars#features-that-need-feature-flag-fetching) dimatikan, panggilan ini berjalan tanpa prompt.

127 127 

128* **Panggilan hanya-baca**: `read_page`, `get_page_text`, `find`, membaca pesan konsol atau permintaan jaringan, dan mengambil tangkapan layar128Panggilan `tabs_context_mcp` juga meminta ketika menetapkan `createIfEmpty`, dan begitu juga panggilan `browser_batch` yang mencakup salah satu tindakan ini.

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

130 

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

132 129 

133<h2 id="example-workflows">130<h2 id="example-workflows">

134 Contoh alur kerja131 Contoh alur kerja

Details

32 32 

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

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

35* [`pricing`](#pricing): contracted rates dan discount multiplier untuk spend meter35* [`pricing`](#pricing): contracted rates dan discount multiplier untuk spend meter dan untuk cost figures yang dilihat developer

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

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

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


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

66| `public_url` | Kecuali `host` adalah loopback | Origin `https://` yang terlihat secara eksternal, digunakan untuk membangun IdP `redirect_uri` dan discovery metadata. Diperlukan setiap kali `host` bukan loopback address, baik TLS menghentikan di proxy seperti ALB, Ingress, atau Cloud Run atau di gateway itu sendiri melalui `tls`, karena gateway tidak pernah menurunkan origin-nya sendiri dari header `X-Forwarded-*`; mereka dapat dipalsukan oleh client. Boot gagal tanpa itu. `trusted_proxies` di bawah mengatur resolusi client-IP saja. Juga diperlukan untuk mengaktifkan [telemetry](#telemetry), karena gateway membangun endpoint OTLP yang didorong ke client dari URL ini. |66| `public_url` | Kecuali `host` adalah loopback | Origin `https://` yang terlihat secara eksternal, digunakan untuk membangun IdP `redirect_uri` dan discovery metadata. Diperlukan setiap kali `host` bukan loopback address, baik TLS menghentikan di proxy seperti ALB, Ingress, atau Cloud Run atau di gateway itu sendiri melalui `tls`, karena gateway tidak pernah menurunkan origin-nya sendiri dari header `X-Forwarded-*`; mereka dapat dipalsukan oleh client. Boot gagal tanpa itu. `trusted_proxies` di bawah mengatur resolusi client-IP saja. Juga diperlukan untuk mengaktifkan [telemetry](#telemetry), karena gateway membangun endpoint OTLP yang didorong ke client dari URL ini. |

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

68| `trusted_proxies` | Tidak | CIDR atau IP dari load balancer di depan gateway. Ketika diatur, gateway mempercayai `X-Forwarded-For` hanya dari peer ini dan mencatat IP client yang sebenarnya untuk per-IP rate limiting dan audit. Setara dengan nginx `set_real_ip_from`. |68| `trusted_proxies` | Tidak | CIDR atau IP dari load balancer di depan gateway. Ketika diatur, gateway mempercayai `X-Forwarded-For` hanya dari peer ini dan mencatat IP client yang sebenarnya untuk per-IP rate limiting dan audit. Setara dengan nginx `set_real_ip_from`. Entri `X-Forwarded-For` yang ditulis sebagai `ipv4:port` atau `[ipv6]:port`, seperti yang dilakukan beberapa load balancer, dibaca dengan port dihilangkan. Alamat IPv6 dengan port ditambahkan dan tanpa bracket dapat dibaca sebagai alamat yang berbeda atau tidak dibaca sama sekali, jadi matikan opsi port pada proxy apa pun yang menulis bentuk itu. |

69 69 

70<h3 id="oidc">70<h3 id="oidc">

71 `oidc`71 `oidc`


76OpenID Connect (OIDC) adalah protokol SSO yang digunakan gateway dengan identity provider Anda; lihat [Identity provider setup](/docs/id/claude-apps-gateway-deploy#identity-provider-setup) untuk apa yang harus didaftarkan di sisi IdP.76OpenID Connect (OIDC) adalah protokol SSO yang digunakan gateway dengan identity provider Anda; lihat [Identity provider setup](/docs/id/claude-apps-gateway-deploy#identity-provider-setup) untuk apa yang harus didaftarkan di sisi IdP.

77 77 

78| Field | Diperlukan | Deskripsi |78| Field | Diperlukan | Deskripsi |

79| ------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |79| ------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

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

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


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

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

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

88| `scope_on_refresh` | Tidak | Juga kirim `scope`, dengan daftar yang sama seperti sign-in request, ketika gateway menukar refresh token. Default `false`: refresh request menghilangkan `scope`. Sebagian besar IdP mengembalikan id\_token pada setiap refresh dan tidak memerlukan ini. Atur `true` ketika IdP Anda mengembalikan id\_token pada refresh hanya jika diminta `openid` lagi, yang Okta dokumentasikan untuk refresh grant-nya. Tanpa id\_token, setiap refresh tergantung pada endpoint userinfo IdP menerima refreshed access token. Jika Anda gate sign-in atau match policies pada groups dan id\_token refresh-time IdP Anda menghilangkan mereka, juga atur `userinfo_fallback: true` jadi gateway mengisinya dari endpoint userinfo. IdP yang memberikan fewer scopes daripada yang diminta dapat menolak refresh dengan `invalid_scope`, termasuk untuk existing sessions jika Anda menambahkan entries ke `scopes` saat ini aktif. Unset key jika refreshes mulai gagal di `token_endpoint` setelah Anda mengaturnya. Memerlukan Claude Code v2.1.260 atau lebih baru di server gateway. |

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

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

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


135 `upstreams`136 `upstreams`

136</h3>137</h3>

137 138 

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

140 

141Pada `5xx`, `429`, `401`, `403`, `404`, atau timeout gateway failover ke next upstream; `4xx` lainnya tidak, karena error tersebut dapat diatribusikan ke request daripada upstream. `401` atau `403` berarti credential gateway sendiri gagal terhadap upstream itu. `404` berarti upstream itu tidak melayani model yang diminta, jadi upstream yang lebih baru dalam list masih bisa.

142 

143Jika Anda menetapkan `forward_user_identity: true` pada upstream, `429` yang dikembalikan ke request yang membawa email developer tidak failover. Lihat [bagaimana per-user limit denial mencapai developer](#per-user-identity-headers-for-a-proxy-you-run).

139 144 

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

141 146 


227 232 

228Ketika IdP token tidak membawa email, gateway mengirim hanya `x-claude-gateway-user-id` dan menghilangkan dua email headers. Jika IdP Anda menempatkan email di claim yang berbeda, atur [`oidc.email_claim`](#oidc) ke claim itu.233Ketika IdP token tidak membawa email, gateway mengirim hanya `x-claude-gateway-user-id` dan menghilangkan dua email headers. Jika IdP Anda menempatkan email di claim yang berbeda, atur [`oidc.email_claim`](#oidc) ke claim itu.

229 234 

235Ketika proxy Anda menjawab `429` ke request yang membawa email developer, gateway mengembalikan response itu ke developer apa adanya daripada failover ke next upstream, jadi per-user budget atau rate limit proxy Anda berlaku. Response lainnya dari proxy mengikuti [failover rules](#upstreams) biasa. Jika token IdP developer tidak membawa email, gateway meneruskan requests mereka tanpa email headers, jadi `429` ke salah satu requests itu menghitung sebagai upstream capacity dan failover. Sebelum v2.1.267 di server gateway, setiap `429` failover.

236 

230Atur `forward_user_identity` hanya pada upstream yang `base_url` adalah proxy yang Anda operasikan. Gateway mengirim developer emails ke server apa pun yang `base_url` namai. Jika `base_url` adalah Anthropic API, yang merupakan default, gateway menolak untuk memulai.237Atur `forward_user_identity` hanya pada upstream yang `base_url` adalah proxy yang Anda operasikan. Gateway mengirim developer emails ke server apa pun yang `base_url` namai. Jika `base_url` adalah Anthropic API, yang merupakan default, gateway menolak untuk memulai.

231 238 

232<h4 id="amazon-bedrock">239<h4 id="amazon-bedrock">


257Explicit credentials harus lengkap: gateway gagal saat boot ketika `aws_access_key_id` dan `aws_secret_access_key` tidak diatur bersama, atau ketika `aws_session_token` diatur tanpa mereka. Sebelum v2.1.207, partial `auth:` block lulus validasi.264Explicit credentials harus lengkap: gateway gagal saat boot ketika `aws_access_key_id` dan `aws_secret_access_key` tidak diatur bersama, atau ketika `aws_session_token` diatur tanpa mereka. Sebelum v2.1.207, partial `auth:` block lulus validasi.

258 265 

259| Setup | Bagaimana |266| Setup | Bagaimana |

260| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |267| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

261| IAM permissions | Berikan gateway's principal `bedrock:InvokeModel` dan `bedrock:InvokeModelWithResponseStream` pada inference-profile ARNs dan underlying foundation-model ARNs. Untuk built-in catalog di US regions: `arn:aws:bedrock:<region>:<account>:inference-profile/us.anthropic.*` dan `arn:aws:bedrock:*::foundation-model/anthropic.*`. |268| IAM permissions | Berikan gateway's principal `bedrock:InvokeModel` dan `bedrock:InvokeModelWithResponseStream` pada inference-profile ARNs dan underlying foundation-model ARNs. Untuk built-in catalog di US regions: `arn:aws:bedrock:<region>:<account>:inference-profile/us.anthropic.*` dan `arn:aws:bedrock:*::foundation-model/anthropic.*`. Juga berikan `bedrock:CountTokens` pada foundation-model ARNs. Gateway menggunakannya, tanpa biaya, untuk menghitung input tokens dari request yang client abaikan, jadi [spend limits](#admin) tetap akurat. Tanpa itu gateway fallback ke one-token Bedrock request untuk count itu. |

262| Model access | Amazon Bedrock mengaktifkan model access secara default di commercial regions. Gate tingkat account yang tersisa adalah Anthropic's one-time use case form: jika tidak ada seorang pun di AWS account Anda yang telah mengirimkannya, buka Amazon Bedrock console, pilih model Anthropic dari Model catalog, dan lengkapi form. Lihat [Submit use case details](/docs/id/amazon-bedrock#1-submit-use-case-details) untuk AWS Organizations form dan permissions yang submitter butuhkan. |269| Model access | Amazon Bedrock mengaktifkan model access secara default di commercial regions. Gate tingkat account yang tersisa adalah Anthropic's one-time use case form: jika tidak ada seorang pun di AWS account Anda yang telah mengirimkannya, buka Amazon Bedrock console, pilih model Anthropic dari Model catalog, dan lengkapi form. Lihat [Submit use case details](/docs/id/amazon-bedrock#1-submit-use-case-details) untuk AWS Organizations form dan permissions yang submitter butuhkan. |

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

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


336 Microsoft Foundry343 Microsoft Foundry

337</h4>344</h4>

338 345 

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

340 347 

341```yaml theme={null}348```yaml theme={null}

342upstreams:349upstreams:


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

352 359 

353| Setup | Bagaimana |360| Setup | Bagaimana |

354| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |361| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

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

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

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

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


366 373 

367Gateway mencoba upstreams secara berurutan. `5xx`, `429`, `401`, `403`, `404`, timeouts, dan missing-endpoint (`501`) failover; `4xx` lainnya tidak.374Gateway mencoba upstreams secara berurutan. `5xx`, `429`, `401`, `403`, `404`, timeouts, dan missing-endpoint (`501`) failover; `4xx` lainnya tidak.

368 375 

369`429` adalah per-upstream capacity, jadi provisioned-throughput (PT) exhaustion failover ke on-demand. `404` adalah per-upstream model availability, jadi upstream yang belum enable model tidak memblokir upstream yang lebih baru dalam list yang melayaninya. Upstream yang tidak dapat menyelesaikan model yang diminta dilewati tanpa network round-trip.376`429` adalah per-upstream capacity, jadi provisioned-throughput (PT) exhaustion failover ke on-demand. Jika Anda menetapkan [`forward_user_identity: true`](#per-user-identity-headers-for-a-proxy-you-run) pada upstream, `429` ke request yang membawa email developer adalah per-user denial daripada dan tidak failover.

377 

378`404` adalah per-upstream model availability, jadi upstream yang belum enable model tidak memblokir upstream yang lebih baru dalam list yang melayaninya. Upstream yang tidak dapat menyelesaikan model yang diminta dilewati tanpa network round-trip.

370 379 

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

372 381 


472Blok `pricing` memberi tahu spend meter apa yang harus dikenakan alih-alih harga list USD, jadi caps dan [`/effective`](/docs/id/claude-apps-gateway-spend-limits#%2Feffective) mencerminkan tarif kontrak Anda. Jumlah tetap dalam USD dan tetap merupakan estimasi, bukan invoice. Dua prasyarat:481Blok `pricing` memberi tahu spend meter apa yang harus dikenakan alih-alih harga list USD, jadi caps dan [`/effective`](/docs/id/claude-apps-gateway-spend-limits#%2Feffective) mencerminkan tarif kontrak Anda. Jumlah tetap dalam USD dan tetap merupakan estimasi, bukan invoice. Dua prasyarat:

473 482 

474* Claude Code v2.1.227 atau lebih baru di server gateway. Versi sebelumnya menolak kunci yang tidak dikenal saat boot.483* Claude Code v2.1.227 atau lebih baru di server gateway. Versi sebelumnya menolak kunci yang tidak dikenal saat boot.

475* Blok [`admin:`](#admin), karena hanya spend meter yang membaca `pricing`. Gateway menolak untuk memulai dengan `pricing` diatur dan tidak ada `admin`.484* Blok [`admin:`](#admin) atau, dalam v2.1.268 atau lebih baru, blok [`managed:`](#managed) dengan setidaknya satu kebijakan. Gateway menolak untuk memulai dengan `pricing` diatur dan tidak ada blok, karena tidak ada yang akan membacanya.

476 485 

477```yaml theme={null}486```yaml theme={null}

478pricing:487pricing:


487```496```

488 497 

489| Field | Diperlukan | Deskripsi |498| Field | Diperlukan | Deskripsi |

490| ------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |499| ------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

491| `multiplier` | Tidak | Default `1`. Meter mengalikan setiap jumlah yang diukur dengan ini, baik harga list atau override, jadi `0.85` menagih 85% dari harga. Harus lebih besar dari 0 dan paling banyak 1. |500| `multiplier` | Tidak | Default `1`. Meter mengalikan setiap jumlah yang diukur dengan ini, baik harga list atau override, jadi `0.85` menagih 85% dari harga. Harus lebih besar dari 0 dan paling banyak 1. |

492| `overrides` | Tidak | Baris dari `{upstream, model, input, output, cache_read, cache_write}` dalam USD per juta token. Keempat tarif diperlukan dan harus positif. |501| `overrides` | Tidak | Baris dari `{upstream, model, input, output, cache_read, cache_write}` dalam USD per juta token. Keempat tarif diperlukan. Masing-masing harus lebih besar dari 0 dan paling banyak 10000. |

493 502 

494Bagaimana meter mencocokkan baris override:503Bagaimana meter mencocokkan baris override:

495 504 


501 510 

502Untuk tarif per-region, berikan setiap region upstream bernama sendiri dan satu baris per upstream.511Untuk tarif per-region, berikan setiap region upstream bernama sendiri dan satu baris per upstream.

503 512 

513<h4 id="send-the-rates-to-signed-in-clients">

514 Kirim tarif ke klien yang masuk

515</h4>

516 

517Dengan v2.1.268 atau lebih baru di server gateway, gateway juga menempatkan tarif dari `pricing` ke dalam kebijakan [`managed`](#managed) yang disajikannya, sebagai pengaturan terkelola [`modelPricing`](/docs/id/settings-reference#modelpricing). Developer yang cocok dengan kebijakan kemudian melihat tarif `pricing` untuk upstream pertama yang melayani setiap ID model dalam `/usage`, baris status, dan OpenTelemetry. Developer yang tidak cocok dengan kebijakan apa pun menerima tidak ada pengaturan terkelola, jadi angka mereka tetap pada harga list. Klien menerapkan pengaturan dalam Claude Code v2.1.242 atau lebih baru.

518 

519* Apa yang ditambahkan gateway: kecuali blok `cli` kebijakan sudah mengatur `modelPricing`, gateway menambahkan `multiplier` dan, untuk setiap ID model yang dapat diminta klien, baris override dari upstream pertama yang melayani ID itu. Tarif yang hanya upstream failover yang mengenakan tetap di gateway.

520* Opt satu kebijakan keluar: atur `modelPricing` ke `{}` dalam blok `cli` kebijakan itu, dan developer-nya tetap pada harga list.

521* Pertahankan tarif kebijakan sendiri: kebijakan yang blok `cli`-nya mengatur `modelPricing` dengan `multiplier` atau `overrides` sendiri menyimpan `modelPricing` itu utuh, dan gateway menambahkan tidak ada tarif sendiri ke dalamnya.

522 

504<h3 id="models">523<h3 id="models">

505 `models`524 `models`

506</h3>525</h3>


637```656```

638 657 

639| Key | Ditegakkan oleh | Efek |658| Key | Ditegakkan oleh | Efek |

640| ------------------------------------------ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |659| ------------------------------------------ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

641| `availableModels` | Gateway + CLI | Allowlist model. Juga diperiksa di `/v1/messages`, jadi klien yang dipatch tidak dapat membypassnya. |660| `availableModels` | Gateway + CLI | Allowlist model. Juga diperiksa di `/v1/messages`, jadi klien yang dipatch tidak dapat membypassnya. |

642| `permissions.allow` / `.deny` | CLI | Aturan tool dan command. Lihat [Permissions](/docs/id/permissions). |661| `permissions.allow` / `.deny` | CLI | Aturan tool dan command. Lihat [Permissions](/docs/id/permissions). |

643| `permissions.disableBypassPermissionsMode` | CLI | Atur ke `disable` untuk memblokir [`bypassPermissions`](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode), mode yang melewati prompt permission, dan flag `--dangerously-skip-permissions` |662| `permissions.disableBypassPermissionsMode` | CLI | Atur ke `disable` untuk memblokir [`bypassPermissions`](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode), mode yang melewati prompt permission, dan flag `--dangerously-skip-permissions` |

644| `allowManagedPermissionRulesOnly` | CLI | Ketika `true`, pengaturan terkelola menjadi satu-satunya sumber pengaturan aturan permission. Entri [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) mencantumkan setiap sumber yang Claude Code kemudian abaikan. |663| `allowManagedPermissionRulesOnly` | CLI | Ketika `true`, pengaturan terkelola menjadi satu-satunya sumber pengaturan aturan permission. Entri [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) mencantumkan setiap sumber yang Claude Code kemudian abaikan. |

645| `env` | CLI | Variabel lingkungan yang digabungkan ke proses CLI. Gunakan untuk telemetry, auto-update, dan model-name overrides. |664| `env` | CLI | Variabel lingkungan yang digabungkan ke proses CLI. Gunakan untuk telemetry, auto-update, dan model-name overrides. |

646| `hooks` | CLI | Org-wide [hooks](/docs/id/hooks) |665| `hooks` | CLI | Org-wide [hooks](/docs/id/hooks) |

666| `managedMcpServers` | CLI | Remote MCP servers [disediakan ke setiap developer yang cocok](/docs/id/managed-mcp#provide-servers-through-managed-settings) bersama server yang mereka tambahkan sendiri, `http` dan `sse` saja. Lihat [MCP servers in a policy](#mcp-servers-in-a-policy). Memerlukan Claude Code v2.1.259 atau lebih baru di server gateway dan pada klien. Klien sebelumnya mengabaikan kunci. |

647 667 

648Karena pengaturan ini tiba melalui jaringan, CLI menunjukkan setiap developer dialog persetujuan keamanan sebelum menerapkan pengaturan yang tercantum di bawah:668Karena pengaturan ini tiba melalui jaringan, CLI menunjukkan setiap developer dialog persetujuan keamanan sebelum menerapkan pengaturan yang tercantum di bawah:

649 669 


667 687 

668Kunci `cli` dinamai `settings` dalam rilis sebelumnya. Ejaan itu masih diterima sebagai alias, tetapi deployment baru harus menggunakan `cli`.688Kunci `cli` dinamai `settings` dalam rilis sebelumnya. Ejaan itu masih diterima sebagai alias, tetapi deployment baru harus menggunakan `cli`.

669 689 

690<h4 id="mcp-servers-in-a-policy">

691 MCP servers in a policy

692</h4>

693 

694Untuk menyediakan MCP servers ke klien Claude Code yang cocok dengan kebijakan, atur [`managedMcpServers`](/docs/id/managed-mcp#provide-servers-through-managed-settings) dalam blok `cli` kebijakan itu. Anda memerlukan Claude Code v2.1.259 atau lebih baru di server gateway dan pada klien.

695 

696Gateway memeriksa setiap entri saat boot dengan [aturan yang sama yang Claude Code terapkan pada klien](/docs/id/managed-mcp#what-an-entry-can-contain), dan jika entri gagal pemeriksaan, gateway menolak untuk memulai dan menamai entri.

697 

698Jika Anda menulis referensi `${VAR}` dalam `gateway.yaml`, gateway menyelesaikannya dari lingkungannya saat boot melalui [secret expansion](#secret-expansion) sebelum menjalankan pemeriksaan entri, jadi setiap klien yang cocok menerima nilai literal dan dapat membacanya. [Header guidance untuk server yang disediakan](/docs/id/managed-mcp#provide-servers-through-managed-settings) berlaku untuk nilai yang diperluas.

699 

700Gateway menolak ejaan `.mcp.json` `mcpServers` dalam blok `cli`, dan error boot-nya menamai `managedMcpServers` sebagai kunci yang digunakan. Sebelum v2.1.259, gateway menolak definisi MCP server apa pun dalam blok `cli`.

701 

670<h4 id="claude-desktop-overlay">702<h4 id="claude-desktop-overlay">

671 Claude Desktop overlay703 Claude Desktop overlay

672</h4>704</h4>


682* Daftar model, dari `availableModels`714* Daftar model, dari `availableModels`

683* Tool yang dinonaktifkan, dari entri `permissions.deny` nama tool telanjang. Jika Anda mengatur `disabledBuiltinTools` dalam blok `desktop` kebijakan, gateway melayani union dari nilai Anda dan daftar yang diturunkan, jadi Anda dapat menonaktifkan lebih banyak tool dengan cara ini tetapi tidak dapat mengaktifkan kembali yang Anda nonaktifkan melalui `permissions.deny`715* Tool yang dinonaktifkan, dari entri `permissions.deny` nama tool telanjang. Jika Anda mengatur `disabledBuiltinTools` dalam blok `desktop` kebijakan, gateway melayani union dari nilai Anda dan daftar yang diturunkan, jadi Anda dapat menonaktifkan lebih banyak tool dengan cara ini tetapi tidak dapat mengaktifkan kembali yang Anda nonaktifkan melalui `permissions.deny`

684* Allowlist egress, dari `sandbox.network.allowedDomains`. Jika Anda mengatur `coworkEgressAllowedHosts` dalam blok `desktop` kebijakan, gateway menggunakan nilai itu alih-alih daftar yang diturunkan716* Allowlist egress, dari `sandbox.network.allowedDomains`. Jika Anda mengatur `coworkEgressAllowedHosts` dalam blok `desktop` kebijakan, gateway menggunakan nilai itu alih-alih daftar yang diturunkan

685* Endpoint OTLP yang menunjuk ke gateway itu sendiri, yang menyebarkan ke tujuan Anda, disertakan ketika penerusan [`telemetry`](#telemetry) dikonfigurasi717* Endpoint OTLP yang menunjuk ke gateway itu sendiri, dan atribut identitas pengguna yang masuk. Gateway meneruskan export yang diterima di endpoint itu ke tujuan `forward_to` Anda. Ini menyertakan endpoint dan atribut ketika Anda mengatur [`telemetry.forward_to`](#telemetry) dan `listen.public_url`.

718 

719 Claude Desktop mengekspor setiap signal dengan satu encoding: `http/protobuf`, atau `http/json` ketika Anda mengatur `OTEL_EXPORTER_OTLP_PROTOCOL` atau salah satu varian per-signal-nya ke `http/json` dalam `env` kebijakan. Sebelum Claude Code v2.1.261 di server gateway, respons mengatur `http/json` terlepas, jadi kolektor yang hanya menerima protobuf menolak export Claude Desktop

686 720 

687Untuk mengatur `disabledBuiltinTools` atau `coworkEgressAllowedHosts` dalam blok `desktop` kebijakan, Anda memerlukan Claude Code v2.1.232 atau lebih baru di server gateway.721Untuk mengatur `disabledBuiltinTools`, `coworkEgressAllowedHosts`, atau pengaturan `managedMcpServers` Claude Desktop sendiri dalam blok `desktop` kebijakan, Anda memerlukan Claude Code v2.1.232 atau lebih baru di server gateway. `managedMcpServers` Claude Desktop mengambil nilai array daripada objek.

688 722 

689Gateway menghilangkan kunci tanpa padanan Claude Desktop, seperti `hooks` dan aturan permission yang dibatasi seperti `Bash(npm *)`, dari respons bootstrap.723Gateway menghilangkan kunci tanpa padanan Claude Desktop, seperti `hooks` dan aturan permission yang dibatasi seperti `Bash(npm *)`, dari respons bootstrap.

690 724 


705Setiap kunci opsional; Claude Desktop menerapkan default-nya sendiri untuk kunci apa pun yang Anda hilangkan. Gateway memvalidasi setiap blok `desktop` saat boot terhadap skema konfigurasi yang Claude Desktop itu sendiri gunakan, jadi kesalahan muncul saat startup gateway sebagai error yang menamai kunci daripada mencapai setiap desktop yang terhubung. Gateway gagal saat boot ketika blok berisi:739Setiap kunci opsional; Claude Desktop menerapkan default-nya sendiri untuk kunci apa pun yang Anda hilangkan. Gateway memvalidasi setiap blok `desktop` saat boot terhadap skema konfigurasi yang Claude Desktop itu sendiri gunakan, jadi kesalahan muncul saat startup gateway sebagai error yang menamai kunci daripada mencapai setiap desktop yang terhubung. Gateway gagal saat boot ketika blok berisi:

706 740 

707* Kunci yang tidak dikenal741* Kunci yang tidak dikenal

708* Kunci yang dikenali yang nilai-nya Claude Desktop akan menolak atau diam-diam jatuhkan, seperti nilai kosong atau sub-kunci yang salah eja di dalam entri bersarang742* Kunci yang dikenali yang nilai-nya Claude Desktop akan menolak atau diam-diam jatuhkan, seperti nilai kosong atau sub-kunci yang salah eja di dalam entri bersarang. Sebelum v2.1.260, gateway diam-diam menjatuhkan field yang salah eja di dalam objek bersarang dari entri `managedMcpServers` atau `orgPluginSettings` alih-alih gagal saat boot.

709* Kunci yang gateway hitung sendiri: koneksi inference, daftar model, dan relay OTLP. Konfigurasikan ini melalui [`upstreams`](#upstreams), [`models`](#models), dan bagian [`telemetry`](#telemetry) `forward_to`.743* Kunci yang gateway hitung sendiri: koneksi inference, daftar model, dan relay OTLP. Konfigurasikan ini melalui [`upstreams`](#upstreams), [`models`](#models), dan bagian [`telemetry`](#telemetry) `forward_to`.

710* Alias legacy dari kunci saat ini. Dalam error boot, gateway menamai kunci kanonis untuk ditulis.744* Alias legacy dari kunci saat ini. Dalam error boot, gateway menamai kunci kanonis untuk ditulis.

711 745 

712Seperti dengan blok `cli`, gateway memvalidasi terhadap skema yang disertakan dengan versi yang terinstal. Untuk mengirimkan pengaturan yang diperkenalkan oleh rilis Claude Desktop yang lebih baru, upgrade gateway terlebih dahulu.746Jika Anda menggunakan nilai atau bentuk entri yang sudah usang, seperti entri `managedMcpServers` tanpa `transport`, gateway dimulai dan mencatat peringatan yang menamai pengganti.

747 

748Gateway memvalidasi blok `desktop` terhadap skema yang disertakan dengan versi yang terinstal, seperti yang dilakukannya pada blok `cli`. Untuk mengirimkan pengaturan yang diperkenalkan oleh rilis Claude Desktop yang lebih baru, upgrade gateway terlebih dahulu. Misalnya, `userPluginMarketplacesEnabled` dan `userPluginUploadsEnabled` memerlukan Claude Code v2.1.260 atau lebih baru di server gateway dan Claude Desktop 1.37937.0 atau lebih baru pada mesin anggota.

749 

750Jika Anda mengatur `orgPluginSettings` dalam blok `desktop` kebijakan, gateway melayaninya dalam bentuk array yang Claude Desktop 1.15200.0 dan lebih baru baca. Desktop yang lebih lama mengabaikan array dan tidak memberlakukan kebijakan tool plugin, jadi perbarui anggota ke 1.15200.0 atau lebih baru sebelum Anda mengandalkannya.

713 751 

714Gateway mengisi kunci yang blok `desktop` kebijakan tidak atur dari blok `desktop` catch-all `match: {}`, dengan cara yang sama mengisi blok `cli` kebijakan dari dasar. Jika Anda mengatur `disabledBuiltinTools` atau `builtinToolPolicy` dalam dasar dan kebijakan peran, gateway menyimpan pembatasan dasar:752Gateway mengisi kunci yang blok `desktop` kebijakan tidak atur dari blok `desktop` catch-all `match: {}`, dengan cara yang sama mengisi blok `cli` kebijakan dari dasar. Jika Anda mengatur `disabledBuiltinTools` atau `builtinToolPolicy` dalam dasar dan kebijakan peran, gateway menyimpan pembatasan dasar:

715 753 


730 768 

731Kebijakan gateway berlaku untuk setiap invokasi Claude Code pada mesin, termasuk run non-interaktif `claude -p` dan sesi yang dihasilkan oleh Agent SDK. Jika gateway tidak dapat dijangkau saat startup, sesi yang masuk keluar dengan error daripada menjalankan tanpa kebijakan mereka.769Kebijakan gateway berlaku untuk setiap invokasi Claude Code pada mesin, termasuk run non-interaktif `claude -p` dan sesi yang dihasilkan oleh Agent SDK. Jika gateway tidak dapat dijangkau saat startup, sesi yang masuk keluar dengan error daripada menjalankan tanpa kebijakan mereka.

732 770 

733<Warning>

734 Saat boot, gateway menolak `mcpServers` di dalam blok `cli` kebijakan. Anda tidak dapat mendistribusikan server MCP per grup ke klien Claude Code; deploy server MCP melalui `managed-mcp.json` berbasis file pada setiap perangkat atau biarkan developer menambahkannya secara lokal. Anda dapat mengirimkan pengaturan `managedMcpServers` Claude Desktop ke klien Claude Desktop melalui blok `desktop` kebijakan. Untuk mengaturnya, Anda memerlukan Claude Code v2.1.232 atau lebih baru di server gateway.

735</Warning>

736 

737<h3 id="telemetry">771<h3 id="telemetry">

738 `telemetry`772 `telemetry`

739</h3>773</h3>

740 774 

741CLI mengirim metrik, log, dan, ketika diaktifkan, trace OpenTelemetry Protocol (OTLP) melalui HTTP ke gateway, yang meneruskan mereka verbatim ke setiap tujuan yang dikonfigurasi. Lihat [Monitoring usage](/docs/id/monitoring-usage) untuk metrik dan event yang CLI emit.775CLI mengirim metrik, log, dan, ketika diaktifkan, trace ke gateway, yang meneruskan mereka verbatim ke setiap tujuan yang dikonfigurasi. Export menggunakan OpenTelemetry Protocol (OTLP) melalui HTTP. Untuk melewati relay dan memiliki sesi mengekspor langsung ke kolektor Anda, [namai kolektor dalam kebijakan](#export-directly-to-your-collector). Lihat [Monitoring usage](/docs/id/monitoring-usage) untuk metrik dan event yang CLI emit.

742 776 

743CLI memberi stempel setiap export dengan identitas pengguna yang terautentikasi, dibaca dari JWT yang diterbitkan gateway: atribut `user.id`, `user.email`, dan `user.groups`. Atribusi biaya dan penggunaan per-developer oleh karena itu bekerja tanpa konfigurasi sisi developer.777CLI memberi stempel setiap export dengan identitas pengguna yang terautentikasi, dibaca dari JWT yang diterbitkan gateway: atribut `user.id`, `user.email`, dan `user.groups`. Atribusi biaya dan penggunaan per-developer oleh karena itu bekerja tanpa konfigurasi sisi developer.

744 778 

779[Claude Desktop](#claude-desktop-overlay) dan sesi Cowork yang masuk melalui gateway memberi stempel telemetry mereka dengan `user.email` dan `user.groups` bersama `enduser.id`, jadi Anda dapat mencakup penggunaan terminal, Desktop, dan Cowork dengan satu query pada `user.email` atau `user.groups`. `user.groups` adalah daftar grup IdP yang dipisahkan koma.

780 

781Seperti semua data OpenTelemetry dari Claude Code, atribut ini hanya pergi ke tujuan yang organisasi Anda konfigurasikan, tidak pernah ke Anthropic.

782 

783Jika daftar grup pengguna lebih panjang dari 255 karakter setelah percent-encoded, atau nama grup berisi koma atau tanda sama dengan, gateway meninggalkan `user.groups` dari telemetry Desktop dan Cowork pengguna itu daripada memotongnya. Sesi terminal pengguna itu masih membawa daftar lengkap.

784 

785Anda memerlukan Claude Code v2.1.265 atau lebih baru di server gateway untuk `user.email` dan `user.groups` pada telemetry Desktop dan Cowork, dan Claude Desktop 1.24012 atau lebih baru pada mesin setiap developer untuk `user.groups`.

786 

745```yaml theme={null}787```yaml theme={null}

746telemetry:788telemetry:

747 forward_to:789 forward_to:


773 815 

774Untuk kolektor in-cluster, paparkan melalui HTTPS di alamat internal-nya sendiri, atau jalankan sebagai sidecar dengan variabel diatur.816Untuk kolektor in-cluster, paparkan melalui HTTPS di alamat internal-nya sendiri, atau jalankan sebagai sidecar dengan variabel diatur.

775 817 

776Telemetry off dalam CLI secara default. Mengonfigurasi `telemetry.forward_to` bersama dengan `listen.public_url` mengaktifkannya. Gateway mendorong enam variabel env ke setiap klien yang terhubung melalui `/managed/settings`:818Telemetry off dalam CLI secara default. Ketika Anda mengatur `telemetry.forward_to` dan `listen.public_url`, gateway mengaktifkannya untuk klien yang terhubung dengan mendorong enam variabel lingkungan melalui `/managed/settings`:

777 819 

778* `CLAUDE_CODE_ENABLE_TELEMETRY=1`820* `CLAUDE_CODE_ENABLE_TELEMETRY=1`

779* `OTEL_METRICS_EXPORTER=otlp`821* `OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, dan `OTEL_TRACES_EXPORTER`, masing-masing diatur ke `otlp` jika setidaknya satu tujuan `forward_to` mengaktifkan signal itu dan ke `none` sebaliknya

780* `OTEL_LOGS_EXPORTER=otlp`

781* `OTEL_TRACES_EXPORTER=otlp`

782* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`822* `OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>`

783* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`823* `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`

784 824 

785Endpoint yang didorong dibangun dari URL publik, jadi metrik dan log tidak memerlukan konfigurasi OTEL dari developer atau kebijakan. Konfigurasi yang didorong diterapkan pada tingkat terkelola, menimpa variabel `OTEL_*` yang developer atur secara lokal. Terlepas dari apakah gateway mendorong variabel-variabel ini, CLI yang masuk melalui `/login` yang memiliki export OTLP/HTTP diaktifkan mengirim export-nya ke gateway daripada ke endpoint yang dikonfigurasi secara lokal, dan tanpa tujuan `forward_to` untuk signal gateway menerima dan membuangnya; jika Anda sudah mengumpulkan telemetry Claude Code secara langsung, tambahkan kolektor Anda sebagai tujuan `forward_to`.825Sebelum Claude Code v2.1.265 di server gateway, gateway mendorong ketiga selector exporter sebagai `otlp`, termasuk untuk signal yang tidak ada tujuan yang opt into.

826 

827Endpoint yang didorong dibangun dari URL publik, jadi metrik dan log tidak memerlukan konfigurasi OTEL dari developer atau kebijakan.

828 

829Developer yang masuk melalui `/login` tidak dapat mengalihkan export dengan konfigurasi OTEL mereka sendiri:

830 

831* **Variabel yang diatur secara lokal**: Claude Code menerapkan variabel yang didorong pada tingkat terkelola, jadi masing-masing menimpa nilai yang developer atur untuk itu secara lokal.

832* **Endpoint yang dikonfigurasi secara lokal**: dengan export OTLP/HTTP diaktifkan, CLI mengabaikan endpoint yang dikonfigurasi secara lokal apa pun, terlepas dari apakah gateway mendorong variabel telemetry. Export-nya pergi ke gateway kecuali kebijakan [menamai kolektor Anda sebagai endpoint](#export-directly-to-your-collector).

833 

834Tanpa tujuan `forward_to` untuk signal, gateway menerima dan membuangnya. Jika developer sudah mengekspor telemetry Claude Code ke salah satu kolektor Anda, tambahkan sebagai tujuan `forward_to`, dengan logs atau traces diaktifkan jika mereka mengekspor itu, jadi terus menerima data mereka setelah mereka masuk. Untuk melewati relay alih-alih, [namai kolektor dalam kebijakan](#export-directly-to-your-collector).

835 

836[Traces](/docs/id/monitoring-usage#traces-beta) juga memerlukan `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` pada setiap klien. Atur dalam blok `env` kebijakan terkelola, karena gateway tidak mendorongnya. Developer menyetujuinya dalam dialog [security approval](#managed) yang sama yang endpoint yang didorong sudah trigger.

786 837 

787[Traces](/docs/id/monitoring-usage#traces-beta) selain itu memerlukan `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` pada setiap klien. Gateway tidak mendorong variabel itu, jadi atur melalui blok `env` kebijakan terkelola. Ini bukan di antara variabel yang Claude Code terapkan tanpa persetujuan developer, jadi mengirimkannya melalui kebijakan dicakup oleh dialog [security approval](#managed) yang sama yang endpoint OTLP yang didorong sudah trigger.838Atur ke `1` hanya dalam kebijakan yang grup-nya Anda ingin trace. Kebijakan yang tidak mengaturnya mewarisi nilai dari kebijakan catch-all `match: {}` Anda jika kebijakan itu mengatur satu, per [merge rules](#managed). Untuk menjaga klien grup dari mengirim trace bahkan ketika developer mengatur variabel secara lokal, atur ke `0` dalam kebijakan grup itu.

788 839 

789Kedua encoding OTLP protobuf dan JSON direlai, dan backend apa pun yang kompatibel dengan OpenTelemetry bekerja sebagai tujuan.840Kedua encoding OTLP protobuf dan JSON direlai, dan backend apa pun yang kompatibel dengan OpenTelemetry bekerja sebagai tujuan.

790 841 

842<h4 id="export-directly-to-your-collector">

843 Export directly to your collector

844</h4>

845 

846Untuk memiliki sesi yang masuk melalui `/login` mengirim telemetry langsung ke kolektor Anda alih-alih melalui relay, atur `OTEL_EXPORTER_OTLP_ENDPOINT` ke URL dasar `https://` kolektor dalam blok `env` [kebijakan terkelola](#managed). Claude Code menambahkan `/v1/metrics`, `/v1/logs`, atau `/v1/traces` ke URL yang Anda atur, seperti `https://otel-collector.example.com:4318`, dan mengekspor setiap signal di sana melalui OTLP/HTTP. Memerlukan Claude Code v2.1.265 atau lebih baru pada mesin setiap developer. Klien sebelumnya mengekspor melalui relay.

847 

848Untuk mengautentikasi ke kolektor, atur `OTEL_EXPORTER_OTLP_HEADERS` dalam blok `env` yang sama. Sesi tidak pernah mengirim token sesi gateway developer ke kolektor yang dinamai dengan cara ini.

849 

850Ketika Anda menambah atau mengubah endpoint ini dalam kebijakan, Claude Code meminta setiap developer untuk menyetujuinya dalam [security approval dialog](#managed) sebelum menerapkannya dalam sesi interaktif.

851 

852Claude Code memeriksa endpoint sebelum mengekspor signal langsung, dan menyimpan signal itu di relay ketika pemeriksaan gagal. Pemeriksaan termasuk:

853 

854* Endpoint berasal dari gateway itu sendiri. Jika Anda mengatur variabel yang sama dalam profil MDM atau `managed-settings.json` lokal, export tetap di relay.

855* URL menggunakan `https://`, atau `http://` ke alamat loopback

856* URL menyelesaikan ke path yang berakhir dalam `/v1/<signal>`, tanpa query atau fragment. Claude Code membangun path itu sendiri dari variabel generik. Ini menggunakan variabel per-signal seperti `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` seperti yang ditulis, jadi sertakan path lengkap di sana.

857* URL bukan host gateway itu sendiri. Endpoint yang ditujukan ke gateway menyimpan path relay dan token sesi-nya.

858* Baik Anda maupun developer tidak mengonfigurasi [`otelHeadersHelper`](/docs/id/settings-reference#otelheadershelper) dalam sumber pengaturan apa pun. Dengan helper yang dikonfigurasi, setiap signal tetap di relay.

859 

860Endpoint yang Anda namai mengubah hanya di mana export pergi. Anda masih memilih signal mana yang mengekspor sama sekali dengan selector `OTEL_*_EXPORTER`.

861 

862Endpoint saja tidak mengaktifkan export, jadi juga atur variabel yang melakukannya, kecuali gateway sudah mendorongnya:

863 

864* Jika gateway sudah [mendorong variabel telemetry](#telemetry), mereka mencakup enablement, selector, dan protokol, dan endpoint eksplisit Anda menimpa nilai `<public_url>` yang didorong. Atur selector `OTEL_*_EXPORTER` ke `otlp` sendiri hanya untuk signal yang tidak ada tujuan `forward_to` yang mengaktifkan.

865* Jika tidak, juga atur `CLAUDE_CODE_ENABLE_TELEMETRY=1`, selector `OTEL_*_EXPORTER`, dan `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.

866 

867Ketika developer masuk keluar, atau masuk ke gateway yang berbeda, export ke kolektor berhenti dan Claude Code menjatuhkan setiap batch yang tersisa daripada mengirimkannya.

868 

869<h4 id="when-a-destination-fails">

870 When a destination fails

871</h4>

872 

873Gateway tidak buffer, retry, atau menyimpan telemetry, jadi itu menjatuhkan export yang tidak mencapai tujuan daripada mengirimkannya terlambat. Setiap tujuan berhasil atau gagal sendiri, dan klien yang mengekspor menerima respons sukses baik cara, jadi pengiriman yang gagal muncul hanya dalam log gateway.

874 

875Setelah lima pengiriman berturut-turut yang gagal ke tujuan, gateway menjeda penerusan ke dalamnya dalam peregangan 30 detik, mencatat setiap jeda, sampai pengiriman berhasil. Respons error apa pun, timeout, atau error koneksi dihitung sebagai pengiriman yang gagal, kecuali `400`, `413`, `415`, `422`, dan `431`, yang berarti kolektor menolak payload export itu sebagai salah bentuk atau terlalu besar.

876 

877Payload yang ditolak tidak memajukan atau mereset failure count: gateway terus meneruskan ke tujuan dan mencatat peringatan yang menamakannya dan status, pada penolakan pertama tujuan dan setiap seratus setelah.

878 

791<h3 id="http-tuning">879<h3 id="http-tuning">

792 HTTP tuning880 HTTP tuning

793</h3>881</h3>


795Empat blok tingkat atas opsional, `access_control`, `limits`, `timeouts`, dan `rate_limits`, menyetel permukaan HTTP. Default cocok untuk sebagian besar deployment.883Empat blok tingkat atas opsional, `access_control`, `limits`, `timeouts`, dan `rate_limits`, menyetel permukaan HTTP. Default cocok untuk sebagian besar deployment.

796 884 

797| Block | Key | Default | Deskripsi |885| Block | Key | Default | Deskripsi |

798| ---------------- | ---------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |886| ---------------- | ---------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

799| `access_control` | `allow_cidrs` / `deny_cidrs` | empty | Inbound IP allow/deny berdasarkan alamat klien, setelah resolusi `trusted_proxies`. `deny_cidrs` diperiksa terlebih dahulu; klien yang cocok ditolak bahkan jika `allow_cidrs` juga cocok. Jika `allow_cidrs` non-empty gateway adalah default-deny. `/healthz` dan `/readyz` dikecualikan dari `allow_cidrs`. |887| `access_control` | `allow_cidrs` / `deny_cidrs` | empty | Inbound IP allow/deny berdasarkan alamat klien, setelah resolusi `trusted_proxies`. `deny_cidrs` diperiksa terlebih dahulu; klien yang cocok ditolak bahkan jika `allow_cidrs` juga cocok. Jika `allow_cidrs` non-empty gateway adalah default-deny. `/healthz` dan `/readyz` dikecualikan dari `allow_cidrs`. Ketika proxy terpercaya mengirim entri `X-Forwarded-For` yang bukan alamat IP, klien nyata tidak diketahui dan gateway mencatat peringatan sekali yang menamai apa yang harus diperiksa. Di mana daftar apa pun berlaku untuk permintaan, itu menolaknya dengan `403` dan alasan audit `xff_unparseable`. Di mana tidak ada yang berlaku, itu melayani permintaan dan menggunakan alamat proxy sendiri sebagai IP klien untuk rate limits per-IP dan audit. |

800| `limits` | `max_request_bytes` | 32 MiB | Max inbound request body; permintaan yang terlalu besar mendapat `413` sebelum body dibuffer. Naikkan untuk permintaan file atau gambar besar. |888| `limits` | `max_request_bytes` | 32 MiB | Max inbound request body; permintaan yang terlalu besar mendapat `413` sebelum body dibuffer. Naikkan untuk permintaan file atau gambar besar. |

801| `limits` | `max_request_header_bytes` | unset | Ketika diatur, header yang terlalu besar mengembalikan `431` |889| `limits` | `max_request_header_bytes` | unset | Ketika diatur, header yang terlalu besar mengembalikan `431` |

802| `limits` | `max_url_length` | unset | Ketika diatur, URL yang terlalu panjang mengembalikan `414` |890| `limits` | `max_url_length` | unset | Ketika diatur, URL yang terlalu panjang mengembalikan `414` |


875# fail_closed_on_error: false963# fail_closed_on_error: false

876 964 

877# Meter at contracted rates instead of USD list price. Requires admin:.965# Meter at contracted rates instead of USD list price. Requires admin:.

966# With managed:, the same rates also go to signed-in clients.

878# Rates below are placeholders, not real contract prices.967# Rates below are placeholders, not real contract prices.

879# pricing:968# pricing:

880# multiplier: 0.85969# multiplier: 0.85


968 1057 

969`parentSettingsBehavior: "merge"` menjaga pengiriman Claude Desktop dari egress allowlist ke embedded Claude Code sessions-nya tetap berfungsi; [Deliver policy to Claude Desktop sessions](/docs/id/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) menjelaskan mekanisme dan di mana opt-in harus berada.1058`parentSettingsBehavior: "merge"` menjaga pengiriman Claude Desktop dari egress allowlist ke embedded Claude Code sessions-nya tetap berfungsi; [Deliver policy to Claude Desktop sessions](/docs/id/claude-apps-gateway#deliver-policy-to-claude-desktop-sessions) menjelaskan mekanisme dan di mana opt-in harus berada.

970 1059 

971Deploy file `managed-settings.json` ke setiap device, biasanya melalui platform MDM Anda. File path berbeda menurut platform:1060Deploy file `managed-settings.json` ke setiap device, biasanya melalui platform MDM Anda. File path berbeda menurut platform. Lihat [di mana setiap mekanisme menyimpan policy](/docs/id/managed-settings#where-each-mechanism-stores-the-policy).

972 

973| Platform | Path |

974| ------------- | --------------------------------------------------------------------------------------------------------------------------- |

975| macOS | `/Library/Application Support/ClaudeCode/managed-settings.json`, atau `com.anthropic.claudecode` managed preferences domain |

976| Linux dan WSL | `/etc/claude-code/managed-settings.json` |

977| Windows | `C:\Program Files\ClaudeCode\managed-settings.json`, atau Group Policy via HKLM registry |

978 1061 

979Secara default, registry policy di Windows atau managed-preferences plist di macOS menggantikan file `managed-settings.json` daripada menggabungkannya, terlepas dari [exception keys dan cross-source checks di atas](#precedence-with-other-managed-sources). Ketiga keys dalam snippet ini mengikuti highest-priority-source rule, jadi fleets yang mengirimkan policy melalui Group Policy atau configuration profiles harus menempatkan ketiganya dalam mekanisme itu sebagai gantinya.1062Secara default, registry policy di Windows atau managed-preferences plist di macOS menggantikan file `managed-settings.json` daripada menggabungkannya, terlepas dari [exception keys dan cross-source checks di atas](#precedence-with-other-managed-sources). Ketiga keys dalam snippet ini mengikuti highest-priority-source rule, jadi fleets yang mengirimkan policy melalui Group Policy atau configuration profiles harus menempatkan ketiganya dalam mekanisme itu sebagai gantinya.

980 1063 

Details

58</Note>58</Note>

59 59 

60<h2 id="move-tasks-between-web-and-terminal">60<h2 id="move-tasks-between-web-and-terminal">

61 Pindahkan tugas antara web dan terminal61 Memindahkan tugas antara web dan terminal

62</h2>62</h2>

63 63 

64Alur kerja ini memerlukan [Claude Code CLI](/docs/id/quickstart) yang masuk ke akun claude.ai yang sama. Anda dapat memulai sesi cloud baru dari terminal, atau menarik sesi cloud ke terminal untuk melanjutkan secara lokal. Sesi cloud bertahan bahkan jika Anda menutup laptop, dan Anda dapat memantaunya dari mana saja termasuk aplikasi mobile Claude.64Alur kerja ini memerlukan [Claude Code CLI](/docs/id/quickstart) yang masuk ke akun claude.ai yang sama. Anda dapat memulai sesi cloud baru dari terminal Anda, atau menarik sesi cloud ke terminal Anda untuk melanjutkan secara lokal. Sesi cloud tetap ada bahkan jika Anda menutup laptop, dan Anda dapat memantaunya dari mana saja termasuk aplikasi mobile Claude.

65 65 

66<Note>66<Note>

67 Dari CLI, handoff sesi adalah satu arah: Anda dapat menarik sesi cloud ke terminal Anda dengan `--teleport`, tetapi Anda tidak dapat mendorong sesi terminal yang ada ke web. Bendera `--cloud` dengan deskripsi tugas membuat sesi cloud baru untuk repositori saat ini Anda; dengan `-p` dan ID sesi atau URL claude.ai/code, itu malah [antri pesan ke sesi yang ada](/docs/id/claude-code-on-the-web#send-follow-ups-from-the-cli). [Aplikasi Desktop](/docs/id/desktop#continue-in-another-surface) menyediakan menu Continue in yang dapat mengirim sesi lokal ke web.67 Dari CLI, handoff sesi adalah satu arah: Anda dapat menarik sesi cloud ke terminal Anda dengan `--teleport`, tetapi Anda tidak dapat mendorong sesi terminal yang sudah ada ke web. Flag `--cloud` dengan deskripsi tugas membuat sesi cloud baru untuk repositori Anda saat ini; dengan `-p` dan ID sesi atau URL claude.ai/code, flag tersebut malah [antri pesan ke sesi yang sudah ada itu](/docs/id/claude-code-on-the-web#send-follow-ups-from-the-cli). [Aplikasi Desktop](/docs/id/desktop#continue-in-another-surface) menyediakan menu Continue in yang dapat mengirim sesi lokal ke web.

68</Note>68</Note>

69 69 

70<h3 id="from-terminal-to-web">70<h3 id="from-terminal-to-web">

71 Dari terminal ke web71 Dari terminal ke web

72</h3>72</h3>

73 73 

74Mulai sesi cloud dari baris perintah dengan bendera `--cloud`:74Mulai sesi cloud dari baris perintah dengan flag `--cloud`:

75 75 

76```bash theme={null}76```bash theme={null}

77claude --cloud "Fix the authentication bug in src/auth/login.ts"77claude --cloud "Fix the authentication bug in src/auth/login.ts"

78```78```

79 79 

80Ini membuat sesi cloud baru di claude.ai. VM cloud mengkloning remote GitHub direktori saat ini Anda di cabang saat ini Anda, bukan checkout lokal Anda, jadi dorong terlebih dahulu jika Anda memiliki komit lokal. Lihat [Kirim repositori lokal tanpa GitHub](#send-local-repositories-without-github) untuk kasus di mana Claude Code mengunggah repositori lokal Anda alih-alih mengkloning.80Ini membuat sesi cloud baru di claude.ai. VM cloud mengkloning remote GitHub direktori Anda saat ini di cabang Anda saat ini, bukan checkout lokal Anda, jadi dorong terlebih dahulu jika Anda memiliki commit lokal. Lihat [Mengirim repositori lokal tanpa GitHub](#send-local-repositories-without-github) untuk kasus di mana Claude Code mengunggah repositori lokal Anda alih-alih mengkloning.

81 81 

82`--cloud` bekerja dengan satu repositori pada satu waktu. Tugas berjalan di cloud sementara Anda terus bekerja secara lokal. Ejaan `--remote` yang lebih lama masih berfungsi sebagai alias yang sudah usang untuk `--cloud`.82`--cloud` bekerja dengan satu repositori pada satu waktu. Tugas berjalan di cloud sementara Anda terus bekerja secara lokal. Ejaan `--remote` yang lebih lama masih berfungsi sebagai alias yang sudah usang untuk `--cloud`.

83 83 

84Saat kontainer cloud dimulai, CLI menampilkan daftar periksa langsung dari langkah-langkah setup, seperti mengkloning repositori dan menjalankan [skrip setup](/docs/id/cloud-environments#setup-scripts) Anda. Itu antri pesan yang Anda ketik selama provisioning dan mengirimnya setelah sesi siap.84Saat kontainer cloud dimulai, CLI menampilkan daftar periksa langsung dari langkah-langkah penyiapan, seperti mengkloning repositori dan menjalankan [skrip penyiapan Anda](/docs/id/cloud-environments#setup-scripts). Ini antri pesan yang Anda ketik selama penyediaan dan mengirimnya setelah sesi siap.

85 85 

86<Note>86<Note>

87 `--cloud` membuat sesi cloud. `--remote-control` tidak terkait: itu mengekspos sesi CLI lokal untuk pemantauan dari web. Lihat [Remote Control](/docs/id/remote-control).87 `--cloud` membuat sesi cloud. `--remote-control` tidak terkait: ini mengekspos sesi CLI lokal untuk pemantauan dari web. Lihat [Remote Control](/docs/id/remote-control).

88</Note>88</Note>

89 89 

90Gunakan `/tasks` di Claude Code CLI untuk memeriksa kemajuan, atau buka sesi di claude.ai atau aplikasi mobile Claude untuk berinteraksi langsung. Dari sana Anda dapat mengarahkan Claude, memberikan umpan balik, atau menjawab pertanyaan seperti percakapan lainnya.90Buka sesi di claude.ai atau aplikasi mobile Claude untuk memeriksa kemajuan atau berinteraksi langsung. Dari sana Anda dapat mengarahkan Claude, memberikan umpan balik, atau menjawab pertanyaan seperti dalam percakapan lainnya.

91 91 

92Jika Claude mengajukan pertanyaan dan sesi tetap idle, Anda masih dapat menjawab saat Anda kembali, hingga [environment expiry](#environment-expired), dan sesi berlanjut dari jawaban Anda.92Jika Claude mengajukan pertanyaan dan sesi tetap menganggur, Anda masih dapat menjawab saat Anda kembali, hingga [kedaluwarsa lingkungan](#environment-expired), dan sesi berlanjut dari jawaban Anda.

93 93 

94<h4 id="tips-for-cloud-tasks">94<h4 id="tips-for-cloud-tasks">

95 Tips untuk tugas cloud95 Tips untuk tugas cloud

96</h4>96</h4>

97 97 

98**Rencanakan secara lokal, jalankan dari jarak jauh**: untuk tugas kompleks, mulai Claude dalam plan mode untuk berkolaborasi pada pendekatan, kemudian kirim pekerjaan ke cloud:98**Rencanakan secara lokal, jalankan dari jarak jauh**: untuk tugas yang kompleks, mulai Claude dalam mode rencana untuk berkolaborasi pada pendekatan, kemudian kirim pekerjaan ke cloud:

99 99 

100```bash theme={null}100```bash theme={null}

101claude --permission-mode plan101claude --permission-mode plan

102```102```

103 103 

104Dalam plan mode, Claude membaca file, menjalankan perintah untuk menjelajahi, dan mengusulkan rencana tanpa mengedit kode sumber. Setelah Anda puas, simpan rencana ke repo, komit, dan dorong sehingga VM cloud dapat mengklonnya. Kemudian mulai sesi cloud untuk eksekusi otonom:104Dalam mode rencana, Claude membaca file, menjalankan perintah untuk menjelajahi, dan mengusulkan rencana tanpa mengedit kode sumber. Setelah Anda puas, simpan rencana ke repo, commit, dan dorong sehingga VM cloud dapat mengklonnya. Kemudian mulai sesi cloud untuk eksekusi otonom:

105 105 

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

107claude --cloud "Execute the migration plan in docs/migration-plan.md"107claude --cloud "Execute the migration plan in docs/migration-plan.md"


115claude --cloud "Refactor the logger to use structured output"115claude --cloud "Refactor the logger to use structured output"

116```116```

117 117 

118Pantau semua sesi dengan `/tasks` di Claude Code CLI. Ketika sesi selesai, Anda dapat membuat PR dari antarmuka web atau [teleport](#from-web-to-terminal) sesi ke terminal Anda untuk melanjutkan bekerja.118Ketika sesi selesai, Anda dapat membuat PR dari antarmuka web atau [teleport](#from-web-to-terminal) sesi ke terminal Anda untuk melanjutkan bekerja.

119 119 

120<h4 id="send-local-repositories-without-github">120<h4 id="send-local-repositories-without-github">

121 Kirim repositori lokal tanpa GitHub121 Mengirim repositori lokal tanpa GitHub

122</h4>122</h4>

123 123 

124Saat Anda menjalankan `claude --cloud` dari repositori yang tidak memiliki git remote, atau dari repositori github.com tempat Claude GitHub App tidak diinstal, Claude Code membundel repositori lokal Anda dan mengunggahnya langsung ke sesi cloud. Ini berlaku bahkan jika Anda menghubungkan GitHub dengan `/web-setup`. Bundle mencakup riwayat repositori lengkap Anda di semua cabang, ditambah perubahan yang tidak dikomit ke file yang dilacak.124Ketika Anda menjalankan `claude --cloud` dari repositori yang tidak memiliki remote git, atau dari repositori github.com yang Claude GitHub App tidak diinstal, Claude Code membundel repositori lokal Anda dan mengunggahnya langsung ke sesi cloud. Ini berlaku bahkan jika Anda menghubungkan GitHub dengan `/web-setup`. Bundle mencakup riwayat repositori lengkap Anda di semua cabang, ditambah perubahan yang tidak dicommit ke file yang dilacak.

125 125 

126Pada macOS, Linux, dan WSL, Claude Code meninggalkan perubahan yang tidak dikomit ke file yang dinamai seperti kredensial atau kunci dari upload dan memberi nama file yang ditinggalkannya. Ini mencakup file `.env`, file Terraform `*.tfvars`, dan file kunci seperti `id_rsa` dan `*.pem`. Sesi dimulai dengan versi yang dikomit dari masing-masing, atau tanpa file jika tidak ada yang dikomit. Dalam worktree tertaut, submodule, atau tata letak serupa, Claude Code mengunggah perubahan ini dengan sisanya dan memberi nama file yang diunggahnya.126Di macOS, Linux, dan WSL, Claude Code meninggalkan perubahan yang tidak dicommit ke file bernama seperti kredensial atau kunci dari unggahan dan memberi nama file yang ditinggalkannya. Ini mencakup file `.env`, file Terraform `*.tfvars`, dan file kunci seperti `id_rsa` dan `*.pem`. Sesi dimulai dengan versi yang dicommit dari masing-masing, atau tanpa file jika tidak ada yang dicommit. Dalam worktree tertaut, submodul, atau tata letak serupa, Claude Code mengunggah perubahan ini dengan sisanya dan memberi nama file yang diunggahnya.

127 127 

128Untuk mengunggah bundle bahkan saat Claude Code akan mengkloning dari remote, atur `CCR_FORCE_BUNDLE=1`:128Untuk mengunggah bundle bahkan ketika Claude Code akan mengkloning dari remote, atur `CCR_FORCE_BUNDLE=1`:

129 129 

130```bash theme={null}130```bash theme={null}

131CCR_FORCE_BUNDLE=1 claude --cloud "Run the test suite and fix any failures"131CCR_FORCE_BUNDLE=1 claude --cloud "Run the test suite and fix any failures"

132```132```

133 133 

134Repositori yang dibundel harus memenuhi batas ini:134Repositori bundel harus memenuhi batas-batas ini:

135 135 

136* Direktori harus berupa repositori git dengan setidaknya satu komit136* Direktori harus berupa repositori git dengan setidaknya satu commit

137* Repositori yang dibundel harus di bawah 100 MB. Repositori yang lebih besar kembali ke bundling hanya cabang saat ini, kemudian ke snapshot kerja tunggal yang diperas, dan gagal hanya jika snapshot masih terlalu besar137* Repositori bundel harus di bawah 100 MB. Repositori yang lebih besar kembali ke bundling hanya cabang saat ini, kemudian ke snapshot pohon kerja yang dikompres tunggal, dan gagal jika snapshot masih terlalu besar

138* File yang tidak dilacak tidak disertakan; jalankan `git add` pada file yang ingin dilihat sesi cloud138* File yang tidak dilacak tidak disertakan; jalankan `git add` pada file yang ingin dilihat sesi cloud

139* Sesi yang dibuat dari bundle dapat didorong kembali ke remote GitHub hanya saat [koneksi GitHub](#github-authentication-options) Anda memiliki akses push ke repositori itu139* Sesi yang dibuat dari bundle dapat mendorong kembali ke remote GitHub hanya ketika [koneksi GitHub](#github-authentication-options) Anda memiliki akses push ke repositori itu

140 140 

141<h3 id="send-follow-ups-from-the-cli">141<h3 id="send-follow-ups-from-the-cli">

142 Kirim follow-up dari CLI142 Mengirim tindak lanjut dari CLI

143</h3>143</h3>

144 144 

145Setelah sesi cloud berjalan, di mana pun itu dijalankan, kirimkan pesan follow-up darinya dari CLI `claude` pada mesin apa pun tempat Anda masuk dengan `claude auth login`. CLI mengautentikasi dengan kredensial akun Anthropic Anda dan mengirim tidak ada status sesi lokal, jadi perintah tidak perlu berjalan dari mesin yang memulai sesi, dan itu sama di setiap shell, termasuk PowerShell.145Setelah sesi cloud berjalan, di mana pun sesi itu dijalankan, kirimkan pesan tindak lanjut kepadanya dari CLI `claude` di mesin mana pun tempat Anda masuk dengan `claude auth login`. CLI mengautentikasi dengan kredensial akun Anthropic Anda dan tidak mengirim status sesi lokal, jadi perintah tidak perlu berjalan dari mesin yang memulai sesi, dan sama di setiap shell, termasuk PowerShell.

146 146 

147Perintah memposting satu pesan dan keluar:147Perintah memposting satu pesan dan keluar:

148 148 


150claude -p "your message" --cloud <session-id>150claude -p "your message" --cloud <session-id>

151```151```

152 152 

153CLI antri pesan ke sesi dan keluar tanpa menunggu balasan. Gunakan untuk mengarahkan sesi yang berjalan lama, antri langkah berikutnya sementara yang saat ini masih selesai, atau kirim follow-up dari [skrip CI](/docs/id/self-hosted-environments-testing#run-the-test-loop). Anda juga dapat menyalurkan pesan pada stdin alih-alih meneruskannya sebagai argumen: `echo "your message" | claude -p --cloud <session-id>`.153CLI antri pesan ke dalam sesi dan keluar tanpa menunggu balasan. Gunakan untuk mengarahkan sesi yang berjalan lama, antri langkah berikutnya sementara yang saat ini masih selesai, atau kirim tindak lanjut dari [skrip CI](/docs/id/self-hosted-environments-testing#run-the-test-loop). Anda juga dapat menyalurkan pesan pada stdin alih-alih meneruskannya sebagai argumen: `echo "your message" | claude -p --cloud <session-id>`.

154 154 

155Untuk `<session-id>`, teruskan ID telanjang, seperti `session_...` atau `cse_...`, atau URL `claude.ai/code/<id>` sesi, dengan atau tanpa skema atau string kueri. Temukan ID dalam daftar sesi Anda di claude.ai/code.155Untuk `<session-id>`, teruskan ID telanjang, seperti `session_...` atau `cse_...`, atau URL `claude.ai/code/<id>` sesi, dengan atau tanpa skema atau string kueri. Temukan ID dalam daftar sesi Anda di claude.ai/code.

156 156 

157<Note>157<Note>

158 `--cloud` memerlukan akun Anthropic. Itu tidak tersedia saat Claude Code dikonfigurasi untuk Amazon Bedrock, Google Cloud's Agent Platform, atau penyedia pihak ketiga lainnya. [LLM gateway](/docs/id/llm-gateway) yang dikonfigurasi hanya melalui `ANTHROPIC_BASE_URL` tidak dihitung sebagai penyedia pihak ketiga untuk pemeriksaan ini, tetapi Anda masih perlu masuk dengan `claude auth login`. Kebijakan `allow_remote_sessions` organisasi Anda juga harus diaktifkan. Owner dapat mengaktifkannya di pengaturan admin Claude Code di claude.ai/admin-settings/claude-code.158 `--cloud` memerlukan akun Anthropic. Ini tidak tersedia ketika Claude Code dikonfigurasi untuk Amazon Bedrock, Google Cloud's Agent Platform, atau penyedia pihak ketiga lainnya. [Gateway LLM](/docs/id/llm-gateway) yang dikonfigurasi hanya melalui `ANTHROPIC_BASE_URL` tidak dihitung sebagai penyedia pihak ketiga untuk pemeriksaan ini, tetapi Anda masih perlu masuk dengan `claude auth login`. Kebijakan `allow_remote_sessions` organisasi Anda juga harus diaktifkan. Pemilik dapat mengaktifkannya di pengaturan admin Claude Code di claude.ai/admin-settings/claude-code.

159</Note>159</Note>

160 160 

161<h4 id="output-and-errors">161<h4 id="output-and-errors">


170View: https://claude.ai/code/session_01DiUkqY2kzbUbDmW1w96rfi?from=cli&m=0170View: https://claude.ai/code/session_01DiUkqY2kzbUbDmW1w96rfi?from=cli&m=0

171```171```

172 172 

173Teruskan `--output-format json` untuk hasil yang dapat dibaca mesin: `{ok, session_id, url}` saat berhasil, atau `{ok: false, session_id, error}` saat pengiriman gagal, misalnya saat sesi hilang atau diarsipkan. Kesalahan konfigurasi, seperti penyedia yang tidak didukung atau kebijakan organisasi yang dinonaktifkan, dicetak ke stderr tanpa JSON. `--output-format stream-json` tidak didukung dengan `--cloud <session-id>`.173Teruskan `--output-format json` untuk hasil yang dapat dibaca mesin: `{ok, session_id, url}` saat berhasil, atau `{ok: false, session_id, error}` ketika pengiriman gagal, misalnya ketika sesi hilang atau diarsipkan. Kesalahan konfigurasi, seperti penyedia yang tidak didukung atau kebijakan organisasi yang dinonaktifkan, dicetak ke stderr tanpa JSON. `--output-format stream-json` tidak didukung dengan `--cloud <session-id>`.

174 174 

175CLI menambahkan awalan kesalahan dengan `Error: `. Pengiriman yang gagal dibungkus sebagai `failed to send message to cloud session <id>: <reason>`.175CLI memberi awalan kesalahan dengan `Error: `. Pengiriman yang gagal dibungkus sebagai `failed to send message to cloud session <id>: <reason>`.

176 176 

177| Pesan | Artinya |177| Pesan | Artinya |

178| --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |178| --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

179| `Cloud sessions aren't available with <provider>. They run on Anthropic's infrastructure and require an Anthropic account.` | Claude Code dikonfigurasi untuk penyedia pihak ketiga. Pesan menyebutkan penyedia dengan label yang digunakan konfigurasi Anda, seperti `Amazon Bedrock` atau `Google Vertex AI`. Hapus konfigurasi penyedia itu, misalnya dengan membatalkan `CLAUDE_CODE_USE_BEDROCK`, dan masuk dengan akun Anthropic (`claude auth login`). |179| `Cloud sessions aren't available with <provider>. They run on Anthropic's infrastructure and require an Anthropic account.` | Claude Code dikonfigurasi untuk penyedia pihak ketiga. Pesan menyebutkan penyedia dengan label yang digunakan konfigurasi Anda, seperti `Amazon Bedrock` atau `Google Vertex AI`. Hapus konfigurasi penyedia itu, misalnya dengan membatalkan pengaturan `CLAUDE_CODE_USE_BEDROCK`, dan masuk dengan akun Anthropic (`claude auth login`). |

180| `Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.` | Kebijakan organisasi `allow_remote_sessions` dimatikan. |180| `Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.` | Kebijakan organisasi `allow_remote_sessions` mati. |

181| `Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.` | Claude Code tidak dapat mengambil kebijakan organisasi Anda, jadi itu menolak pengiriman daripada menganggap sesi cloud diizinkan. Periksa koneksi jaringan Anda dan coba lagi. |181| `Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.` | Claude Code tidak dapat mengambil kebijakan organisasi Anda, jadi menolak pengiriman daripada menganggap sesi cloud diizinkan. Periksa koneksi jaringan Anda dan coba lagi. |

182| `Attaching to an existing cloud session is not enabled for your account.` | Anda menjalankan `--cloud <session-id>` tanpa `-p`. Kirim pesan dengan `claude -p "your message" --cloud <session-id>`. |182| `Attaching to an existing cloud session is not enabled for your account.` | Anda menjalankan `--cloud <session-id>` tanpa `-p`. Kirim pesan dengan `claude -p "your message" --cloud <session-id>`. |

183| `Session not found: <id>` | ID atau URL tidak cocok dengan sesi yang dapat Anda akses. Periksa terhadap URL claude.ai/code sesi. |183| `Session not found: <id>` | ID atau URL tidak cocok dengan sesi yang dapat Anda akses. Periksa terhadap URL claude.ai/code sesi. |

184| `cloud session <id> is archived and cannot accept new messages` | Sesi telah diarsipkan. Mulai sesi baru sebagai gantinya. |184| `cloud session <id> is archived and cannot accept new messages` | Sesi telah diarsipkan. Mulai sesi baru sebagai gantinya. |


189 189 

190Tarik sesi cloud ke terminal Anda menggunakan salah satu dari ini:190Tarik sesi cloud ke terminal Anda menggunakan salah satu dari ini:

191 191 

192* **Menggunakan `--teleport`**: dari baris perintah, jalankan `claude --teleport` untuk pemilih sesi interaktif, atau `claude --teleport <session-id>` untuk melanjutkan sesi tertentu secara langsung. Jika Anda memiliki perubahan yang tidak dikomit, Anda akan diminta untuk menyimpannya terlebih dahulu.192* **Menggunakan `--teleport`**: dari baris perintah, jalankan `claude --teleport` untuk pemilih sesi interaktif, atau `claude --teleport <session-id>` untuk melanjutkan sesi tertentu secara langsung. Jika Anda memiliki perubahan yang tidak dicommit, Anda akan diminta untuk menyimpannya terlebih dahulu.

193* **Menggunakan `/teleport`**: di dalam sesi CLI yang ada, jalankan `/teleport` atau `/tp` untuk membuka pemilih sesi yang sama tanpa memulai ulang Claude Code.193* **Menggunakan `/teleport`**: di dalam sesi CLI yang sudah ada, jalankan `/teleport` atau `/tp` untuk membuka pemilih sesi yang sama tanpa memulai ulang Claude Code.

194* **Dari `/tasks`**: jalankan `/tasks` untuk melihat sesi latar belakang Anda, kemudian tekan `t` untuk teleport ke salah satunya.194* **Dari `/tasks`**: jalankan `/tasks` untuk melihat sesi latar belakang Anda, kemudian tekan `t` untuk teleport ke dalamnya.

195* **Dari antarmuka web**: pilih **Open in > Terminal** dari menu sesi untuk menyalin perintah yang dapat Anda tempel ke terminal Anda.195* **Dari antarmuka web**: pilih **Open in > Terminal** dari menu sesi untuk menyalin perintah yang dapat Anda tempel ke terminal Anda.

196* **Dari dalam sesi cloud**: ketik `/teleport` dan Claude Code membalas dengan perintah `claude --teleport <session-id>` yang tepat untuk sesi itu, siap dijalankan dari checkout repositori. Memerlukan Claude Code v2.1.223 atau lebih baru di lingkungan sesi.196* **Dari dalam sesi cloud**: ketik `/teleport` dan Claude Code membalas dengan perintah `claude --teleport <session-id>` yang tepat untuk sesi itu, siap dijalankan dari checkout repositori. Memerlukan Claude Code v2.1.223 atau lebih baru di lingkungan sesi.

197 197 

198Saat Anda teleport sesi, Claude memverifikasi Anda berada di repositori yang benar, mengambil dan checkout cabang dari sesi cloud, dan memuat riwayat percakapan lengkap ke terminal Anda. Terminal mendapatkan salinannya sendiri dari sesi: pekerjaan baru di sana tetap lokal dan tidak muncul di sesi cloud di claude.ai atau aplikasi mobile Claude. Untuk terus mengarahkan dari ponsel Anda setelah teleporting, mulai [`/remote-control`](/docs/id/remote-control) di sesi lokal.198Ketika Anda teleport sesi, Claude memverifikasi Anda berada di repositori yang benar, mengambil dan checkout cabang dari sesi cloud, dan memuat riwayat percakapan lengkap ke terminal Anda. Terminal mendapatkan salinannya sendiri dari sesi: pekerjaan baru di sana tetap lokal dan tidak muncul di sesi cloud di claude.ai atau aplikasi mobile Claude. Untuk terus mengarahkan dari ponsel Anda setelah teleport, mulai [`/remote-control`](/docs/id/remote-control) dalam sesi lokal.

199 199 

200`--teleport` berbeda dari `--resume`. `--resume` membuka kembali percakapan dari riwayat lokal mesin ini dan tidak mencantumkan sesi cloud; `--teleport` menarik sesi cloud dan cabangnya.200`--teleport` berbeda dari `--resume`. `--resume` membuka kembali percakapan dari riwayat lokal mesin ini dan tidak mencantumkan sesi cloud; `--teleport` menarik sesi cloud dan cabangnya.

201 201 

202<h4 id="teleport-requirements">202<h4 id="teleport-requirements">

203 Persyaratan teleport203 Persyaratan Teleport

204</h4>204</h4>

205 205 

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

207 207 

208| Persyaratan | Detail |208| Persyaratan | Detail |

209| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |209| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

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

211| Repositori yang benar | Anda harus menjalankan `--teleport` dari checkout repositori yang sama, bukan fork. Jika Anda menjalankannya dari checkout repositori yang berbeda, Claude Code menampilkan kesalahan yang menyebutkan repositori sesi dan checkout Anda. Jika Claude Code tidak dapat mengurai remote Anda menjadi nama host, misalnya alias host SSH seperti `git@work:owner/repo.git`, itu meminta Anda untuk mengonfirmasi, dan menerima checkout saat pemilik remote dan nama repositori cocok dengan repositori sesi. |211| Repositori yang benar | Anda harus menjalankan `--teleport` dari checkout repositori yang sama, bukan fork. Jika Anda menjalankannya dari checkout repositori yang berbeda, Claude Code menampilkan kesalahan yang menyebutkan repositori sesi dan checkout Anda. Sebelum v2.1.219, kesalahan tidak menyebutkan repositori checkout Anda. Jika Claude Code tidak dapat mengurai remote Anda menjadi nama host, misalnya alias host SSH seperti `git@work:owner/repo.git`, Claude Code meminta Anda untuk mengonfirmasi, dan menerima checkout ketika pemilik remote dan nama repositori cocok dengan repositori sesi. |

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

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

214 214 

Details

1445<ClaudeExplorer />1445<ClaudeExplorer />

1446 1446 

1447<h2 id="what’s-not-shown">1447<h2 id="what’s-not-shown">

1448 Apa yang tidak ditampilkan1448 Yang tidak ditampilkan

1449</h2>1449</h2>

1450 1450 

1451Penjelajah mencakup file yang Anda buat dan edit. Beberapa file terkait berada di tempat lain:1451Explorer mencakup file yang Anda buat dan edit. Beberapa file terkait berada di tempat lain:

1452 1452 

1453| File | Lokasi | Tujuan |1453| File | Lokasi | Tujuan |

1454| ----------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |1454| ----------------------- | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1455| `managed-settings.json` | Tingkat sistem, bervariasi menurut OS | Pengaturan yang diberlakukan perusahaan yang tidak dapat Anda ganti, kecuali [pengecualian sempit](/docs/id/settings#security-keys-where-the-stricter-value-applies). Lihat [tempat menyimpan file](/docs/id/managed-settings#deploy-a-managed-settings-file) dan [sumber managed mana yang digunakan Claude Code](/docs/id/managed-settings#precedence-within-the-managed-tier). |1455| `managed-settings.json` | Tingkat sistem, bervariasi menurut OS | Pengaturan yang diberlakukan perusahaan yang tidak dapat Anda ganti, kecuali [pengecualian sempit](/docs/id/settings#security-keys-where-the-stricter-value-applies). Lihat [tempat menyimpan file](/docs/id/managed-settings#deploy-a-managed-settings-file) dan [sumber managed mana yang digunakan Claude Code](/docs/id/managed-settings#precedence-within-the-managed-tier). |

1456| `CLAUDE.local.md` | Akar proyek | Preferensi pribadi Anda untuk proyek ini, dimuat bersama CLAUDE.md. Buat secara manual dan tambahkan ke `.gitignore`. |1456| `CLAUDE.local.md` | Akar proyek | Preferensi pribadi Anda untuk proyek ini, dimuat bersama CLAUDE.md. Buatnya secara manual dan tambahkan ke `.gitignore`. |

1457| Plugin yang diinstal | `~/.claude/plugins` | Marketplace yang dikloning, versi plugin yang diinstal, dan data per-plugin, dikelola oleh perintah `claude plugin`. Untuk plugin yang diinstal dari marketplace dengan [`command` source](/docs/id/plugin-marketplaces#command-sources) dalam link mode, Claude Code menyimpan link di sini alih-alih salinan, dan file plugin tetap berada di direktori yang dicetak perintah. Lihat [plugin caching](/docs/id/plugins-reference#plugin-caching-and-file-resolution) untuk cara versi yatim piatu dibersihkan. |1457| Plugin yang diinstal | `~/.claude/plugins` | Marketplace yang dikloning, versi plugin yang diinstal, dan data per-plugin, dikelola oleh perintah `claude plugin`. Untuk plugin yang diinstal dari marketplace dengan [`command` source](/docs/id/plugin-marketplaces#command-sources) dalam link mode, Claude Code menyimpan link di sini alih-alih salinan, dan file plugin tetap berada di direktori yang dicetak perintah. A `command` source memerlukan Claude Code v2.1.229 atau lebih baru. Lihat [plugin caching](/docs/id/plugins-reference#plugin-caching-and-file-resolution) untuk cara versi yatim piatu dibersihkan. |

1458 1458 

1459`~/.claude` juga menyimpan data yang ditulis Claude Code saat Anda bekerja: transkrip, riwayat prompt, snapshot file, cache, dan log. Lihat [data aplikasi](#application-data) di bawah.1459`~/.claude` juga menyimpan data yang ditulis Claude Code saat Anda bekerja: transkrip, riwayat prompt, snapshot file, cache, dan log. Lihat [application data](#application-data) di bawah.

1460 1460 

1461<h2 id="choose-the-right-file">1461<h2 id="choose-the-right-file">

1462 Pilih file yang tepat1462 Pilih file yang tepat

Details

540<AccordionGroup>540<AccordionGroup>

541 <Accordion title="Layanan Anthropic">541 <Accordion title="Layanan Anthropic">

542 * api.anthropic.com542 * api.anthropic.com

543 * statsig.anthropic.com

544 * docs.claude.com543 * docs.claude.com

545 * platform.claude.com544 * platform.claude.com

546 * code.claude.com545 * code.claude.com


612 * [www.java.net](http://www.java.net)611 * [www.java.net](http://www.java.net)

613 * download.oracle.com612 * download.oracle.com

614 * yum.oracle.com613 * yum.oracle.com

614 * \*.r2.cloudflarestorage.com

615 </Accordion>615 </Accordion>

616 616 

617 <Accordion title="Manajer paket JavaScript dan Node">617 <Accordion title="Manajer paket JavaScript dan Node">


622 * npmjs.org622 * npmjs.org

623 * yarnpkg.com623 * yarnpkg.com

624 * registry.yarnpkg.com624 * registry.yarnpkg.com

625 * jsr.io

626 * npm.jsr.io

625 </Accordion>627 </Accordion>

626 628 

627 <Accordion title="Manajer paket Python">629 <Accordion title="Manajer paket Python">


676 * central.maven.org678 * central.maven.org

677 * repo1.maven.org679 * repo1.maven.org

678 * repo.maven.apache.org680 * repo.maven.apache.org

681 * maven.google.com

679 * jcenter.bintray.com682 * jcenter.bintray.com

680 * gradle.org683 * gradle.org

681 * [www.gradle.org](http://www.gradle.org)684 * [www.gradle.org](http://www.gradle.org)

682 * services.gradle.org685 * services.gradle.org

683 * plugins.gradle.org686 * plugins.gradle.org

687 * plugins-artifacts.gradle.org

684 * kotlinlang.org688 * kotlinlang.org

685 * [www.kotlinlang.org](http://www.kotlinlang.org)689 * [www.kotlinlang.org](http://www.kotlinlang.org)

686 * spring.io690 * spring.io


758 </Accordion>762 </Accordion>

759 763 

760 <Accordion title="Layanan cloud dan monitoring">764 <Accordion title="Layanan cloud dan monitoring">

761 * statsig.com

762 * [www.statsig.com](http://www.statsig.com)

763 * api.statsig.com

764 * sentry.io

765 * \*.sentry.io

766 * downloads.sentry-cdn.com

767 * http-intake.logs.datadoghq.com765 * http-intake.logs.datadoghq.com

768 * browser-intake-us5-datadoghq.com

769 * \*.datadoghq.com766 * \*.datadoghq.com

770 * \*.datadoghq.eu767 * \*.datadoghq.eu

771 * api.honeycomb.io768 * api.honeycomb.io

Details

434| [Routines](/docs/id/routines) | Cloud, dikelola Anthropic secara default | Tugas yang harus berjalan bahkan ketika komputer Anda mati. Dapat juga dipicu oleh panggilan API atau event GitHub selain jadwal. Konfigurasikan di [claude.ai/code/routines](https://claude.ai/code/routines). |434| [Routines](/docs/id/routines) | Cloud, dikelola Anthropic secara default | Tugas yang harus berjalan bahkan ketika komputer Anda mati. Dapat juga dipicu oleh panggilan API atau event GitHub selain jadwal. Konfigurasikan di [claude.ai/code/routines](https://claude.ai/code/routines). |

435| [Desktop scheduled tasks](/docs/id/desktop-scheduled-tasks) | Mesin Anda, melalui aplikasi desktop | Tugas yang memerlukan akses langsung ke file lokal, alat, atau perubahan yang tidak dilakukan. |435| [Desktop scheduled tasks](/docs/id/desktop-scheduled-tasks) | Mesin Anda, melalui aplikasi desktop | Tugas yang memerlukan akses langsung ke file lokal, alat, atau perubahan yang tidak dilakukan. |

436| [GitHub Actions](/docs/id/github-actions) | Pipeline CI Anda | Tugas yang terikat pada event repo seperti PR yang dibuka, atau jadwal cron yang harus hidup bersama konfigurasi alur kerja Anda. |436| [GitHub Actions](/docs/id/github-actions) | Pipeline CI Anda | Tugas yang terikat pada event repo seperti PR yang dibuka, atau jadwal cron yang harus hidup bersama konfigurasi alur kerja Anda. |

437| [`/loop`](/docs/id/scheduled-tasks) | Sesi CLI saat ini | Polling cepat saat sesi terbuka. Tugas berhenti ketika Anda memulai percakapan baru; `--resume` dan `--continue` mengembalikan yang belum kadaluarsa. |437| [`/loop`](/docs/id/scheduled-tasks) | Sesi CLI saat ini | Polling cepat saat sesi terbuka. `--resume` dan `--continue` mengembalikan loop interval tetap yang belum kadaluarsa. |

438 438 

439<Tip>439<Tip>

440 Saat menulis prompt untuk tugas terjadwal, jelaskan apa yang terlihat seperti kesuksesan dan apa yang harus dilakukan dengan hasil. Tugas berjalan secara otonom, jadi tidak dapat mengajukan pertanyaan klarifikasi. Misalnya: "Review open PRs labeled `needs-review`, leave inline comments on any issues, and post a summary in the `#eng-reviews` Slack channel."440 Saat menulis prompt untuk tugas terjadwal, jelaskan apa yang terlihat seperti kesuksesan dan apa yang harus dilakukan dengan hasil. Tugas berjalan secara otonom, jadi tidak dapat mengajukan pertanyaan klarifikasi. Misalnya: "Review open PRs labeled `needs-review`, leave inline comments on any issues, and post a summary in the `#eng-reviews` Slack channel."

computer-use.md +2 −2

Details

112 Satu sesi pada satu waktu112 Satu sesi pada satu waktu

113</h3>113</h3>

114 114 

115Hanya satu sesi pada satu waktu yang dapat menggunakan komputer Anda. Sesi mengambil kunci machine-wide pada tindakan computer use pertamanya dan melepaskannya ketika sesi keluar, bukan ketika tugas selesai. Sesi kedua yang melakukan computer use gagal dengan kesalahan yang menyebutkan sesi yang menahan kunci. Keluar dari sesi itu terlebih dahulu.115Hanya satu sesi pada satu waktu yang dapat menggunakan komputer Anda. Sesi mengambil kunci pada tindakan computer use pertamanya dan melepaskannya ketika sesi keluar, bukan ketika tugas selesai. Sesi kedua yang melakukan computer use gagal dengan kesalahan yang menyebutkan sesi yang menahan kunci. Keluar dari sesi itu terlebih dahulu.

116 116 

117<h3 id="apps-are-hidden-while-claude-works">117<h3 id="apps-are-hidden-while-claude-works">

118 Aplikasi disembunyikan saat Claude bekerja118 Aplikasi disembunyikan saat Claude bekerja


134 Hentikan kapan saja134 Hentikan kapan saja

135</h3>135</h3>

136 136 

137Ketika Claude memperoleh kunci, notifikasi macOS muncul: "Claude is using your computer · press Esc to stop." Tekan `Esc` di mana saja untuk membatalkan tindakan saat ini segera, atau tekan `Ctrl+C` di terminal. Bagaimanapun, Claude berhenti, menampilkan kembali aplikasi Anda, dan mengembalikan kontrol kepada Anda. Sesi mempertahankan [kunci computer use](#one-session-at-a-time) hingga keluar.137Pertama kali Claude menggunakan komputer Anda di setiap giliran, notifikasi macOS muncul: "Claude is using your computer · press Esc to stop." Tekan `Esc` di mana saja untuk membatalkan tindakan saat ini segera, atau tekan `Ctrl+C` di terminal. Bagaimanapun, Claude berhenti, menampilkan kembali aplikasi Anda, dan mengembalikan kontrol kepada Anda. Sesi mempertahankan [kunci computer use](#one-session-at-a-time) hingga keluar.

138 138 

139Notifikasi kedua muncul ketika Claude selesai.139Notifikasi kedua muncul ketika Claude selesai.

140 140 

costs.md +3 −2

Details

71 71 

72Tekan `d` atau `w` untuk beralih antara 24 jam terakhir dan 7 hari terakhir. Angka-angka tersebut bersifat perkiraan dan dihitung dari riwayat sesi lokal di mesin ini, jadi penggunaan dari perangkat lain atau claude.ai tidak disertakan.72Tekan `d` atau `w` untuk beralih antara 24 jam terakhir dan 7 hari terakhir. Angka-angka tersebut bersifat perkiraan dan dihitung dari riwayat sesi lokal di mesin ini, jadi penggunaan dari perangkat lain atau claude.ai tidak disertakan.

73 73 

74Di [ekstensi VS Code](/docs/id/vs-code#check-account-and-usage), bagian attribution dan behavior flags muncul dalam dialog Account & usage dengan toggle Day dan Week, tanpa baris Loops. Memerlukan Claude Code v2.1.174 atau lebih baru.74Di [ekstensi VS Code](/docs/id/vs-code#check-account-and-usage), bagian attribution dan behavior flags muncul dalam dialog Account & usage dengan toggle Day dan Week, tanpa baris Loops.

75 75 

76<h4 id="check-your-usage-credits-spend">76<h4 id="check-your-usage-credits-spend">

77 Periksa pengeluaran kredit penggunaan Anda77 Periksa pengeluaran kredit penggunaan Anda


222 Ketika pengembang menanyakan tentang batas222 Ketika pengembang menanyakan tentang batas

223</h3>223</h3>

224 224 

225Pengembang biasanya membawa pertanyaan batas ke admin mereka, jadi membantu mengetahui batas mana yang mereka capai. Empat situasi berarti hal yang berbeda:225Pengembang biasanya membawa pertanyaan batas ke admin mereka, jadi membantu mengetahui batas mana yang mereka capai. Situasi-situasi ini berarti hal yang berbeda:

226 226 

227* **"Anda telah mencapai batas sesi Anda" atau "Anda telah mencapai batas mingguan Anda"**: jendela penggunaan berbasis kursi pada paket berlangganan, dibagikan di semua model, jadi pengembang tidak dapat mengembalikan akses dengan beralih model dengan `/model`. Pesan menunjukkan kapan jendela direset. Setelah pesan khusus model "Anda telah mencapai batas Opus Anda" atau "Anda telah mencapai batas Sonnet Anda", beralih ke model di luar keluarga itu dengan `/model` memang membuat pengembang terus bekerja. Lihat [kesalahan batas penggunaan](/docs/id/errors#youve-hit-your-session-limit). Apa yang dapat dilakukan pengembang sementara itu:227* **"Anda telah mencapai batas sesi Anda" atau "Anda telah mencapai batas mingguan Anda"**: jendela penggunaan berbasis kursi pada paket berlangganan, dibagikan di semua model, jadi pengembang tidak dapat mengembalikan akses dengan beralih model dengan `/model`. Pesan menunjukkan kapan jendela direset. Setelah pesan khusus model "Anda telah mencapai batas Opus Anda" atau "Anda telah mencapai batas Sonnet Anda", beralih ke model di luar keluarga itu dengan `/model` memang membuat pengembang terus bekerja. Lihat [kesalahan batas penggunaan](/docs/id/errors#youve-hit-your-session-limit). Apa yang dapat dilakukan pengembang sementara itu:

228 * Jalankan `/usage-credits` untuk meminta penggunaan di luar tunjangan, jika Anda memiliki [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) diaktifkan.228 * Jalankan `/usage-credits` untuk meminta penggunaan di luar tunjangan, jika Anda memiliki [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) diaktifkan.

229 * Pada Claude Code v2.1.234 atau lebih baru, [tunggu dan lanjutkan tugas yang terputus secara otomatis setelah reset](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset); bagian itu mencantumkan kapan Claude Code memulai tunggu sendiri dan kapan pengembang memilihnya dari `/rate-limit-options`. Untuk mengontrol armada Anda apakah Claude Code memulai tunggu itu sendiri, atur [`autoContinueAtUsageLimit`](/docs/id/settings-reference#autocontinueatusagelimit) dalam [pengaturan terkelola](/docs/id/settings#settings-precedence).229 * Pada Claude Code v2.1.234 atau lebih baru, [tunggu dan lanjutkan tugas yang terputus secara otomatis setelah reset](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset); bagian itu mencantumkan kapan Claude Code memulai tunggu sendiri dan kapan pengembang memilihnya dari `/rate-limit-options`. Untuk mengontrol armada Anda apakah Claude Code memulai tunggu itu sendiri, atur [`autoContinueAtUsageLimit`](/docs/id/settings-reference#autocontinueatusagelimit) dalam [pengaturan terkelola](/docs/id/settings#settings-precedence).

230* **"Anda telah mencapai batas pengeluaran individual Anda", "batas pengeluaran bulanan organisasi", atau "anggaran bersama tim"**: permintaan pengembang akan ditagih ke kredit penggunaan, dan kredit tersebut telah mencapai batas pengeluaran yang Anda tetapkan. Untuk membiarkan pengembang melanjutkan, buka [**Pengaturan Admin > Penggunaan**](https://claude.ai/admin-settings/usage) dan tingkatkan batas yang dinamai pesan. Ketika pesan juga menyebutkan waktu reset paket, pengembang dapat menunggu sampai saat itu. Lihat [referensi kesalahan](/docs/id/errors#youve-hit-your-monthly-spend-limit) untuk setiap varian.

230* **Pesan batas pengeluaran dari [gateway aplikasi Claude](/docs/id/claude-apps-gateway)**: pengembang melampaui batas pengeluaran yang Anda tetapkan pada gateway yang di-host sendiri, dan gateway memblokir permintaan mereka sampai periode direset atau Anda menaikkan batas. Lihat [batas pengeluaran gateway](/docs/id/claude-apps-gateway-spend-limits) untuk batas, jadwal reset, dan pesan yang dilihat pengembang.231* **Pesan batas pengeluaran dari [gateway aplikasi Claude](/docs/id/claude-apps-gateway)**: pengembang melampaui batas pengeluaran yang Anda tetapkan pada gateway yang di-host sendiri, dan gateway memblokir permintaan mereka sampai periode direset atau Anda menaikkan batas. Lihat [batas pengeluaran gateway](/docs/id/claude-apps-gateway-spend-limits) untuk batas, jadwal reset, dan pesan yang dilihat pengembang.

231* **Peringatan konteks atau auto-compact**: bukan batas penggunaan. Percakapan telah tumbuh dekat dengan [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) sesi, ambang batas di mana Claude Code merangkum riwayat yang lebih lama untuk membebaskan ruang. Arahkan pengembang ke [kurangi penggunaan token](#reduce-token-usage).232* **Peringatan konteks atau auto-compact**: bukan batas penggunaan. Percakapan telah tumbuh dekat dengan [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) sesi, ambang batas di mana Claude Code merangkum riwayat yang lebih lama untuk membebaskan ruang. Arahkan pengembang ke [kurangi penggunaan token](#reduce-token-usage).

232* **Pengeluaran yang tidak terduga tinggi pada paket API atau penyedia cloud**: biasanya dapat dilacak kembali ke sesi panjang yang tidak pernah dihapus atau Opus yang ditinggalkan sebagai model default. Kebiasaan berdampak tertinggi untuk dibagikan adalah membersihkan antara tugas yang tidak terkait dan mencocokkan model dengan pekerjaan, keduanya tercakup dalam [kurangi penggunaan token](#reduce-token-usage).233* **Pengeluaran yang tidak terduga tinggi pada paket API atau penyedia cloud**: biasanya dapat dilacak kembali ke sesi panjang yang tidak pernah dihapus atau Opus yang ditinggalkan sebagai model default. Kebiasaan berdampak tertinggi untuk dibagikan adalah membersihkan antara tugas yang tidak terkait dan mencocokkan model dengan pekerjaan, keduanya tercakup dalam [kurangi penggunaan token](#reduce-token-usage).

desktop.md +7 −7

Details

24 24 

25Untuk Windows ARM64, unduh [penginstal ARM64](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). Di Linux, instal dengan apt; lihat [Claude Desktop di Linux](/docs/id/desktop-linux).25Untuk Windows ARM64, unduh [penginstal ARM64](https://claude.ai/api/desktop/win32/arm64/setup/latest/redirect?utm_source=claude_code\&utm_medium=docs). Di Linux, instal dengan apt; lihat [Claude Desktop di Linux](/docs/id/desktop-linux).

26 26 

27Setelah menginstal, luncurkan Claude, masuk, dan klik tab **Code**. Pertama kali Anda membukanya di Windows, Anda perlu menginstal [Git for Windows](https://git-scm.com/downloads/win); mulai ulang aplikasi setelah menginstalnya. Untuk panduan sesi pertama Anda, lihat [panduan Memulai](/docs/id/desktop-quickstart).27Setelah menginstal, luncurkan Claude, masuk, dan klik tab **Code**. Untuk panduan sesi pertama Anda, lihat [panduan Memulai](/docs/id/desktop-quickstart).

28 28 

29Di tab Code, setiap percakapan adalah sebuah **sesi**: ia memiliki riwayat chat sendiri, folder proyek, dan perubahan kode, independen dari sesi lainnya. Bilah sisi mencantumkan sesi Anda dan memungkinkan Anda menjalankan beberapa secara paralel. Dalam sesi Anda dapat:29Di tab Code, setiap percakapan adalah sebuah **sesi**: ia memiliki riwayat chat sendiri dan folder proyek, independen dari sesi lainnya. Bilah sisi mencantumkan sesi Anda dan memungkinkan Anda menjalankan beberapa secara paralel. Dalam sesi Anda dapat:

30 30 

31* [Meninjau dan mengomentari diff](#review-changes-with-diff-view), kemudian [memantau PR yang dihasilkan melalui CI](#monitor-pull-request-status)31* [Meninjau dan mengomentari diff](#review-changes-with-diff-view), kemudian [memantau PR yang dihasilkan melalui CI](#monitor-pull-request-status)

32* [Pratinjau aplikasi yang berjalan](#preview-your-app) di pane Browser sementara Claude memverifikasi perubahan miliknya sendiri, dan [membuka situs eksternal](#browse-external-sites) berdampingannya32* [Pratinjau aplikasi yang berjalan](#preview-your-app) di pane Browser sementara Claude memverifikasi perubahan miliknya sendiri, dan [membuka situs eksternal](#browse-external-sites) berdampingannya


372 Bekerja secara paralel dengan sesi372 Bekerja secara paralel dengan sesi

373</h3>373</h3>

374 374 

375Klik **+ New session** di sidebar, atau tekan **Cmd+N** di macOS atau **Ctrl+N** di Windows, untuk bekerja pada beberapa tugas secara paralel. Tekan **Ctrl+Tab** dan **Ctrl+Shift+Tab** untuk bersiklus melalui sesi di sidebar. Untuk repositori Git, setiap sesi mendapatkan salinan proyek Anda yang terisolasi menggunakan [Git worktrees](/docs/id/worktrees), sehingga perubahan dalam satu sesi tidak mempengaruhi sesi lain sampai Anda melakukan commit.375Klik **+ New session** di sidebar, atau tekan **Cmd+N** di macOS atau **Ctrl+N** di Windows, untuk bekerja pada beberapa tugas secara paralel. Tekan **Ctrl+Tab** dan **Ctrl+Shift+Tab** untuk bersiklus melalui sesi di sidebar. Untuk repositori Git, pilih opsi **worktree** di sebelah nama cabang untuk memberikan sesi salinan proyek Anda yang terisolasi menggunakan [Git worktrees](/docs/id/worktrees), sehingga perubahan dalam satu sesi tidak mempengaruhi sesi lain sampai Anda melakukan commit.

376 376 

377Untuk melihat dua sesi sekaligus, tahan **Cmd** di macOS atau **Ctrl** di Windows dan klik sesi di sidebar. Sesi terbuka di pane kedua di samping yang sudah Anda buka. Saat split aktif, mengklik sesi sidebar lain mengganti pane mana pun yang memiliki fokus. Tekan **Cmd+\\** di macOS atau **Ctrl+\\** di Windows untuk menutup pane yang difokuskan dan kembali ke sesi tunggal.377Untuk melihat dua sesi sekaligus, tahan **Cmd** di macOS atau **Ctrl** di Windows dan klik sesi di sidebar. Sesi terbuka di pane kedua di samping yang sudah Anda buka. Saat split aktif, mengklik sesi sidebar lain mengganti pane mana pun yang memiliki fokus. Tekan **Cmd+\\** di macOS atau **Ctrl+\\** di Windows untuk menutup pane yang difokuskan dan kembali ke sesi tunggal.

378 378 


381Untuk menyertakan file yang diabaikan git seperti `.env` di worktree baru, buat file [`.worktreeinclude`](/docs/id/worktrees#copy-gitignored-files-into-worktrees) di root proyek Anda.381Untuk menyertakan file yang diabaikan git seperti `.env` di worktree baru, buat file [`.worktreeinclude`](/docs/id/worktrees#copy-gitignored-files-into-worktrees) di root proyek Anda.

382 382 

383<Note>383<Note>

384 Isolasi sesi memerlukan [Git](https://git-scm.com/downloads). Sebagian besar Mac menyertakan Git secara default. Jalankan `git --version` di Terminal untuk memeriksa; jika menampilkan nomor versi, Git sudah terinstal. Di Windows, Git diperlukan agar tab Code berfungsi: [unduh Git untuk Windows](https://git-scm.com/downloads/win), pasang, dan mulai ulang aplikasi. Jika Anda mengalami kesalahan Git, tanyakan Claude di tab [Cowork](https://claude.com/product/cowork) untuk membantu memecahkan masalah setup Anda.384 Isolasi sesi memerlukan [Git](https://git-scm.com/downloads). Sebagian besar Mac menyertakan Git secara default. Jalankan `git --version` di Terminal untuk memeriksa; jika menampilkan nomor versi, Git sudah terinstal. Jika Anda mengalami kesalahan Git, tanyakan Claude di tab [Cowork](https://claude.com/product/cowork) untuk membantu memecahkan masalah setup Anda.

385</Note>385</Note>

386 386 

387Gunakan kontrol di bagian atas sidebar untuk memfilter sesi berdasarkan status, proyek, atau lingkungan, dan untuk mengelompokkan sesi berdasarkan proyek. Untuk mengganti nama sesi, klik judul sesi di toolbar di bagian atas sesi aktif.387Gunakan kontrol di bagian atas sidebar untuk memfilter sesi berdasarkan status, proyek, atau lingkungan, dan untuk mengelompokkan sesi berdasarkan proyek. Untuk mengganti nama sesi, klik judul sesi di toolbar di bagian atas sesi aktif.


838| `disableAutoMode` | atur ke `"disable"` untuk menghapus mode [Auto](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) dari pemilih mode. Juga diterima di bawah `permissions`. |838| `disableAutoMode` | atur ke `"disable"` untuk menghapus mode [Auto](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) dari pemilih mode. Juga diterima di bawah `permissions`. |

839| `autoMode` | sesuaikan apa yang dipercaya dan diblokir oleh pengklasifikasi auto mode di seluruh organisasi Anda. Lihat [Configure auto mode](/docs/id/auto-mode-config). |839| `autoMode` | sesuaikan apa yang dipercaya dan diblokir oleh pengklasifikasi auto mode di seluruh organisasi Anda. Lihat [Configure auto mode](/docs/id/auto-mode-config). |

840| `browserExternalPageTools` | atur ke `"disabled"` untuk mencegah Claude menggunakan tools untuk membaca atau bertindak pada halaman eksternal di [Browser pane](#browse-external-sites). Pengguna masih dapat menavigasi ke situs eksternal sendiri, dan pratinjau server dev lokal tidak terpengaruh. |840| `browserExternalPageTools` | atur ke `"disabled"` untuk mencegah Claude menggunakan tools untuk membaca atau bertindak pada halaman eksternal di [Browser pane](#browse-external-sites). Pengguna masih dapat menavigasi ke situs eksternal sendiri, dan pratinjau server dev lokal tidak terpengaruh. |

841| `disableMobileSimulatorTools` | atur ke `true` untuk memblokir tools Claude untuk mengontrol dan menangkap perangkat di [iOS Simulator pane](/docs/id/desktop-ios-simulator#turn-off-simulator-access). Pane tetap dapat digunakan untuk ketukan pengguna sendiri; hanya akses Claude yang dihapus. |841| `disableMobileSimulatorTools` | atur ke `true` untuk memblokir tools Claude untuk mengontrol dan menangkap perangkat di [iOS Simulator pane](/docs/id/desktop-ios-simulator#turn-off-simulator-access). Pane tetap dapat digunakan untuk ketukan pengguna sendiri; hanya akses Claude yang dihapus. Nilainya harus berupa boolean JSON `true`; string `"true"` diabaikan. |

842| `disableBrowserExternalNavigation` | atur ke `true` untuk mematikan penjelajahan eksternal di [Browser pane](#browse-external-sites) sepenuhnya. Baik pengguna maupun Claude tidak dapat menavigasi ke situs eksternal, dan pratinjau server dev localhost tidak terpengaruh. Nilainya harus berupa boolean JSON `true`; string `"true"` diabaikan. |842| `disableBrowserExternalNavigation` | atur ke `true` untuk mematikan penjelajahan eksternal di [Browser pane](#browse-external-sites) sepenuhnya. Baik pengguna maupun Claude tidak dapat menavigasi ke situs eksternal, dan pratinjau server dev localhost tidak terpengaruh. Nilainya harus berupa boolean JSON `true`; string `"true"` diabaikan. |

843| `sshConfigs` | pre-configure [SSH connections](#pre-configure-ssh-connections-for-your-team) yang muncul di dropdown lingkungan. Pengguna tidak dapat mengedit atau menghapus koneksi yang dikelola. |843| `sshConfigs` | pre-configure [SSH connections](#pre-configure-ssh-connections-for-your-team) yang muncul di dropdown lingkungan. Pengguna tidak dapat mengedit atau menghapus koneksi yang dikelola. |

844| `sshHostAllowlist` | batasi [SSH sessions](#restrict-which-ssh-hosts-users-can-connect-to) ke host yang nama hostname yang diselesaikannya cocok dengan salah satu pola ini. Array kosong menonaktifkan sesi SSH. Dibaca dari pengaturan yang dikelola saja. |844| `sshHostAllowlist` | batasi [SSH sessions](#restrict-which-ssh-hosts-users-can-connect-to) ke host yang nama hostname yang diselesaikannya cocok dengan salah satu pola ini. Array kosong menonaktifkan sesi SSH. Dibaca dari pengaturan yang dikelola saja. |


1016| [Plugins](/docs/id/plugins) | Perintah `/plugin` | UI plugin manager |1016| [Plugins](/docs/id/plugins) | Perintah `/plugin` | UI plugin manager |

1017| File @mention | Berbasis teks | Dengan autocomplete; hanya sesi lokal dan SSH |1017| File @mention | Berbasis teks | Dengan autocomplete; hanya sesi lokal dan SSH |

1018| Lampiran file | Tidak tersedia | Gambar, PDF |1018| Lampiran file | Tidak tersedia | Gambar, PDF |

1019| Isolasi sesi | Flag [`--worktree`](/docs/id/cli-reference) | Worktrees otomatis |1019| Isolasi sesi | Flag [`--worktree`](/docs/id/cli-reference) | Opsi **worktree** saat memulai sesi |

1020| Sesi ganda | Terminal terpisah | Tab sidebar |1020| Sesi ganda | Terminal terpisah | Tab sidebar |

1021| Tugas berulang | Cron jobs, CI pipelines | [Tugas terjadwal](/docs/id/desktop-scheduled-tasks) |1021| Tugas berulang | Cron jobs, CI pipelines | [Tugas terjadwal](/docs/id/desktop-scheduled-tasks) |

1022| Penggunaan komputer | [Aktifkan via `/mcp`](/docs/id/computer-use) di macOS | [Kontrol aplikasi dan layar](#let-claude-use-your-computer) di macOS dan Windows |1022| Penggunaan komputer | [Aktifkan via `/mcp`](/docs/id/computer-use) di macOS | [Kontrol aplikasi dan layar](#let-claude-use-your-computer) di macOS dan Windows |


1093 Git and Git LFS errors1093 Git and Git LFS errors

1094</h3>1094</h3>

1095 1095 

1096Di Windows, Git diperlukan agar tab Code memulai sesi lokal. Jika Anda melihat "Git is required," instal [Git for Windows](https://git-scm.com/downloads/win) dan mulai ulang aplikasi.1096Sesi yang berjalan di worktree mereka sendiri memerlukan Git. Jika Anda melihat "Git is required," instal [Git](https://git-scm.com/downloads), atau [Git for Windows](https://git-scm.com/downloads/win) di Windows, dan coba lagi. Di Windows, versi Claude Desktop sebelum 1.49585.0 meminta Git sebelum memulai sesi lokal apa pun; jika Anda melihat prompt itu dan tidak menggunakan worktrees, perbarui aplikasi.

1097 1097 

1098Jika Anda melihat "Git LFS is required by this repository but is not installed," instal Git LFS dari [git-lfs.com](https://git-lfs.com/), jalankan `git lfs install`, dan mulai ulang aplikasi.1098Jika Anda melihat "Git LFS is required by this repository but is not installed," instal Git LFS dari [git-lfs.com](https://git-lfs.com/), jalankan `git lfs install`, dan mulai ulang aplikasi.

1099 1099 

Details

65 Pilih **Local** untuk menjalankan Claude di mesin Anda menggunakan file Anda secara langsung. Klik **Select folder** dan pilih direktori proyek Anda.65 Pilih **Local** untuk menjalankan Claude di mesin Anda menggunakan file Anda secara langsung. Klik **Select folder** dan pilih direktori proyek Anda.

66 66 

67 <Tip>67 <Tip>

68 Mulai dengan proyek kecil yang Anda kenal dengan baik. Ini adalah cara tercepat untuk melihat apa yang dapat dilakukan Claude Code. Di Windows, [Git](https://git-scm.com/downloads/win) harus diinstal agar sesi lokal berfungsi. Sebagian besar Mac sudah menyertakan Git secara default.68 Mulai dengan proyek kecil yang Anda kenal dengan baik. Ini adalah cara tercepat untuk melihat apa yang dapat dilakukan Claude Code.

69 </Tip>69 </Tip>

70 70 

71 Anda juga dapat memilih:71 Anda juga dapat memilih:


86 * `Add tests for the main function`86 * `Add tests for the main function`

87 * `Create a CLAUDE.md with instructions for this codebase`87 * `Create a CLAUDE.md with instructions for this codebase`

88 88 

89 Sebuah [session](/docs/id/desktop#work-in-parallel-with-sessions) adalah percakapan dengan Claude tentang kode Anda. Setiap sesi melacak konteks dan perubahannya sendiri, sehingga Anda dapat mengerjakan beberapa tugas tanpa saling mengganggu.89 Sebuah [session](/docs/id/desktop#work-in-parallel-with-sessions) adalah percakapan dengan Claude tentang kode Anda. Setiap sesi melacak konteks dan perubahannya sendiri.

90 </Step>90 </Step>

91 91 

92 <Step title="Tinjau dan terima perubahan">92 <Step title="Tinjau dan terima perubahan">

fast-mode.md +1 −1

Details

123Mode cepat memerlukan semua hal berikut:123Mode cepat memerlukan semua hal berikut:

124 124 

125* **Hanya API Anthropic atau langganan**: mode cepat tersedia melalui API Konsol Anthropic dan untuk paket langganan Claude menggunakan penggunaan kredit. Mode ini tidak tersedia di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau Claude Platform di AWS. Organisasi Konsol juga harus memiliki [akses mode cepat yang disediakan](#enable-fast-mode-for-your-organization).125* **Hanya API Anthropic atau langganan**: mode cepat tersedia melalui API Konsol Anthropic dan untuk paket langganan Claude menggunakan penggunaan kredit. Mode ini tidak tersedia di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau Claude Platform di AWS. Organisasi Konsol juga harus memiliki [akses mode cepat yang disediakan](#enable-fast-mode-for-your-organization).

126* **Penggunaan kredit diaktifkan untuk paket langganan**: pada paket Pro, Max, Team, atau Enterprise, akun Anda harus memiliki [penggunaan kredit](/docs/id/costs#add-usage-credits-to-your-subscription) diaktifkan, yang memungkinkan penagihan di luar penggunaan yang disertakan dalam paket Anda. Sampai diaktifkan, `/fast` menampilkan "Fast mode requires usage credits · /usage-credits to turn them on". Cara Anda mengaktifkannya tergantung pada paket Anda:126* **Penggunaan kredit diaktifkan untuk paket langganan**: pada paket Pro, Max, Team, atau Enterprise, akun Anda harus memiliki [penggunaan kredit](/docs/id/costs#add-usage-credits-to-your-subscription) diaktifkan, yang memungkinkan penagihan di luar penggunaan yang disertakan dalam paket Anda. Sampai diaktifkan, `/fast` menampilkan "Fast mode requires usage credits". Cara Anda mengaktifkannya tergantung pada paket Anda:

127 * Pada Pro dan Max, aktifkan di bagian **Usage credits** dari [**Settings > Usage**](https://claude.ai/settings/usage) di claude.ai, atau jalankan `/usage-credits` untuk membuka halaman tersebut.127 * Pada Pro dan Max, aktifkan di bagian **Usage credits** dari [**Settings > Usage**](https://claude.ai/settings/usage) di claude.ai, atau jalankan `/usage-credits` untuk membuka halaman tersebut.

128 * Pada Team dan Enterprise, anggota dengan akses penagihan mengaktifkannya untuk organisasi di [**Admin settings > Usage**](https://claude.ai/admin-settings/usage), dan anggota tanpa akses menjalankan `/usage-credits` untuk mengirim permintaan kepada admin organisasi.128 * Pada Team dan Enterprise, anggota dengan akses penagihan mengaktifkannya untuk organisasi di [**Admin settings > Usage**](https://claude.ai/admin-settings/usage), dan anggota tanpa akses menjalankan `/usage-credits` untuk mengirim permintaan kepada admin organisasi.

129 129 

Details

116claude --cloud "Add retry logic to the payment webhook handler"116claude --cloud "Add retry logic to the payment webhook handler"

117```117```

118 118 

119Sesi mengkloning repositori Anda dari GHES dan mendorong perubahan kembali ke cabang. Pantau kemajuan dengan `/tasks` atau di [claude.ai/code](https://claude.ai/code). Lihat [Claude Code di web](/docs/id/claude-code-on-the-web) untuk alur kerja sesi cloud lengkap termasuk tinjauan diff, perbaikan otomatis, dan rutinitas.119Sesi mengkloning repositori Anda dari GHES dan mendorong perubahan kembali ke cabang. Pantau kemajuan di [claude.ai/code](https://claude.ai/code). Lihat [Claude Code di web](/docs/id/claude-code-on-the-web) untuk alur kerja sesi cloud lengkap termasuk tinjauan diff, perbaikan otomatis, dan rutinitas.

120 120 

121<h3 id="teleport-sessions-to-your-terminal">121<h3 id="teleport-sessions-to-your-terminal">

122 Teleport sesi ke terminal Anda122 Teleport sesi ke terminal Anda

goal.md +23 −6

Details

22Tiga pendekatan menjaga sesi saat ini berjalan di antara prompt. Pilih berdasarkan apa yang harus memulai giliran berikutnya:22Tiga pendekatan menjaga sesi saat ini berjalan di antara prompt. Pilih berdasarkan apa yang harus memulai giliran berikutnya:

23 23 

24| Pendekatan | Giliran berikutnya dimulai ketika | Berhenti ketika |24| Pendekatan | Giliran berikutnya dimulai ketika | Berhenti ketika |

25| :------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |25| :------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

26| `/goal` | Giliran sebelumnya selesai, atau [pemeriksaan idle](#background-work-defers-evaluation) akan datang sementara pekerjaan latar belakang membuat goal menunggu, hingga tiga kali per goal di antara prompt Anda | Model mengkonfirmasi kondisi terpenuhi atau menilainya tidak mungkin, atau giliran gagal pada [kesalahan yang harus Anda perbaiki](#errors-you-have-to-fix-clear-the-goal), atau Anda menjalankan [`/goal clear`](#clear-a-goal) |26| `/goal` | Giliran sebelumnya selesai, atau, dalam sesi interaktif, [pemeriksaan idle](#background-work-defers-evaluation) atau [percobaan ulang otomatis](#other-errors-retry-or-pause-the-goal) akan datang | Model mengkonfirmasi kondisi terpenuhi atau menilainya tidak mungkin, atau giliran gagal pada [kesalahan yang harus Anda perbaiki](#errors-you-have-to-fix-clear-the-goal), atau Anda menjalankan [`/goal clear`](#clear-a-goal) |

27| [`/loop`](/docs/id/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop) | Interval waktu berlalu | Anda menghentikannya, atau Claude memutuskan pekerjaan selesai |27| [`/loop`](/docs/id/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop) | Interval waktu berlalu | Anda menghentikannya, atau Claude memutuskan pekerjaan selesai |

28| [Stop hook](/docs/id/hooks-guide#prompt-based-hooks) | Giliran sebelumnya selesai | Skrip atau prompt Anda sendiri memutuskan |28| [Stop hook](/docs/id/hooks-guide#prompt-based-hooks) | Giliran sebelumnya selesai | Skrip atau prompt Anda sendiri memutuskan |

29 29 


143 143 

144Jika Claude terus menjawab evaluator tanpa membuat kemajuan (tidak ada penggunaan alat selama beberapa giliran berturut-turut), Claude Code menghentikan loop, mencetak peringatan, dan mengembalikan kontrol kepada Anda dengan tujuan masih ditetapkan. Evaluasi dilanjutkan setelah prompt Anda berikutnya. [Panduan hooks](/docs/id/hooks-guide#stop-hook-hits-the-block-cap) menjelaskan mekanisme yang mendasarinya.144Jika Claude terus menjawab evaluator tanpa membuat kemajuan (tidak ada penggunaan alat selama beberapa giliran berturut-turut), Claude Code menghentikan loop, mencetak peringatan, dan mengembalikan kontrol kepada Anda dengan tujuan masih ditetapkan. Evaluasi dilanjutkan setelah prompt Anda berikutnya. [Panduan hooks](/docs/id/hooks-guide#stop-hook-hits-the-block-cap) menjelaskan mekanisme yang mendasarinya.

145 145 

146<h3 id="errors-you-have-to-fix-clear-the-goal">146<h3 id="when-a-turn-fails">

147 Kesalahan yang harus Anda perbaiki menghapus tujuan147 Ketika giliran gagal

148</h3>148</h3>

149 149 

150Ketika giliran gagal, Claude Code menghapus tujuan jika kesalahan adalah salah satu yang harus Anda perbaiki. Setelah kesalahan lainnya, tujuan tetap ditetapkan.

151 

152<h4 id="errors-you-have-to-fix-clear-the-goal">

153 Kesalahan yang harus Anda perbaiki menghapus tujuan

154</h4>

155 

150Jika giliran gagal pada kesalahan yang tidak akan dihapus sampai Anda memperbaikinya, Claude Code menghapus tujuan dan mencetak peringatan yang menyebutkan penyebabnya. Peringatan dimulai dengan `Goal cleared after an unrecoverable error` dan diakhiri dengan `Run /goal again to continue`. Perbaiki penyebabnya, kemudian [tetapkan tujuan lagi](#set-a-goal) dengan `/goal <condition>`. Empat jenis kegagalan menghapus tujuan:156Jika giliran gagal pada kesalahan yang tidak akan dihapus sampai Anda memperbaikinya, Claude Code menghapus tujuan dan mencetak peringatan yang menyebutkan penyebabnya. Peringatan dimulai dengan `Goal cleared after an unrecoverable error` dan diakhiri dengan `Run /goal again to continue`. Perbaiki penyebabnya, kemudian [tetapkan tujuan lagi](#set-a-goal) dengan `/goal <condition>`. Empat jenis kegagalan menghapus tujuan:

151 157 

152* Kegagalan autentikasi, ketika Claude Code mengelola kredensialnya sendiri. Ketika host mengelolanya untuk Anda, seperti aplikasi desktop, ekstensi VS Code, atau [sesi cloud](/docs/id/claude-code-on-the-web), Claude Code membiarkan tujuan tetap aktif karena host memulihkan akses dengan sendirinya.158* Kegagalan autentikasi, ketika Claude Code mengelola kredensialnya sendiri. Ketika host mengelolanya untuk Anda, seperti aplikasi desktop, ekstensi VS Code, atau [sesi cloud](/docs/id/claude-code-on-the-web), Claude Code membiarkan tujuan tetap aktif karena host memulihkan akses dengan sendirinya.


154* Overflow konteks yang [auto-compaction](/docs/id/model-config#set-the-auto-compact-window) tidak dapat menghapus160* Overflow konteks yang [auto-compaction](/docs/id/model-config#set-the-auto-compact-window) tidak dapat menghapus

155* Model yang tidak tersedia161* Model yang tidak tersedia

156 162 

157Setelah kegagalan lainnya, termasuk kesalahan transien seperti batas laju dan server yang kelebihan beban, Claude Code membiarkan tujuan tetap aktif.163<h4 id="other-errors-retry-or-pause-the-goal">

164 Kesalahan lainnya mencoba ulang atau menjeda tujuan

165</h4>

166 

167Setelah kegagalan lainnya, tujuan tetap ditetapkan. Dalam sesi interaktif pada Claude Code v2.1.269 atau lebih baru, Claude Code juga mencetak baris yang menyebutkan penyebabnya dan baik mencoba ulang dengan sendirinya atau menunggu Anda:

168 

169* **Coba ulang**: setelah kegagalan yang cenderung menghapus dengan sendirinya, seperti server yang kelebihan beban atau koneksi yang terputus, pemberitahuan yang dimulai dengan `Goal still active` menunjukkan waktu tunggu sebelum percobaan berikutnya. Setelah tiga percobaan ulang otomatis, tujuan dijeda sebagai gantinya.

170* **Jeda**: setelah kegagalan yang percobaan ulang hanya akan mengulangi, seperti batas laju API, [batas penggunaan](/docs/id/errors#youve-hit-your-session-limit) claude.ai, atau hook yang mengakhiri giliran, pemberitahuan yang dimulai dengan `Goal paused` menyebutkan penyebabnya. Jika sesi [menunggu untuk melanjutkan secara otomatis ketika batas penggunaan direset](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset), Claude melanjutkan pekerjaan menuju tujuan kemudian.

171 

172Kirimkan pesan kapan saja untuk memulai giliran berikutnya segera. Untuk mematikan percobaan ulang otomatis, atur [`CLAUDE_CODE_GOAL_CHECKIN_MINUTES`](/docs/id/env-vars) ke `0`, yang juga mematikan [check-in](#background-work-defers-evaluation).

158 173 

159<h3 id="background-work-defers-evaluation">174<h3 id="background-work-defers-evaluation">

160 Pekerjaan latar belakang menunda evaluasi175 Pekerjaan latar belakang menunda evaluasi


169 184 

170Sebelum v2.1.239, hanya check-in menganggur yang mundur dengan cara ini; check-in yang disampaikan pada akhir giliran berulang pada interval pertama.185Sebelum v2.1.239, hanya check-in menganggur yang mundur dengan cara ini; check-in yang disampaikan pada akhir giliran berulang pada interval pertama.

171 186 

172Untuk mengubah interval pertama, atur [`CLAUDE_CODE_GOAL_CHECKIN_MINUTES`](/docs/id/env-vars). Claude Code menggunakan nilai Anda sebagai pengganti interval 30 menit dan menskalakan interval kemudian dengannya. Atur ke `0` untuk mematikan check-in. Check-in memerlukan Claude Code v2.1.234 atau lebih baru.187Untuk mengubah interval pertama, atur [`CLAUDE_CODE_GOAL_CHECKIN_MINUTES`](/docs/id/env-vars). Claude Code menggunakan nilai Anda sebagai pengganti interval 30 menit dan menskalakan interval kemudian dengannya. Atur ke `0` untuk mematikan check-in dan [percobaan ulang otomatis](#other-errors-retry-or-pause-the-goal).

188 

189Check-in memerlukan Claude Code v2.1.234 atau lebih baru.

173 190 

174<h3 id="evaluation-model-and-cost">191<h3 id="evaluation-model-and-cost">

175 Model evaluasi dan biaya192 Model evaluasi dan biaya

hooks.md +4 −4

Details

1856| `status` | string | `"completed"` | `"completed"` untuk subagents foreground, `"async_launched"` untuk subagents background. Mulai dari v2.1.198, subagents berjalan di latar belakang secara default, jadi `run_in_background` yang dihilangkan juga menghasilkan `"async_launched"` |1856| `status` | string | `"completed"` | `"completed"` untuk subagents foreground, `"async_launched"` untuk subagents background. Mulai dari v2.1.198, subagents berjalan di latar belakang secara default, jadi `run_in_background` yang dihilangkan juga menghasilkan `"async_launched"` |

1857| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengenal untuk run subagent |1857| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengenal untuk run subagent |

1858| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks akhir subagent |1858| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks akhir subagent |

1859| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model yang dijalankan subagent, yang mungkin berbeda dari model yang diminta. Memerlukan Claude Code v2.1.174 atau lebih baru |1859| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model yang dijalankan subagent, yang mungkin berbeda dari model yang diminta |

1860| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Model yang digunakan secara berurutan, dengan pengulangan berturut-turut yang runtuh; diatur hanya ketika model ditukar mid-run. Memerlukan Claude Code v2.1.212 atau lebih baru |1860| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Model yang digunakan secara berurutan, dengan pengulangan berturut-turut yang runtuh; diatur hanya ketika model ditukar mid-run. Memerlukan Claude Code v2.1.212 atau lebih baru |

1861| `totalTokens` | number | `12450` | Jumlah token dari permintaan API akhir subagent: input, output, dan cache tokens digabungkan. Ini bukan total di seluruh run |1861| `totalTokens` | number | `12450` | Jumlah token dari permintaan API akhir subagent: input, output, dan cache tokens digabungkan. Ini bukan total di seluruh run |

1862| `totalDurationMs` | number | `48211` | Durasi wall-clock dari run subagent |1862| `totalDurationMs` | number | `48211` | Durasi wall-clock dari run subagent |


1865 1865 

1866Untuk subagents background, tool mengembalikan ketika tugas bergerak ke latar belakang, jadi `tool_response` tidak membawa bidang penggunaan: peluncuran background mengembalikan segera, dan tugas foreground yang Claude Code latar belakang mid-run mengembalikan pada transisi itu. Itu memiliki `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, dan `resolvedModel`.1866Untuk subagents background, tool mengembalikan ketika tugas bergerak ke latar belakang, jadi `tool_response` tidak membawa bidang penggunaan: peluncuran background mengembalikan segera, dan tugas foreground yang Claude Code latar belakang mid-run mengembalikan pada transisi itu. Itu memiliki `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, dan `resolvedModel`.

1867 1867 

1868Pada respons `completed`, `resolvedModel` menamai model yang dijalankan subagent, yang dapat berbeda dari nilai `model` dalam `tool_input`, seperti ketika `availableModels` atau override lain berlaku. Itu memerlukan Claude Code v2.1.174 atau lebih baru. Pada respons `async_launched`, `resolvedModel` menamai model yang digunakan ketika agent bergerak ke latar belakang, jadi swap yang terjadi sebelum backgrounding tercermin di sana. `modelsUsed` dan perilaku `resolvedModel` saat backgrounding memerlukan Claude Code v2.1.212 atau lebih baru.1868Pada respons `completed`, `resolvedModel` menamai model yang dijalankan subagent, yang dapat berbeda dari nilai `model` dalam `tool_input`, seperti ketika `availableModels` atau override lain berlaku. Pada respons `async_launched`, `resolvedModel` menamai model yang digunakan ketika agent bergerak ke latar belakang, jadi swap yang terjadi sebelum backgrounding tercermin di sana. `modelsUsed` dan perilaku `resolvedModel` saat backgrounding memerlukan Claude Code v2.1.212 atau lebih baru.

1869 1869 

1870<a id="askuserquestion" />1870<a id="askuserquestion" />

1871 1871 


2803Selain [bidang input umum](#common-input-fields), StopFailure hooks menerima `error`, `error_details` opsional, dan `last_assistant_message` opsional. Bidang `error` mengidentifikasi tipe kesalahan dan digunakan untuk pemfilteran matcher.2803Selain [bidang input umum](#common-input-fields), StopFailure hooks menerima `error`, `error_details` opsional, dan `last_assistant_message` opsional. Bidang `error` mengidentifikasi tipe kesalahan dan digunakan untuk pemfilteran matcher.

2804 2804 

2805| Bidang | Deskripsi |2805| Bidang | Deskripsi |

2806| :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |2806| :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

2807| `error` | Tipe kesalahan: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, atau `unknown` |2807| `error` | Tipe kesalahan: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, atau `unknown` |

2808| `error_details` | Detail tambahan tentang kesalahan, ketika tersedia |2808| `error_details` | Detail tambahan tentang kesalahan, ketika tersedia |

2809| `last_assistant_message` | Teks kesalahan yang dirender ditampilkan dalam percakapan. Tidak seperti `Stop` dan `SubagentStop`,di mana bidang ini menyimpan output percakapan Claude, untuk `StopFailure` itu berisi string kesalahan API itu sendiri, seperti `"API Error: Rate limit reached"` |2809| `last_assistant_message` | Teks kesalahan yang dirender ditampilkan dalam percakapan. Tidak seperti `Stop` dan `SubagentStop`, di mana bidang ini menyimpan output perca capan Claude, untuk `StopFailure` itu berisi string kesalahan API itu sendiri, seperti `"API Error: Rate limit reached"` |

2810 2810 

2811```json theme={null}2811```json theme={null}

2812{2812{

Details

211 211 

212Perintah bawaan juga memandu Anda melalui setup:212Perintah bawaan juga memandu Anda melalui setup:

213 213 

214* `/init` memandu Anda membuat CLAUDE.md untuk proyek Anda214* `/init` menghasilkan CLAUDE.md pemula untuk proyek Anda

215* `/doctor` menjalankan pemeriksaan setup yang mendiagnosis masalah instalasi dan konfigurasi serta dapat memperbaikinya215* `/doctor` menjalankan pemeriksaan setup yang mendiagnosis masalah instalasi dan konfigurasi serta dapat memperbaikinya

216 216 

217<h3 id="it’s-a-conversation">217<h3 id="it’s-a-conversation">

jetbrains.md +2 −2

Details

256**Alat yang diekspos ke model.** Server menampilkan beberapa alat, tetapi hanya satu yang terlihat oleh model. Sisanya adalah RPC internal yang CLI gunakan untuk UI-nya sendiri, seperti membuka diff dan membaca pilihan, dan disaring keluar sebelum daftar alat mencapai Claude.256**Alat yang diekspos ke model.** Server menampilkan beberapa alat, tetapi hanya satu yang terlihat oleh model. Sisanya adalah RPC internal yang CLI gunakan untuk UI-nya sendiri, seperti membuka diff dan membaca pilihan, dan disaring keluar sebelum daftar alat mencapai Claude.

257 257 

258| Nama alat (seperti yang terlihat oleh hooks) | Apa yang dilakukannya | Hanya-baca |258| Nama alat (seperti yang terlihat oleh hooks) | Apa yang dilakukannya | Hanya-baca |

259| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ---------- |259| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |

260| `mcp__ide__getDiagnostics` | Mengembalikan diagnostik inspeksi IDE, kesalahan dan peringatan yang ditampilkan di editor. Secara opsional dibatasi pada satu file. | Ya |260| `mcp__ide__getDiagnostics` | Mengembalikan diagnostik inspeksi IDE, kesalahan dan peringatan yang ditampilkan di editor. Setiap panggilan mencakup satu file: file yang Claude tentukan, atau file di editor aktif Anda jika Claude tidak menentukan satu. | Ya |

261 261 

262Plugin JetBrains tidak mengekspos alat eksekusi kode ke model.262Plugin JetBrains tidak mengekspos alat eksekusi kode ke model.

263 263 

Details

385 Jaga skills tetap dapat ditemukan385 Jaga skills tetap dapat ditemukan

386</h3>386</h3>

387 387 

388Dengan skills tersebar di banyak direktori, daftar yang Claude pilih dari dapat tumbuh besar. Claude memilih skill dengan membaca nama dan deskripsi setiap skill yang ditemukan, dan hanya konten skill yang dipilih dimuat penuh ke dalam konteks. Bagian ini mencakup cara menjaga daftar itu tetap kecil dan menulis deskripsi yang bertahan pemendekkan.388Dengan skills tersebar di banyak direktori, daftar yang Claude pilih dari dapat tumbuh besar. Claude memilih skill dengan membaca nama dan deskripsi setiap skill yang ditemukan, dan hanya konten skill yang dipilih dimuat penuh ke dalam konteks. Bagian ini mencakup cara menjaga daftar itu tetap kecil.

389 389 

390Skill mana yang dalam scope tergantung pada di mana Anda memulai Claude:390Skill mana yang dalam scope tergantung pada di mana Anda memulai Claude:

391 391 


393* **Dari repository root**: skills root, ditambah skills dari setiap subdirektori Claude sentuh selama sesi, yang dapat terakumulasi menjadi ratusan393* **Dari repository root**: skills root, ditambah skills dari setiap subdirektori Claude sentuh selama sesi, yang dapat terakumulasi menjadi ratusan

394* **Setelah menambahkan sibling dengan [`--add-dir`](#grant-access-across-packages-or-repositories)**: skills sibling itu juga dimuat. Pengaturan `additionalDirectories` memberikan akses file saja dan tidak memuat skills394* **Setelah menambahkan sibling dengan [`--add-dir`](#grant-access-across-packages-or-repositories)**: skills sibling itu juga dimuat. Pengaturan `additionalDirectories` memberikan akses file saja dan tidak memuat skills

395 395 

396Nama selalu dimuat, tetapi [deskripsi dipendekkan ketika ada banyak](/docs/id/skills#skill-descriptions-are-cut-short), yang dapat menghapus kata kunci Claude gunakan untuk memutuskan apakah skill berlaku. Jaga deskripsi tetap pendek dan pimpin dengan kata yang permintaan akan berisi, seperti "menulis atau memodifikasi tes di `packages/api/`".396Nama selalu dimuat, tetapi [ketika ada banyak, beberapa skills kehilangan deskripsi mereka sepenuhnya](/docs/id/skills#skill-descriptions-are-cut-short), yang dapat menghapus kata kunci Claude gunakan untuk memutuskan apakah skill berlaku. Jaga deskripsi tetap pendek dan pimpin dengan kata yang permintaan akan berisi, seperti "menulis atau memodifikasi tes di `packages/api/`".

397 397 

398Untuk skills yang banyak direktori bagikan, seperti konvensi PR atau checklist deploy, letakkan di `.claude/skills/` repository root sehingga mereka dimuat dari direktori awal apa pun. Ketika shared skills memerlukan riwayat versi mereka sendiri atau harus bekerja di seluruh repositories, paketkan sebagai [plugin](/docs/id/plugins) sebagai gantinya. Plugin skills menggunakan namespace `plugin-name:skill-name`, jadi mereka tidak pernah bertabrakan dengan skills per-direktori. Tim platform dapat memversi dan memperbarui mereka di satu tempat.398Untuk skills yang banyak direktori bagikan, seperti konvensi PR atau checklist deploy, letakkan di `.claude/skills/` repository root sehingga mereka dimuat dari direktori awal apa pun. Ketika shared skills memerlukan riwayat versi mereka sendiri atau harus bekerja di seluruh repositories, paketkan sebagai [plugin](/docs/id/plugins) sebagai gantinya. Plugin skills menggunakan namespace `plugin-name:skill-name`, jadi mereka tidak pernah bertabrakan dengan skills per-direktori. Tim platform dapat memversi dan memperbarui mereka di satu tempat.

399 399 

Details

186* [`forceRemoteSettingsRefresh`](/docs/id/server-managed-settings)186* [`forceRemoteSettingsRefresh`](/docs/id/server-managed-settings)

187* `env`, digabungkan per variabel di seluruh sumber admin: setiap variabel berasal dari sumber prioritas tertinggi yang mendefinisikannya, jadi sumber lebih rendah mengisi variabel yang sumber lebih tinggi biarkan tidak diatur. Beberapa variabel mengikuti aturan mereka sendiri; [Pengecualian per kunci di seluruh sumber terkelola](/docs/id/server-managed-settings#per-key-exceptions-across-managed-sources) menamai masing-masing. Memerlukan Claude Code v2.1.223 atau lebih baru. Sebelum v2.1.223, Claude Code menerapkan blok `env` sumber yang dipilih secara keseluruhan saja187* `env`, digabungkan per variabel di seluruh sumber admin: setiap variabel berasal dari sumber prioritas tertinggi yang mendefinisikannya, jadi sumber lebih rendah mengisi variabel yang sumber lebih tinggi biarkan tidak diatur. Beberapa variabel mengikuti aturan mereka sendiri; [Pengecualian per kunci di seluruh sumber terkelola](/docs/id/server-managed-settings#per-key-exceptions-across-managed-sources) menamai masing-masing. Memerlukan Claude Code v2.1.223 atau lebih baru. Sebelum v2.1.223, Claude Code menerapkan blok `env` sumber yang dipilih secara keseluruhan saja

188 188 

189Kunci [gateway login](#choose-a-delivery-mechanism), [`forceLoginGatewayUrl`](/docs/id/settings-reference#forcelogingatewayurl) dan nilai `"gateway"` dari [`forceLoginMethod`](/docs/id/settings-reference#forceloginmethod), mengikuti aturan terpisah. Claude Code tidak pernah membacanya dari pengaturan terkelola server, jadi sementara pengaturan terkelola server adalah sumber yang dipilih, sumber admin peringkat tertinggi di mesin yang membawa kunci kebijakan masih menyediakannya. Nilai dalam sumber admin yang diberi peringkat di bawah itu, atau dalam registry HKCU, diabaikan.

190 

189<h3 id="compose-every-managed-source">191<h3 id="compose-every-managed-source">

190 Susun setiap sumber terkelola192 Susun setiap sumber terkelola

191</h3>193</h3>

model-config.md +4 −2

Details

134`/model` menyimpan pilihan Anda sebagai default untuk sesi baru dengan menulis bidang `model` di pengaturan pengguna Anda. Di pemilih:134`/model` menyimpan pilihan Anda sebagai default untuk sesi baru dengan menulis bidang `model` di pengaturan pengguna Anda. Di pemilih:

135 135 

136* `Enter`: alihkan model dan simpan sebagai default Anda136* `Enter`: alihkan model dan simpan sebagai default Anda

137* `s`: alihkan model hanya untuk sesi ini137* `s`: alihkan model hanya untuk sesi ini dan biarkan default Anda tidak berubah. Untuk menggunakan kunci yang berbeda, ikat ulang [`modelPicker:thisSessionOnly`](/docs/id/keybindings#model-picker-actions)

138 138 

139Mengetik `/model <name>` langsung berperilaku seperti `Enter`. Jika Anda menetapkan model dengan `/model` dalam [mode non-interaktif](/docs/id/headless), dengan flag `-p`, pilihan Anda berlaku hanya untuk sesi saat ini dan tidak disimpan sebagai default Anda; `/model` dalam mode itu memerlukan Claude Code v2.1.205 atau lebih baru. Pengaturan proyek dan terkelola masih memiliki prioritas dan diterapkan kembali pada peluncuran berikutnya. [Model default organisasi](#organization-default-model) yang admin Anda telah dikonfigurasi untuk mengganti pilihan pengguna juga diterapkan kembali pada peluncuran berikutnya.139Mengetik `/model <name>` langsung berperilaku seperti `Enter`. Untuk beralih hanya untuk sesi ini, buka pemilih dengan `/model` dan tekan `s` di baris model.

140 

141Jika Anda menetapkan model dengan `/model` dalam [mode non-interaktif](/docs/id/headless), dengan flag `-p`, pilihan Anda berlaku hanya untuk sesi saat ini dan tidak disimpan sebagai default Anda; `/model` dalam mode itu memerlukan Claude Code v2.1.205 atau lebih baru. Pengaturan proyek dan terkelola masih memiliki prioritas dan diterapkan kembali pada peluncuran berikutnya. [Model default organisasi](#organization-default-model) yang admin Anda telah dikonfigurasi untuk mengganti pilihan pengguna juga diterapkan kembali pada peluncuran berikutnya.

140 142 

141Dalam v2.1.144 hingga v2.1.152, `/model` berlaku hanya untuk sesi saat ini dan `d` di pemilih menyimpan default.143Dalam v2.1.144 hingga v2.1.152, `/model` berlaku hanya untuk sesi saat ini dan `d` di pemilih menyimpan default.

142 144 

Details

150Variabel lingkungan berikut mengontrol atribut mana yang disertakan dalam metrik untuk mengelola kardinalitas:150Variabel lingkungan berikut mengontrol atribut mana yang disertakan dalam metrik untuk mengelola kardinalitas:

151 151 

152| Variabel Lingkungan | Deskripsi | Nilai Default | Contoh untuk Menonaktifkan |152| Variabel Lingkungan | Deskripsi | Nilai Default | Contoh untuk Menonaktifkan |

153| ------------------------------------------ | ------------------------------------------------------------------------------------- | ------------- | -------------------------- |153| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------------------------- |

154| `OTEL_METRICS_INCLUDE_SESSION_ID` | Sertakan atribut session.id dalam metrik | `true` | `false` |154| `OTEL_METRICS_INCLUDE_SESSION_ID` | Sertakan atribut session.id dalam metrik | `true` | `false` |

155| `OTEL_METRICS_INCLUDE_VERSION` | Sertakan atribut app.version dalam metrik | `false` | `true` |155| `OTEL_METRICS_INCLUDE_VERSION` | Sertakan atribut app.version dalam metrik | `false` | `true` |

156| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Sertakan atribut user.account\_uuid dan user.account\_id dalam metrik | `true` | `false` |156| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Sertakan atribut user.account\_uuid dan user.account\_id dalam metrik | `true` | `false` |

157| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Sertakan atribut app.entrypoint dalam metrik | `false` | `true` |157| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Sertakan atribut app.entrypoint dalam metrik | `false` | `true` |

158| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Sertakan kunci dari `OTEL_RESOURCE_ATTRIBUTES` sebagai atribut pada titik data metrik | `true` | `false` |158| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Sertakan kunci dari `OTEL_RESOURCE_ATTRIBUTES` sebagai atribut pada titik data metrik | `true` | `false` |

159| `OTEL_METRICS_INCLUDE_REPOSITORY` | Sertakan atribut identitas repositori `vcs.*` [repository attributes](#repository-attributes) pada metrik dan acara. Memerlukan Claude Code v2.1.269 atau lebih baru | `false` | `true` |

159 160 

160Kardinalitas yang lebih rendah umumnya berarti kinerja yang lebih baik dan biaya penyimpanan yang lebih rendah tetapi data yang kurang granular untuk analisis.161Kardinalitas yang lebih rendah umumnya berarti kinerja yang lebih baik dan biaya penyimpanan yang lebih rendah tetapi data yang kurang granular untuk analisis.

161 162 


222| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |223| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |

223| `user_prompt` | Teks prompt. Nilai adalah `<REDACTED>` kecuali gate diatur | `OTEL_LOG_USER_PROMPTS` |224| `user_prompt` | Teks prompt. Nilai adalah `<REDACTED>` kecuali gate diatur | `OTEL_LOG_USER_PROMPTS` |

224| `user_prompt_length` | Panjang prompt dalam karakter | |225| `user_prompt_length` | Panjang prompt dalam karakter | |

225| `interaction.sequence` | Penghitung berbasis 1 dari interaksi dalam sesi ini | |226| `interaction.sequence` | Penghitung berbasis 1 dari interaksi, dihitung per proses Claude Code daripada per sesi, seperti yang dijelaskan untuk [`event.sequence`](#event-correlation-attributes) | |

226| `parent.source` | Bagaimana span mendapatkan parent trace-nya: `env` saat itu parent di bawah `TRACEPARENT` inbound, `none` saat itu memulai trace-nya sendiri. Memerlukan Claude Code v2.1.268 atau lebih baru | |227| `parent.source` | Bagaimana span mendapatkan parent trace-nya: `env` saat itu parent di bawah `TRACEPARENT` inbound, `none` saat itu memulai trace-nya sendiri. Memerlukan Claude Code v2.1.268 atau lebih baru | |

227| `interaction.duration_ms` | Durasi wall-clock dari giliran | |228| `interaction.duration_ms` | Durasi wall-clock dari giliran | |

228 229 


390* Buat dasbor khusus tim391* Buat dasbor khusus tim

391* Atur peringatan untuk tim tertentu392* Atur peringatan untuk tim tertentu

392 393 

393Claude Code melampirkan nilai-nilai ini sebagai atribut pada setiap titik data metrik dan catatan acara, selain mengirimkannya dalam blok sumber daya OTLP. Karena sebagian besar backend metrik mengekspos atribut titik data sebagai label yang dapat dikueri, Anda dapat mengelompokkan dan memfilter metrik berdasarkan kunci khusus Anda secara langsung. Kunci khusus tidak pernah menimpa [atribut standar](#standard-attributes) seperti `user.id` atau `session.id`: saat kunci bertabrakan, Claude Code mempertahankan nilai built-in.394Claude Code melampirkan nilai-nilai ini sebagai atribut pada setiap titik data metrik dan catatan acara, selain mengirimkannya dalam blok sumber daya OTLP. Karena sebagian besar backend metrik mengekspos atribut titik data sebagai label yang dapat dikueri, Anda dapat mengelompokkan dan memfilter metrik berdasarkan kunci khusus Anda secara langsung. Kecuali untuk atribut repositori `vcs.*` [repository attributes](#repository-attributes), kunci khusus tidak pernah menimpa [atribut standar](#standard-attributes) seperti `user.id` atau `session.id`: saat kunci bertabrakan, Claude Code mempertahankan nilai built-in.

394 395 

395Setiap kunci khusus menjadi label pada setiap deret metrik, jadi nilai kardinalitas tinggi meningkatkan biaya penyimpanan di backend metrik Anda. Untuk mengirim atribut khusus dalam blok sumber daya saja dan menghilangkannya dari label titik data, atur `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false`. Lihat [Kontrol kardinalitas metrik](#metrics-cardinality-control).396Setiap kunci khusus menjadi label pada setiap deret metrik, jadi nilai kardinalitas tinggi meningkatkan biaya penyimpanan di backend metrik Anda. Untuk mengirim atribut khusus dalam blok sumber daya saja dan menghilangkannya dari label titik data, atur `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES=false`. Lihat [Kontrol kardinalitas metrik](#metrics-cardinality-control).

396 397 


499Semua metrik dan acara berbagi atribut standar ini:500Semua metrik dan acara berbagi atribut standar ini:

500 501 

501| Atribut | Deskripsi | Dikendalikan Oleh |502| Atribut | Deskripsi | Dikendalikan Oleh |

502| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |503| --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |

503| `session.id` | Pengidentifikasi sesi unik | `OTEL_METRICS_INCLUDE_SESSION_ID` (default: true) |504| `session.id` | Pengidentifikasi sesi unik | `OTEL_METRICS_INCLUDE_SESSION_ID` (default: true) |

504| `app.version` | Versi Claude Code saat ini | `OTEL_METRICS_INCLUDE_VERSION` (default: false) |505| `app.version` | Versi Claude Code saat ini | `OTEL_METRICS_INCLUDE_VERSION` (default: false) |

505| `app.entrypoint` | Bagaimana sesi diluncurkan, seperti `cli`, `sdk-cli`, `sdk-ts`, `sdk-py`, atau `claude-vscode` | `OTEL_METRICS_INCLUDE_ENTRYPOINT` (default: false) |506| `app.entrypoint` | Bagaimana sesi diluncurkan, seperti `cli`, `sdk-cli`, `sdk-ts`, `sdk-py`, atau `claude-vscode` | `OTEL_METRICS_INCLUDE_ENTRYPOINT` (default: false) |


510| `user.email` | Alamat email pengguna, dari sign-in Anda atau, dalam [sesi cloud](/docs/id/claude-code-on-the-web), dari kredensial sesi itu sendiri | Selalu disertakan saat tersedia |511| `user.email` | Alamat email pengguna, dari sign-in Anda atau, dalam [sesi cloud](/docs/id/claude-code-on-the-web), dari kredensial sesi itu sendiri | Selalu disertakan saat tersedia |

511| `terminal.type` | Jenis terminal, seperti `iTerm.app`, `vscode`, `cursor`, atau `tmux` | Selalu disertakan saat terdeteksi |512| `terminal.type` | Jenis terminal, seperti `iTerm.app`, `vscode`, `cursor`, atau `tmux` | Selalu disertakan saat terdeteksi |

512| Kunci dari `OTEL_RESOURCE_ATTRIBUTES` | Atribut khusus yang Anda atur, seperti `department` atau `team.id`. Lihat [Dukungan organisasi multi-tim](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (default: true) |513| Kunci dari `OTEL_RESOURCE_ATTRIBUTES` | Atribut khusus yang Anda atur, seperti `department` atau `team.id`. Lihat [Dukungan organisasi multi-tim](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (default: true) |

514| `vcs.repository.url.full`, `vcs.owner.name`, `vcs.repository.name`, `vcs.provider.name` | Identitas repositori sesi, diturunkan dari remote `origin`-nya. Lihat [Atribut repositori](#repository-attributes) | `OTEL_METRICS_INCLUDE_REPOSITORY` (default: false). Memerlukan Claude Code v2.1.269 atau lebih baru |

513 515 

514Saat Claude Code masuk ke [gateway aplikasi Claude](/docs/id/claude-apps-gateway), CLI memberi stempel ekspor dengan identitas yang diautentikasi dari sesi gateway: `user.id` adalah subjek IdP daripada pengidentifikasi instalasi anonim, `user.email` adalah email yang masuk, dan `user.groups` membawa keanggotaan grup IdP sebagai string yang dipisahkan koma. Setiap ekspor juga membawa `identity.source: gateway-oidc`. Identitas gateway diterapkan terakhir, jadi kunci `user.*` dan `identity.*` yang diatur melalui `OTEL_RESOURCE_ATTRIBUTES` diabaikan pada sesi gateway.516Saat Claude Code masuk ke [gateway aplikasi Claude](/docs/id/claude-apps-gateway), CLI memberi stempel ekspor dengan identitas yang diautentikasi dari sesi gateway: `user.id` adalah subjek IdP daripada pengidentifikasi instalasi anonim, `user.email` adalah email yang masuk, dan `user.groups` membawa keanggotaan grup IdP sebagai string yang dipisahkan koma. Setiap ekspor juga membawa `identity.source: gateway-oidc`. Identitas gateway diterapkan terakhir, jadi kunci `user.*` dan `identity.*` yang diatur melalui `OTEL_RESOURCE_ATTRIBUTES` diabaikan pada sesi gateway.

515 517 


520* `workflow.run_id`: pengidentifikasi run, dengan awalan `wf_`, pada acara API dan alat yang dipancarkan oleh agen yang termasuk dalam run alat [Workflow](/docs/id/workflows). Memfilter acara berdasarkan satu `workflow.run_id` merekonstruksi permintaan API dan hasil alat run tersebut. Pengidentifikasi mencakup agen yang dihasilkan skrip workflow dan agen apa pun yang dihasilkan agen tersebut pada gilirannya, seperti invokasi skill. Ini cocok dengan pengidentifikasi run yang dilaporkan dalam hasil alat Workflow. Tidak ada pada semua acara lainnya. Memerlukan Claude Code v2.1.202 atau lebih baru522* `workflow.run_id`: pengidentifikasi run, dengan awalan `wf_`, pada acara API dan alat yang dipancarkan oleh agen yang termasuk dalam run alat [Workflow](/docs/id/workflows). Memfilter acara berdasarkan satu `workflow.run_id` merekonstruksi permintaan API dan hasil alat run tersebut. Pengidentifikasi mencakup agen yang dihasilkan skrip workflow dan agen apa pun yang dihasilkan agen tersebut pada gilirannya, seperti invokasi skill. Ini cocok dengan pengidentifikasi run yang dilaporkan dalam hasil alat Workflow. Tidak ada pada semua acara lainnya. Memerlukan Claude Code v2.1.202 atau lebih baru

521* `workflow.name`: nama workflow, `meta.name` skrip-nya, dipancarkan bersama `workflow.run_id`. Nama workflow built-in muncul verbatim saat run mengeksekusi skrip built-in yang tidak dimodifikasi. Nama yang ditulis pengguna, termasuk salinan yang diedit dari skrip built-in, diganti dengan `custom` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur. Memerlukan Claude Code v2.1.202 atau lebih baru523* `workflow.name`: nama workflow, `meta.name` skrip-nya, dipancarkan bersama `workflow.run_id`. Nama workflow built-in muncul verbatim saat run mengeksekusi skrip built-in yang tidak dimodifikasi. Nama yang ditulis pengguna, termasuk salinan yang diedit dari skrip built-in, diganti dengan `custom` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur. Memerlukan Claude Code v2.1.202 atau lebih baru

522 524 

525<h4 id="repository-attributes">

526 Atribut repositori

527</h4>

528 

529Atur `OTEL_METRICS_INCLUDE_REPOSITORY=true` untuk menandai metrik dan acara dengan identitas repositori sesi, sehingga kolektor bersama dapat mengaitkan penggunaan per repositori. Memerlukan Claude Code v2.1.269 atau lebih baru.

530 

531Claude Code menurunkan atribut ini sekali per sesi dari remote `origin` repositori. Remote HTTPS dan SSH dari satu repositori menghasilkan nilai yang identik:

532 

533| Atribut | Nilai |

534| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |

535| `vcs.repository.url.full` | URL browser repositori tanpa `.git`, seperti `https://github.com/example-org/example-repo` |

536| `vcs.owner.name` | Jalur pemilik atau grup, seperti `example-org`; dihilangkan saat jalur remote memiliki satu segmen |

537| `vcs.repository.name` | Nama repositori bare, seperti `example-repo` |

538| `vcs.provider.name` | `github`, `gitlab`, `bitbucket`, atau `gitea` saat Claude Code mengenali host remote atau bentuk URL sebagai salah satu penyedia tersebut; dihilangkan sebaliknya |

539 

540Nilai diubah menjadi huruf kecil, dan kredensial, string kueri, dan fragmen dari URL remote tidak pernah muncul di dalamnya. Atribut dihilangkan saat sesi tidak memiliki remote `origin`, saat remote tidak berbentuk URL, atau saat satu-satunya repositori yang menutup adalah direktori home Anda.

541 

542Kunci `vcs.*` yang Anda deklarasikan dalam [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) menggantikan nilai yang diturunkan untuk kunci itu. Jika Anda mendeklarasikan `vcs.repository.url.full`, Claude Code tidak pernah membaca remote dan hanya melaporkan kunci yang Anda deklarasikan.

543 

544Atribut mengalir hanya ke pengekspor Anda sendiri; telemetri Anthropic menghilangkan setiap kunci `vcs.*`.

545 

523<h3 id="metrics">546<h3 id="metrics">

524 Metrik547 Metrik

525</h3>548</h3>


664| Atribut | Deskripsi |687| Atribut | Deskripsi |

665| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |688| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

666| `prompt.id` | Pengidentifikasi UUID v4 yang menghubungkan semua acara yang dihasilkan saat memproses prompt pengguna tunggal |689| `prompt.id` | Pengidentifikasi UUID v4 yang menghubungkan semua acara yang dihasilkan saat memproses prompt pengguna tunggal |

690| `event.sequence` | Penghitung berbasis 0 untuk mengurutkan acara, dihitung per proses Claude Code daripada per sesi |

667| `message.uuid` | UUID pesan seperti yang disimpan dalam transkrip sesi, file `~/.claude/projects/*/*.jsonl`. Hadir pada `assistant_response`, dan pada `user_prompt` kecuali untuk command dispatches, yang dapat menghasilkan nol atau banyak pesan. Pada `assistant_response`, ini adalah entri transkrip akhir respons, yang `parentUuid` giliran berikutnya berantai dari. Memerlukan Claude Code v2.1.214 atau lebih baru |691| `message.uuid` | UUID pesan seperti yang disimpan dalam transkrip sesi, file `~/.claude/projects/*/*.jsonl`. Hadir pada `assistant_response`, dan pada `user_prompt` kecuali untuk command dispatches, yang dapat menghasilkan nol atau banyak pesan. Pada `assistant_response`, ini adalah entri transkrip akhir respons, yang `parentUuid` giliran berikutnya berantai dari. Memerlukan Claude Code v2.1.214 atau lebih baru |

668| `client_request_id` | UUID yang dihasilkan klien dikirim sebagai header permintaan `x-client-request-id`. Hadir pada `api_request` dan `api_error` pada koneksi API pihak pertama; tidak ada pada backend penyedia pihak ketiga dan saat permintaan diulang melalui fallback non-streaming. Memasangkan permintaan dengan responsnya dan tetap tersedia untuk kegagalan seperti timeout yang tidak pernah menghasilkan `request_id` server. Cocok dengan atribut yang sama pada span trace `llm_request`. Memerlukan Claude Code v2.1.214 atau lebih baru |692| `client_request_id` | UUID yang dihasilkan klien dikirim sebagai header permintaan `x-client-request-id`. Hadir pada `api_request` dan `api_error` pada koneksi API pihak pertama; tidak ada pada backend penyedia pihak ketiga dan saat permintaan diulang melalui fallback non-streaming. Memasangkan permintaan dengan responsnya dan tetap tersedia untuk kegagalan seperti timeout yang tidak pernah menghasilkan `request_id` server. Cocok dengan atribut yang sama pada span trace `llm_request`. Memerlukan Claude Code v2.1.214 atau lebih baru |

669 693 

670Untuk melacak semua aktivitas yang dipicu oleh prompt tunggal, filter acara Anda berdasarkan nilai `prompt.id` tertentu. Ini mengembalikan acara user\_prompt, acara api\_request apa pun, dan acara tool\_result apa pun yang terjadi saat memproses prompt tersebut.694Untuk melacak semua aktivitas yang dipicu oleh prompt tunggal, filter acara Anda berdasarkan nilai `prompt.id` tertentu. Ini mengembalikan acara user\_prompt, acara api\_request apa pun, dan acara tool\_result apa pun yang terjadi saat memproses prompt tersebut.

671 695 

696`event.sequence` dimulai pada 0 setiap kali proses Claude Code dimulai dan menghitung naik untuk kehidupan proses itu. Terus menghitung di seluruh `/clear`, yang menetapkan `session.id` baru. Jika Anda [melanjutkan sesi tanpa forking](/docs/id/how-claude-code-works#resume-or-fork-sessions), sesi menyimpan `session.id`-nya tetapi mengambil nilai `event.sequence`-nya dari proses yang melanjutkannya, jadi dalam satu sesi acara yang lebih baru dapat membawa nilai yang lebih rendah daripada acara yang lebih awal, atau mengulangi satu. Untuk mengurutkan acara sesi, urutkan berdasarkan `event.timestamp` dan gunakan `event.sequence` untuk mengurutkan acara yang berbagi stempel waktu.

697 

672Untuk rekonstruksi tingkat pesan, setiap kelas acara membawa kunci yang cocok dengan bidang dalam transkrip sesi. Format entri transkrip adalah [internal untuk Claude Code](/docs/id/sessions#where-transcripts-are-stored) dan berubah antar versi, jadi pipeline yang bergabung pada bidang ini dapat rusak pada rilis apa pun; perlakukan penggabungan sebagai spesifik versi daripada kontrak stabil:698Untuk rekonstruksi tingkat pesan, setiap kelas acara membawa kunci yang cocok dengan bidang dalam transkrip sesi. Format entri transkrip adalah [internal untuk Claude Code](/docs/id/sessions#where-transcripts-are-stored) dan berubah antar versi, jadi pipeline yang bergabung pada bidang ini dapat rusak pada rilis apa pun; perlakukan penggabungan sebagai spesifik versi daripada kontrak stabil:

673 699 

674* `message.uuid` pada `user_prompt` dan `assistant_response`700* `message.uuid` pada `user_prompt` dan `assistant_response`


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

689* `event.name`: `"user_prompt"`715* `event.name`: `"user_prompt"`

690* `event.timestamp`: Stempel waktu ISO 8601716* `event.timestamp`: Stempel waktu ISO 8601

691* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi717* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

692* `prompt_length`: Panjang prompt718* `prompt_length`: Panjang prompt

693* `prompt`: Konten prompt. Diredaksi secara default. Atur `OTEL_LOG_USER_PROMPTS=1` untuk menyertakannya719* `prompt`: Konten prompt. Diredaksi secara default. Atur `OTEL_LOG_USER_PROMPTS=1` untuk menyertakannya

694* `message.uuid`: UUID pesan pengguna yang dihasilkan, cocok dengan entri transkrip yang disimpan. Tidak ada pada command dispatches, yang dapat menghasilkan nol atau banyak pesan. Memerlukan Claude Code v2.1.214 atau lebih baru720* `message.uuid`: UUID pesan pengguna yang dihasilkan, cocok dengan entri transkrip yang disimpan. Tidak ada pada command dispatches, yang dapat menghasilkan nol atau banyak pesan. Memerlukan Claude Code v2.1.214 atau lebih baru


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

709* `event.name`: `"assistant_response"`735* `event.name`: `"assistant_response"`

710* `event.timestamp`: Stempel waktu ISO 8601736* `event.timestamp`: Stempel waktu ISO 8601

711* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi737* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

712* `response_length`: Panjang teks respons dalam karakter738* `response_length`: Panjang teks respons dalam karakter

713* `response`: Teks respons, dipotong pada batas konten (60 KB secara default). Diredaksi menjadi `<REDACTED>` secara default. Atur `OTEL_LOG_ASSISTANT_RESPONSES=1` untuk menyertakannya. Saat `OTEL_LOG_ASSISTANT_RESPONSES` tidak diatur, `OTEL_LOG_USER_PROMPTS` mengontrolnya sebagai gantinya, jadi atur `OTEL_LOG_ASSISTANT_RESPONSES=0` untuk menjaga respons diredaksi saat logging prompt aktif739* `response`: Teks respons, dipotong pada batas konten (60 KB secara default). Diredaksi menjadi `<REDACTED>` secara default. Atur `OTEL_LOG_ASSISTANT_RESPONSES=1` untuk menyertakannya. Saat `OTEL_LOG_ASSISTANT_RESPONSES` tidak diatur, `OTEL_LOG_USER_PROMPTS` mengontrolnya sebagai gantinya, jadi atur `OTEL_LOG_ASSISTANT_RESPONSES=0` untuk menjaga respons diredaksi saat logging prompt aktif

714* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-5")740* `model`: Pengidentifikasi model (misalnya, "claude-sonnet-5")


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

730* `event.name`: `"tool_result"`756* `event.name`: `"tool_result"`

731* `event.timestamp`: Stempel waktu ISO 8601757* `event.timestamp`: Stempel waktu ISO 8601

732* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi758* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

733* `tool_name`: Nama alat759* `tool_name`: Nama alat

734* `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.760* `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.

735* `success`: `"true"` atau `"false"`761* `success`: `"true"` atau `"false"`


741* `tool_input_size_bytes`: Ukuran input alat yang diserialisasi JSON dalam byte767* `tool_input_size_bytes`: Ukuran input alat yang diserialisasi JSON dalam byte

742* `tool_result_size_bytes`: Ukuran hasil alat dalam byte768* `tool_result_size_bytes`: Ukuran hasil alat dalam byte

743* `mcp_server_scope`: Pengidentifikasi cakupan server MCP (untuk alat MCP)769* `mcp_server_scope`: Pengidentifikasi cakupan server MCP (untuk alat MCP)

770* `vcs.ref.head.revision`, `vcs.ref.head.name`, `vcs.ref.head.type` (saat `OTEL_LOG_TOOL_DETAILS=1`): identitas komit dari run `git commit` yang berhasil oleh alat Bash atau PowerShell. `vcs.ref.head.revision` adalah SHA komit, `vcs.ref.head.name` adalah cabang tempat itu dikomit, dan `vcs.ref.head.type` adalah `branch`. Nama dan tipe dihilangkan saat komit dibuat pada HEAD terlepas. Memerlukan Claude Code v2.1.269 atau lebih baru

744* `tool_parameters` (saat `OTEL_LOG_TOOL_DETAILS=1`): String JSON yang berisi parameter khusus alat. Untuk server built-in Claude Desktop, dalam sesi yang dimiliki Claude Desktop, pasangan `mcp_server_name`/`mcp_tool_name` disertakan bahkan dengan flag off, pengecualian yang sama yang ditulis host seperti [Acara keputusan alat](#tool-decision-event), memerlukan Claude Code v2.1.214 atau lebih baru. Parameter bervariasi menurut alat:771* `tool_parameters` (saat `OTEL_LOG_TOOL_DETAILS=1`): String JSON yang berisi parameter khusus alat. Untuk server built-in Claude Desktop, dalam sesi yang dimiliki Claude Desktop, pasangan `mcp_server_name`/`mcp_tool_name` disertakan bahkan dengan flag off, pengecualian yang sama yang ditulis host seperti [Acara keputusan alat](#tool-decision-event), memerlukan Claude Code v2.1.214 atau lebih baru. Parameter bervariasi menurut alat:

745 * Untuk alat Bash: mencakup `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox`, dan `git_commit_id` (SHA komit, saat perintah `git commit` berhasil). Alat bash ruang kerja aplikasi desktop juga melaporkan `tool_name` sebagai `Bash`, tetapi hanya mencakup `bash_command`, `full_command`, dan `timeout`772 * Untuk alat Bash: mencakup `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox`, dan `git_commit_id` serta `git_branch` saat perintah `git commit` berhasil. `git_commit_id` adalah SHA komit penuh saat komit adalah HEAD dari direktori kerja sesi, dan SHA singkat git sebaliknya. `git_branch` adalah cabang tempat itu dikomit, dihilangkan pada HEAD terlepas

773 * Untuk alat Bash ruang kerja aplikasi desktop, yang juga melaporkan `tool_name` sebagai `Bash`: mencakup hanya `bash_command`, `full_command`, dan `timeout`

746 * Untuk alat MCP: mencakup `mcp_server_name`, `mcp_tool_name`774 * Untuk alat MCP: mencakup `mcp_server_name`, `mcp_tool_name`

747 * Untuk alat Skill: mencakup `skill_name`775 * Untuk alat Skill: mencakup `skill_name`

748 * Untuk alat Agent atau alat Task legacy: mencakup `subagent_type`776 * Untuk alat Agent atau alat Task legacy: mencakup `subagent_type`


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

762* `event.name`: `"api_request"`790* `event.name`: `"api_request"`

763* `event.timestamp`: Stempel waktu ISO 8601791* `event.timestamp`: Stempel waktu ISO 8601

764* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi792* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

765* `model`: Model yang digunakan (misalnya, "claude-sonnet-5")793* `model`: Model yang digunakan (misalnya, "claude-sonnet-5")

766* `cost_usd`: Biaya perkiraan dalam USD794* `cost_usd`: Biaya perkiraan dalam USD

767* `cost_usd_micros`: Biaya perkiraan dalam jutaan dolar AS, dipancarkan sebagai integer795* `cost_usd_micros`: Biaya perkiraan dalam jutaan dolar AS, dipancarkan sebagai integer


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

791* `event.name`: `"api_error"`819* `event.name`: `"api_error"`

792* `event.timestamp`: Stempel waktu ISO 8601820* `event.timestamp`: Stempel waktu ISO 8601

793* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi821* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

794* `model`: Model yang digunakan (misalnya, "claude-sonnet-5")822* `model`: Model yang digunakan (misalnya, "claude-sonnet-5")

795* `error`: Pesan kesalahan823* `error`: Pesan kesalahan

796* `status_code`: Kode status HTTP sebagai angka. Tidak ada untuk kesalahan non-HTTP seperti kegagalan koneksi.824* `status_code`: Kode status HTTP sebagai angka. Tidak ada untuk kesalahan non-HTTP seperti kegagalan koneksi.


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

817* `event.name`: `"api_refusal"`845* `event.name`: `"api_refusal"`

818* `event.timestamp`: Stempel waktu ISO 8601846* `event.timestamp`: Stempel waktu ISO 8601

819* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi847* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

820* `model`: Pengidentifikasi model dari permintaan848* `model`: Pengidentifikasi model dari permintaan

821* `request_id`: ID permintaan API Anthropic dari header `request-id` respons, seperti `"req_011..."`. Hadir hanya saat API mengembalikan satu.849* `request_id`: ID permintaan API Anthropic dari header `request-id` respons, seperti `"req_011..."`. Hadir hanya saat API mengembalikan satu.

822* `query_source`: Subsistem yang mengeluarkan permintaan, seperti `"repl_main_thread"`, `"compact"`, atau nama subagent. Lihat [`api_request`](#api-request-event) untuk definisi.850* `query_source`: Subsistem yang mengeluarkan permintaan, seperti `"repl_main_thread"`, `"compact"`, atau nama subagent. Lihat [`api_request`](#api-request-event) untuk definisi.


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

843* `event.name`: `"api_request_body"`871* `event.name`: `"api_request_body"`

844* `event.timestamp`: Stempel waktu ISO 8601872* `event.timestamp`: Stempel waktu ISO 8601

845* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi873* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

846* `body`: Parameter permintaan Messages API yang diserialisasi JSON, seperti system prompt, messages, dan tools, dipotong pada batas konten (60 KB secara default). Konten extended-thinking dalam giliran asisten sebelumnya diredaksi. Dipancarkan hanya dalam mode inline (`OTEL_LOG_RAW_API_BODIES=1`).874* `body`: Parameter permintaan Messages API yang diserialisasi JSON, seperti system prompt, messages, dan tools, dipotong pada batas konten (60 KB secara default). Konten extended-thinking dalam giliran asisten sebelumnya diredaksi. Dipancarkan hanya dalam mode inline (`OTEL_LOG_RAW_API_BODIES=1`).

847* `body_ref`: Jalur absolut ke file `<dir>/<uuid>.request.json` yang berisi badan yang tidak dipotong. Dipancarkan hanya dalam mode file (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).875* `body_ref`: Jalur absolut ke file `<dir>/<uuid>.request.json` yang berisi badan yang tidak dipotong. Dipancarkan hanya dalam mode file (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

848* `body_length`: Panjang badan yang tidak dipotong. Byte UTF-8 saat `OTEL_LOG_RAW_API_BODIES=file:<dir>`, atau unit kode UTF-16 saat `=1`876* `body_length`: Panjang badan yang tidak dipotong. Byte UTF-8 saat `OTEL_LOG_RAW_API_BODIES=file:<dir>`, atau unit kode UTF-16 saat `=1`


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

864* `event.name`: `"api_response_body"`892* `event.name`: `"api_response_body"`

865* `event.timestamp`: Stempel waktu ISO 8601893* `event.timestamp`: Stempel waktu ISO 8601

866* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi894* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

867* `body`: Respons Messages API yang diserialisasi JSON, termasuk id, content blocks, usage, dan stop reason, dipotong pada batas konten (60 KB secara default). Konten extended-thinking diredaksi. Dipancarkan hanya dalam mode inline (`OTEL_LOG_RAW_API_BODIES=1`).895* `body`: Respons Messages API yang diserialisasi JSON, termasuk id, content blocks, usage, dan stop reason, dipotong pada batas konten (60 KB secara default). Konten extended-thinking diredaksi. Dipancarkan hanya dalam mode inline (`OTEL_LOG_RAW_API_BODIES=1`).

868* `body_ref`: Jalur absolut ke file `<dir>/<request_id>.response.json` yang berisi badan yang tidak dipotong. Dipancarkan hanya dalam mode file (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).896* `body_ref`: Jalur absolut ke file `<dir>/<request_id>.response.json` yang berisi badan yang tidak dipotong. Dipancarkan hanya dalam mode file (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

869* `body_length`: Panjang badan yang tidak dipotong. Byte UTF-8 saat `OTEL_LOG_RAW_API_BODIES=file:<dir>`, atau unit kode UTF-16 saat `=1`897* `body_length`: Panjang badan yang tidak dipotong. Byte UTF-8 saat `OTEL_LOG_RAW_API_BODIES=file:<dir>`, atau unit kode UTF-16 saat `=1`


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

886* `event.name`: `"tool_decision"`914* `event.name`: `"tool_decision"`

887* `event.timestamp`: Stempel waktu ISO 8601915* `event.timestamp`: Stempel waktu ISO 8601

888* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi916* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

889* `tool_name`: Nama alat (misalnya, "Read", "Edit", "Write", "NotebookEdit")917* `tool_name`: Nama alat (misalnya, "Read", "Edit", "Write", "NotebookEdit")

890* `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.918* `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.

891* `decision`: Baik `"accept"` atau `"reject"`919* `decision`: Baik `"accept"` atau `"reject"`


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

921* `event.name`: `"permission_mode_changed"`949* `event.name`: `"permission_mode_changed"`

922* `event.timestamp`: Stempel waktu ISO 8601950* `event.timestamp`: Stempel waktu ISO 8601

923* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi951* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

924* `from_mode`: Mode izin sebelumnya, misalnya `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, atau `"bypassPermissions"`952* `from_mode`: Mode izin sebelumnya, misalnya `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, atau `"bypassPermissions"`

925* `to_mode`: Mode izin baru953* `to_mode`: Mode izin baru

926* `trigger`: Apa yang menyebabkan perubahan. Salah satu dari `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"`, atau `"auto_opt_in"`. Tidak ada saat transisi berasal dari SDK atau bridge954* `trigger`: Apa yang menyebabkan perubahan. Salah satu dari `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"`, atau `"auto_opt_in"`. Tidak ada saat transisi berasal dari SDK atau bridge


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

939* `event.name`: `"auth"`967* `event.name`: `"auth"`

940* `event.timestamp`: Stempel waktu ISO 8601968* `event.timestamp`: Stempel waktu ISO 8601

941* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi969* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

942* `action`: `"login"` atau `"logout"`970* `action`: `"login"` atau `"logout"`

943* `success`: `"true"` atau `"false"`971* `success`: `"true"` atau `"false"`

944* `auth_method`: Metode autentikasi, seperti `"oauth"`972* `auth_method`: Metode autentikasi, seperti `"oauth"`


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

959* `event.name`: `"mcp_server_connection"`987* `event.name`: `"mcp_server_connection"`

960* `event.timestamp`: Stempel waktu ISO 8601988* `event.timestamp`: Stempel waktu ISO 8601

961* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi989* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

962* `status`: `"connected"`, `"failed"`, atau `"disconnected"`990* `status`: `"connected"`, `"failed"`, atau `"disconnected"`

963* `transport_type`: Transport server, seperti `"stdio"`, `"sse"`, atau `"http"`991* `transport_type`: Transport server, seperti `"stdio"`, `"sse"`, atau `"http"`

964* `server_scope`: Cakupan server dikonfigurasi di, seperti `"user"`, `"project"`, atau `"local"`992* `server_scope`: Cakupan server dikonfigurasi di, seperti `"user"`, `"project"`, atau `"local"`


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

984* `event.name`: `"internal_error"`1012* `event.name`: `"internal_error"`

985* `event.timestamp`: Stempel waktu ISO 86011013* `event.timestamp`: Stempel waktu ISO 8601

986* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1014* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

987* `error_name`: Nama kelas kesalahan, seperti `"TypeError"` atau `"SyntaxError"`1015* `error_name`: Nama kelas kesalahan, seperti `"TypeError"` atau `"SyntaxError"`

988* `error_code`: Kode errno Node.js seperti `"ENOENT"` saat ada pada kesalahan1016* `error_code`: Kode errno Node.js seperti `"ENOENT"` saat ada pada kesalahan

989 1017 


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

1001* `event.name`: `"plugin_installed"`1029* `event.name`: `"plugin_installed"`

1002* `event.timestamp`: Stempel waktu ISO 86011030* `event.timestamp`: Stempel waktu ISO 8601

1003* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1031* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

1004* `marketplace.is_official`: `"true"` jika marketplace adalah marketplace Anthropic resmi, `"false"` sebaliknya1032* `marketplace.is_official`: `"true"` jika marketplace adalah marketplace Anthropic resmi, `"false"` sebaliknya

1005* `install.trigger`: `"cli"` atau `"ui"`1033* `install.trigger`: `"cli"` atau `"ui"`

1006* `plugin.name`: Nama plugin yang diinstal. Untuk marketplace pihak ketiga ini disertakan hanya saat `OTEL_LOG_TOOL_DETAILS=1`1034* `plugin.name`: Nama plugin yang diinstal. Untuk marketplace pihak ketiga ini disertakan hanya saat `OTEL_LOG_TOOL_DETAILS=1`


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

1021* `event.name`: `"plugin_loaded"`1049* `event.name`: `"plugin_loaded"`

1022* `event.timestamp`: Stempel waktu ISO 86011050* `event.timestamp`: Stempel waktu ISO 8601

1023* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1051* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

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

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

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


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

1049* `event.name`: `"skill_activated"`1077* `event.name`: `"skill_activated"`

1050* `event.timestamp`: Stempel waktu ISO 86011078* `event.timestamp`: Stempel waktu ISO 8601

1051* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1079* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

1052* `skill.name`: Nama skill. Untuk skill yang ditentukan pengguna dan plugin pihak ketiga nilainya adalah placeholder `"custom_skill"` kecuali `OTEL_LOG_TOOL_DETAILS=1`1080* `skill.name`: Nama skill. Untuk skill yang ditentukan pengguna dan plugin pihak ketiga nilainya adalah placeholder `"custom_skill"` kecuali `OTEL_LOG_TOOL_DETAILS=1`

1053* `invocation_trigger`: Bagaimana skill dipicu (`"user-slash"`, `"claude-proactive"`, atau `"nested-skill"`)1081* `invocation_trigger`: Bagaimana skill dipicu (`"user-slash"`, `"claude-proactive"`, atau `"nested-skill"`)

1054* `skill.source`: Tempat skill dimuat dari (misalnya, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)1082* `skill.source`: Tempat skill dimuat dari (misalnya, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)


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

1070* `event.name`: `"at_mention"`1098* `event.name`: `"at_mention"`

1071* `event.timestamp`: Stempel waktu ISO 86011099* `event.timestamp`: Stempel waktu ISO 8601

1072* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1100* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

1073* `mention_type`: Jenis mention (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`, `"peer"`). Nilai `"peer"` berarti Anda menyebutkan [salah satu sesi Claude Code lain Anda](/docs/id/cross-session-messaging). Memerlukan Claude Code v2.1.232 atau lebih baru1101* `mention_type`: Jenis mention (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`, `"peer"`). Nilai `"peer"` berarti Anda menyebutkan [salah satu sesi Claude Code lain Anda](/docs/id/cross-session-messaging). Memerlukan Claude Code v2.1.232 atau lebih baru

1074* `success`: Apakah mention berhasil diselesaikan (`"true"` atau `"false"`)1102* `success`: Apakah mention berhasil diselesaikan (`"true"` atau `"false"`)

1075 1103 


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

1087* `event.name`: `"api_retries_exhausted"`1115* `event.name`: `"api_retries_exhausted"`

1088* `event.timestamp`: Stempel waktu ISO 86011116* `event.timestamp`: Stempel waktu ISO 8601

1089* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1117* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

1090* `model`: Model yang digunakan1118* `model`: Model yang digunakan

1091* `error`: Pesan kesalahan terakhir1119* `error`: Pesan kesalahan terakhir

1092* `status_code`: Kode status HTTP sebagai angka. Tidak ada untuk kesalahan non-HTTP.1120* `status_code`: Kode status HTTP sebagai angka. Tidak ada untuk kesalahan non-HTTP.


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

1108* `event.name`: `"hook_registered"`1136* `event.name`: `"hook_registered"`

1109* `event.timestamp`: Stempel waktu ISO 86011137* `event.timestamp`: Stempel waktu ISO 8601

1110* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1138* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

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

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

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


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

1130* `event.name`: `"hook_execution_start"`1158* `event.name`: `"hook_execution_start"`

1131* `event.timestamp`: Stempel waktu ISO 86011159* `event.timestamp`: Stempel waktu ISO 8601

1132* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1160* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

1133* `hook_event`: Jenis acara hook, seperti `"PreToolUse"` atau `"PostToolUse"`1161* `hook_event`: Jenis acara hook, seperti `"PreToolUse"` atau `"PostToolUse"`

1134* `hook_name`: Nama hook lengkap termasuk matcher, seperti `"PreToolUse:Write"`1162* `hook_name`: Nama hook lengkap termasuk matcher, seperti `"PreToolUse:Write"`

1135* `num_hooks`: Jumlah perintah hook yang cocok1163* `num_hooks`: Jumlah perintah hook yang cocok


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

1152* `event.name`: `"hook_execution_complete"`1180* `event.name`: `"hook_execution_complete"`

1153* `event.timestamp`: Stempel waktu ISO 86011181* `event.timestamp`: Stempel waktu ISO 8601

1154* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1182* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

1155* `hook_event`: Jenis acara hook1183* `hook_event`: Jenis acara hook

1156* `hook_name`: Nama hook lengkap termasuk matcher1184* `hook_name`: Nama hook lengkap termasuk matcher

1157* `num_hooks`: Jumlah perintah hook yang cocok1185* `num_hooks`: Jumlah perintah hook yang cocok


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

1179* `event.name`: `"hook_plugin_metrics"`1207* `event.name`: `"hook_plugin_metrics"`

1180* `event.timestamp`: Stempel waktu ISO 86011208* `event.timestamp`: Stempel waktu ISO 8601

1181* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1209* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

1182* `plugin_id`: pengidentifikasi plugin dalam bentuk `<name>@<marketplace>`1210* `plugin_id`: pengidentifikasi plugin dalam bentuk `<name>@<marketplace>`

1183* `hook_event`: jenis acara hook yang memancarkan metrik1211* `hook_event`: jenis acara hook yang memancarkan metrik

1184* Hingga 20 kunci metrik yang dipancarkan plugin. Nama cocok dengan `^[a-z][a-z0-9_]{0,39}$`. Nilai adalah boolean atau angka.1212* Hingga 20 kunci metrik yang dipancarkan plugin. Nama cocok dengan `^[a-z][a-z0-9_]{0,39}$`. Nilai adalah boolean atau angka.


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

1197* `event.name`: `"compaction"`1225* `event.name`: `"compaction"`

1198* `event.timestamp`: Stempel waktu ISO 86011226* `event.timestamp`: Stempel waktu ISO 8601

1199* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1227* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

1200* `trigger`: `"auto"` atau `"manual"`1228* `trigger`: `"auto"` atau `"manual"`

1201* `success`: `"true"` atau `"false"`1229* `success`: `"true"` atau `"false"`

1202* `duration_ms`: Durasi pemadatan1230* `duration_ms`: Durasi pemadatan


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

1219* `event.name`: `"subagent_completed"`1247* `event.name`: `"subagent_completed"`

1220* `event.timestamp`: Stempel waktu ISO 86011248* `event.timestamp`: Stempel waktu ISO 8601

1221* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1249* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

1222* `agent_type`: Jenis subagent. Nama agen built-in dan agen dari plugin marketplace resmi muncul verbatim; nama agen lainnya diganti dengan `"custom"` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur1250* `agent_type`: Jenis subagent. Nama agen built-in dan agen dari plugin marketplace resmi muncul verbatim; nama agen lainnya diganti dengan `"custom"` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur

1223* `agent.source`: Tempat definisi agen berasal: `built-in`, `plugin`, atau sumber pengaturan yang mendefinisikan agen khusus, seperti `userSettings` atau `projectSettings`1251* `agent.source`: Tempat definisi agen berasal: `built-in`, `plugin`, atau sumber pengaturan yang mendefinisikan agen khusus, seperti `userSettings` atau `projectSettings`

1224* `is_built_in`: Apakah subagent adalah jenis agen built-in1252* `is_built_in`: Apakah subagent adalah jenis agen built-in


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

1245* `event.name`: `"feedback_survey"`1273* `event.name`: `"feedback_survey"`

1246* `event.timestamp`: Stempel waktu ISO 86011274* `event.timestamp`: Stempel waktu ISO 8601

1247* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1275* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

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

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

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


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

1269* `event.name`: `"retention_sweep"`1297* `event.name`: `"retention_sweep"`

1270* `event.timestamp`: Stempel waktu ISO 86011298* `event.timestamp`: Stempel waktu ISO 8601

1271* `event.sequence`: penghitung yang meningkat secara monoton untuk mengurutkan acara dalam sesi1299* `event.sequence`: penghitung per-proses untuk mengurutkan acara, dijelaskan di bawah [Atribut korelasi acara](#event-correlation-attributes)

1272* `result`: `"complete"` saat penyapuan berjalan, `"skipped"` saat Claude Code menghentikannya1300* `result`: `"complete"` saat penyapuan berjalan, `"skipped"` saat Claude Code menghentikannya

1273* `period_days`: Nilai `cleanupPeriodDays` dari pengaturan yang digabungkan, dalam hari, atau `30` saat tidak ada sumber yang menetapkannya. Pada acara yang dilewati, nilai yang akan digunakan penyapuan, dihitung dari sumber pengaturan yang dapat dibaca Claude Code1301* `period_days`: Nilai `cleanupPeriodDays` dari pengaturan yang digabungkan, dalam hari, atau `30` saat tidak ada sumber yang menetapkannya. Pada acara yang dilewati, nilai yang akan digunakan penyapuan, dihitung dari sumber pengaturan yang dapat dibaca Claude Code

1274* `used_default`: `"true"` saat tidak ada sumber pengaturan yang dapat dibaca yang menetapkan `cleanupPeriodDays`, `"false"` sebaliknya. Pada acara lengkap, `"true"` berarti default 30 hari diterapkan1302* `used_default`: `"true"` saat tidak ada sumber pengaturan yang dapat dibaca yang menetapkan `cleanupPeriodDays`, `"false"` sebaliknya. Pada acara lengkap, `"true"` berarti default 30 hari diterapkan

permissions.md +3 −1

Details

67 67 

68Aturan deny yang luas seperti `Bash(aws *)` memblokir setiap panggilan yang cocok, termasuk panggilan yang juga cocok dengan aturan allow yang lebih sempit seperti `Bash(aws s3 ls)`, jadi aturan deny tidak dapat membawa pengecualian daftar izin. Prioritas yang sama berlaku antara ask dan allow: aturan ask yang cocok meminta konfirmasi bahkan ketika aturan allow yang lebih spesifik juga cocok dengan panggilan yang sama.68Aturan deny yang luas seperti `Bash(aws *)` memblokir setiap panggilan yang cocok, termasuk panggilan yang juga cocok dengan aturan allow yang lebih sempit seperti `Bash(aws s3 ls)`, jadi aturan deny tidak dapat membawa pengecualian daftar izin. Prioritas yang sama berlaku antara ask dan allow: aturan ask yang cocok meminta konfirmasi bahkan ketika aturan allow yang lebih spesifik juga cocok dengan panggilan yang sama.

69 69 

70Aturan deny berperilaku berbeda tergantung pada apakah mereka menamai alat atau membatasi pola dalam satu alat. Nama alat biasa seperti `Bash` menghapus alat dari konteks Claude sepenuhnya, jadi Claude tidak pernah melihatnya. Penghapusan nama biasa berlaku untuk setiap alat kecuali [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior): aturan deny tidak dapat menghapusnya saat alat lain tetap ada, dan aturan ask tidak pernah memintanya. Aturan yang dibatasi seperti `Bash(rm *)` membiarkan alat tersedia dan memblokir panggilan yang cocok ketika Claude mencoba menggunakannya.70Aturan deny berperilaku berbeda tergantung pada apakah mereka menamai alat atau membatasi pola dalam satu alat. Nama alat biasa seperti `Bash` menghapus alat dari konteks Claude sepenuhnya, sehingga Claude tidak pernah melihatnya. Jika Anda menambahkan aturan seperti itu di tengah sesi, Claude tidak dapat memanggil alat dari panggilan alat berikutnya; [Menolak seluruh alat](/docs/id/prompt-caching#denying-an-entire-tool) mencakup apa yang terjadi pada definisi yang telah Claude lihat. Aturan yang dibatasi seperti `Bash(rm *)` membiarkan alat tersedia dan memblokir panggilan yang cocok ketika Claude mencoba menggunakannya.

71 

72Penghapusan nama biasa berlaku untuk setiap alat kecuali [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior): aturan deny tidak dapat menghapusnya saat alat lain tetap ada, dan aturan ask tidak pernah memintanya.

71 73 

72<Note>74<Note>

73 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](/docs/id/permission-modes), atau [hook PreToolUse](#extend-permissions-with-hooks).75 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](/docs/id/permission-modes), atau [hook PreToolUse](#extend-permissions-with-hooks).

Details

185 Denying an entire tool185 Denying an entire tool

186</h3>186</h3>

187 187 

188Menambahkan nama tool telanjang seperti `Bash` atau `WebFetch` sebagai [deny rule](/docs/id/permissions#manage-permissions) menghapus tool itu dari konteks Claude sepenuhnya. Claude Code memuat definisi tool bawaan ke dalam lapisan system prompt, jadi menambah atau menghapus salah satu aturan ini di tengah sesi membatalkan cache. Claude Code menerapkan perubahan pada permintaan berikutnya, apakah Anda menambahkan aturan melalui `/permissions` atau dengan [editing a settings file directly](/docs/id/settings#when-edits-take-effect). Itu termasuk aturan yang Anda tambahkan melalui `/permissions` di tengah putaran.188Jika Anda menambahkan nama tool telanjang seperti `Bash` atau `WebFetch` sebagai [deny rule](/docs/id/permissions#manage-permissions), Claude tidak dapat memanggil tool itu dari permintaan Anda berikutnya, apakah Anda menambahkan aturan melalui `/permissions` atau dengan [editing a settings file directly](/docs/id/settings#when-edits-take-effect). Itu termasuk aturan yang Anda tambahkan melalui `/permissions` di tengah putaran.

189 189 

190Hanya aturan deny yang cocok di posisi nama-tool yang memiliki efek ini: nama tool telanjang, bentuk `Bash(*)` yang setara, atau [tool-name glob](/docs/id/permissions#tool-name-wildcards) seperti `"*"`. Glob yang cocok hanya dengan tool MCP, seperti `"mcp__*"`, menghapus tool-tool itu dengan cara yang sama tetapi meninggalkan cache tetap utuh ketika tool yang cocok adalah [deferred](#connecting-or-disconnecting-an-mcp-server), default, karena definisi yang ditangguhkan tidak pernah berada dalam prefiks yang di-cache. Aturan deny yang dibatasi seperti `Bash(rm *)`, dan semua aturan allow dan ask, tidak mengubah tool mana yang Claude lihat. Claude Code memeriksanya ketika Claude mencoba panggilan, meninggalkan prefiks tetap utuh.190Ketika [tool search](/docs/id/mcp#scale-with-mcp-tool-search) aktif, yang merupakan default pada model yang didukung, definisi tool permintaan tidak berubah dan prefiks yang di-cache bertahan. Ketika tool search tidak tersedia atau dinonaktifkan, Claude Code menghapus definisi dari permintaan berikutnya, yang membatalkan cache, dan begitu juga menghapus aturan nanti.

191 

192Hanya aturan deny yang cocok di posisi nama-tool yang memblokir tool dengan cara ini: nama tool telanjang, bentuk `Bash(*)` yang setara, atau [tool-name glob](/docs/id/permissions#tool-name-wildcards) seperti `"*"`. Glob yang cocok hanya dengan tool MCP, seperti `"mcp__*"`, memblokir tool-tool itu dengan cara yang sama. Aturan deny yang dibatasi seperti `Bash(rm *)`, dan semua aturan allow dan ask, tidak mengubah tool mana yang Claude lihat. Claude Code memeriksanya ketika Claude mencoba panggilan, meninggalkan prefiks tetap utuh.

191 193 

192<h3 id="compacting-the-conversation">194<h3 id="compacting-the-conversation">

193 Compacting the conversation195 Compacting the conversation

Details

1743. Pesan bermakna terakhir dalam riwayat percakapan yang ada1743. Pesan bermakna terakhir dalam riwayat percakapan yang ada

1754. Nama yang dibuat secara otomatis seperti `myhost-graceful-unicorn`, di mana `myhost` adalah nama mesin Anda atau awalan yang Anda tetapkan dengan `--remote-control-session-name-prefix`1754. Nama yang dibuat secara otomatis seperti `myhost-graceful-unicorn`, di mana `myhost` adalah nama mesin Anda atau awalan yang Anda tetapkan dengan `--remote-control-session-name-prefix`

176 176 

177Jika Anda tidak menetapkan nama eksplisit, Claude Code memperbarui judul untuk mencerminkan prompt Anda setelah Anda mengirimnya. Claude Code mencocokkan judul yang dibuat secara otomatis dengan bahasa percakapan Anda, atau pengaturan [`language`](/docs/id/settings-reference#language) jika satu dikonfigurasi; pencocokan bahasa memerlukan Claude Code v2.1.176 atau lebih baru.177Jika Anda tidak menetapkan nama eksplisit, Claude Code memperbarui judul untuk mencerminkan prompt Anda setelah Anda mengirimnya. Claude Code mencocokkan judul yang dibuat secara otomatis dengan bahasa percakapan Anda, atau pengaturan [`language`](/docs/id/settings-reference#language) jika satu dikonfigurasi.

178 178 

179Ketika Anda mengganti nama sesi dari claude.ai atau aplikasi Claude, Claude Code juga memperbarui judul lokal yang ditampilkan di `claude --resume`. Claude Code menerapkan penggantian nama yang sama ke nama sesi yang ditampilkan di bilah prompt, dan dalam daftar `claude agents` ketika sesi [berjalan di latar belakang](/docs/id/agent-view). Sebelum v2.1.221, penggantian nama dari daftar sesi di claude.ai atau di aplikasi Claude hanya memperbarui judul, dan CLI menyimpan nama sesi sebelumnya; `/rename`, yang berjalan di CLI itu sendiri, menetapkan nama pada versi apa pun.179Ketika Anda mengganti nama sesi dari claude.ai atau aplikasi Claude, Claude Code juga memperbarui judul lokal yang ditampilkan di `claude --resume`. Claude Code menerapkan penggantian nama yang sama ke nama sesi yang ditampilkan di bilah prompt, dan dalam daftar `claude agents` ketika sesi [berjalan di latar belakang](/docs/id/agent-view). Sebelum v2.1.221, penggantian nama dari daftar sesi di claude.ai atau di aplikasi Claude hanya memperbarui judul, dan CLI menyimpan nama sesi sebelumnya; `/rename`, yang berjalan di CLI itu sendiri, menetapkan nama pada versi apa pun.

180 180 

Details

29| [Virtual machine](#virtual-machine) | Sistem operasi lengkap | Tidak | Tinggi |29| [Virtual machine](#virtual-machine) | Sistem operasi lengkap | Tidak | Tinggi |

30| [Claude Code on the web](#claude-code-on-the-web) | Sistem operasi lengkap, dihosting oleh Anthropic | Tidak | Tidak ada; memerlukan langganan Claude dan GitHub saat Anda meluncurkan dari antarmuka web |30| [Claude Code on the web](#claude-code-on-the-web) | Sistem operasi lengkap, dihosting oleh Anthropic | Tidak | Tidak ada; memerlukan langganan Claude dan GitHub saat Anda meluncurkan dari antarmuka web |

31 31 

32[Sandboxed Bash tool](/docs/id/sandboxing) bawaan di Claude Code dan hanya membatasi perintah Bash. Alat file bawaan, server MCP, dan hooks masih berjalan langsung di host Anda. Setiap pendekatan lain dalam tabel menempatkan seluruh proses Claude Code di dalam batas isolasi, sehingga alat file, server MCP, dan hooks juga dibatasi.32[Sandboxed Bash tool](/docs/id/sandboxing) bawaan di Claude Code dan membatasi perintah Bash. Alat file bawaan, server MCP, dan hooks masih berjalan langsung di host Anda. Setiap pendekatan lain dalam tabel menempatkan seluruh proses Claude Code di dalam batas isolasi, sehingga alat file, server MCP, dan hooks juga dibatasi.

33 33 

34<Warning>34<Warning>

35 Isolasi sandbox mengurangi dampak pelanggaran, tetapi tidak menghilangkan risiko. Pendekatan apa pun yang memungkinkan egress jaringan masih dapat membocorkan data yang dapat dibaca agen, dan pendekatan apa pun yang memasang direktori proyek Anda yang dapat ditulis masih dapat memodifikasi kode tersebut. Tinjau [batasan keamanan](/docs/id/sandboxing#security-limitations) sebelum mengandalkan sandbox sebagai kontrol keras.35 Isolasi sandbox mengurangi dampak pelanggaran, tetapi tidak menghilangkan risiko. Pendekatan apa pun yang memungkinkan egress jaringan masih dapat membocorkan data yang dapat dibaca agen, dan pendekatan apa pun yang memasang direktori proyek Anda yang dapat ditulis masih dapat memodifikasi kode tersebut. Tinjau [batasan keamanan](/docs/id/sandboxing#security-limitations) sebelum mengandalkan sandbox sebagai kontrol keras.


83Sandbox per-perintah tidak mencakup semua yang berjalan dalam sesi:83Sandbox per-perintah tidak mencakup semua yang berjalan dalam sesi:

84 84 

85* [Alat bawaan](/docs/id/tools-reference) lainnya seperti Read, Edit, dan WebFetch berjalan di dalam proses Claude Code dan tidak menjalankan kode arbitrer. [Aturan izin](/docs/id/permissions) untuk path atau domain membatasi mereka sebagai gantinya.85* [Alat bawaan](/docs/id/tools-reference) lainnya seperti Read, Edit, dan WebFetch berjalan di dalam proses Claude Code dan tidak menjalankan kode arbitrer. [Aturan izin](/docs/id/permissions) untuk path atau domain membatasi mereka sebagai gantinya.

86* Server [MCP](/docs/id/mcp) dan hooks adalah proses terpisah yang berjalan tanpa batasan pada host.86* Server [MCP](/docs/id/mcp) dan [command hooks](/docs/id/hooks#command-hook-fields) adalah proses terpisah yang berjalan tanpa batasan pada host.

87 87 

88Untuk menempatkan alat bawaan, server MCP, dan hooks semua di belakang satu batas OS, jalankan seluruh proses Claude Code di dalam [sandbox runtime](#sandbox-runtime), [dev container](#dev-containers), atau [custom container](#custom-container).88Untuk menempatkan alat bawaan, server MCP, dan hooks semua di belakang satu batas OS, jalankan seluruh proses Claude Code di dalam [sandbox runtime](#sandbox-runtime), [dev container](#dev-containers), atau [custom container](#custom-container).

89 89 

Details

163 Pengecualian per-kunci di seluruh sumber terkelola163 Pengecualian per-kunci di seluruh sumber terkelola

164</h3>164</h3>

165 165 

166Dua jenis kunci adalah pengecualian terhadap aturan tanpa penggabungan:166Tiga jenis kunci adalah pengecualian terhadap aturan tanpa penggabungan:

167 167 

168* **Kunci kunci lintas sumber**: serangkaian kecil kunci, seperti kunci daftar pasir sandbox, [tercantum di halaman pengaturan terkelola](/docs/id/managed-settings#precedence-within-the-managed-tier). Claude Code menghormatinya ketika sumber terkelola yang dikendalikan admin apa pun menetapkannya; tingkat registri HKCU yang dapat ditulis pengguna dikecualikan. Ketika [`policyHelper`](/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola, outputnya adalah satu-satunya sumber yang pemeriksaan ini baca, terlepas dari [`forceRemoteSettingsRefresh`](/docs/id/settings-reference#forceremotesettingsrefresh), yang Claude Code baca dari sumber admin secara langsung pada startup.168* **Kunci kunci lintas sumber**: serangkaian kecil kunci, seperti kunci daftar pasir sandbox, [tercantum di halaman pengaturan terkelola](/docs/id/managed-settings#precedence-within-the-managed-tier). Claude Code menghormatinya ketika sumber terkelola yang dikendalikan admin apa pun menetapkannya; tingkat registri HKCU yang dapat ditulis pengguna dikecualikan. Ketika [`policyHelper`](/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola, outputnya adalah satu-satunya sumber yang pemeriksaan ini baca, terlepas dari [`forceRemoteSettingsRefresh`](/docs/id/settings-reference#forceremotesettingsrefresh), yang Claude Code baca dari sumber admin secara langsung pada startup.

169* **Blok `env`**: terlepas dari unit telemetri dan variabel routing yang dipasangkan dengan kunci kredensial, keduanya dibahas di bawah, blok ini menggabungkan per kunci di seluruh sumber yang dikendalikan admin. Untuk setiap variabel lingkungan, sumber dengan prioritas tertinggi yang mendefinisikannya menang, dan sumber admin yang lebih rendah mengisi variabel yang sumber yang lebih tinggi biarkan tidak diatur. Entri `env` yang dikelola endpoint oleh karena itu berlaku kapan pun konfigurasi yang dikelola server meninggalkan variabel tersebut tidak diatur, atau saat nilai server yang di-cache untuk itu [ditahan menunggu konfirmasi server](#fetch-and-caching-behavior). Memerlukan Claude Code v2.1.223 atau lebih baru. Sebelum v2.1.223, Claude Code menerapkan blok `env` sumber yang dipilih secara keseluruhan saja.169* **Blok `env`**: terlepas dari unit telemetri dan variabel routing yang dipasangkan dengan kunci kredensial, keduanya dibahas di bawah, blok ini menggabungkan per kunci di seluruh sumber yang dikendalikan admin. Untuk setiap variabel lingkungan, sumber dengan prioritas tertinggi yang mendefinisikannya menang, dan sumber admin yang lebih rendah mengisi variabel yang sumber yang lebih tinggi biarkan tidak diatur. Entri `env` yang dikelola endpoint oleh karena itu berlaku kapan pun konfigurasi yang dikelola server meninggalkan variabel tersebut tidak diatur, atau saat nilai server yang di-cache untuk itu [ditahan menunggu konfirmasi server](#fetch-and-caching-behavior). Memerlukan Claude Code v2.1.223 atau lebih baru. Sebelum v2.1.223, Claude Code menerapkan blok `env` sumber yang dipilih secara keseluruhan saja.

170 * **Unit telemetri**: kunci exporter `OTEL_EXPORTER_OTLP_*`, toggle penangkapan konten `OTEL_LOG_*`, `OTEL_LOGS_EXPORTER`, dan variabel tracing beta `ENABLE_BETA_TRACING_DETAILED` dan `BETA_TRACING_ENDPOINT` mengikuti sumber tertinggi yang menetapkan salah satu dari mereka sebagai unit. Sumber yang mengirimkan kunci kredensial `otelHeadersHelper` juga mengklaim unit, tetapi mendarat variabel ini hanya ketika itu adalah sumber yang dipilih: sumber yang tidak dipilih tetapi mengirimkan kunci tidak berkontribusi pada salah satu dari mereka dan masih memblokir sumber yang lebih rendah dari mengisinya. Bagaimanapun, endpoint exporter dari satu sumber tidak pernah dapat dipasangkan dengan kredensial dari sumber lain.170 * **Unit telemetri**: kunci exporter `OTEL_EXPORTER_OTLP_*`, toggle penangkapan konten `OTEL_LOG_*`, `OTEL_LOGS_EXPORTER`, dan variabel tracing beta `ENABLE_BETA_TRACING_DETAILED` dan `BETA_TRACING_ENDPOINT` mengikuti sumber tertinggi yang menetapkan salah satu dari mereka sebagai unit. Sumber yang mengirimkan kunci kredensial `otelHeadersHelper` juga mengklaim unit, tetapi mendarat variabel ini hanya ketika itu adalah sumber yang dipilih: sumber yang tidak dipilih tetapi mengirimkan kunci tidak berkontribusi pada salah satu dari mereka dan masih memblokir sumber yang lebih rendah dari mengisinya. Bagaimanapun, endpoint exporter dari satu sumber tidak pernah dapat dipasangkan dengan kredensial dari sumber lain.

171 * **Routing yang dipasangkan kredensial**: sumber yang memasangkan variabel routing dengan kunci kredensial yang hanya dipilih-sumber, seperti `apiKeyHelper` atau `otelHeadersHelper`, berkontribusi pada variabel routing tersebut hanya ketika itu memenangkan slot.171 * **Routing yang dipasangkan kredensial**: sumber yang memasangkan variabel routing dengan kunci kredensial yang hanya dipilih-sumber, seperti `apiKeyHelper` atau `otelHeadersHelper`, berkontribusi pada variabel routing tersebut hanya ketika itu memenangkan slot.

172* **Kunci masuk gateway**: Claude Code tidak pernah membaca [`forceLoginGatewayUrl`](/docs/id/settings-reference#forcelogingatewayurl) atau nilai `"gateway"` dari [`forceLoginMethod`](/docs/id/settings-reference#forceloginmethod) dari pengaturan yang dikelola server, jadi memilih pengaturan yang dikelola server tidak menyediakan masuk gateway atau menyembunyikan yang diatur dalam kebijakan MDM atau file pengaturan terkelola. Entri [`managedSourcesBehavior`](/docs/id/settings-reference#managedsourcesbehavior) mengatakan sumber admin mana di mesin yang menyediakannya.

172 173 

173<h3 id="fetch-and-caching-behavior">174<h3 id="fetch-and-caching-behavior">

174 Perilaku pengambilan dan caching175 Perilaku pengambilan dan caching

Details

830 `advisorModel`830 `advisorModel`

831</h3>831</h3>

832 832 

833Pilih model mana yang menjawab ketika Claude memanggil [alat advisor](/docs/id/advisor) di sisi server. Batalkan pengaturannya untuk mematikan advisor. Advisor harus setidaknya sama mampu dengan model utama Anda; ketika tidak, Claude Code mengirim permintaan tanpa advisor. Lihat [Pilih model advisor](/docs/id/advisor#choose-an-advisor-model).833Pilih model mana yang menjawab ketika Claude memanggil [alat advisor](/docs/id/advisor) di sisi server. Batalkan pengaturannya untuk mematikan advisor. Advisor harus setidaknya sama mampu dengan model utama Anda. Lihat [Pilih model advisor](/docs/id/advisor#choose-an-advisor-model) untuk pasangan yang diterima dan apa yang terjadi ketika Anda memilih yang tidak diterima.

834 834 

835Anda biasanya tidak mengedit kunci ini secara manual. Jalankan `/advisor` untuk membuka pemilih yang menunjukkan pilihan saat ini, model yang dapat memberikan saran, dan **No advisor**. Claude Code menyimpan pilihan Anda ke kunci ini di `~/.claude/settings.json`. Jika Anda memilih dari klien [Remote Control](/docs/id/remote-control) atau dalam sesi yang terhubung ke pekerja jarak jauh, pilihan tersebut hanya berlaku untuk sesi itu dan tidak mengubah kunci ini.835Anda biasanya tidak mengedit kunci ini secara manual. Jalankan `/advisor` untuk membuka pemilih yang menunjukkan pilihan saat ini, model yang dapat memberikan saran, dan **No advisor**. Claude Code menyimpan pilihan Anda ke kunci ini di `~/.claude/settings.json`. Jika Anda memilih dari klien [Remote Control](/docs/id/remote-control) atau dalam sesi yang terhubung ke pekerja jarak jauh, pilihan tersebut hanya berlaku untuk sesi itu dan tidak mengubah kunci ini.

836 836 


6156Di bawah `"merge"`, Claude Code menggabungkan setiap kunci berdasarkan jenisnya. Tabel ini memberikan aturan untuk setiap jenis. Baris daftar pembatasan, nilai-diambil-utuh, dan hanya-sumber-tertinggi menyebutkan setiap kunci yang mereka tutupi, dan baris lainnya memberikan contoh:6156Di bawah `"merge"`, Claude Code menggabungkan setiap kunci berdasarkan jenisnya. Tabel ini memberikan aturan untuk setiap jenis. Baris daftar pembatasan, nilai-diambil-utuh, dan hanya-sumber-tertinggi menyebutkan setiap kunci yang mereka tutupi, dan baris lainnya memberikan contoh:

6157 6157 

6158| Jenis kunci | Bagaimana Claude Code menggabungkannya | Kunci |6158| Jenis kunci | Bagaimana Claude Code menggabungkannya | Kunci |

6159| :----------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |6159| :----------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

6160| Lists | Menggabungkan entri dari setiap sumber | [`permissions.allow`](#permissions-allow), [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains), dan kunci daftar lainnya |6160| Lists | Menggabungkan entri dari setiap sumber | [`permissions.allow`](#permissions-allow), [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains), dan kunci daftar lainnya |

6161| Locks | Menerapkan nilai paling ketat yang ditetapkan sumber apa pun. Ketika tidak ada sumber yang menetapkan nilai ketat, menerapkan nilai yang lebih longgar hanya dari sumber tertinggi | [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly), [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode), dan kunci boolean atau enum lock lainnya |6161| Locks | Menerapkan nilai paling ketat yang ditetapkan sumber apa pun. Ketika tidak ada sumber yang menetapkan nilai ketat, menerapkan nilai yang lebih longgar hanya dari sumber tertinggi | [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly), [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode), dan kunci boolean atau enum lock lainnya |

6162| Restriction allowlists | Mengambil daftar utuh dari sumber tertinggi yang menetapkannya, tanpa menambahkan entri dari sumber yang lebih rendah. Ketika sumber tertinggi tidak menetapkannya, mengambilnya utuh dari sumber berikutnya ke bawah | [`availableModels`](#availablemodels), [`allowedMcpServers`](#allowedmcpservers), [`strictKnownMarketplaces`](#strictknownmarketplaces), [`allowedChannelPlugins`](#allowedchannelplugins), dan rantai [`fallbackModel`](#fallbackmodel) |6162| Restriction allowlists | Mengambil daftar utuh dari sumber tertinggi yang menetapkannya, tanpa menambahkan entri dari sumber yang lebih rendah. Ketika sumber tertinggi tidak menetapkannya, mengambilnya utuh dari sumber berikutnya ke bawah | [`availableModels`](#availablemodels), [`allowedMcpServers`](#allowedmcpservers), [`strictKnownMarketplaces`](#strictknownmarketplaces), [`allowedChannelPlugins`](#allowedchannelplugins), dan rantai [`fallbackModel`](#fallbackmodel) |

6163| Values taken whole | Mengambil nilai utuh dari sumber tertinggi yang menetapkannya, tanpa menggabungkan entri atau bidang dari sumber yang lebih rendah. Ketika sumber tertinggi tidak menetapkannya, mengambilnya utuh dari sumber berikutnya ke bawah | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs), [`sandbox.ripgrep`](#sandbox-ripgrep) |6163| Values taken whole | Mengambil nilai utuh dari sumber tertinggi yang menetapkannya, tanpa menggabungkan entri atau bidang dari sumber yang lebih rendah. Ketika sumber tertinggi tidak menetapkannya, mengambilnya utuh dari sumber berikutnya ke bawah | [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs), [`sandbox.ripgrep`](#sandbox-ripgrep) |

6164| Provided MCP servers | Menggabungkan nama server dari setiap sumber. Ketika dua sumber menetapkan nama yang sama, menerapkan entri utuh sumber yang lebih tinggi | [`managedMcpServers`](#managedmcpservers) |6164| Provided MCP servers | Menggabungkan nama server dari setiap sumber. Ketika dua sumber menetapkan nama yang sama, menerapkan entri utuh sumber yang lebih tinggi | [`managedMcpServers`](#managedmcpservers) |

6165| Read from the highest-priority source only | Membaca kunci hanya dari sumber prioritas tertinggi yang membawa kunci kebijakan, jadi nilai sumber yang lebih rendah diabaikan bahkan ketika sumber tertinggi tidak menetapkan apa pun | [`apiKeyHelper`](#apikeyhelper), [`awsAuthRefresh`](#awsauthrefresh), [`awsCredentialExport`](#awscredentialexport), [`gcpAuthRefresh`](#gcpauthrefresh), [`otelHeadersHelper`](#otelheadershelper), `proxyAuthHelper`, [`forceLoginOrgUUID`](#forceloginorguuid), [`forceLoginMethod`](#forceloginmethod), [`forceLoginGatewayUrl`](#forcelogingatewayurl), [`parentSettingsBehavior`](#parentsettingsbehavior), [`modelPicker`](#modelpicker), [`policyHelper`](#policyhelper), [`permissions.defaultMode`](#permissions-defaultmode) |6165| Read from the highest-priority source only | Membaca kunci hanya dari sumber prioritas tertinggi yang membawa kunci kebijakan, jadi nilai sumber yang lebih rendah diabaikan bahkan ketika sumber tertinggi tidak menetapkan apa pun | [`apiKeyHelper`](#apikeyhelper), [`awsAuthRefresh`](#awsauthrefresh), [`awsCredentialExport`](#awscredentialexport), [`gcpAuthRefresh`](#gcpauthrefresh), [`otelHeadersHelper`](#otelheadershelper), `proxyAuthHelper`, [`forceLoginOrgUUID`](#forceloginorguuid), nilai `"claudeai"` dan `"console"` dari [`forceLoginMethod`](#forceloginmethod), [`parentSettingsBehavior`](#parentsettingsbehavior), [`modelPicker`](#modelpicker), [`policyHelper`](#policyhelper), [`permissions.defaultMode`](#permissions-defaultmode) |

6166| `env` | [Menggabungkan per variabel di seluruh sumber admin](/docs/id/managed-settings#keys-read-from-every-admin-source), di bawah `"first-wins"` dan `"merge"` | [`env`](#env) |6166| `env` | [Menggabungkan per variabel di seluruh sumber admin](/docs/id/managed-settings#keys-read-from-every-admin-source), di bawah `"first-wins"` dan `"merge"` | [`env`](#env) |

6167| Setiap kunci lainnya | Mengambil nilai dari sumber tertinggi yang menetapkannya | [`cleanupPeriodDays`](#cleanupperioddays), [`model`](#model) |6167| Setiap kunci lainnya | Mengambil nilai dari sumber tertinggi yang menetapkannya | [`cleanupPeriodDays`](#cleanupperioddays), [`model`](#model) |

6168 6168 

6169Mengambil `sandbox.credentials.awsPairs` dan `sandbox.ripgrep` utuh memerlukan Claude Code v2.1.257 atau lebih baru.6169Mengambil `sandbox.credentials.awsPairs` dan `sandbox.ripgrep` utuh memerlukan Claude Code v2.1.257 atau lebih baru.

6170 6170 

6171Tiga dari kunci tersebut menambahkan kondisi mereka sendiri:6171Beberapa kunci menambahkan kondisi yang tidak ditunjukkan tabel:

6172 6172 

6173* **[`policyHelper`](#policyhelper)**: Claude Code menghormatinya hanya ketika sumber tertinggi yang membawa kunci kebijakan adalah kebijakan MDM atau file pengaturan terkelola, jadi di bawah pengaturan yang dikelola server tidak berlaku.6173* **[`policyHelper`](#policyhelper)**: Claude Code menghormatinya hanya ketika sumber tertinggi yang membawa kunci kebijakan adalah kebijakan MDM atau file pengaturan terkelola, jadi di bawah pengaturan yang dikelola server tidak berlaku.

6174* **[`modelOverrides`](#modeloverrides)**: berpasangan dengan `availableModels`. Claude Code mengambil `modelOverrides` dari sumber tertinggi yang menetapkannya, kecuali sumber yang lebih tinggi menetapkan `availableModels` tanpa `modelOverrides`. Dalam hal itu, ia mengabaikan `modelOverrides` dari setiap sumber.6174* **[`modelOverrides`](#modeloverrides)**: berpasangan dengan `availableModels`. Claude Code mengambil `modelOverrides` dari sumber tertinggi yang menetapkannya, kecuali sumber yang lebih tinggi menetapkan `availableModels` tanpa `modelOverrides`. Dalam hal itu, ia mengabaikan `modelOverrides` dari setiap sumber.

6175* **[`forceLoginGatewayUrl`](#forcelogingatewayurl) dan nilai `"gateway"` dari [`forceLoginMethod`](#forceloginmethod)**: Claude Code membacanya hanya dari sumber terkelola di mesin itu sendiri dan mengabaikannya dalam pengaturan yang dikelola server. Nilai mesin berlaku bahkan ketika pengaturan yang dikelola server juga ada.6175* **[`forceLoginGatewayUrl`](#forcelogingatewayurl) dan nilai `"gateway"` dari [`forceLoginMethod`](#forceloginmethod)**: Claude Code tidak pernah membaca keduanya dari pengaturan yang dikelola server, jadi nilai di sana tidak berlaku atau menyembunyikan yang ditetapkan dalam kebijakan MDM atau file pengaturan terkelola. Di antara sumber admin di mesin, hanya yang tertinggi-peringkat yang membawa kunci kebijakan yang menyediakannya, terlepas dari apakah pengaturan yang dikelola server juga ada.

6176 6176 

6177Untuk mengonfirmasi sumber mana yang digabungkan di mesin, jalankan `/status` dan [baca baris `Setting sources`](/docs/id/managed-settings#read-the-source-in-/status).6177Untuk mengonfirmasi sumber mana yang digabungkan di mesin, jalankan `/status` dan [baca baris `Setting sources`](/docs/id/managed-settings#read-the-source-in-/status).

6178 6178 

Details

27Di sebagian besar terminal Anda juga dapat menekan Shift+Enter, tetapi dukungan bervariasi menurut emulator terminal:27Di sebagian besar terminal Anda juga dapat menekan Shift+Enter, tetapi dukungan bervariasi menurut emulator terminal:

28 28 

29| Terminal | Shift+Enter untuk newline |29| Terminal | Shift+Enter untuk newline |

30| :---------------------------------------------------------------------- | :------------------------------------------------- |30| :---------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

31| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal, Windows Terminal | Berfungsi tanpa setup |31| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal, Windows Terminal | Berfungsi tanpa setup |

32| VS Code, Cursor, Devin Desktop, Alacritty, Zed | Jalankan `/terminal-setup` sekali |32| Terminal lain yang mendukung protokol keyboard kitty, seperti foot dan Alacritty 0.16 atau lebih baru | Berfungsi tanpa setup. Memerlukan Claude Code v2.1.269 atau lebih baru |

33| VS Code, Cursor, Devin Desktop, Alacritty sebelum 0.16, Zed | Jalankan `/terminal-setup` sekali |

33| gnome-terminal, JetBrains IDEs seperti PyCharm dan Android Studio | Tidak tersedia; gunakan Ctrl+J atau `\` lalu Enter |34| gnome-terminal, JetBrains IDEs seperti PyCharm dan Android Studio | Tidak tersedia; gunakan Ctrl+J atau `\` lalu Enter |

34 35 

35Untuk VS Code, Cursor, Devin Desktop, Alacritty, dan Zed, `/terminal-setup` menulis pintasan keyboard Shift+Enter ke dalam file konfigurasi terminal. Pada run pertama Anda melihat konfirmasi seperti `Installed VSCode terminal Shift+Enter key binding`. Binding yang ada dibiarkan tetap ada; jika Anda melihat pesan seperti `VSCode terminal Shift+Enter key binding already configured`, tidak ada perubahan yang dilakukan. Jalankan `/terminal-setup` langsung di terminal host daripada di dalam tmux atau screen, karena perlu menulis ke konfigurasi terminal host.36Untuk VS Code, Cursor, Devin Desktop, Alacritty sebelum 0.16, dan Zed, `/terminal-setup` menulis pintasan keyboard Shift+Enter ke dalam file konfigurasi terminal. Pada run pertama Anda melihat konfirmasi seperti `Installed VSCode terminal Shift+Enter key binding`. Binding yang ada dibiarkan tetap ada; jika Anda melihat pesan seperti `VSCode terminal Shift+Enter key binding already configured`, tidak ada perubahan yang dilakukan. Jalankan `/terminal-setup` langsung di terminal host daripada di dalam tmux atau screen, karena perlu menulis ke konfigurasi terminal host.

36 37 

37Di VS Code, Cursor, dan Devin Desktop, `/terminal-setup` juga memperbarui dua pengaturan editor: mengatur `terminal.integrated.gpuAcceleration` ke `"off"` untuk mencegah teks yang rusak di terminal terintegrasi, dan mengatur `terminal.integrated.mouseWheelScrollSensitivity` untuk scrolling yang lebih halus di [fullscreen mode](/docs/id/fullscreen). Untuk membatalkan perubahan akselerasi GPU, atur kembali ke `"auto"` dan muat ulang jendela editor.38Di VS Code, Cursor, dan Devin Desktop, `/terminal-setup` juga memperbarui dua pengaturan editor: mengatur `terminal.integrated.gpuAcceleration` ke `"off"` untuk mencegah teks yang rusak di terminal terintegrasi, dan mengatur `terminal.integrated.mouseWheelScrollSensitivity` untuk scrolling yang lebih halus di [fullscreen mode](/docs/id/fullscreen). Untuk membatalkan perubahan akselerasi GPU, atur kembali ke `"auto"` dan muat ulang jendela editor.

38 39 

tools-reference.md +46 −40

Details

31| `EnterWorktree` | Membuat [git worktree](/docs/id/worktrees) terisolasi dan beralih ke dalamnya. Berikan `path` untuk beralih ke worktree yang ada alih-alih membuat yang baru. Pada entri pertama target mungkin worktree dari repositori saat ini atau, dalam ruang kerja multi-repo, dari repositori yang bersarang di dalamnya. Sebelum v2.1.203, worktree repositori bersarang ditolak. A `path` di luar `.claude/worktrees/` meminta persetujuan Anda sebelum memasuki, karena memindahkan direktori kerja sesi dan akses tulis ke lokasi tersebut. Pembuatan worktree baru dan path di bawah `.claude/worktrees/` tidak meminta. Sebelum v2.1.206, Claude memasuki path di luar `.claude/worktrees/` tanpa prompt. Dari dalam sesi worktree, atau dari subagent dengan direktori kerja yang disematkan seperti [`isolation: worktree`](/docs/id/sub-agents#supported-frontmatter-fields), hanya bentuk `path` yang tersedia dan target harus berada di bawah `.claude/worktrees/` dari repositori sesi | Ya |31| `EnterWorktree` | Membuat [git worktree](/docs/id/worktrees) terisolasi dan beralih ke dalamnya. Berikan `path` untuk beralih ke worktree yang ada alih-alih membuat yang baru. Pada entri pertama target mungkin worktree dari repositori saat ini atau, dalam ruang kerja multi-repo, dari repositori yang bersarang di dalamnya. Sebelum v2.1.203, worktree repositori bersarang ditolak. A `path` di luar `.claude/worktrees/` meminta persetujuan Anda sebelum memasuki, karena memindahkan direktori kerja sesi dan akses tulis ke lokasi tersebut. Pembuatan worktree baru dan path di bawah `.claude/worktrees/` tidak meminta. Sebelum v2.1.206, Claude memasuki path di luar `.claude/worktrees/` tanpa prompt. Dari dalam sesi worktree, atau dari subagent dengan direktori kerja yang disematkan seperti [`isolation: worktree`](/docs/id/sub-agents#supported-frontmatter-fields), hanya bentuk `path` yang tersedia dan target harus berada di bawah `.claude/worktrees/` dari repositori sesi | Ya |

32| `ExitPlanMode` | Menyajikan rencana untuk persetujuan dan keluar dari mode rencana | Ya |32| `ExitPlanMode` | Menyajikan rencana untuk persetujuan dan keluar dari mode rencana | Ya |

33| `ExitWorktree` | Keluar dari sesi worktree dan kembali ke direktori asli. Tidak tersedia untuk subagent yang sudah berjalan di direktori kerja mereka sendiri, seperti dengan [`isolation: worktree`](/docs/id/sub-agents#supported-frontmatter-fields) | Tidak |33| `ExitWorktree` | Keluar dari sesi worktree dan kembali ke direktori asli. Tidak tersedia untuk subagent yang sudah berjalan di direktori kerja mereka sendiri, seperti dengan [`isolation: worktree`](/docs/id/sub-agents#supported-frontmatter-fields) | Tidak |

34| `Glob` | Menemukan file berdasarkan pencocokan pola. Lihat [Perilaku tool Glob](#glob-tool-behavior) | Tidak |34| `Glob` | Menemukan file berdasarkan pencocokan pola. Tidak ada secara default di macOS, Linux, dan WSL. Lihat [Perilaku tool Glob](#glob-tool-behavior) | Tidak |

35| `Grep` | Mencari pola dalam konten file. Lihat [Perilaku tool Grep](#grep-tool-behavior) | Tidak |35| `Grep` | Mencari pola dalam konten file. Tidak ada secara default di macOS, Linux, dan WSL. Lihat [Perilaku tool Grep](#grep-tool-behavior) | Tidak |

36| `ListAgents` | Mencantumkan agent yang dapat dihubungi Claude dengan `SendMessage`: subagent dalam sesi, rekan tim [tim agent](/docs/id/agent-teams), sesi Claude Code lokal Anda yang lain, dan, saat sesi ini terhubung ke [Remote Control](/docs/id/remote-control), sesi [Claude Code di web](/docs/id/claude-code-on-the-web) Anda dan sesi Remote Control Anda di mesin lain. Mendukung perintah `/list-agents`. Lihat [pesan lintas-sesi](/docs/id/cross-session-messaging). Memerlukan Claude Code v2.1.224 atau lebih baru, dan muncul hanya dalam sesi di mana [pesan lintas-sesi diaktifkan](/docs/id/cross-session-messaging#availability). Baris rekan tim dan baris pertama yang menunjukkan nama sesi ini sendiri memerlukan v2.1.239 atau lebih baru | Tidak |36| `ListAgents` | Mencantumkan agent yang dapat dihubungi Claude dengan `SendMessage`: subagent dalam sesi, rekan tim [tim agent](/docs/id/agent-teams), sesi Claude Code lokal Anda yang lain, dan, saat sesi ini terhubung ke [Remote Control](/docs/id/remote-control), sesi [Claude Code di web](/docs/id/claude-code-on-the-web) Anda dan sesi Remote Control Anda di mesin lain. Mendukung perintah `/list-agents`. Lihat [pesan lintas-sesi](/docs/id/cross-session-messaging). Memerlukan Claude Code v2.1.224 atau lebih baru, dan muncul hanya dalam sesi di mana [pesan lintas-sesi diaktifkan](/docs/id/cross-session-messaging#availability). Baris rekan tim dan baris pertama yang menunjukkan nama sesi ini sendiri memerlukan v2.1.239 atau lebih baru | Tidak |

37| `ListMcpResourcesTool` | Mencantumkan sumber daya yang diekspos oleh [server MCP](/docs/id/mcp) yang terhubung | Tidak |37| `ListMcpResourcesTool` | Mencantumkan sumber daya yang diekspos oleh [server MCP](/docs/id/mcp) yang terhubung | Tidak |

38| `LSP` | Intelijen kode melalui server bahasa: lompat ke definisi, temukan referensi, laporkan kesalahan tipe dan peringatan. Lihat [Perilaku tool LSP](#lsp-tool-behavior) | Tidak |38| `LSP` | Intelijen kode melalui server bahasa: lompat ke definisi, temukan referensi, laporkan kesalahan tipe dan peringatan. Lihat [Perilaku tool LSP](#lsp-tool-behavior) | Tidak |


50| `SendUserFile` | Mengirim file dari sesi ke Anda dengan keterangan opsional, sehingga laporan yang dihasilkan, diagram, tangkapan layar, atau artefak yang dibangun mencapai perangkat Anda alih-alih hanya disebutkan dalam transkrip. Mulai dari v2.1.196, input `display` opsional mengontrol presentasi: `render` membuka file inline dalam klien, `attach` menampilkan kartu unduhan saja, dan ketika tidak diatur klien memutuskan berdasarkan jenis file. Tersedia ketika klien [Remote Control](/docs/id/remote-control) terhubung atau sesi berjalan di lingkungan cloud terkelola seperti [Claude Code di web](/docs/id/claude-code-on-the-web). Pengiriman berjalan melalui infrastruktur yang dihosting Anthropic, jadi tool tidak tersedia di Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry | Tidak |50| `SendUserFile` | Mengirim file dari sesi ke Anda dengan keterangan opsional, sehingga laporan yang dihasilkan, diagram, tangkapan layar, atau artefak yang dibangun mencapai perangkat Anda alih-alih hanya disebutkan dalam transkrip. Mulai dari v2.1.196, input `display` opsional mengontrol presentasi: `render` membuka file inline dalam klien, `attach` menampilkan kartu unduhan saja, dan ketika tidak diatur klien memutuskan berdasarkan jenis file. Tersedia ketika klien [Remote Control](/docs/id/remote-control) terhubung atau sesi berjalan di lingkungan cloud terkelola seperti [Claude Code di web](/docs/id/claude-code-on-the-web). Pengiriman berjalan melalui infrastruktur yang dihosting Anthropic, jadi tool tidak tersedia di Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry | Tidak |

51| `ShareOnboardingGuide` | Mengunggah `ONBOARDING.md` dan mengembalikan tautan berbagi yang dapat dibuka rekan tim di Claude Code. Dipanggil dari `/team-onboarding` setelah panduan ditulis. Tersedia untuk pelanggan claude.ai pada paket Pro, Max, Team, dan Enterprise | Ya |51| `ShareOnboardingGuide` | Mengunggah `ONBOARDING.md` dan mengembalikan tautan berbagi yang dapat dibuka rekan tim di Claude Code. Dipanggil dari `/team-onboarding` setelah panduan ditulis. Tersedia untuk pelanggan claude.ai pada paket Pro, Max, Team, dan Enterprise | Ya |

52| `Skill` | Menjalankan [skill](/docs/id/skills#control-who-invokes-a-skill) dalam percakapan utama | Ya |52| `Skill` | Menjalankan [skill](/docs/id/skills#control-who-invokes-a-skill) dalam percakapan utama | Ya |

53| `TaskCreate` | Membuat tugas baru dalam daftar tugas. Claude Code menghilangkannya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability) kecuali Anda memilih untuk ikut serta | Tidak |53| `TaskCreate` | Membuat tugas baru dalam daftar tugas. Disediakan secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability), dan pada model lain ketika Anda memilih untuk ikut serta | Tidak |

54| `TaskGet` | Mengambil detail lengkap untuk tugas tertentu. Claude Code menghilangkannya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability) kecuali Anda memilih untuk ikut serta | Tidak |54| `TaskGet` | Mengambil detail lengkap untuk tugas tertentu. Disediakan secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability), dan pada model lain ketika Anda memilih untuk ikut serta | Tidak |

55| `TaskList` | Mencantumkan semua tugas dengan status saat ini mereka. Claude Code menghilangkannya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability) kecuali Anda memilih untuk ikut serta | Tidak |55| `TaskList` | Mencantumkan semua tugas dengan status saat ini mereka. Disediakan secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability), dan pada model lain ketika Anda memilih untuk ikut serta | Tidak |

56| `TaskOutput` | Mengambil output dari tugas latar belakang. Tidak direkomendasikan lagi mendukung `Read` pada jalur file output tugas. Ketika tidak ada tugas yang cocok dengan ID, kesalahan mencantumkan agent latar belakang yang berjalan berdasarkan ID dan deskripsi. Sebelum v2.1.203, kesalahan hanya menyebutkan ID yang hilang | Tidak |56| `TaskOutput` | Mengambil output dari tugas latar belakang. Tidak direkomendasikan lagi mendukung `Read` pada jalur file output tugas. Ketika tidak ada tugas yang cocok dengan ID, kesalahan mencantumkan agent latar belakang yang berjalan berdasarkan ID dan deskripsi. Sebelum v2.1.203, kesalahan hanya menyebutkan ID yang hilang | Tidak |

57| `TaskStop` | Menghentikan tugas latar belakang yang berjalan berdasarkan ID. Ini juga menerima [rekan tim tim agent](/docs/id/agent-teams) atau agent latar belakang bernama berdasarkan ID atau nama agent. Sebelum v2.1.198, itu hanya menerima ID tugas latar belakang. Ketika tidak ada tugas yang cocok dengan ID, kesalahan mencantumkan agent latar belakang yang berjalan berdasarkan ID dan deskripsi, termasuk agent yang agent lain jalankan. Sebelum v2.1.203, kesalahan mencantumkan rekan tim dan agent bernama yang berjalan tetapi bukan agent latar belakang yang agent lain jalankan, jadi mereka tidak dapat diidentifikasi atau dihentikan dari percakapan utama | Tidak |57| `TaskStop` | Menghentikan tugas latar belakang yang berjalan berdasarkan ID. Ini juga menerima [rekan tim tim agent](/docs/id/agent-teams) atau agent latar belakang bernama berdasarkan ID atau nama agent. Sebelum v2.1.198, itu hanya menerima ID tugas latar belakang. Ketika tidak ada tugas yang cocok dengan ID, kesalahan mencantumkan agent latar belakang yang berjalan berdasarkan ID dan deskripsi, termasuk agent yang agent lain jalankan. Sebelum v2.1.203, kesalahan mencantumkan rekan tim dan agent bernama yang berjalan tetapi bukan agent latar belakang yang agent lain jalankan, jadi mereka tidak dapat diidentifikasi atau dihentikan dari percakapan utama | Tidak |

58| `TaskUpdate` | Memperbarui status tugas, dependensi, detail, atau menghapus tugas. Claude Code menghilangkannya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability) kecuali Anda memilih untuk ikut serta | Tidak |58| `TaskUpdate` | Memperbarui status tugas, dependensi, detail, atau menghapus tugas. Disediakan secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability), dan pada model lain ketika Anda memilih untuk ikut serta | Tidak |

59| `TodoWrite` | Mengelola daftar periksa tugas sesi. Dinonaktifkan secara default mendukung `TaskCreate`, `TaskGet`, `TaskList`, dan `TaskUpdate`. Atur `CLAUDE_CODE_ENABLE_TASKS=0` untuk mengaktifkannya kembali dalam [sesi yang memiliki tools pelacakan tugas](#task-tool-availability) | Tidak |59| `TodoWrite` | Mengelola daftar periksa tugas sesi. Dinonaktifkan secara default mendukung `TaskCreate`, `TaskGet`, `TaskList`, dan `TaskUpdate`. Atur `CLAUDE_CODE_ENABLE_TASKS=0` untuk mengaktifkannya kembali dalam [sesi yang memiliki tools pelacakan tugas](#task-tool-availability) | Tidak |

60| `ToolSearch` | Mencari dan memuat tools yang ditangguhkan ketika [pencarian tool](/docs/id/mcp#scale-with-mcp-tool-search) diaktifkan | Tidak |60| `ToolSearch` | Mencari dan memuat tools yang ditangguhkan ketika [pencarian tool](/docs/id/mcp#scale-with-mcp-tool-search) diaktifkan | Tidak |

61| `WaitForMcpServers` | Menunggu satu atau lebih [server MCP](/docs/id/mcp) yang masih terhubung di latar belakang, sehingga permintaan dapat menggunakan tools mereka tanpa memulai ulang sesi. Claude memanggilnya ketika server yang diperlukan belum terhubung. Hanya muncul ketika [pencarian tool](/docs/id/mcp#scale-with-mcp-tool-search) dinonaktifkan, karena `ToolSearch` menangani tunggu ketika diaktifkan | Tidak |61| `WaitForMcpServers` | Menunggu satu atau lebih [server MCP](/docs/id/mcp) yang masih terhubung di latar belakang, sehingga permintaan dapat menggunakan tools mereka tanpa memulai ulang sesi. Claude memanggilnya ketika server yang diperlukan belum terhubung. Hanya muncul ketika [pencarian tool](/docs/id/mcp#scale-with-mcp-tool-search) dinonaktifkan, karena `ToolSearch` menangani tunggu ketika diaktifkan | Tidak |


73* dalam [`permissions.allow`](/docs/id/settings-reference#permissions-allow) dan [`permissions.deny`](/docs/id/settings-reference#permissions-deny) dalam pengaturan, dan antarmuka `/permissions`73* dalam [`permissions.allow`](/docs/id/settings-reference#permissions-allow) dan [`permissions.deny`](/docs/id/settings-reference#permissions-deny) dalam pengaturan, dan antarmuka `/permissions`

74* dalam flag CLI [`--allowedTools` dan `--disallowedTools`](/docs/id/cli-reference)74* dalam flag CLI [`--allowedTools` dan `--disallowedTools`](/docs/id/cli-reference)

75* dalam opsi Agent SDK [`allowedTools` dan `disallowedTools`](/docs/id/agent-sdk/permissions#allow-and-deny-rules)75* dalam opsi Agent SDK [`allowedTools` dan `disallowedTools`](/docs/id/agent-sdk/permissions#allow-and-deny-rules)

76* dalam frontmatter [`tools` atau `disallowedTools`](/docs/id/sub-agents#supported-frontmatter-fields) subagent

77* dalam frontmatter [`allowed-tools`](/docs/id/skills#frontmatter-reference) skill76* dalam frontmatter [`allowed-tools`](/docs/id/skills#frontmatter-reference) skill

78* dalam kondisi [`if`](/docs/id/hooks-guide#filter-by-tool-name-and-arguments-with-the-if-field) hook77* dalam kondisi [`if`](/docs/id/hooks-guide#filter-by-tool-name-and-arguments-with-the-if-field) hook

79 78 


154 Apa yang bertahan antar perintah153 Apa yang bertahan antar perintah

155</h3>154</h3>

156 155 

157* Ketika Claude menjalankan `cd` dalam sesi utama, direktori kerja baru berlanjut ke perintah Bash yang lebih baru selama tetap berada di dalam direktori proyek atau [direktori kerja tambahan](/docs/id/permissions#working-directories) yang Anda tambahkan dengan `--add-dir`, `/add-dir`, atau `additionalDirectories` dalam pengaturan. Ini mencakup perintah yang Claude jalankan sebagai respons terhadap pesan Anda yang lebih baru.156* Ketika Claude menjalankan `cd` dalam sesi utama, direktori kerja baru terbawa ke perintah Bash yang lebih baru selama tetap berada di dalam direktori proyek atau [direktori kerja tambahan](/docs/id/permissions#working-directories) yang Anda tambahkan dengan `--add-dir`, `/add-dir`, atau `additionalDirectories` dalam pengaturan. Ini termasuk perintah yang Claude jalankan sebagai respons terhadap pesan Anda yang lebih baru.

158 * Sesi subagent tidak pernah membawa perubahan direktori kerja.157 * Sesi subagent tidak pernah membawa perubahan direktori kerja.

159 * Jika `cd` mendarat di luar direktori-direktori tersebut, Claude Code mengatur ulang ke direktori proyek dan menambahkan `Shell cwd was reset to <dir>` ke hasil alat.158 * Jika `cd` mendarat di luar direktori-direktori tersebut, Claude Code mengatur ulang ke direktori proyek dan menambahkan `Shell cwd was reset to <dir>` ke hasil alat.

160 * Untuk menonaktifkan carry-over ini sehingga setiap perintah Bash dimulai di direktori proyek, atur `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.159 * Untuk menonaktifkan pembawaan ini sehingga setiap perintah Bash dimulai di direktori proyek, atur `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.

161* Variabel lingkungan tidak bertahan. `export` dalam satu perintah tidak akan tersedia di perintah berikutnya.160* Variabel lingkungan tidak bertahan. `export` dalam satu perintah tidak akan tersedia di perintah berikutnya.

162* Alias dan fungsi shell yang ditentukan dalam file startup shell Anda tersedia. Pada awal sesi, Claude Code bersumber dari `~/.zshrc`, `~/.bashrc`, atau `~/.profile` tergantung pada shell Anda, menangkap alias, fungsi, dan opsi shell yang dihasilkan, dan menerapkannya ke setiap perintah Bash.161* Alias dan fungsi shell yang ditentukan dalam file startup shell Anda tersedia. Pada awal sesi, Claude Code bersumber dari `~/.zshrc`, `~/.bashrc`, atau `~/.profile` tergantung pada shell Anda, menangkap alias, fungsi, dan opsi shell yang dihasilkan, dan menerapkannya ke setiap perintah Bash.

163 162 

164Aktifkan virtualenv atau lingkungan conda Anda sebelum meluncurkan Claude Code. Untuk membuat variabel lingkungan bertahan di seluruh perintah Bash, atur [`CLAUDE_ENV_FILE`](/docs/id/env-vars) ke skrip shell sebelum meluncurkan Claude Code, atau gunakan [hook SessionStart](/docs/id/hooks#persist-environment-variables) untuk mengisinya secara dinamis.163Aktifkan virtualenv atau lingkungan conda Anda sebelum meluncurkan Claude Code. Untuk membuat variabel lingkungan bertahan di seluruh perintah Bash, atur [`CLAUDE_ENV_FILE`](/docs/id/env-vars) ke skrip shell sebelum meluncurkan Claude Code, atau gunakan [hook SessionStart](/docs/id/hooks#persist-environment-variables) untuk mengisinya secara dinamis.

165 164 

166<h3 id="timeout-and-output-limits">165<h3 id="timeout-and-output-limits">

167 Batas waktu dan output166 Batas waktu tunggu dan output

168</h3>167</h3>

169 168 

170Setiap perintah berjalan di bawah batas waktu, dan Claude mengelolanya: ketika menginginkan lebih lama dari default untuk perintah, ia melewatkan parameter `timeout` dengan panggilan itu — Anda tidak pernah menetapkan batas waktu per perintah. Dua [variabel lingkungan](/docs/id/env-vars) membatasi apa yang Claude dapatkan:169Setiap perintah berjalan di bawah waktu tunggu, dan Claude mengelolanya: ketika menginginkan lebih lama dari default untuk perintah, Claude melewatkan parameter `timeout` dengan panggilan itu — Anda tidak pernah menetapkan waktu tunggu per perintah. Dua [variabel lingkungan](/docs/id/env-vars) membatasi apa yang Claude dapatkan:

171 170 

172* `BASH_DEFAULT_TIMEOUT_MS` — default ketika Claude tidak melewatkan batas waktu; dua menit di luar kotak171* `BASH_DEFAULT_TIMEOUT_MS` — default ketika Claude tidak melewatkan waktu tunggu; dua menit di luar kotak

173* `BASH_MAX_TIMEOUT_MS` — dengan default, menetapkan batas yang membatasi apa pun yang Claude minta: batas efektif adalah yang lebih besar dari keduanya, sepuluh menit di luar kotak172* `BASH_MAX_TIMEOUT_MS` — dengan default, menetapkan batas yang membatasi apa pun yang Claude minta: batas efektif adalah yang lebih besar dari keduanya, sepuluh menit di luar kotak

174 173 

175<h4 id="output-limits">174<h4 id="output-limits">

176 Batas output175 Batas output

177</h4>176</h4>

178 177 

179Claude Code mengalirkan output perintah ke file kerja saat perintah berjalan; perintah yang outputnya melampaui 5 GB dibunuh. Ketika perintah selesai, Claude Code membaca output kembali dari file itu, hingga jendela read-back yang dijelaskan di bawah. Berapa banyak output yang mencapai Claude secara inline tergantung pada apakah Claude Code memperlakukan hasil sebagai kegagalan:178Claude Code mengalirkan output perintah ke file kerja saat perintah berjalan; perintah yang outputnya melampaui 5 GB dibunuh. Ketika perintah selesai, Claude Code membaca output kembali dari file itu, hingga jendela baca-balik yang dijelaskan di bawah. Berapa banyak output yang mencapai Claude secara inline tergantung pada apakah Claude Code memperlakukan hasil sebagai kegagalan:

180 179 

181| Hasil | Apa yang Claude dapatkan |180| Hasil | Apa yang Claude dapatkan |

182| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |181| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

183| Valid | Inline hingga kira-kira 30.000 karakter secara default; melampaui itu, jalur file yang disimpan ke direktori sesi dan dipotong melampaui 64 MiB, ditambah pratinjau singkat dari awal, dan Claude membaca atau mencari file ketika membutuhkan sisanya |182| Valid | Inline hingga kira-kira 30.000 karakter secara default; melampaui itu, jalur file yang disimpan ke direktori sesi dan dipotong melampaui 64 MiB, ditambah pratinjau singkat dari awal, dan Claude membaca atau mencari file ketika membutuhkan sisanya |

184| Kegagalan | Inline hingga kira-kira 10.000 karakter; melampaui itu, kutipan kepala-dan-ekor dari ukuran itu dipotong dari jendela read-back, tanpa jalur file |183| Kegagalan | Inline hingga kira-kira 10.000 karakter; melampaui itu, kutipan kepala-dan-ekor ukuran itu dipotong dari jendela baca-balik, tanpa jalur file |

185 184 

186Perintah yang keluar 1 dihitung sebagai hasil valid untuk alat Bash hanya ketika Claude Code mengenali kode keluar 1 sebagai hasil yang jinak untuk perintah itu: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, dan `[`, ditambah `git diff` dan `git grep`. Setiap perintah lain yang keluar 1 dihitung sebagai kegagalan, bahkan ketika keluar 1 adalah hasil informasional yang jinak: tidak ada kecocokan untuk `pgrep` dan `jq -e`, file yang berbeda untuk `cmp`.185Perintah yang keluar 1 dihitung sebagai hasil valid untuk alat Bash hanya ketika Claude Code mengenali kode keluar 1 sebagai hasil yang jinak untuk perintah itu: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, dan `[`, ditambah `git diff` dan `git grep`. Setiap perintah lain yang keluar 1 dihitung sebagai kegagalan, bahkan ketika keluar 1 adalah hasil informasional yang jinak: tidak ada kecocokan untuk `pgrep` dan `jq -e`, file yang berbeda untuk `cmp`.

187 186 

188[`BASH_MAX_OUTPUT_LENGTH`](/docs/id/env-vars) menetapkan berapa banyak karakter output yang Claude Code baca kembali dari file kerja ke hasil perintah: 30.000 secara default, hingga batas keras 150.000. Naikkan ketika perintah Anda secara rutin melampaui jendela itu, seperti build verbose atau log test-suite lengkap. Menaikkannya memperbesar jendela read-back, yang juga merupakan jendela kutipan perintah yang gagal dipotong. Ini tidak menaikkan batas inline: hasil valid di atas batas inline tiba sebagai jalur file ditambah pratinjau terlepas dari variabel ini.187[`BASH_MAX_OUTPUT_LENGTH`](/docs/id/env-vars) menetapkan berapa banyak karakter output yang Claude Code baca kembali dari file kerja ke hasil perintah: 30.000 secara default, hingga batas keras 150.000. Naikkan ketika perintah Anda secara rutin melampaui jendela itu, seperti build verbose atau log rangkaian tes lengkap. Menaikkannya memperbesar jendela baca-balik, yang juga merupakan jendela kutipan perintah yang gagal dipotong. Ini tidak menaikkan batas inline: hasil valid di atas batas inline tiba sebagai jalur file ditambah pratinjau terlepas dari variabel ini.

189 188 

190Untuk mengubah berapa banyak hasil valid yang Claude terima secara inline, atur pengaturan [`bashOutputMaxChars`](/docs/id/settings-reference#bashoutputmaxchars) sebagai gantinya, hingga 128.000 karakter. Ini mengukur batas inline dan jendela read-back bersama-sama, dan Claude Code kemudian mengabaikan `BASH_MAX_OUTPUT_LENGTH`. Memerlukan Claude Code v2.1.261 atau lebih baru.189Untuk mengubah berapa banyak hasil valid yang Claude terima secara inline, atur pengaturan [`bashOutputMaxChars`](/docs/id/settings-reference#bashoutputmaxchars) sebagai gantinya, hingga 128.000 karakter. Ini mengukur batas inline dan jendela baca-balik bersama-sama, dan Claude Code kemudian mengabaikan `BASH_MAX_OUTPUT_LENGTH`. Memerlukan Claude Code v2.1.261 atau lebih baru.

191 190 

192<h3 id="background-commands">191<h3 id="background-commands">

193 Perintah latar belakang192 Perintah latar belakang

194</h3>193</h3>

195 194 

196Untuk proses yang berjalan lama seperti server dev atau build watch, Claude dapat mengatur `run_in_background: true` untuk memulai perintah sebagai tugas latar belakang dan terus bekerja saat berjalan. Daftar dan hentikan tugas latar belakang dengan `/tasks`. Setelah Anda menghentikan satu di sana, atau dari klien yang terhubung seperti aplikasi desktop, Claude melanjutkan alih-alih menunggu. Jika subagent memulai perintah, itu adalah subagent itu yang melanjutkan.195Untuk proses yang berjalan lama seperti server dev atau build watch, Claude dapat mengatur `run_in_background: true` untuk memulai perintah sebagai tugas latar belakang dan terus bekerja saat berjalan. Daftar dan hentikan tugas latar belakang dengan `/tasks`. Setelah Anda menghentikan satu di sana, atau dari klien yang terhubung seperti aplikasi desktop, Claude melanjutkan alih-alih menunggu. Jika subagent memulai perintah, subagent itulah yang melanjutkan.

197 196 

198Perintah yang dimulai oleh [subagent foreground](/docs/id/sub-agents#run-subagents-in-foreground-or-background) berhenti ketika subagent itu memberikan respons finalnya. Perintah yang dimulai oleh percakapan utama atau subagent latar belakang terus berjalan setelah respons final. Dalam mode non-interaktif dengan flag `-p`, [perintah latar belakang berakhir segera setelah hasil final run](/docs/id/headless#background-tasks-at-exit).197Perintah yang dimulai oleh [subagent latar depan](/docs/id/sub-agents#run-subagents-in-foreground-or-background) berhenti ketika subagent itu memberikan respons finalnya. Perintah yang dimulai oleh percakapan utama atau subagent latar belakang terus berjalan setelah respons final. Dalam mode non-interaktif dengan bendera `-p`, [perintah latar belakang berakhir segera setelah hasil final jalannya](/docs/id/headless#background-tasks-at-exit).

199 198 

200Ketika perintah mencapai batas waktu tanpa selesai, Claude Code memindahkannya ke latar belakang alih-alih menghentikannya. Claude terus bekerja saat perintah berlanjut. Claude Code menerapkan aturan lifetime yang sama ke perintah yang dipindahkan seperti ke perintah latar belakang lainnya, jadi masih menghentikan perintah subagent foreground pada respons final subagent itu. Mengatur [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/id/env-vars#variables) menonaktifkan auto-backgrounding bersama dengan sisa fungsionalitas tugas latar belakang.199Ketika perintah mencapai waktu tunggunya tanpa selesai, Claude Code memindahkannya ke latar belakang alih-alih menghentikannya, kecuali perintah dimulai dengan `sleep`. Claude terus bekerja saat perintah berlanjut. Claude Code menerapkan aturan seumur hidup yang sama ke perintah yang dipindahkan seperti ke perintah latar belakang lainnya, jadi masih menghentikan perintah subagent latar depan pada respons final subagent itu. Mengatur [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/id/env-vars#variables) menonaktifkan auto-backgrounding bersama dengan sisa fungsionalitas tugas latar belakang.

201 

202Claude Code tidak pernah auto-background tiga jenis perintah. Itu menghentikannya pada batas waktu sebagai gantinya:

203 

204* Perintah yang dimulai dengan `sleep`.

205* Perintah yang menjalankan `git` di mana pun di dalamnya.

206* Perintah gabungan yang Claude Code tidak dapat sepenuhnya menguraikan menjadi perintah sederhana. Claude Code memperlakukan ekspansi parameter seperti `${VAR}` sebagai tidak dapat diuraikan, jadi itu menghentikan perintah yang berakhir dengan `; exit "${PIPESTATUS[0]}"` pada batas waktu bahkan ketika sisa perintah itu diuraikan.

207 200 

208Hasil perintah yang dipindahkan ke latar belakang menyatakan apa yang terjadi:201Hasil perintah yang dipindahkan ke latar belakang menyatakan apa yang terjadi:

209 202 

210* Ketika batas waktu memicu perpindahan, hasil melaporkannya secara eksplisit: `Command did not complete within its 120s timeout and was moved to the background`, dengan detik yang cocok dengan batas waktu yang diterapkan, diikuti oleh ID tugas dan jalur file yang output sedang ditulis.203* Ketika waktu tunggu memicu perpindahan, hasil melaporkannya secara eksplisit: `Command did not complete within its 120s timeout and was moved to the background`, dengan detik sesuai dengan waktu tunggu yang berlaku, diikuti oleh ID tugas dan jalur file yang output sedang ditulis.

211* A `cd`, `pushd`, `popd`, atau `chdir` di dalam perintah yang dipindahkan ke latar belakang tidak pernah berlanjut: hasil menyatakan `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`, jadi Claude tidak bertindak atas perubahan direktori yang tidak terjadi.204* Sebuah `cd`, `pushd`, `popd`, atau `chdir` di dalam perintah yang dipindahkan ke latar belakang tidak pernah terbawa: hasil menyatakan `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`, jadi Claude tidak bertindak atas perubahan direktori yang tidak terjadi.

212 205 

213<h3 id="memory-limit-on-linux-and-wsl">206<h3 id="memory-limit-on-linux-and-wsl">

214 Batas memori di Linux dan WSL207 Batas memori di Linux dan WSL

215</h3>208</h3>

216 209 

217Di Linux dan WSL, atur [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/id/env-vars#variables) ke ukuran seperti `4G` untuk membatasi memori yang perintah Bash, PowerShell, dan [Monitor](#monitor-tool) tool dapat gunakan, sehingga satu build yang lari tidak dapat mengambil memori yang sesi lainnya butuhkan. Memerlukan Claude Code v2.1.233 atau lebih baru. Sebelum v2.1.246, perintah Monitor tool berjalan di luar batas.210Di Linux dan WSL, atur [`CLAUDE_CODE_TOOL_MEMORY_LIMIT`](/docs/id/env-vars#variables) ke ukuran seperti `4G` untuk membatasi memori yang perintah Bash, PowerShell, dan alat [Monitor](#monitor-tool) dapat gunakan, sehingga satu build yang lari tidak dapat mengambil memori yang sesi lainnya butuhkan. Memerlukan Claude Code v2.1.233 atau lebih baru. Sebelum v2.1.246, perintah alat Monitor berjalan di luar batas.

218 211 

219* Tulis ukuran sebagai jumlah byte atau dengan akhiran `K`, `M`, `G`, atau `T`. Atur `0`, `off`, `false`, `no`, atau `none` untuk mematikan batas. Claude Code mengabaikan nilai apa pun yang tidak dapat dibacanya sebagai ukuran, seperti `4e9`.212* Tulis ukuran sebagai jumlah byte atau dengan akhiran `K`, `M`, `G`, atau `T`. Atur `0`, `off`, `false`, `no`, atau `none` untuk mematikan batas. Claude Code mengabaikan nilai apa pun yang tidak dapat dibacanya sebagai ukuran, seperti `4e9`.

220* Claude Code menghitung semua perintah Bash, PowerShell, dan Monitor sesi terhadap satu batas, bukan setiap perintah pada dirinya sendiri.213* Claude Code menghitung semua perintah Bash, PowerShell, dan Monitor sesi terhadap satu batas, bukan setiap perintah pada dirinya sendiri.

221* Claude Code menerapkan batas dengan cgroup memori. Ketika tidak dapat mengatur cgroup, perintah berjalan tanpa batas, dan log debug dari `claude --debug` mengatakan mengapa.214* Claude Code menerapkan batas dengan cgroup memori. Ketika tidak dapat mengatur cgroup, perintah berjalan tanpa batas, dan log debug dari `claude --debug` mengatakan mengapa.

222* Setelah proses pertama yang Claude Code mulai telah menyalakan batas, atau telah mematikannya karena nilai off atau setup cgroup yang gagal, Claude Code menahan hasil itu sampai Anda meluncurkan kembali. Untuk menerapkan nilai yang diubah atau dihapus, atau setup yang diperbaiki, luncurkan `claude` lagi.215* Setelah proses pertama yang Claude Code mulai telah menghidupkan batas, atau telah mematikannya karena nilai off atau setup cgroup yang gagal, Claude Code menahan hasil itu sampai Anda meluncurkan kembali. Untuk menerapkan nilai yang diubah atau dihapus, atau setup yang diperbaiki, luncurkan `claude` lagi.

223* Ketika perintah tidak dapat tetap di bawah batas, kernel membunuh perintah, dan tidak ada dalam hasilnya yang menyebutkan batas.216* Ketika perintah tidak dapat tetap di bawah batas, kernel membunuh perintah, dan tidak ada dalam hasilnya yang menyebutkan batas.

224 217 

225Claude Code juga dapat menghitung jenis proses lain yang dimulainya terhadap batas yang sama. Atur [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](/docs/id/env-vars#variables) ke daftar yang dipisahkan koma dari jenis yang dikecualikan dari batas; Claude Code menerapkan batas ke setiap jenis yang tidak ada di daftar Anda. Atur ke `none` untuk membatasi setiap jenis, atau ke `all-new` untuk membatasi hanya perintah Bash, PowerShell, dan Monitor tool. Memerlukan Claude Code v2.1.246 atau lebih baru. Jenis yang dapat Anda beri nama:218Claude Code juga dapat menghitung jenis proses lain yang dimulainya terhadap batas yang sama. Atur [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](/docs/id/env-vars#variables) ke daftar yang dipisahkan koma dari jenis yang dikecualikan dari batas; Claude Code menerapkan batas ke setiap jenis yang tidak ada di daftar Anda. Atur ke `none` untuk membatasi setiap jenis, atau ke `all-new` untuk membatasi hanya perintah alat Bash, PowerShell, dan Monitor. Memerlukan Claude Code v2.1.246 atau lebih baru. Jenis yang dapat Anda namai:

226 219 

227* `mcp`: server [MCP](/docs/id/mcp) lokal220* `mcp`: server [MCP](/docs/id/mcp) lokal

228* `lsp`: [language servers](#lsp-tool-behavior)221* `lsp`: [server bahasa](#lsp-tool-behavior)

229* `hooks`: perintah [hook](/docs/id/hooks)222* `hooks`: perintah [hook](/docs/id/hooks)

230* `plugin`: perintah yang [plugins](/docs/id/plugins) jalankan223* `plugin`: perintah yang [plugin](/docs/id/plugins) jalankan

231* `helper`: perintah helper Claude Code sendiri, seperti `git`224* `helper`: perintah helper Claude Code sendiri, seperti `git`

232* `agent`: proses Claude Code anak, seperti [agent teammates](/docs/id/agent-teams)225* `agent`: proses Claude Code anak, seperti [rekan tim agen](/docs/id/agent-teams)

233 226 

234Apa pun yang Anda daftar, aturan ini berlaku:227Apa pun yang Anda daftar, aturan ini berlaku:

235 228 

236* **Nama tidak dikenal**: Claude Code mengabaikan nama yang tidak dikenalinya229* **Nama tidak dikenal**: Claude Code mengabaikan nama yang tidak dikenalinya

237* **Bash, PowerShell, dan Monitor**: Claude Code menjaga perintah Bash, PowerShell, dan Monitor tool di bawah batas apa pun yang Anda daftar230* **Bash, PowerShell, dan Monitor**: Claude Code menjaga perintah alat Bash, PowerShell, dan Monitor di bawah batas apa pun yang Anda daftar

238* **Variabel tidak diatur**: Claude Code mengambil set jenis lain yang dibatasi dari konfigurasi yang Anthropic berikan dari server, dan set itu dapat berubah seiring waktu, jadi atur variabel ketika Anda membutuhkan set yang tidak berubah231* **Variabel tidak diatur**: Claude Code mengambil set jenis yang dibatasi lainnya dari konfigurasi yang Anthropic berikan dari server, dan set itu dapat berubah seiring waktu, jadi atur variabel ketika Anda membutuhkan set yang tidak berubah

239* **Hooks permission-gating**: bahkan dengan setiap jenis dibatasi, Claude Code mengecualikan dari batas hook yang dapat memblokir atau mengubah hasil tindakan, dan server MCP apa pun yang hook seperti itu panggil, jadi kernel membunuh hook permission-gating tidak dapat memungkinkan tindakan yang diblokir232* **Hook gating izin**: bahkan dengan setiap jenis dibatasi, Claude Code mengecualikan dari batas hook yang dapat memblokir atau mengubah hasil tindakan, dan server MCP apa pun yang hook tersebut panggil, sehingga kernel membunuh hook gating izin tidak dapat memungkinkan tindakan yang diblokir

240 233 

241<h2 id="edit-tool-behavior">234<h2 id="edit-tool-behavior">

242 Perilaku alat Edit235 Perilaku alat Edit


292 Perilaku Glob tool285 Perilaku Glob tool

293</h2>286</h2>

294 287 

295Glob tool menemukan file berdasarkan pola nama. Ini mendukung sintaks glob standar termasuk `**` untuk pencocokan direktori rekursif:288Glob tool menemukan file berdasarkan pola nama. Di Windows, ini adalah bagian dari set tool default. Di macOS, Linux, dan WSL, Claude Code mengeluarkan Glob dan [Grep](#grep-tool-behavior) dari set tool default, dan Claude mencari dengan `find` dan `grep` melalui Bash tool sebagai gantinya. Di shell Claude, kedua perintah tersebut menjalankan versi embedded dari `bfs` dan `ugrep`, dan pencarian mencapai hooks dan aturan izin Anda sebagai panggilan `Bash`.

289 

290Di macOS, Linux, dan WSL, Anda mendapatkan kembali Glob dan Grep tools dalam kasus-kasus ini:

291 

292* Anda menyebutkan `Glob` atau `Grep` dalam [`--tools` atau `--allowedTools`](/docs/id/cli-reference#cli-flags) ketika Anda memulai sesi, atau dalam opsi [Agent SDK](/docs/id/agent-sdk/overview) yang setara. Dengan `--tools` Anda mendapatkan yang Anda daftarkan, dan menyebutkan salah satu tool dalam `--allowedTools` mengembalikan keduanya. Aturan allow dalam file settings tidak memiliki efek ini.

293* Aturan [deny](/docs/id/permissions#match-all-uses-of-a-tool) izin, flag `--disallowedTools`, atau [`--restricted`](/docs/id/cli-reference#cli-flags) menghapus `Bash` dari sesi.

294* [Subagent](/docs/id/sub-agents#available-tools) mencantumkan `Glob` atau `Grep` dalam field `tools` dan mengeluarkan `Bash`. Tool yang tercantum kembali untuk subagent itu saja, atau untuk seluruh sesi ketika berjalan sebagai agent sesi utama melalui [`--agent`](/docs/id/sub-agents#invoke-subagents-explicitly) atau pengaturan `agent`.

295 

296Glob mendukung sintaks glob standar termasuk `**` untuk pencocokan direktori rekursif:

296 297 

297* `**/*.js` cocok dengan semua file `.js` pada kedalaman apa pun298* `**/*.js` cocok dengan semua file `.js` pada kedalaman apa pun

298* `src/**/*.ts` cocok dengan semua file `.ts` di bawah `src/`299* `src/**/*.ts` cocok dengan semua file `.ts` di bawah `src/`


310 Perilaku Grep tool311 Perilaku Grep tool

311</h2>312</h2>

312 313 

313Grep tool mencari konten file untuk pola. Di mana [Glob](#glob-tool-behavior) menemukan file berdasarkan nama, Grep menemukan baris di dalamnya.314Grep tool mencari konten file untuk pola. Di mana [Glob](#glob-tool-behavior) menemukan file berdasarkan nama, Grep menemukan baris di dalamnya. Pada macOS, Linux, dan WSL, Grep tidak ada secara default dalam kondisi yang sama dengan Glob. Lihat [Perilaku Glob tool](#glob-tool-behavior) untuk mengetahui kapan kedua tool tersedia.

314 315 

315Grep dibangun di atas [ripgrep](https://github.com/BurntSushi/ripgrep) dan menggunakan sintaks regex ripgrep, bukan POSIX grep. Pola yang mencakup karakter metacharacter regex perlu escape. Misalnya, menemukan `interface{}` dalam kode Go memerlukan pola `interface\{\}`.316Grep dibangun di atas [ripgrep](https://github.com/BurntSushi/ripgrep) dan menggunakan sintaks regex ripgrep, bukan POSIX grep. Pola yang mencakup karakter metacharacter regex perlu escape. Misalnya, menemukan `interface{}` dalam kode Go memerlukan pola `interface\{\}`.

316 317 


581 Ketersediaan alat Task582 Ketersediaan alat Task

582</h2>583</h2>

583 584 

584Dalam Claude Code v2.1.233 dan yang lebih baru, alat-alat berikut tidak tersedia di Opus 4.8, Sonnet 5, Fable 5, Mythos 5, atau versi yang lebih baru dari keluarga tersebut kecuali Anda memilih untuk menggunakannya: `TodoWrite`, `TaskCreate`, `TaskGet`, `TaskUpdate`, dan `TaskList`. Model-model tersebut melacak pekerjaan multi-langkah tanpa daftar periksa tertulis, dan definisi alat serta pengingat menggunakan konteks, jadi Claude Code menghilangkannya. Tanpa alat-alat tersebut, Claude tidak menambahkan apa pun ke [daftar tugas](/docs/id/interactive-mode#task-list) saat bekerja. Pada model lain, seperti Opus 4.7, Claude Code menyediakan empat alat Task secara default dan `TodoWrite` hanya ketika Anda menetapkan [`CLAUDE_CODE_ENABLE_TASKS=0`](/docs/id/env-vars).585Alat-alat pelacakan tugas, `TaskCreate`, `TaskGet`, `TaskUpdate`, `TaskList`, dan `TodoWrite`, tersedia secara default hanya pada model Claude 3.x, Opus 4 hingga 4.7, Sonnet 4 hingga 4.6, dan Haiku 4.5. Di mana pun alat-alat tersebut tersedia, Anda mendapatkan empat alat Task, atau `TodoWrite` saja ketika Anda menetapkan [`CLAUDE_CODE_ENABLE_TASKS=0`](/docs/id/env-vars).

586 

587Pada setiap model lainnya, Claude Code menghilangkan alat-alat tersebut kecuali Anda memilih untuk menggunakannya. Hal yang sama berlaku untuk ID model yang Claude Code tidak kenali, seperti nama model khusus yang disajikan melalui [gateway LLM](/docs/id/llm-gateway). Pada model yang lebih baru, Claude melacak pekerjaan multi-langkah tanpa daftar periksa tertulis, dan definisi alat serta pengingat menggunakan konteks. Tanpa alat-alat tersebut, Claude tidak menambahkan apa pun ke [daftar tugas](/docs/id/interactive-mode#task-list) saat bekerja.

585 588 

586Jika Anda ingin menggunakan alat-alat ini pada salah satu model yang terdaftar, lakukan salah satu hal berikut:589Jika Anda ingin menggunakan alat-alat ini pada model yang tidak memilikinya secara default, lakukan salah satu hal berikut:

587 590 

588* Ekspor [`CLAUDE_CODE_ENABLE_TODO_TOOLS=1`](/docs/id/env-vars) sebelum Anda memulai Claude Code, misalnya `CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude`. Claude Code kemudian menyediakan alat yang sama pada setiap model dan setiap penyedia591* Ekspor [`CLAUDE_CODE_ENABLE_TODO_TOOLS=1`](/docs/id/env-vars) sebelum Anda memulai Claude Code, misalnya `CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude`. Claude Code kemudian menyediakan alat yang sama pada setiap model dan setiap penyedia

589* Sebutkan salah satu alat dalam [`--allowedTools`](/docs/id/cli-reference#cli-flags), misalnya `claude --allowedTools TaskCreate`592* Sebutkan salah satu alat dalam [`--allowedTools`](/docs/id/cli-reference#cli-flags), misalnya `claude --allowedTools TaskCreate`


594 597 

595Claude Code memberikan alat kepada subagent hanya ketika sesi Anda memilikinya, bahkan ketika subagent menjalankan model yang berbeda. Anggota tim [tim agen](/docs/id/agent-teams) dalam proses mengikuti sesi Anda dengan cara yang sama, sementara anggota tim dalam [panel terpisahnya sendiri](/docs/id/agent-teams#choose-a-display-mode) berjalan sebagai proses Claude Code terpisah, jadi modelnya sendiri yang memutuskan. Tanpa alat Task, agen berkoordinasi dengan timnya melalui pesan alih-alih [daftar tugas bersama](/docs/id/agent-teams#assign-and-claim-tasks).598Claude Code memberikan alat kepada subagent hanya ketika sesi Anda memilikinya, bahkan ketika subagent menjalankan model yang berbeda. Anggota tim [tim agen](/docs/id/agent-teams) dalam proses mengikuti sesi Anda dengan cara yang sama, sementara anggota tim dalam [panel terpisahnya sendiri](/docs/id/agent-teams#choose-a-display-mode) berjalan sebagai proses Claude Code terpisah, jadi modelnya sendiri yang memutuskan. Tanpa alat Task, agen berkoordinasi dengan timnya melalui pesan alih-alih [daftar tugas bersama](/docs/id/agent-teams#assign-and-claim-tasks).

596 599 

600Rangkaian default yang dijelaskan di sini berlaku dalam Claude Code v2.1.268 dan yang lebih baru.

601 

597<h2 id="webfetch-tool-behavior">602<h2 id="webfetch-tool-behavior">

598 Perilaku alat WebFetch603 Perilaku alat WebFetch

599</h2>604</h2>


607* URL HTTP secara otomatis ditingkatkan ke HTTPS.612* URL HTTP secara otomatis ditingkatkan ke HTTPS.

608* Halaman besar dipotong ke batas karakter tetap sebelum diproses.613* Halaman besar dipotong ke batas karakter tetap sebelum diproses.

609* WebFetch menyimpan cache setiap respons selama 15 menit secara default, jadi pengambilan berulang dari URL yang sama kembali dengan cepat. Pada Claude Code v2.1.233 atau lebih baru, atur [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/id/env-vars#variables) untuk mengubah berapa lama WebFetch menyimpan setiap respons.614* WebFetch menyimpan cache setiap respons selama 15 menit secara default, jadi pengambilan berulang dari URL yang sama kembali dengan cepat. Pada Claude Code v2.1.233 atau lebih baru, atur [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/id/env-vars#variables) untuk mengubah berapa lama WebFetch menyimpan setiap respons.

615* Halaman yang belum selesai diunduh dalam lima menit, termasuk pengalihan apa pun yang diikuti WebFetch, gagal dengan kesalahan batas waktu. Pada Claude Code v2.1.268 atau lebih baru, atur [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/id/env-vars#variables) untuk mengubah batas, atau ke `0` untuk menghapusnya.

610* Ketika URL dialihkan ke host yang berbeda, WebFetch mengembalikan hasil teks yang menyebutkan URL asli dan target pengalihan alih-alih mengikutinya. Claude kemudian mengambil URL baru dengan panggilan WebFetch kedua.616* Ketika URL dialihkan ke host yang berbeda, WebFetch mengembalikan hasil teks yang menyebutkan URL asli dan target pengalihan alih-alih mengikutinya. Claude kemudian mengambil URL baru dengan panggilan WebFetch kedua.

611* Ketika langkah ekstraksi mengalami API yang kelebihan beban, Claude Code mencoba ulang dengan backoff; pengambilan yang masih gagal mengembalikan hasil kesalahan. Sebelum v2.1.212, teks kesalahan API dapat sampai ke Claude seolah-olah itu adalah konten halaman yang diekstrak.617* Ketika langkah ekstraksi mengalami API yang kelebihan beban, Claude Code mencoba ulang dengan backoff; pengambilan yang masih gagal mengembalikan hasil kesalahan. Sebelum v2.1.212, teks kesalahan API dapat sampai ke Claude seolah-olah itu adalah konten halaman yang diekstrak.

612 618 

Details

417 417 

418Perintah `curl ... | bash` mengunduh script dan menyalurkannya ke Bash untuk dieksekusi. Error ini, dan error terkait `curl: (23) Failure writing output to destination`, berarti Bash tidak menerima script lengkap. Exit code 56 menunjukkan download itu sendiri terputus, dan exit code 23 menunjukkan curl tidak dapat menulis apa yang diterima ke pipe, biasanya karena Bash keluar lebih awal.418Perintah `curl ... | bash` mengunduh script dan menyalurkannya ke Bash untuk dieksekusi. Error ini, dan error terkait `curl: (23) Failure writing output to destination`, berarti Bash tidak menerima script lengkap. Exit code 56 menunjukkan download itu sendiri terputus, dan exit code 23 menunjukkan curl tidak dapat menulis apa yang diterima ke pipe, biasanya karena Bash keluar lebih awal.

419 419 

420**Solusi:**420Uji bahwa Anda dapat menjangkau `downloads.claude.ai` dengan pemeriksaan di [Check network connectivity](#check-network-connectivity). Jika Anda menjangkau server, kegagalan asli mungkin bersifat intermiten; coba ulang perintah install. Anda juga dapat [mencoba metode instalasi alternatif](/docs/id/setup#install-claude-code).

421 

4221. **Periksa stabilitas jaringan**: Binary Claude Code dihosting di `downloads.claude.ai`. Uji bahwa Anda dapat menjangkaunya:

423 

424 ```bash theme={null}

425 curl -sI https://downloads.claude.ai/claude-code-releases/latest

426 ```

427 

428 Baris `HTTP/2 200` berarti Anda menjangkau server dan kegagalan asli mungkin bersifat intermiten; coba ulang perintah install. Hasil lain menunjukkan penyebabnya:

429 

430 * `403`: biasanya proxy atau network filter yang memblokir host, atau Claude Code [tidak tersedia di region Anda](https://www.anthropic.com/supported-countries)

431 * `5xx`: biasanya masalah layanan sementara; tunggu beberapa menit dan coba ulang

432 * `Could not resolve host` atau connection timeout: jaringan Anda memblokir download

433 

4342. **Coba metode instalasi alternatif**:

435 

436 Di macOS:

437 

438 ```bash theme={null}

439 brew install --cask claude-code

440 ```

441 

442 Di Windows:

443 

444 ```powershell theme={null}

445 winget install Anthropic.ClaudeCode

446 ```

447 

448 Kemudian jalankan `claude --version` untuk mengkonfirmasi: perintah mencetak nomor versi seperti `2.1.211 (Claude Code)`. Jika shell melaporkan `claude` tidak ditemukan, buka jendela terminal baru dan coba ulang: sesi tempat Anda menginstal menyimpan `PATH` lamanya.

449 421 

450<h3 id="homebrew-cask-unavailable-or-outdated">422<h3 id="homebrew-cask-unavailable-or-outdated">

451 Homebrew cask unavailable or outdated423 Homebrew cask unavailable or outdated

vs-code.md +17 −10

Details

58 58 

59 * **Activity Bar**: klik ikon Spark di sidebar kiri untuk membuka daftar sesi. Klik sesi apa pun untuk membukanya di [lokasi pilihan Anda](#extension-settings), atau mulai yang baru. Ikon ini selalu terlihat di Activity Bar.59 * **Activity Bar**: klik ikon Spark di sidebar kiri untuk membuka daftar sesi. Klik sesi apa pun untuk membukanya di [lokasi pilihan Anda](#extension-settings), atau mulai yang baru. Ikon ini selalu terlihat di Activity Bar.

60 * **Command Palette**: `Cmd+Shift+P` (Mac) atau `Ctrl+Shift+P` (Windows/Linux), ketik "Claude Code", dan pilih opsi seperti "Open in New Tab"60 * **Command Palette**: `Cmd+Shift+P` (Mac) atau `Ctrl+Shift+P` (Windows/Linux), ketik "Claude Code", dan pilih opsi seperti "Open in New Tab"

61 * **Status Bar**: jika Anda telah menetapkan [`preferredLocation`](#extension-settings) ke `sidebar`, atau membuka Claude dengan **Claude Code: Open in Side Bar**, klik **✱ Claude Code** di sudut kanan bawah jendela. Ini berfungsi bahkan ketika tidak ada file yang terbuka.61 * **Status Bar**: jika Anda telah menetapkan [`preferredLocation`](#extension-settings) ke `sidebar`, atau membuka Claude dengan **Claude Code: Open in Side Bar**, klik **✻ Claude Code** di sudut kanan bawah jendela. Ini berfungsi bahkan ketika tidak ada file yang terbuka.

62 62 

63 Anda dapat menyeret panel Claude untuk memposisikannya kembali di mana saja di VS Code. Lihat [Sesuaikan alur kerja Anda](#customize-your-workflow) untuk detail.63 Anda dapat menyeret panel Claude untuk memposisikannya kembali di mana saja di VS Code. Lihat [Sesuaikan alur kerja Anda](#customize-your-workflow) untuk detail.

64 </Step>64 </Step>


116 * Pilih **Output styles** di bagian Customize untuk memilih [gaya output](/docs/id/output-styles), termasuk gaya kustom Anda. Memerlukan Claude Code v2.1.257 atau lebih baru.116 * Pilih **Output styles** di bagian Customize untuk memilih [gaya output](/docs/id/output-styles), termasuk gaya kustom Anda. Memerlukan Claude Code v2.1.257 atau lebih baru.

117 117 

118 Untuk membuat gaya kustom sebagai gantinya, pilih **Build a custom style** dari menu **Output styles**. Claude Code menulis [file gaya](/docs/id/output-styles#create-a-custom-output-style) untuk Anda di tingkat proyek atau pengguna. Memerlukan Claude Code v2.1.261 atau lebih baru.118 Untuk membuat gaya kustom sebagai gantinya, pilih **Build a custom style** dari menu **Output styles**. Claude Code menulis [file gaya](/docs/id/output-styles#create-a-custom-output-style) untuk Anda di tingkat proyek atau pengguna. Memerlukan Claude Code v2.1.261 atau lebih baru.

119 * Pilih **Hooks** di bagian Customize untuk melihat [hooks](/docs/id/hooks) yang dimuat dalam sesi, dikelompokkan berdasarkan acara. Anda dapat menambah, mengedit, atau menghapus hooks yang disimpan di file pengaturan pengguna, proyek, dan lokal Anda. Hooks dari sumber lain, seperti pengaturan terkelola atau plugins, bersifat read-only. Memerlukan Claude Code v2.1.269 atau lebih baru.

120 * Pilih **Permissions** di bagian Customize untuk melihat [aturan izin](/docs/id/permissions) sesi, dikelompokkan menjadi Allow, Ask, dan Deny. Anda dapat menambahkan aturan ke pengaturan pengguna, proyek, atau lokal Anda dan menghapus aturan yang disimpan di sana. Aturan dari sumber lain, seperti pengaturan terkelola atau persetujuan yang dibuat hanya untuk sesi ini, bersifat read-only. Memerlukan Claude Code v2.1.269 atau lebih baru.

119 * Bagian Settings mencakup **Enable Remote Control for all sessions**, yang menetapkan [`remoteControlAtStartup`](/docs/id/settings-reference#remotecontrolatstartup) untuk mengontrol apakah [sesi interaktif baru terhubung ke Remote Control secara otomatis](/docs/id/remote-control#enable-remote-control-for-all-sessions). Memerlukan Claude Code v2.1.203 atau lebih baru.121 * Bagian Settings mencakup **Enable Remote Control for all sessions**, yang menetapkan [`remoteControlAtStartup`](/docs/id/settings-reference#remotecontrolatstartup) untuk mengontrol apakah [sesi interaktif baru terhubung ke Remote Control secara otomatis](/docs/id/remote-control#enable-remote-control-for-all-sessions). Memerlukan Claude Code v2.1.203 atau lebih baru.

120 122 

121 Ketika Anda mengalihkan toggle on atau off di jendela VS Code, perubahan berlaku untuk sesi yang sudah terbuka di jendela VS Code itu, bukan hanya untuk sesi yang Anda mulai setelahnya. Jika Anda mematikannya, sesi terbuka akan terputus. Dengan Claude Code v2.1.261 atau lebih baru, perubahan juga mencapai sesi yang terbuka di jendela VS Code lainnya Anda.123 Ketika Anda mengalihkan toggle on atau off di jendela VS Code, perubahan berlaku untuk sesi yang sudah terbuka di jendela VS Code itu, bukan hanya untuk sesi yang Anda mulai setelahnya. Jika Anda mematikannya, sesi terbuka akan terputus. Dengan Claude Code v2.1.261 atau lebih baru, perubahan juga mencapai sesi yang terbuka di jendela VS Code lainnya Anda.

122 * Bagian Settings juga mencakup **Focus view**, yang menyembunyikan panggilan alat, hasil alat, dan pemikiran di balik baris yang dapat diperluas, meninggalkan prompt Anda dan respons Claude. Daftar tugas terbaru Claude tetap terlihat, begitu juga dengan teks pertanyaan yang tertunda dari Claude yang ditanyakan; ini memerlukan Claude Code v2.1.225 atau lebih baru. Alihkan di sana, dengan `Ctrl+Option+F` (Mac) / `Ctrl+Alt+F` (Windows/Linux), atau dari Command Palette dengan **Claude Code: Toggle Focus view**. Perubahan berlaku untuk setiap sesi terbuka dan bertahan di seluruh sesi. Memerlukan Claude Code v2.1.221 atau lebih baru.124 * Bagian Settings juga mencakup **Focus view**, yang menyembunyikan panggilan alat, hasil alat, dan pemikiran di balik baris yang dapat diperluas, meninggalkan prompt Anda dan respons Claude. Alihkan di sana, dengan `Ctrl+Option+F` (Mac) / `Ctrl+Alt+F` (Windows/Linux), atau dari Command Palette dengan **Claude Code: Toggle Focus view**. Perubahan berlaku untuk setiap sesi terbuka dan bertahan di seluruh sesi. Memerlukan Claude Code v2.1.221 atau lebih baru.

125 

126 Daftar tugas terbaru Claude tetap terlihat, begitu juga dengan teks pertanyaan yang tertunda dari Claude yang ditanyakan; ini memerlukan Claude Code v2.1.225 atau lebih baru. Saat Claude menjalankan [subagents](/docs/id/sub-agents), baris kemajuan langsung dengan aktivitas terbaru mereka muncul di bawah grup panggilan alat yang memulainya. Ini memerlukan Claude Code v2.1.269 atau lebih baru.

123 * Untuk melaporkan bug, klik **Report a problem** di bagian bawah menu, atau ketik `/bug` atau `/feedback` dengan deskripsi opsional yang mengisi laporan sebelumnya. Ketika Anda mengirimkan laporan dan Anda masuk ke Anthropic pada koneksi pihak pertama, Claude Code mengirimkannya ke Anthropic. Pada penyedia pihak ketiga, atau tanpa kredensial Anthropic, dialog masih terbuka, tetapi mengirimkan menunjukkan kesalahan dan tidak mengirim apa pun: tidak seperti `/bug` CLI, ekstensi tidak menulis arsip lokal. Memerlukan Claude Code v2.1.229 atau lebih baru.127 * Untuk melaporkan bug, klik **Report a problem** di bagian bawah menu, atau ketik `/bug` atau `/feedback` dengan deskripsi opsional yang mengisi laporan sebelumnya. Ketika Anda mengirimkan laporan dan Anda masuk ke Anthropic pada koneksi pihak pertama, Claude Code mengirimkannya ke Anthropic. Pada penyedia pihak ketiga, atau tanpa kredensial Anthropic, dialog masih terbuka, tetapi mengirimkan menunjukkan kesalahan dan tidak mengirim apa pun: tidak seperti `/bug` CLI, ekstensi tidak menulis arsip lokal. Memerlukan Claude Code v2.1.229 atau lebih baru.

124* **Side questions**: ketik `/btw` diikuti oleh pertanyaan untuk bertanya tentang sesi Anda [tanpa menambah percakapan](/docs/id/interactive-mode#side-questions-with-%2Fbtw). Jawaban terbuka di panel di samping obrolan, di mana Anda dapat mengajukan pertanyaan lanjutan. Thread bertahan dari muat ulang jendela. Claude Code menyimpan 20 pertukaran terbaru dan thread yang disimpan kedaluwarsa pada jadwal [`cleanupPeriodDays`](/docs/id/settings-reference#cleanupperioddays), selama Claude Code dapat [dengan aman menentukan periode retensi](/docs/id/claude-directory#cleaned-up-automatically). Untuk menghapus thread, klik ikon tempat sampah di panel. Memerlukan Claude Code v2.1.227 atau lebih baru.128* **Side questions**: ketik `/btw` diikuti oleh pertanyaan untuk bertanya tentang sesi Anda [tanpa menambah percakapan](/docs/id/interactive-mode#side-questions-with-%2Fbtw). Jawaban terbuka di panel di samping obrolan, di mana Anda dapat mengajukan pertanyaan lanjutan. Thread bertahan dari muat ulang jendela. Claude Code menyimpan 20 pertukaran terbaru dan thread yang disimpan kedaluwarsa pada jadwal [`cleanupPeriodDays`](/docs/id/settings-reference#cleanupperioddays), selama Claude Code dapat [dengan aman menentukan periode retensi](/docs/id/claude-directory#cleaned-up-automatically). Untuk menghapus thread, klik ikon tempat sampah di panel. Memerlukan Claude Code v2.1.227 atau lebih baru.

125* **Context indicator**: kotak prompt menunjukkan berapa banyak jendela konteks Claude yang Anda gunakan. Claude secara otomatis mengompres saat diperlukan, atau Anda dapat menjalankan `/compact` secara manual.129* **Context indicator**: kotak prompt menunjukkan berapa banyak jendela konteks Claude yang Anda gunakan. Claude secara otomatis mengompres saat diperlukan, atau Anda dapat menjalankan `/compact` secara manual.

130* **Agent map**: ketika percakapan mencakup [subagents](/docs/id/sub-agents), hitungan agen seperti **2 agents** muncul di bagian bawah kotak prompt. Titiknya menunjukkan apakah ada subagent yang bekerja atau menunggu izin Anda.

131 

132 Klik hitungan agen untuk membuka peta agen, yang menggambar subagent percakapan sebagai pohon di bawah agen utama, masing-masing dengan status, waktu yang telah berlalu, dan hitungan token. Klik subagent untuk melihat prompt dan panggilan alat, buka transkrip read-only, atau hentikan saat berjalan. Memerlukan Claude Code v2.1.269 atau lebih baru.

126* **Extended thinking**: memungkinkan Claude menghabiskan lebih banyak waktu untuk bernalar melalui masalah yang kompleks. Alihkan melalui menu perintah (`/`). Penalaran Claude muncul dalam percakapan sebagai blok yang runtuh: klik blok untuk membacanya, atau tekan `Ctrl+O` untuk memperluas atau meruntuhkan setiap blok pemikiran dalam sesi. Lihat [Extended thinking](/docs/id/model-config#extended-thinking) untuk detail.133* **Extended thinking**: memungkinkan Claude menghabiskan lebih banyak waktu untuk bernalar melalui masalah yang kompleks. Alihkan melalui menu perintah (`/`). Penalaran Claude muncul dalam percakapan sebagai blok yang runtuh: klik blok untuk membacanya, atau tekan `Ctrl+O` untuk memperluas atau meruntuhkan setiap blok pemikiran dalam sesi. Lihat [Extended thinking](/docs/id/model-config#extended-thinking) untuk detail.

127* **Multi-line input**: tekan `Shift+Enter` untuk menambahkan baris baru tanpa mengirim. Ini juga berfungsi di input teks bebas "Other" dari dialog pertanyaan.134* **Multi-line input**: tekan `Shift+Enter` untuk menambahkan baris baru tanpa mengirim. Ini juga berfungsi di input teks bebas "Other" dari dialog pertanyaan.

128 135 


139 146 

140Untuk PDF besar, Anda dapat meminta Claude membaca halaman tertentu alih-alih seluruh file: satu halaman, rentang seperti halaman 1-10, atau rentang terbuka seperti halaman 3 ke depan.147Untuk PDF besar, Anda dapat meminta Claude membaca halaman tertentu alih-alih seluruh file: satu halaman, rentang seperti halaman 1-10, atau rentang terbuka seperti halaman 3 ke depan.

141 148 

142Ketika Anda memilih teks di editor, Claude dapat melihat kode yang disorot secara otomatis. Footer kotak prompt menunjukkan berapa banyak baris yang dipilih. Tekan `Option+K` (Mac) / `Alt+K` (Windows/Linux) untuk menyisipkan @-mention dengan jalur file dan nomor baris (misalnya, `@app.ts#5-10`). Klik indikator seleksi untuk mengalihkan apakah Claude dapat melihat teks yang disorot Anda - ikon eye-slash berarti seleksi disembunyikan dari Claude.149Ketika Anda memilih teks di editor, Claude dapat melihat kode yang disorot secara otomatis. Footer kotak prompt menunjukkan berapa banyak baris yang dipilih. Tekan `Option+K` (Mac) / `Alt+K` (Windows/Linux) untuk menyisipkan @-mention dengan jalur file dan nomor baris (misalnya, `@app.ts#5-10`). Klik **X** pada indikator seleksi untuk menghapusnya sehingga Claude tidak menerima seleksi. Indikator muncul kembali ketika Anda memilih teks lain atau beralih ke file yang berbeda.

143 150 

144Untuk melampirkan gambar, tempel dari clipboard Anda ke kotak prompt. Anda juga dapat menahan `Shift` sambil menyeret file ke kotak prompt untuk menambahkannya sebagai lampiran. Klik X pada lampiran apa pun untuk menghapusnya dari konteks.151Untuk melampirkan gambar, tempel dari clipboard Anda ke kotak prompt. Anda juga dapat menahan `Shift` sambil menyeret file ke kotak prompt untuk menambahkannya sebagai lampiran. Klik X pada lampiran apa pun untuk menghapusnya dari konteks.

145 152 


193 200 

194Jalankan `/usage` untuk membuka dialog Account & usage. Dialog memerlukan masuk claude.ai, jadi tidak ditawarkan pada [penyedia pihak ketiga](#use-third-party-providers). Ini menunjukkan akun yang masuk, paket Anda, dan bilah penggunaan untuk batas paket Anda, seperti sesi saat ini dan minggu ini. Setiap bilah menunjukkan berapa lama sampai batasnya direset.201Jalankan `/usage` untuk membuka dialog Account & usage. Dialog memerlukan masuk claude.ai, jadi tidak ditawarkan pada [penyedia pihak ketiga](#use-third-party-providers). Ini menunjukkan akun yang masuk, paket Anda, dan bilah penggunaan untuk batas paket Anda, seperti sesi saat ini dan minggu ini. Setiap bilah menunjukkan berapa lama sampai batasnya direset.

195 202 

196Dialog juga merinci apa yang berkontribusi pada batas paket Anda. Ini menandai perilaku yang menyumbang 10% atau lebih dari penggunaan baru-baru ini, seperti cache misses, konteks panjang, dan sesi yang berat subagent atau sangat paralel, masing-masing dengan tip untuk menguranginya. Tabel atribusi menunjukkan berapa banyak penggunaan yang berasal dari setiap skill, subagent, plugin, dan server MCP. Memerlukan Claude Code v2.1.174 atau lebih baru.203Dialog juga merinci apa yang berkontribusi pada batas paket Anda. Ini menandai perilaku yang menyumbang 10% atau lebih dari penggunaan baru-baru ini, seperti cache misses, konteks panjang, dan sesi yang berat subagent atau sangat paralel, masing-masing dengan tip untuk menguranginya. Tabel atribusi menunjukkan berapa banyak penggunaan yang berasal dari setiap skill, subagent, plugin, dan server MCP.

197 204 

198Gunakan toggle Day dan Week untuk beralih antara 24 jam terakhir dan 7 hari terakhir. Angka-angka tersebut perkiraan dan dihitung dari sesi lokal di mesin ini, jadi penggunaan dari perangkat lain atau claude.ai tidak disertakan. Untuk informasi lebih lanjut tentang pelacakan dan pengurangan penggunaan, lihat [Track your costs](/docs/id/costs#track-your-costs).205Gunakan toggle Day dan Week untuk beralih antara 24 jam terakhir dan 7 hari terakhir. Angka-angka tersebut perkiraan dan dihitung dari sesi lokal di mesin ini, jadi penggunaan dari perangkat lain atau claude.ai tidak disertakan. Untuk informasi lebih lanjut tentang pelacakan dan pengurangan penggunaan, lihat [Track your costs](/docs/id/costs#track-your-costs).

199 206 


238 245 

239* **Kelompokkan atau pisahkan sesi**: klik kanan sesi untuk membuat grup darinya, memindahkannya ke grup yang ada, atau menghapusnya dari grupnya. Setiap sesi termasuk dalam satu grup pada satu waktu, jadi memindahkannya ke grup lain menghapusnya dari yang pertama.246* **Kelompokkan atau pisahkan sesi**: klik kanan sesi untuk membuat grup darinya, memindahkannya ke grup yang ada, atau menghapusnya dari grupnya. Setiap sesi termasuk dalam satu grup pada satu waktu, jadi memindahkannya ke grup lain menghapusnya dari yang pertama.

240* **Pindahkan beberapa sesi sekaligus**: `Cmd`-klik (Mac) / `Ctrl`-klik (Windows/Linux) setiap sesi, atau `Shift`-klik untuk memilih rentang, kemudian klik kanan pilihan.247* **Pindahkan beberapa sesi sekaligus**: `Cmd`-klik (Mac) / `Ctrl`-klik (Windows/Linux) setiap sesi, atau `Shift`-klik untuk memilih rentang, kemudian klik kanan pilihan.

241* **Kelompokkan sesi dari tabnya**: jalankan **Claude Code: Add Session Tab to Group** dari Command Palette, atau klik kanan tab editor sesi, kemudian pilih atau buat grup. Memerlukan Claude Code v2.1.257 atau lebih baru.248* **Kelompokkan sesi dari tabnya**: jalankan **Claude Code: Add Session Tab to Group** dari Command Palette, kemudian pilih atau buat grup. Memerlukan Claude Code v2.1.257 atau lebih baru.

242* **Ubah nama atau hapus grup**: klik kanan header grup. Menghapus grup hanya menghapus grup, dan sesinya kembali ke daftar yang tidak dikelompokkan.249* **Ubah nama atau hapus grup**: klik kanan header grup. Menghapus grup hanya menghapus grup, dan sesinya kembali ke daftar yang tidak dikelompokkan.

243 250 

244Ekstensi menyimpan grup per folder workspace, sehingga mereka bertahan dari reload jendela dan muncul di setiap jendela tempat Anda membuka folder yang sama. Saat Anda mencari daftar, ekstensi menampilkan kecocokan dalam satu daftar datar di semua grup.251Ekstensi menyimpan grup per folder workspace, sehingga mereka bertahan dari reload jendela dan muncul di setiap jendela tempat Anda membuka folder yang sama. Saat Anda mencari daftar, ekstensi menampilkan kecocokan dalam satu daftar datar di semua grup.


359| Reopen Closed Session | `Cmd+Shift+T` (Mac) / `Ctrl+Shift+T` (Windows/Linux) | Buka kembali tab sesi Claude yang ditutup paling baru. Jatuh kembali ke pembukaan kembali editor normal VS Code ketika tab yang ditutup terakhir bukan sesi Claude. Nonaktifkan dengan `enableReopenClosedSessionShortcut` |366| Reopen Closed Session | `Cmd+Shift+T` (Mac) / `Ctrl+Shift+T` (Windows/Linux) | Buka kembali tab sesi Claude yang ditutup paling baru. Jatuh kembali ke pembukaan kembali editor normal VS Code ketika tab yang ditutup terakhir bukan sesi Claude. Nonaktifkan dengan `enableReopenClosedSessionShortcut` |

360| Insert @-Mention Reference | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | Sisipkan referensi ke file saat ini dan pilihan (memerlukan editor fokus) |367| Insert @-Mention Reference | `Option+K` (Mac) / `Alt+K` (Windows/Linux) | Sisipkan referensi ke file saat ini dan pilihan (memerlukan editor fokus) |

361| Toggle Focus view | `Ctrl+Option+F` (Mac) / `Ctrl+Alt+F` (Windows/Linux) | Sembunyikan atau tampilkan aktivitas alat dalam percakapan. Bekerja saat panel Claude atau sidebar terlihat. Memerlukan Claude Code v2.1.221 atau lebih baru |368| Toggle Focus view | `Ctrl+Option+F` (Mac) / `Ctrl+Alt+F` (Windows/Linux) | Sembunyikan atau tampilkan aktivitas alat dalam percakapan. Bekerja saat panel Claude atau sidebar terlihat. Memerlukan Claude Code v2.1.221 atau lebih baru |

362| Rename Session Tab | - | Ubah nama sesi di tab Claude aktif. Perintah juga muncul di menu klik kanan tab. Memerlukan Claude Code v2.1.257 atau lebih baru |369| Rename Session Tab | - | Ubah nama sesi di tab Claude aktif. Memerlukan Claude Code v2.1.257 atau lebih baru |

363| Add Session Tab to Group | - | Tambahkan sesi di tab Claude aktif ke [grup sesi](#organize-sessions-into-groups) yang Anda pilih atau buat. Perintah juga muncul di menu klik kanan tab. Memerlukan Claude Code v2.1.257 atau lebih baru |370| Add Session Tab to Group | - | Tambahkan sesi di tab Claude aktif ke [grup sesi](#organize-sessions-into-groups) yang Anda pilih atau buat. Memerlukan Claude Code v2.1.257 atau lebih baru |

364| Mark Session as Unread | - | Tandai sesi di tab Claude aktif sebagai belum dibaca dalam daftar sesi. Perintah juga muncul di menu klik kanan tab. Memerlukan Claude Code v2.1.257 atau lebih baru |371| Mark Session as Unread | - | Tandai sesi di tab Claude aktif sebagai belum dibaca dalam daftar sesi. Memerlukan Claude Code v2.1.257 atau lebih baru |

365| Show Logs | - | Lihat log debug ekstensi |372| Show Logs | - | Lihat log debug ekstensi |

366| Logout | - | Keluar dari akun Anthropic Anda |373| Logout | - | Keluar dari akun Anthropic Anda |

367 374 


424 431 

425Ekstensi memiliki dua jenis pengaturan:432Ekstensi memiliki dua jenis pengaturan:

426 433 

427* **Pengaturan ekstensi** di VS Code: mengontrol perilaku ekstensi dalam VS Code. Buka dengan `Cmd+,` (Mac) atau `Ctrl+,` (Windows/Linux), kemudian buka Extensions → Claude Code. Anda juga dapat mengetik `/` dan memilih **General Config** untuk membuka pengaturan.434* **Pengaturan ekstensi** di VS Code: mengontrol perilaku ekstensi dalam VS Code. Buka dengan `Cmd+,` (Mac) atau `Ctrl+,` (Windows/Linux), kemudian buka Extensions → Claude Code. Anda juga dapat mengetik `/` dan memilih **General config…** untuk membuka pengaturan.

428* **Pengaturan Claude Code** di `~/.claude/settings.json`: dibagikan antara ekstensi dan CLI. Gunakan untuk perintah yang diizinkan, variabel lingkungan, hooks, dan server MCP. Pada paket Pro, Max, dan Team, ini juga merupakan salah satu input untuk mode izin percakapan dimulai. [Switch permission modes](/docs/id/permission-modes#switch-permission-modes) mencantumkan urutannya. Lihat [Settings](/docs/id/settings) untuk detail.435* **Pengaturan Claude Code** di `~/.claude/settings.json`: dibagikan antara ekstensi dan CLI. Gunakan untuk perintah yang diizinkan, variabel lingkungan, hooks, dan server MCP. Pada paket Pro, Max, dan Team, ini juga merupakan salah satu input untuk mode izin percakapan dimulai. [Switch permission modes](/docs/id/permission-modes#switch-permission-modes) mencantumkan urutannya. Lihat [Settings](/docs/id/settings) untuk detail.

429 436 

430<Tip>437<Tip>


6594. **Nonaktifkan ekstensi yang bertentangan**: Nonaktifkan sementara ekstensi AI lainnya (Cline, Continue, dll.)6664. **Nonaktifkan ekstensi yang bertentangan**: Nonaktifkan sementara ekstensi AI lainnya (Cline, Continue, dll.)

6605. **Periksa kepercayaan workspace**: Ekstensi tidak berfungsi dalam Mode Terbatas6675. **Periksa kepercayaan workspace**: Ekstensi tidak berfungsi dalam Mode Terbatas

661 668 

662Alternatifnya, jika Anda telah menetapkan [`preferredLocation`](#extension-settings) ke `sidebar`, atau membuka Claude dengan **Claude Code: Open in Side Bar**, klik "✱ Claude Code" di **Status Bar** (sudut kanan bawah). Ini berfungsi bahkan tanpa file yang terbuka. Anda juga dapat menggunakan **Command Palette** (`Cmd+Shift+P` / `Ctrl+Shift+P`) dan ketik "Claude Code".669Alternatifnya, jika Anda telah menetapkan [`preferredLocation`](#extension-settings) ke `sidebar`, atau membuka Claude dengan **Claude Code: Open in Side Bar**, klik "✻ Claude Code" di **Status Bar** (sudut kanan bawah). Ini berfungsi bahkan tanpa file yang terbuka. Anda juga dapat menggunakan **Command Palette** (`Cmd+Shift+P` / `Ctrl+Shift+P`) dan ketik "Claude Code".

663 670 

664<h3 id="cmd-esc-does-nothing-on-macos">671<h3 id="cmd-esc-does-nothing-on-macos">

665 Cmd+Esc tidak melakukan apa pun di macOS672 Cmd+Esc tidak melakukan apa pun di macOS

Details

93 Hubungkan dari terminal Anda93 Hubungkan dari terminal Anda

94</h3>94</h3>

95 95 

96Jika Anda sudah menggunakan GitHub CLI (`gh`), Anda dapat mengatur Claude Code di web tanpa membuka browser. Ini memerlukan [Claude Code CLI](/docs/id/quickstart). Pada paket Team dan Enterprise, `/web-setup` tersedia hanya setelah Owner mengaktifkan [Quick web setup](/docs/id/claude-code-on-the-web#github-authentication-options).96Jika Anda sudah menggunakan GitHub CLI (`gh`), Anda dapat mengatur Claude Code di web dari terminal Anda. Ini memerlukan [Claude Code CLI](/docs/id/quickstart). Pada paket Team dan Enterprise, `/web-setup` tersedia hanya setelah Owner mengaktifkan [Quick web setup](/docs/id/claude-code-on-the-web#github-authentication-options).

97 97 

98Ketika Anda menjalankan `/web-setup`, Claude Code membaca token yang dicetak `gh auth token`, meminta Anda untuk mengonfirmasi, dan mengirimkan token ke Anthropic. Anthropic menyimpannya terenkripsi dengan akun claude.ai Anda, dan sesi cloud Anda menggunakannya untuk akses GitHub sampai Anda [menghapusnya](#remove-the-web-setup-token). Sesi cloud kemudian dapat mengakses repositori apa pun yang dapat diakses token tersebut, tanpa instalasi Claude GitHub App.98Ketika Anda menjalankan `/web-setup`, Claude Code membaca token yang dicetak `gh auth token`, meminta Anda untuk mengonfirmasi, dan mengirimkan token ke Anthropic. Anthropic menyimpannya terenkripsi dengan akun claude.ai Anda, dan sesi cloud Anda menggunakannya untuk akses GitHub sampai Anda [menghapusnya](#remove-the-web-setup-token). Sesi cloud kemudian dapat mengakses repositori apa pun yang dapat diakses token tersebut, tanpa instalasi Claude GitHub App.

99 99 

worktrees.md +1 −1

Details

9[git worktree](https://git-scm.com/docs/git-worktree) adalah direktori kerja terpisah dengan file dan cabang sendiri, berbagi riwayat repositori dan remote yang sama dengan checkout utama Anda. Menjalankan setiap sesi Claude Code dalam worktree-nya sendiri berarti edit dalam satu sesi tidak akan pernah menyentuh file di sesi lain, sehingga satu sesi dapat membangun fitur sementara sesi kedua memperbaiki bug.9[git worktree](https://git-scm.com/docs/git-worktree) adalah direktori kerja terpisah dengan file dan cabang sendiri, berbagi riwayat repositori dan remote yang sama dengan checkout utama Anda. Menjalankan setiap sesi Claude Code dalam worktree-nya sendiri berarti edit dalam satu sesi tidak akan pernah menyentuh file di sesi lain, sehingga satu sesi dapat membangun fitur sementara sesi kedua memperbaiki bug.

10 10 

11<Note>11<Note>

12 Worktrees memerlukan repositori git; untuk sistem kontrol versi lainnya, [konfigurasikan hook untuk menggantikan logika git](#non-git-version-control). Di [aplikasi desktop](/docs/id/desktop#work-in-parallel-with-sessions), setiap sesi baru mendapatkan worktree-nya sendiri secara otomatis.12 Worktrees memerlukan repositori git; untuk sistem kontrol versi lainnya, [konfigurasikan hook untuk menggantikan logika git](#non-git-version-control). Di [aplikasi desktop](/docs/id/desktop#work-in-parallel-with-sessions), pilih opsi **worktree** saat Anda memulai sesi untuk memberikannya worktree-nya sendiri.

13</Note>13</Note>

14 14 

15Worktrees adalah salah satu dari beberapa cara untuk menjalankan Claude secara paralel. Mereka mengisolasi edit file. [Subagents](/docs/id/sub-agents) membagi pekerjaan di dalam satu sesi, dan [cross-session messaging](/docs/id/cross-session-messaging) memungkinkan Claude melewatkan temuan antar sesi di worktrees Anda. Lihat [Run agents in parallel](/docs/id/agents) untuk membandingkan pendekatan, atau lompat ke [Isolate subagents with worktrees](#isolate-subagents-with-worktrees) untuk menggunakan worktrees dan subagents bersama-sama.15Worktrees adalah salah satu dari beberapa cara untuk menjalankan Claude secara paralel. Mereka mengisolasi edit file. [Subagents](/docs/id/sub-agents) membagi pekerjaan di dalam satu sesi, dan [cross-session messaging](/docs/id/cross-session-messaging) memungkinkan Claude melewatkan temuan antar sesi di worktrees Anda. Lihat [Run agents in parallel](/docs/id/agents) untuk membandingkan pendekatan, atau lompat ke [Isolate subagents with worktrees](#isolate-subagents-with-worktrees) untuk menggunakan worktrees dan subagents bersama-sama.