SpyBara
Go Premium

Documentation 2026-05-13 23:01 UTC to 2026-05-14 17:02 UTC

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

235 235 

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

237 237 

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

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

240 240 

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


331 331 

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

333 333 

334Contoh ini memblokir setiap upaya untuk menulis ke direktori `/etc` dan menggunakan dua output fields bersama-sama: `permissionDecision: 'deny'` menghentikan pemanggilan tool, sementara `systemMessage` menyuntikkan pengingat ke dalam percakapan sehingga agent menerima konteks tentang mengapa operasi diblokir dan menghindari mencoba lagi:334Contoh ini memblokir penulisan ke direktori `/etc` dan menjelaskan alasannya kepada model dan pengguna:

335 

336* `permissionDecision: 'deny'` menghentikan pemanggilan tool.

337* `permissionDecisionReason` memberitahu model mengapa, sehingga menghindari percobaan ulang.

338* `systemMessage` menunjukkan kepada pengguna apa yang terjadi.

335 339 

336<CodeGroup>340<CodeGroup>

337 ```python Python theme={null}341 ```python Python theme={null}


340 344 

341 if file_path.startswith("/etc"):345 if file_path.startswith("/etc"):

342 return {346 return {

343 # Top-level field: inject guidance into the conversation347 # Top-level field: message shown to the user

344 "systemMessage": "Remember: system directories like /etc are protected.",348 "systemMessage": "Remember: system directories like /etc are protected.",

345 # hookSpecificOutput: block the operation349 # hookSpecificOutput: block the operation

346 "hookSpecificOutput": {350 "hookSpecificOutput": {


360 364 

361 if (filePath?.startsWith("/etc")) {365 if (filePath?.startsWith("/etc")) {

362 return {366 return {

363 // Top-level field: inject guidance into the conversation367 // Top-level field: message shown to the user

364 systemMessage: "Remember: system directories like /etc are protected.",368 systemMessage: "Remember: system directories like /etc are protected.",

365 // hookSpecificOutput: block the operation369 // hookSpecificOutput: block the operation

366 hookSpecificOutput: {370 hookSpecificOutput: {


807 811 

808### systemMessage not appearing in output812### systemMessage not appearing in output

809 813 

810Field `systemMessage` menambahkan konteks ke percakapan yang dilihat model, tetapi mungkin tidak muncul di semua mode output SDK. Jika Anda perlu surface hook decisions ke aplikasi Anda, log mereka secara terpisah atau gunakan dedicated output channel.814Field `systemMessage` menampilkan pesan kepada pengguna, bukan model. Secara default SDK tidak menampilkan hook output di message stream, jadi pesan mungkin tidak muncul kecuali Anda mengatur `includeHookEvents` (`include_hook_events` di Python). Untuk meneruskan konteks ke model sebagai gantinya, kembalikan [`additionalContext`](/id/hooks#add-context-for-claude).

815 

816Jika Anda perlu menampilkan hook decisions ke aplikasi Anda dengan andal, log mereka secara terpisah atau gunakan dedicated output channel.

811 817 

812## Related resources818## Related resources

813 819 

Details

1860Mengembalikan [`HookJSONOutput`](#hookjsonoutput) yang mungkin berisi:1860Mengembalikan [`HookJSONOutput`](#hookjsonoutput) yang mungkin berisi:

1861 1861 

1862* `decision`: `"block"` untuk memblokir tindakan1862* `decision`: `"block"` untuk memblokir tindakan

1863* `systemMessage`: Pesan sistem untuk ditambahkan ke transkrip1863* `systemMessage`: Pesan peringatan yang ditampilkan kepada pengguna

1864* `hookSpecificOutput`: Data output spesifik hook1864* `hookSpecificOutput`: Data output spesifik hook

1865 1865 

1866### `HookContext`1866### `HookContext`


2645 2645 

2646**Nama tool:** `TodoWrite`2646**Nama tool:** `TodoWrite`

2647 2647 

2648<Note>

2649 `TodoWrite` sudah usang dan akan dihapus dalam rilis mendatang. Gunakan `TaskCreate`, `TaskGet`, `TaskUpdate`, dan `TaskList` sebagai gantinya. Atur `CLAUDE_CODE_ENABLE_TASKS=1` untuk memilih. Lihat [Migrate to Task tools](/id/agent-sdk/todo-tracking#migrate-to-task-tools) untuk cara memantau perubahan kode.

2650</Note>

2651 

2648**Input:**2652**Input:**

2649 2653 

2650```python theme={null}2654```python theme={null}


2668}2672}

2669```2673```

2670 2674 

2675### TaskCreate

2676 

2677**Nama tool:** `TaskCreate`

2678 

2679**Input:**

2680 

2681```python theme={null}

2682{

2683 "subject": str, # Judul tugas singkat

2684 "description": str, # Badan tugas terperinci

2685 "activeForm": str | None, # Label bentuk present-tense ditampilkan saat sedang berlangsung

2686 "metadata": dict | None, # Metadata pemanggil arbitrer

2687}

2688```

2689 

2690**Output:**

2691 

2692```python theme={null}

2693{

2694 "task": {"id": str, "subject": str}, # Tugas yang dibuat dengan ID yang ditugaskan

2695}

2696```

2697 

2698### TaskUpdate

2699 

2700**Nama tool:** `TaskUpdate`

2701 

2702**Input:**

2703 

2704```python theme={null}

2705{

2706 "taskId": str, # ID tugas yang akan dipatch

2707 "status": Literal["pending", "in_progress", "completed", "deleted"] | None,

2708 "subject": str | None,

2709 "description": str | None,

2710 "activeForm": str | None,

2711 "addBlocks": list[str] | None, # ID tugas yang sekarang diblokir oleh tugas ini

2712 "addBlockedBy": list[str] | None, # ID tugas yang sekarang memblokir tugas ini

2713 "owner": str | None,

2714 "metadata": dict | None,

2715}

2716```

2717 

2718**Output:**

2719 

2720```python theme={null}

2721{

2722 "success": bool,

2723 "taskId": str,

2724 "updatedFields": list[str], # Nama bidang yang berubah

2725 "error": str | None,

2726 "statusChange": {"from": str, "to": str} | None,

2727}

2728```

2729 

2730### TaskGet

2731 

2732**Nama tool:** `TaskGet`

2733 

2734**Input:**

2735 

2736```python theme={null}

2737{

2738 "taskId": str, # ID tugas yang akan dibaca

2739}

2740```

2741 

2742**Output:**

2743 

2744```python theme={null}

2745{

2746 "task": {

2747 "id": str,

2748 "subject": str,

2749 "description": str,

2750 "status": Literal["pending", "in_progress", "completed"],

2751 "blocks": list[str],

2752 "blockedBy": list[str],

2753 } | None, # None saat ID tidak ditemukan

2754}

2755```

2756 

2757### TaskList

2758 

2759**Nama tool:** `TaskList`

2760 

2761**Input:**

2762 

2763```python theme={null}

2764{}

2765```

2766 

2767**Output:**

2768 

2769```python theme={null}

2770{

2771 "tasks": [

2772 {

2773 "id": str,

2774 "subject": str,

2775 "status": Literal["pending", "in_progress", "completed"],

2776 "owner": str | None,

2777 "blockedBy": list[str],

2778 }

2779 ],

2780}

2781```

2782 

2671### BashOutput2783### BashOutput

2672 2784 

2673**Nama tool:** `BashOutput`2785**Nama tool:** `BashOutput`

Details

389| `fallbackModel` | `string` | `undefined` | Model yang digunakan jika model utama gagal |389| `fallbackModel` | `string` | `undefined` | Model yang digunakan jika model utama gagal |

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

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

392| `includeHookEvents` | `boolean` | `false` | Sertakan event lifecycle hook dalam aliran pesan sebagai [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage), dan [`SDKHookResponseMessage`](#sdkhookresponsemessage) |

392| `includePartialMessages` | `boolean` | `false` | Sertakan event pesan parsial |393| `includePartialMessages` | `boolean` | `false` | Sertakan event pesan parsial |

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

394| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Gunakan `thinking` sebagai gantinya. Token maksimum untuk proses pemikiran |395| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Gunakan `thinking` sebagai gantinya. Token maksimum untuk proses pemikiran |


1596 | ReadMcpResourceInput1597 | ReadMcpResourceInput

1597 | SubscribeMcpResourceInput1598 | SubscribeMcpResourceInput

1598 | SubscribePollingInput1599 | SubscribePollingInput

1600 | TaskCreateInput

1601 | TaskGetInput

1602 | TaskListInput

1599 | TaskStopInput1603 | TaskStopInput

1604 | TaskUpdateInput

1600 | TodoWriteInput1605 | TodoWriteInput

1601 | UnsubscribeMcpResourceInput1606 | UnsubscribeMcpResourceInput

1602 | UnsubscribePollingInput1607 | UnsubscribePollingInput


1850**Nama tool:** `TaskCreate`1855**Nama tool:** `TaskCreate`

1851 1856 

1852```typescript theme={null}1857```typescript theme={null}

1853// Belum dieksport dari SDK; tentukan secara lokal.

1854type TaskCreateInput = {1858type TaskCreateInput = {

1855 subject: string;1859 subject: string;

1856 description: string;1860 description: string;


1866**Nama tool:** `TaskUpdate`1870**Nama tool:** `TaskUpdate`

1867 1871 

1868```typescript theme={null}1872```typescript theme={null}

1869// Belum dieksport dari SDK; tentukan secara lokal.

1870type TaskUpdateInput = {1873type TaskUpdateInput = {

1871 taskId: string;1874 taskId: string;

1872 status?: "pending" | "in_progress" | "completed" | "deleted";1875 status?: "pending" | "in_progress" | "completed" | "deleted";


1887**Nama tool:** `TaskGet`1890**Nama tool:** `TaskGet`

1888 1891 

1889```typescript theme={null}1892```typescript theme={null}

1890// Belum dieksport dari SDK; tentukan secara lokal.

1891type TaskGetInput = {1893type TaskGetInput = {

1892 taskId: string;1894 taskId: string;

1893};1895};


1900**Nama tool:** `TaskList`1902**Nama tool:** `TaskList`

1901 1903 

1902```typescript theme={null}1904```typescript theme={null}

1903// Belum dieksport dari SDK; tentukan secara lokal.

1904type TaskListInput = {};1905type TaskListInput = {};

1905```1906```

1906 1907 


1983 | MonitorOutput1984 | MonitorOutput

1984 | NotebookEditOutput1985 | NotebookEditOutput

1985 | ReadMcpResourceOutput1986 | ReadMcpResourceOutput

1987 | TaskCreateOutput

1988 | TaskGetOutput

1989 | TaskListOutput

1986 | TaskStopOutput1990 | TaskStopOutput

1991 | TaskUpdateOutput

1987 | TodoWriteOutput1992 | TodoWriteOutput

1988 | WebFetchOutput1993 | WebFetchOutput

1989 | WebSearchOutput;1994 | WebSearchOutput;


2347**Nama tool:** `TaskCreate`2352**Nama tool:** `TaskCreate`

2348 2353 

2349```typescript theme={null}2354```typescript theme={null}

2350// Not yet exported from the SDK; define locally.

2351type TaskCreateOutput = {2355type TaskCreateOutput = {

2352 task: {2356 task: {

2353 id: string;2357 id: string;


2363**Nama tool:** `TaskUpdate`2367**Nama tool:** `TaskUpdate`

2364 2368 

2365```typescript theme={null}2369```typescript theme={null}

2366// Not yet exported from the SDK; define locally.

2367type TaskUpdateOutput = {2370type TaskUpdateOutput = {

2368 success: boolean;2371 success: boolean;

2369 taskId: string;2372 taskId: string;


2383**Nama tool:** `TaskGet`2386**Nama tool:** `TaskGet`

2384 2387 

2385```typescript theme={null}2388```typescript theme={null}

2386// Not yet exported from the SDK; define locally.

2387type TaskGetOutput = {2389type TaskGetOutput = {

2388 task: {2390 task: {

2389 id: string;2391 id: string;


2403**Nama tool:** `TaskList`2405**Nama tool:** `TaskList`

2404 2406 

2405```typescript theme={null}2407```typescript theme={null}

2406// Not yet exported from the SDK; define locally.

2407type TaskListOutput = {2408type TaskListOutput = {

2408 tasks: Array<{2409 tasks: Array<{

2409 id: string;2410 id: string;

agent-view.md +47 −9

Details

46 </Step>46 </Step>

47 47 

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

49 Ketik prompt yang menjelaskan tugas dan tekan `Enter`. Sesi latar belakang baru dimulai pada tugas tersebut dan muncul sebagai baris yang menunjukkan apakah sedang bekerja, menunggu Anda, atau selesai. Sesi baru menggunakan model yang ditampilkan di header tampilan agen dan [mode izin](#permission-mode-and-settings) yang sama seperti yang Anda dapatkan saat menjalankan `claude` di direktori tersebut.49 Ketik prompt yang menjelaskan tugas dan tekan `Enter`. Sesi latar belakang baru dimulai pada tugas tersebut dan muncul sebagai baris yang menunjukkan apakah sedang bekerja, menunggu Anda, atau selesai. Sesi baru menggunakan model yang ditampilkan di header tampilan agen dan [mode izin](#permission-mode-model-and-effort) yang sama seperti yang Anda dapatkan saat menjalankan `claude` di direktori tersebut.

50 50 

51 Setiap prompt yang Anda masukkan di sini memulai sesi baru sendiri. Mengetik prompt lain dan menekan `Enter` meluncurkan sesi kedua bersama yang pertama daripada mengirim tindak lanjut ke sesi tersebut. Anda dapat menjalankan beberapa secara paralel dengan cara ini.51 Setiap prompt yang Anda masukkan di sini memulai sesi baru sendiri. Mengetik prompt lain dan menekan `Enter` meluncurkan sesi kedua bersama yang pertama daripada mengirim tindak lanjut ke sesi tersebut. Anda dapat menjalankan beberapa secara paralel dengan cara ini.

52 52 


74 74 

75Daftar menampilkan setiap sesi latar belakang yang telah Anda mulai, di seluruh semua proyek Anda. Sesi yang bekerja di satu repositori dan sesi lain di worktree berbeda keduanya muncul di sini, terlepas dari direktori mana yang Anda buka tampilan agen dari. Sesi interaktif yang Anda buka di terminal lain tidak muncul sampai Anda [mengirimnya ke latar belakang](#from-inside-a-session). [Subagents](/id/sub-agents) dan [teammates](/id/agent-teams) yang sesi hasilkan tidak tercantum sebagai baris terpisah.75Daftar menampilkan setiap sesi latar belakang yang telah Anda mulai, di seluruh semua proyek Anda. Sesi yang bekerja di satu repositori dan sesi lain di worktree berbeda keduanya muncul di sini, terlepas dari direktori mana yang Anda buka tampilan agen dari. Sesi interaktif yang Anda buka di terminal lain tidak muncul sampai Anda [mengirimnya ke latar belakang](#from-inside-a-session). [Subagents](/id/sub-agents) dan [teammates](/id/agent-teams) yang sesi hasilkan tidak tercantum sebagai baris terpisah.

76 76 

77Untuk membatasi tampilan ke satu proyek, luncurkan dengan `claude agents --cwd <path>`. Hanya sesi yang dimulai di bawah direktori itu yang muncul, termasuk yang berjalan di [worktree](/id/worktrees) yang dikirim darinya.

78 

77```text theme={null}79```text theme={null}

78Disematkan80Disematkan

79 ✽ clawd walk cycle Write assets/sprites/clawd-walk.png 3m81 ✽ clawd walk cycle Write assets/sprites/clawd-walk.png 3m


156 158 

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

158 160 

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

160 162 

161### Atur daftar163### Atur daftar

162 164 


171 173 

172Untuk menghapus sesi dari daftar, tekan `Ctrl+X` untuk menghentikannya dan `Ctrl+X` lagi dalam dua detik untuk menghapusnya. Menekan `Ctrl+X` pada header grup menghapus setiap sesi dalam grup itu setelah konfirmasi.174Untuk menghapus sesi dari daftar, tekan `Ctrl+X` untuk menghentikannya dan `Ctrl+X` lagi dalam dua detik untuk menghapusnya. Menekan `Ctrl+X` pada header grup menghapus setiap sesi dalam grup itu setelah konfirmasi.

173 175 

174Menghapus menghapus sesi dari tampilan agen dan membersihkan [worktree](#how-file-edits-are-isolated) nya, termasuk perubahan yang tidak dikomitkan di dalamnya, jadi dorong atau komitkan pekerjaan yang ingin Anda simpan sebelum menghapus. Transkrip percakapan tetap di disk dan tetap tersedia melalui `claude --resume`.176Menghapus menghapus sesi dari tampilan agen dan membersihkan [worktree](/id/worktrees) nya, termasuk perubahan yang tidak dikomitkan di dalamnya, jadi dorong atau komitkan pekerjaan yang ingin Anda simpan sebelum menghapus. Transkrip percakapan tetap di disk dan tetap tersedia melalui `claude --resume`.

175 177 

176Sesi yang selesai lebih lama dilipat menjadi baris `… N more` untuk menjaga daftar tetap pendek. Kegagalan dan sesi dengan permintaan tarik terbuka selalu tetap terlihat.178Sesi yang selesai lebih lama dilipat menjadi baris `… N more` untuk menjaga daftar tetap pendek. Kegagalan dan sesi dengan permintaan tarik terbuka selalu tetap terlihat.

177 179 


285 287 

286### Atur model288### Atur model

287 289 

288Nama model yang ditampilkan di header tampilan agen adalah default pengiriman. Sesi baru yang Anda mulai dari input menggunakan model ini, yang merupakan pengaturan yang sama yang [`/model`](/id/model-config) kontrol dalam sesi apa pun.290Nama model yang ditampilkan di header tampilan agen adalah default pengiriman. Sesi baru yang Anda mulai dari input menggunakan model ini, yang merupakan pengaturan yang sama yang [`/model`](/id/model-config) kontrol dalam sesi apa pun. Untuk menimpanya untuk seluruh sesi tampilan agen, berikan `--model` saat membuka tampilan agen. Lihat [Mode izin, model, dan upaya](#permission-mode-model-and-effort).

289 291 

290Setiap sesi latar belakang dapat berjalan pada model berbeda. Untuk menimpanya untuk satu sesi:292Setiap sesi latar belakang dapat berjalan pada model berbeda. Untuk menimpanya untuk satu sesi:

291 293 


293* Lampirkan ke sesi yang berjalan dan jalankan `/model` di sana. Perubahan bertahan jika sesi direspawn.295* Lampirkan ke sesi yang berjalan dan jalankan `/model` di sana. Perubahan bertahan jika sesi direspawn.

294* Kirim [subagent](/id/sub-agents) yang frontmatter-nya menetapkan bidang `model`.296* Kirim [subagent](/id/sub-agents) yang frontmatter-nya menetapkan bidang `model`.

295 297 

296### Mode izin dan pengaturan298### Mode izin, model, dan upaya

299 

300Sesi yang dikirim membaca [pengaturan](/id/settings) dari direktori tempat sesi berjalan, sama seperti jika Anda telah memulai `claude` di sana.

301 

302[Mode izin](/id/permissions) tergantung pada cara Anda memulai sesi. Melepaskan sesi yang ada dengan `/bg` atau `←` mempertahankan mode izin saat ini, jadi sesi yang Anda alihkan ke `acceptEdits` atau `auto` tetap dalam mode itu setelah detach. Mengirim dari input tampilan agen atau menjalankan `claude --bg` dari shell Anda menggunakan `defaultMode` dari pengaturan direktori itu, atau `permissionMode` dari [frontmatter subagent](/id/sub-agents#supported-frontmatter-fields) yang dikirim.

303 

304Untuk menetapkan default untuk setiap sesi yang Anda kirim dari tampilan agen, berikan salah satu dari `--permission-mode`, `--model`, atau `--effort` saat membukanya:

305 

306```bash theme={null}

307claude agents --permission-mode plan --model opus --effort high

308```

309 

310<Note>

311 Melewatkan `--permission-mode`, `--model`, atau `--effort` ke `claude agents` memerlukan Claude Code v2.1.142 atau lebih baru. Versi sebelumnya menolak flag ini dengan kesalahan unknown-option.

312</Note>

297 313 

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

299 315 

300Untuk menetapkan mode dari shell, berikan `--permission-mode` dengan `claude --bg`. Menggunakan `bypassPermissions` atau `auto` dengan cara ini ditolak sampai Anda telah menerima mode itu dengan menjalankan `claude` dengannya sekali secara interaktif, karena mode tersebut memungkinkan sesi yang tidak Anda tonton bertindak tanpa persetujuan.316Tanpa flag ini, sesi menggunakan `defaultMode` dari pengaturan direktori itu atau `permissionMode` dari [frontmatter subagent](/id/sub-agents#supported-frontmatter-fields) yang dikirim, dan model yang ditampilkan di header tampilan agen.

317 

318Menggunakan `bypassPermissions` atau `auto` ditolak sampai Anda telah menerima mode itu dengan menjalankan `claude` dengannya sekali secara interaktif, karena mode tersebut memungkinkan sesi yang tidak Anda tonton bertindak tanpa persetujuan. Hal yang sama berlaku apakah Anda meneruskan mode ke `claude agents` atau ke `claude --bg --permission-mode`.

319 

320### Pengaturan, plugin, dan server MCP

321 

322Tampilan agen menerima flag konfigurasi yang sama dengan `claude` untuk memuat pengaturan, plugin, server MCP, dan direktori tambahan. Setiap flag berlaku untuk tampilan agen itu sendiri dan diteruskan ke setiap sesi yang Anda kirim darinya, jadi plugin atau server MCP yang Anda muat dengan cara ini tersedia di sesi tersebut juga.

323 

324| Flag | Efek |

325| :----------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- |

326| [`--settings <file-or-json>`](/id/settings) | Menimpa pengaturan untuk tampilan agen dan sesi yang dikirim |

327| [`--add-dir <path>`](/id/permissions#additional-directories-grant-file-access-not-configuration) | Memberikan akses file ke direktori tambahan |

328| [`--plugin-dir <path>`](/id/plugins) | Memuat plugin dari direktori lokal |

329| [`--mcp-config <file-or-json>`](/id/mcp) | Memuat server MCP dari file konfigurasi atau string JSON |

330| `--strict-mcp-config` | Gunakan hanya server MCP dari `--mcp-config`, abaikan konfigurasi MCP lainnya |

331 

332Ulangi `--add-dir`, `--plugin-dir`, atau `--mcp-config` sekali per nilai. Bentuk yang dipisahkan spasi, seperti `--add-dir a b c`, tidak didukung dengan `claude agents`.

333 

334Contoh berikut membuka tampilan agen dengan penimpaan pengaturan dan satu direktori tambahan:

335 

336```bash theme={null}

337claude agents --settings ./ci-settings.json --add-dir ../shared-lib

338```

301 339 

302## Kelola sesi dari shell340## Kelola sesi dari shell

303 341 

304Setiap sesi latar belakang memiliki ID pendek yang dapat Anda gunakan dari shell. ID dicetak ketika Anda memulai sesi dengan `claude --bg`, dan ID setiap sesi adalah nama direktorinya di bawah `~/.claude/jobs/`. Perintah-perintah ini berguna untuk scripting atau ketika Anda tidak ingin membuka tampilan agen.342Setiap sesi latar belakang memiliki ID pendek yang dapat Anda gunakan dari shell. ID dicetak ketika Anda memulai sesi dengan `claude --bg`, dan ID setiap sesi adalah nama direktorinya di bawah `~/.claude/jobs/`. Perintah-perintah ini berguna untuk scripting atau ketika Anda tidak ingin membuka tampilan agen.

305 343 

306| Perintah | Tujuan |344| Perintah | Tujuan |

307| :--------------------- | :---------------------------------------------------------------------------------------------- |345| :--------------------- | :------------------------------------------------------------------------------------------------------------------- |

308| `claude agents` | Buka tampilan agen |346| `claude agents` | Buka tampilan agen. Lewatkan `--cwd <path>` untuk membuat daftar hanya sesi yang dimulai di bawah direktori tersebut |

309| `claude attach <id>` | Lampirkan ke sesi di terminal ini |347| `claude attach <id>` | Lampirkan ke sesi di terminal ini |

310| `claude logs <id>` | Cetak output terbaru sesi |348| `claude logs <id>` | Cetak output terbaru sesi |

311| `claude stop <id>` | Hentikan sesi. Juga menerima `claude kill` |349| `claude stop <id>` | Hentikan sesi. Juga menerima `claude kill` |

Details

170 170 

171Claude Code mendukung penyegaran kredensial otomatis untuk AWS SSO dan penyedia identitas perusahaan. Tambahkan pengaturan ini ke file pengaturan Claude Code Anda (lihat [Settings](/id/settings) untuk lokasi file).171Claude Code mendukung penyegaran kredensial otomatis untuk AWS SSO dan penyedia identitas perusahaan. Tambahkan pengaturan ini ke file pengaturan Claude Code Anda (lihat [Settings](/id/settings) untuk lokasi file).

172 172 

173Ketika Claude Code mendeteksi bahwa kredensial AWS Anda telah kedaluwarsa (baik secara lokal berdasarkan stempel waktu mereka atau ketika Bedrock mengembalikan kesalahan kredensial), Claude Code akan secara otomatis menjalankan perintah `awsAuthRefresh` dan/atau `awsCredentialExport` yang dikonfigurasi untuk mendapatkan kredensial baru sebelum mencoba ulang permintaan.173Kedua pengaturan ini memiliki kondisi pemicu yang berbeda:

174 

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

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

174 177 

175##### Contoh konfigurasi178##### Contoh konfigurasi

176 179 


187 190 

188**`awsAuthRefresh`**: Gunakan ini untuk perintah yang memodifikasi direktori `.aws`, seperti memperbarui kredensial, cache SSO, atau file konfigurasi. Output perintah ditampilkan kepada pengguna, tetapi input interaktif tidak didukung. Ini bekerja dengan baik untuk alur SSO berbasis browser di mana CLI menampilkan URL atau kode dan Anda menyelesaikan autentikasi di browser.191**`awsAuthRefresh`**: Gunakan ini untuk perintah yang memodifikasi direktori `.aws`, seperti memperbarui kredensial, cache SSO, atau file konfigurasi. Output perintah ditampilkan kepada pengguna, tetapi input interaktif tidak didukung. Ini bekerja dengan baik untuk alur SSO berbasis browser di mana CLI menampilkan URL atau kode dan Anda menyelesaikan autentikasi di browser.

189 192 

190**`awsCredentialExport`**: Hanya gunakan ini jika Anda tidak dapat memodifikasi `.aws` dan harus secara langsung mengembalikan kredensial. Output ditangkap secara diam-diam dan tidak ditampilkan kepada pengguna. Perintah harus menampilkan JSON dalam format ini:193**`awsCredentialExport`**: Hanya gunakan ini jika Anda tidak dapat memodifikasi `.aws` dan harus secara langsung mengembalikan kredensial. Perintah ini berjalan setiap kali kredensial perlu disegarkan, bukan hanya ketika kredensial telah kedaluwarsa. Output ditangkap secara diam-diam dan tidak ditampilkan kepada pengguna. Perintah harus menampilkan JSON dalam format ini:

191 194 

192```json theme={null}195```json theme={null}

193{196{

best-practices.md +17 −23

Details

52 Pisahkan penelitian dan perencanaan dari implementasi untuk menghindari menyelesaikan masalah yang salah.52 Pisahkan penelitian dan perencanaan dari implementasi untuk menghindari menyelesaikan masalah yang salah.

53</Tip>53</Tip>

54 54 

55Membiarkan Claude langsung melompat ke pengkodean dapat menghasilkan kode yang menyelesaikan masalah yang salah. Gunakan [Plan Mode](/id/common-workflows#use-plan-mode-for-safe-code-analysis) untuk memisahkan eksplorasi dari eksekusi.55Membiarkan Claude langsung melompat ke pengkodean dapat menghasilkan kode yang menyelesaikan masalah yang salah. Gunakan [Plan Mode](/id/permission-modes#analyze-before-you-edit-with-plan-mode) untuk memisahkan eksplorasi dari eksekusi.

56 56 

57Alur kerja yang direkomendasikan memiliki empat fase:57Alur kerja yang direkomendasikan memiliki empat fase:

58 58 


60 <Step title="Jelajahi">60 <Step title="Jelajahi">

61 Masukkan Plan Mode. Claude membaca file dan menjawab pertanyaan tanpa membuat perubahan.61 Masukkan Plan Mode. Claude membaca file dan menjawab pertanyaan tanpa membuat perubahan.

62 62 

63 ```txt claude (Plan Mode) theme={null}63 ```txt claude (plan mode) theme={null}

64 read /src/auth and understand how we handle sessions and login.64 read /src/auth and understand how we handle sessions and login.

65 also look at how we manage environment variables for secrets.65 also look at how we manage environment variables for secrets.

66 ```66 ```


69 <Step title="Rencanakan">69 <Step title="Rencanakan">

70 Minta Claude untuk membuat rencana implementasi terperinci.70 Minta Claude untuk membuat rencana implementasi terperinci.

71 71 

72 ```txt claude (Plan Mode) theme={null}72 ```txt claude (plan mode) theme={null}

73 I want to add Google OAuth. What files need to change?73 I want to add Google OAuth. What files need to change?

74 What's the session flow? Create a plan.74 What's the session flow? Create a plan.

75 ```75 ```


78 </Step>78 </Step>

79 79 

80 <Step title="Implementasikan">80 <Step title="Implementasikan">

81 Beralih kembali ke Normal Mode dan biarkan Claude kode, memverifikasi terhadap rencananya.81 Beralih keluar dari Plan Mode dan biarkan Claude kode, memverifikasi terhadap rencananya.

82 82 

83 ```txt claude (Normal Mode) theme={null}83 ```txt claude (default mode) theme={null}

84 implement the OAuth flow from your plan. write tests for the84 implement the OAuth flow from your plan. write tests for the

85 callback handler, run the test suite and fix any failures.85 callback handler, run the test suite and fix any failures.

86 ```86 ```


89 <Step title="Komit">89 <Step title="Komit">

90 Minta Claude untuk melakukan komit dengan pesan deskriptif dan membuat PR.90 Minta Claude untuk melakukan komit dengan pesan deskriptif dan membuat PR.

91 91 

92 ```txt claude (Normal Mode) theme={null}92 ```txt claude (default mode) theme={null}

93 commit with a descriptive message and open a PR93 commit with a descriptive message and open a PR

94 ```94 ```

95 </Step>95 </Step>


396* Gunakan `/clear` sering antara tugas untuk mengatur ulang jendela konteks sepenuhnya396* Gunakan `/clear` sering antara tugas untuk mengatur ulang jendela konteks sepenuhnya

397* Ketika auto compaction dipicu, Claude meringkas apa yang paling penting, termasuk pola kode, status file, dan keputusan kunci397* Ketika auto compaction dipicu, Claude meringkas apa yang paling penting, termasuk pola kode, status file, dan keputusan kunci

398* Untuk kontrol lebih, jalankan `/compact <instructions>`, seperti `/compact Focus on the API changes`398* Untuk kontrol lebih, jalankan `/compact <instructions>`, seperti `/compact Focus on the API changes`

399* Untuk mengompaksi hanya bagian dari percakapan, gunakan `Esc + Esc` atau `/rewind`, pilih checkpoint pesan, dan pilih **Summarize from here**. Ini mengondensasi pesan dari titik itu maju sambil menjaga konteks awal tetap utuh.399* Untuk mengompaksi hanya bagian dari percakapan, gunakan `Esc + Esc` atau `/rewind`, pilih checkpoint pesan, dan pilih **Summarize from here** atau **Summarize up to here**. Yang pertama mengondensasi pesan dari titik itu maju sambil menjaga konteks awal tetap utuh; yang kedua mengondensasi pesan awal sambil menjaga pesan terbaru tetap lengkap. Lihat [Restore vs. summarize](/id/checkpointing#restore-vs-summarize).

400* Sesuaikan perilaku compaction di CLAUDE.md dengan instruksi seperti `"When compacting, always preserve the full list of modified files and any test commands"` untuk memastikan konteks kritis bertahan dari ringkasan400* Sesuaikan perilaku compaction di CLAUDE.md dengan instruksi seperti `"When compacting, always preserve the full list of modified files and any test commands"` untuk memastikan konteks kritis bertahan dari ringkasan

401* Untuk pertanyaan cepat yang tidak perlu tetap dalam konteks, gunakan [`/btw`](/id/interactive-mode#side-questions-with-%2Fbtw). Jawabannya muncul dalam overlay yang dapat ditutup dan tidak pernah memasuki riwayat percakapan, jadi Anda dapat memeriksa detail tanpa menumbuhkan konteks.401* Untuk pertanyaan cepat yang tidak perlu tetap dalam konteks, gunakan [`/btw`](/id/interactive-mode#side-questions-with-%2Fbtw). Jawabannya muncul dalam overlay yang dapat ditutup dan tidak pernah memasuki riwayat percakapan, jadi Anda dapat memeriksa detail tanpa menumbuhkan konteks.

402 402 


424### Rewind dengan checkpoints424### Rewind dengan checkpoints

425 425 

426<Tip>426<Tip>

427 Setiap tindakan yang dilakukan Claude membuat checkpoint. Anda dapat mengembalikan percakapan, kode, atau keduanya ke checkpoint sebelumnya.427 Setiap prompt yang Anda kirim membuat checkpoint. Anda dapat mengembalikan percakapan, kode, atau keduanya ke checkpoint sebelumnya.

428</Tip>428</Tip>

429 429 

430Claude secara otomatis membuat checkpoint sebelum perubahan. Tekan Escape dua kali atau jalankan `/rewind` untuk membuka menu rewind. Anda dapat mengembalikan percakapan saja, mengembalikan kode saja, mengembalikan keduanya, atau meringkas dari pesan yang dipilih. Lihat [Checkpointing](/id/checkpointing) untuk detail.430Claude secara otomatis membuat snapshot file sebelum setiap perubahan sehingga checkpoint dapat mengembalikannya. Tekan Escape dua kali atau jalankan `/rewind` untuk membuka menu rewind. Anda dapat mengembalikan percakapan saja, mengembalikan kode saja, mengembalikan keduanya, atau meringkas dari pesan yang dipilih. Lihat [Checkpointing](/id/checkpointing) untuk detail.

431 431 

432Alih-alih merencanakan setiap langkah dengan hati-hati, Anda dapat memberi tahu Claude untuk mencoba sesuatu yang berisiko. Jika tidak berhasil, rewind dan coba pendekatan berbeda. Checkpoints bertahan di seluruh sesi, jadi Anda dapat menutup terminal dan masih rewind nanti.432Alih-alih merencanakan setiap langkah dengan hati-hati, Anda dapat memberi tahu Claude untuk mencoba sesuatu yang berisiko. Jika tidak berhasil, rewind dan coba pendekatan berbeda. Checkpoints bertahan di seluruh sesi, jadi Anda dapat menutup terminal dan masih rewind nanti.

433 433 


438### Lanjutkan percakapan438### Lanjutkan percakapan

439 439 

440<Tip>440<Tip>

441 Jalankan `claude --continue` untuk melanjutkan dari mana Anda tinggalkan, atau `--resume` untuk memilih dari sesi terbaru.441 Beri nama sesi dengan `/rename` dan perlakukan mereka seperti cabang: setiap alur kerja mendapatkan konteks persisten sendiri.

442</Tip>442</Tip>

443 443 

444Claude Code menyimpan percakapan secara lokal. Ketika tugas mencakup beberapa sesi, Anda tidak harus menjelaskan ulang konteksnya:444Claude Code menyimpan percakapan secara lokal, jadi ketika tugas mencakup beberapa sesi Anda tidak harus menjelaskan ulang konteksnya. Jalankan `claude --continue` untuk melanjutkan dari sesi terbaru, atau `claude --resume` untuk memilih dari daftar. Berikan sesi nama deskriptif seperti `oauth-migration` sehingga Anda dapat menemukannya nanti. Lihat [Manage sessions](/id/sessions) untuk set lengkap kontrol resume, branch, dan naming.

445 

446```bash theme={null}

447claude --continue # Resume the most recent conversation

448claude --resume # Select from recent conversations

449```

450 

451Gunakan `/rename` untuk memberikan sesi nama deskriptif seperti `"oauth-migration"` atau `"debugging-memory-leak"` sehingga Anda dapat menemukannya nanti. Perlakukan sesi seperti cabang: alur kerja yang berbeda dapat memiliki konteks terpisah dan persisten.

452 445 

453***446***

454 447 


464 Gunakan `claude -p "prompt"` di CI, pre-commit hooks, atau skrip. Tambahkan `--output-format stream-json` untuk output JSON streaming.457 Gunakan `claude -p "prompt"` di CI, pre-commit hooks, atau skrip. Tambahkan `--output-format stream-json` untuk output JSON streaming.

465</Tip>458</Tip>

466 459 

467Dengan `claude -p "your prompt"`, Anda dapat menjalankan Claude secara non-interaktif, tanpa sesi. Mode non-interaktif adalah cara Anda mengintegrasikan Claude ke dalam pipeline CI, pre-commit hooks, atau alur kerja otomatis apa pun. Format output memungkinkan Anda mengurai hasil secara terprogram: teks biasa, JSON, atau JSON streaming.460Dengan `claude -p "your prompt"`, Anda dapat menjalankan Claude secara non-interaktif, tanpa sesi. [Mode non-interaktif](/id/headless) adalah cara Anda mengintegrasikan Claude ke dalam pipeline CI, pre-commit hooks, atau alur kerja otomatis apa pun. Format output memungkinkan Anda mengurai hasil secara terprogram: teks biasa, JSON, atau JSON streaming.

468 461 

469```bash theme={null}462```bash theme={null}

470# One-off queries463# One-off queries


483 Jalankan beberapa sesi Claude secara paralel untuk mempercepat pengembangan, menjalankan eksperimen terisolasi, atau memulai alur kerja kompleks.476 Jalankan beberapa sesi Claude secara paralel untuk mempercepat pengembangan, menjalankan eksperimen terisolasi, atau memulai alur kerja kompleks.

484</Tip>477</Tip>

485 478 

486Ada tiga cara utama untuk menjalankan sesi paralel:479Pilih pendekatan paralel yang sesuai dengan seberapa banyak koordinasi yang ingin Anda lakukan sendiri:

487 480 

488* [Aplikasi desktop Claude Code](/id/desktop#work-in-parallel-with-sessions): Kelola beberapa sesi lokal secara visual. Setiap sesi mendapat worktree terisolasi sendiri.481* [Worktrees](/id/worktrees): jalankan sesi CLI terpisah dalam checkout git terisolasi sehingga edit tidak bertabrakan

489* [Claude Code di web](/id/claude-code-on-the-web): Jalankan di infrastruktur cloud aman Anthropic dalam VM terisolasi.482* [Aplikasi desktop](/id/desktop#work-in-parallel-with-sessions): kelola beberapa sesi lokal secara visual, masing-masing dalam worktree-nya sendiri

490* [Tim agen](/id/agent-teams): Koordinasi otomatis dari beberapa sesi dengan tugas bersama, pesan, dan pemimpin tim.483* [Claude Code di web](/id/claude-code-on-the-web): jalankan sesi pada infrastruktur cloud yang dikelola Anthropic dalam VM terisolasi

484* [Tim agen](/id/agent-teams): koordinasi otomatis dari beberapa sesi dengan tugas bersama, pesan, dan pemimpin tim

491 485 

492Selain paralelisasi pekerjaan, beberapa sesi memungkinkan alur kerja yang berfokus pada kualitas. Konteks segar meningkatkan tinjauan kode karena Claude tidak akan bias terhadap kode yang baru saja ditulisnya.486Selain paralelisasi pekerjaan, beberapa sesi memungkinkan alur kerja yang berfokus pada kualitas. Konteks segar meningkatkan tinjauan kode karena Claude tidak akan bias terhadap kode yang baru saja ditulisnya.

493 487 

checkpointing.md +11 −10

Details

28* **Pulihkan percakapan**: putar ulang ke pesan tersebut sambil mempertahankan kode saat ini28* **Pulihkan percakapan**: putar ulang ke pesan tersebut sambil mempertahankan kode saat ini

29* **Pulihkan kode**: kembalikan perubahan file sambil mempertahankan percakapan29* **Pulihkan kode**: kembalikan perubahan file sambil mempertahankan percakapan

30* **Ringkas dari sini**: kompres percakapan dari titik ini ke depan menjadi ringkasan, membebaskan ruang context window30* **Ringkas dari sini**: kompres percakapan dari titik ini ke depan menjadi ringkasan, membebaskan ruang context window

31* **Ringkas hingga di sini**: kompres percakapan sebelum titik ini menjadi ringkasan, menjaga pesan-pesan selanjutnya tetap utuh

31* **Tidak jadi**: kembali ke daftar pesan tanpa membuat perubahan32* **Tidak jadi**: kembali ke daftar pesan tanpa membuat perubahan

32 33 

33Setelah memulihkan percakapan atau meringkas, prompt asli dari pesan yang dipilih dipulihkan ke dalam bidang input sehingga Anda dapat mengirimnya kembali atau mengeditnya.34Setelah memulihkan percakapan atau memilih Ringkas dari sini, prompt asli dari pesan yang dipilih dipulihkan ke dalam bidang input sehingga Anda dapat mengirimnya kembali atau mengeditnya.

35 

36Memilih Ringkas hingga di sini membuat Anda tetap berada di akhir percakapan dengan input kosong.

34 37 

35#### Pulihkan vs. ringkas38#### Pulihkan vs. ringkas

36 39 

37Tiga opsi pemulihan mengembalikan status: mereka membatalkan perubahan kode, riwayat percakapan, atau keduanya. "Ringkas dari sini" bekerja berbeda:40Opsi pemulihan mengembalikan status: mereka membatalkan perubahan kode, riwayat percakapan, atau keduanya. Opsi ringkas mengompres bagian dari percakapan menjadi ringkasan yang dihasilkan AI tanpa mengubah file di disk:

38 41 

39* Pesan sebelum pesan yang dipilih tetap utuh42* **Ringkas dari sini**: pesan sebelum pesan yang dipilih tetap utuh. Pesan yang dipilih dan semua pesan berikutnya diganti dengan ringkasan. Gunakan ini untuk membuang diskusi sampingan sambil menjaga konteks awal dalam detail lengkap.

40* Pesan yang dipilih dan semua pesan berikutnya diganti dengan ringkasan yang dihasilkan AI yang ringkas43* **Ringkas hingga di sini**: pesan sebelum pesan yang dipilih diganti dengan ringkasan. Pesan yang dipilih dan semua pesan berikutnya tetap utuh, dan Anda tetap berada di akhir percakapan. Gunakan ini untuk mengompres diskusi setup awal sambil menjaga pekerjaan terbaru dalam detail lengkap.

41* Tidak ada file di disk yang diubah

42* Pesan asli disimpan dalam transkrip sesi, sehingga Claude dapat mereferensikan detail jika diperlukan

43 44 

44Ini mirip dengan `/compact`, tetapi ditargetkan: alih-alih meringkas seluruh percakapan, Anda menyimpan konteks awal dalam detail lengkap dan hanya mengompres bagian yang menggunakan ruang. Anda dapat mengetik instruksi opsional untuk memandu fokus ringkasan.45Dalam kedua kasus, pesan asli disimpan dalam transkrip sesi, sehingga Claude dapat mereferensikan detail jika diperlukan. Anda dapat mengetik instruksi opsional untuk memandu fokus ringkasan. Ini mirip dengan `/compact`, tetapi ditargetkan: alih-alih meringkas seluruh percakapan, Anda memilih sisi mana dari pesan yang dipilih untuk dikompres.

45 46 

46<Note>47<Note>

47 Ringkas membuat Anda tetap berada di sesi yang sama dan mengompres konteks. Jika Anda ingin bercabang dan mencoba pendekatan berbeda sambil mempertahankan sesi asli tetap utuh, gunakan [fork](/id/how-claude-code-works#resume-or-fork-sessions) sebagai gantinya (`claude --continue --fork-session`).48 Ringkas membuat Anda tetap berada di sesi yang sama dan mengompres konteks. Jika Anda ingin bercabang dan mencoba pendekatan berbeda sambil mempertahankan sesi asli tetap utuh, gunakan [fork](/id/sessions#branch-a-session) sebagai gantinya (`claude --continue --fork-session`).

48</Note>49</Note>

49 50 

50## Kasus penggunaan umum51## Kasus penggunaan umum


85## Lihat juga86## Lihat juga

86 87 

87* [Mode interaktif](/id/interactive-mode) - Pintasan keyboard dan kontrol sesi88* [Mode interaktif](/id/interactive-mode) - Pintasan keyboard dan kontrol sesi

88* [Perintah bawaan](/id/commands) - Mengakses checkpoints menggunakan `/rewind`89* [Commands](/id/commands) - Mengakses checkpoints menggunakan `/rewind`

89* [Referensi CLI](/id/cli-reference) - Opsi baris perintah90* [CLI reference](/id/cli-reference) - Opsi baris perintah

Details

780 780 

781### Sesi Remote Control kedaluwarsa atau akses ditolak781### Sesi Remote Control kedaluwarsa atau akses ditolak

782 782 

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

784 784 

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

786* Konfirmasi Anda masuk ke akun yang sama yang memiliki sesi786* Konfirmasi Anda masuk ke akun yang sama yang memiliki sesi

Details

24| `claude auth login` | Masuk ke akun Anthropic Anda. Gunakan `--email` untuk mengisi email Anda sebelumnya, `--sso` untuk memaksa autentikasi SSO, dan `--console` untuk masuk dengan Anthropic Console untuk penagihan penggunaan API alih-alih langganan Claude | `claude auth login --console` |24| `claude auth login` | Masuk ke akun Anthropic Anda. Gunakan `--email` untuk mengisi email Anda sebelumnya, `--sso` untuk memaksa autentikasi SSO, dan `--console` untuk masuk dengan Anthropic Console untuk penagihan penggunaan API alih-alih langganan Claude | `claude auth login --console` |

25| `claude auth logout` | Keluar dari akun Anthropic Anda | `claude auth logout` |25| `claude auth logout` | Keluar dari akun Anthropic Anda | `claude auth logout` |

26| `claude auth status` | Tampilkan status autentikasi sebagai JSON. Gunakan `--text` untuk output yang dapat dibaca manusia. Keluar dengan kode 0 jika masuk, 1 jika tidak | `claude auth status` |26| `claude auth status` | Tampilkan status autentikasi sebagai JSON. Gunakan `--text` untuk output yang dapat dibaca manusia. Keluar dengan kode 0 jika masuk, 1 jika tidak | `claude auth status` |

27| `claude agents` | Buka [tampilan agen](/id/agent-view) untuk memantau dan mengirim sesi latar belakang paralel. Ketika output disalurkan, mencantumkan [subagents](/id/sub-agents) yang dikonfigurasi sebagai gantinya | `claude agents` |27| `claude agents` | Buka [tampilan agen](/id/agent-view) untuk memantau dan mengirim sesi latar belakang paralel. Gunakan `--cwd <path>` untuk menampilkan hanya sesi yang dimulai di bawah direktori tersebut | `claude agents` |

28| `claude attach <id>` | Lampirkan ke [sesi latar belakang](/id/agent-view#manage-sessions-from-the-shell) di terminal ini | `claude attach 7c5dcf5d` |28| `claude attach <id>` | Lampirkan ke [sesi latar belakang](/id/agent-view#manage-sessions-from-the-shell) di terminal ini | `claude attach 7c5dcf5d` |

29| `claude auto-mode defaults` | Cetak aturan pengklasifikasi [auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode) bawaan sebagai JSON. Gunakan `claude auto-mode config` untuk melihat konfigurasi efektif Anda dengan pengaturan yang diterapkan | `claude auto-mode defaults > rules.json` |29| `claude auto-mode defaults` | Cetak aturan pengklasifikasi [auto mode](/id/permission-modes#eliminate-prompts-with-auto-mode) bawaan sebagai JSON. Gunakan `claude auto-mode config` untuk melihat konfigurasi efektif Anda dengan pengaturan yang diterapkan | `claude auto-mode defaults > rules.json` |

30| `claude logs <id>` | Cetak output terbaru dari [sesi latar belakang](/id/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |30| `claude logs <id>` | Cetak output terbaru dari [sesi latar belakang](/id/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |

commands.md +1 −1

Details

26 26 

27**Antar sesi.** `/clear` memulai segar pada tugas baru sambil menyimpan memori proyek. `/resume` dan `/branch` memungkinkan Anda kembali ke atau fork percakapan sebelumnya. `/teleport` menarik sesi web ke terminal ini, dan `/remote-control` memungkinkan Anda melanjutkan sesi lokal ini dari perangkat lain.27**Antar sesi.** `/clear` memulai segar pada tugas baru sambil menyimpan memori proyek. `/resume` dan `/branch` memungkinkan Anda kembali ke atau fork percakapan sebelumnya. `/teleport` menarik sesi web ke terminal ini, dan `/remote-control` memungkinkan Anda melanjutkan sesi lokal ini dari perangkat lain.

28 28 

29**Ketika ada yang salah.** `/rewind` mengembalikan kode dan percakapan ke checkpoint. `/doctor` dan `/debug` mendiagnosis masalah instalasi dan runtime, dan `/feedback` melaporkan bug dengan konteks sesi terlampir.29**Ketika ada yang salah.** `/rewind` mengembalikan kode dan percakapan ke checkpoint, atau merangkum bagian dari percakapan. `/doctor` dan `/debug` mendiagnosis masalah instalasi dan runtime, dan `/feedback` melaporkan bug dengan konteks sesi terlampir.

30 30 

31## Semua perintah31## Semua perintah

32 32 

desktop.md +5 −2

Details

148 148 

149### Jalankan perintah di terminal149### Jalankan perintah di terminal

150 150 

151Terminal terintegrasi memungkinkan Anda menjalankan perintah bersama sesi Anda tanpa beralih ke aplikasi lain. Buka dari menu **Views** atau tekan **Ctrl+\`** di macOS atau Windows. Terminal terbuka di direktori kerja sesi Anda dan berbagi lingkungan yang sama dengan Claude, jadi perintah seperti `npm test` atau `git status` melihat file yang sama yang sedang diedit Claude. Terminal hanya tersedia di sesi lokal.151Terminal terintegrasi memungkinkan Anda menjalankan perintah bersama sesi Anda tanpa beralih ke aplikasi lain. Buka dari menu **Views** atau tekan **Ctrl+\`** di macOS atau Windows. Terminal terbuka di direktori kerja sesi Anda dan berbagi lingkungan yang sama dengan Claude, jadi perintah seperti `npm test` atau `git status` melihat file yang sama yang sedang diedit Claude. Untuk membuka tab terminal kedua, klik **+** di header pane terminal atau klik kanan folder di chat untuk memilih **Open in terminal**. Terminal hanya tersedia di sesi lokal.

152 152 

153### Buka dan edit file153### Buka dan edit file

154 154 


296 296 

297Gunakan 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. Untuk memeriksa penggunaan konteks, lihat [Check usage](#check-usage). Ketika konteks penuh, Claude secara otomatis merangkum percakapan dan terus bekerja. Anda juga dapat mengetik `/compact` untuk memicu perangkuman lebih awal dan membebaskan ruang konteks. Lihat [jendela konteks](/id/how-claude-code-works#the-context-window) untuk detail tentang cara pemadatan bekerja.297Gunakan 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. Untuk memeriksa penggunaan konteks, lihat [Check usage](#check-usage). Ketika konteks penuh, Claude secara otomatis merangkum percakapan dan terus bekerja. Anda juga dapat mengetik `/compact` untuk memicu perangkuman lebih awal dan membebaskan ruang konteks. Lihat [jendela konteks](/id/how-claude-code-works#the-context-window) untuk detail tentang cara pemadatan bekerja.

298 298 

299Aplikasi desktop mengirimkan notifikasi OS ketika sesi Code menyelesaikan tugas dan Anda tidak sedang melihat sesi tersebut.

300 

299### Tanyakan pertanyaan sampingan tanpa menggoyahkan sesi301### Tanyakan pertanyaan sampingan tanpa menggoyahkan sesi

300 302 

301Side chat memungkinkan Anda mengajukan pertanyaan kepada Claude yang menggunakan konteks sesi Anda tetapi tidak menambahkan apa pun kembali ke percakapan utama. Gunakan ketika Anda ingin memahami sepotong kode, memeriksa asumsi, atau menjelajahi ide tanpa mengarahkan sesi ke arah yang berbeda.303Side chat memungkinkan Anda mengajukan pertanyaan kepada Claude yang menggunakan konteks sesi Anda tetapi tidak menambahkan apa pun kembali ke percakapan utama. Gunakan ketika Anda ingin memahami sepotong kode, memeriksa asumsi, atau menjelajahi ide tanpa mengarahkan sesi ke arah yang berbeda.


598Pengaturan yang dikelola menimpa pengaturan proyek dan pengguna dan berlaku ketika Desktop menjalankan sesi CLI. Anda dapat mengatur kunci ini di file [managed settings](/id/settings#settings-precedence) organisasi Anda atau mendorongnya dari jarak jauh melalui konsol admin.600Pengaturan yang dikelola menimpa pengaturan proyek dan pengguna dan berlaku ketika Desktop menjalankan sesi CLI. Anda dapat mengatur kunci ini di file [managed settings](/id/settings#settings-precedence) organisasi Anda atau mendorongnya dari jarak jauh melalui konsol admin.

599 601 

600| Key | Description |602| Key | Description |

601| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |603| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

602| `permissions.disableBypassPermissionsMode` | atur ke `"disable"` untuk mencegah pengguna dari mengaktifkan Bypass permissions mode. |604| `permissions.disableBypassPermissionsMode` | atur ke `"disable"` untuk mencegah pengguna dari mengaktifkan Bypass permissions mode. |

603| `disableAutoMode` | atur ke `"disable"` untuk mencegah pengguna dari mengaktifkan [Auto](/id/permission-modes#eliminate-prompts-with-auto-mode) mode. Menghapus Auto dari pemilih mode. Juga diterima di bawah `permissions`. |605| `disableAutoMode` | atur ke `"disable"` untuk mencegah pengguna dari mengaktifkan [Auto](/id/permission-modes#eliminate-prompts-with-auto-mode) mode. Menghapus Auto dari pemilih mode. Juga diterima di bawah `permissions`. |

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

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

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

609| `managedMcpServers` | dorong konfigurasi server MCP ke semua pengguna dalam penyebaran pihak ketiga. Setiap entri menentukan transport `"http"`, `"sse"`, atau `"stdio"`, detail koneksi, dan secara opsional peta `toolPolicy` yang membatasi alat mana dalam server tersebut yang dapat dipanggil pengguna. Tersedia dalam penyebaran Desktop pihak ketiga (3P) saja. |

607 610 

608File pengaturan yang dikelola yang disebarkan ke disk pada setiap mesin berlaku untuk sesi Desktop. Pengaturan yang dikelola yang didorong dari jarak jauh melalui konsol admin saat ini hanya mencapai sesi CLI dan IDE, jadi untuk penyebaran Desktop baik distribusikan file melalui MDM atau gunakan [kontrol konsol admin](#admin-console-controls) di atas.611File pengaturan yang dikelola yang disebarkan ke disk pada setiap mesin berlaku untuk sesi Desktop. Pengaturan yang dikelola yang didorong dari jarak jauh melalui konsol admin saat ini hanya mencapai sesi CLI dan IDE, jadi untuk penyebaran Desktop baik distribusikan file melalui MDM atau gunakan [kontrol konsol admin](#admin-console-controls) di atas.

609 612 

desktop-scheduled-tasks.md +106 −0 created

Details

1> ## Documentation Index

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

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

4 

5# Jadwalkan tugas berulang di Claude Code Desktop

6 

7> Atur tugas terjadwal di Claude Code Desktop untuk menjalankan Claude secara otomatis pada basis berulang untuk tinjauan kode harian, audit dependensi, atau briefing pagi.

8 

9Tugas terjadwal memulai sesi baru secara otomatis pada waktu dan frekuensi yang Anda pilih. Gunakan untuk pekerjaan berulang seperti tinjauan kode harian, pemeriksaan pembaruan dependensi, atau briefing pagi yang menarik dari kalender dan kotak masuk Anda.

10 

11Halaman **Routines** aplikasi Desktop memungkinkan Anda membuat tugas terjadwal lokal dan [routines](/id/routines) jarak jauh. Tugas lokal berjalan di mesin Anda dengan akses langsung ke file dan alat Anda, tetapi hanya berfungsi saat aplikasi terbuka dan komputer Anda terjaga. Routine jarak jauh berjalan pada infrastruktur cloud yang dikelola Anthropic bahkan ketika komputer Anda mati, dan juga dapat dipicu oleh panggilan API atau acara GitHub. Halaman ini mencakup tugas terjadwal lokal; untuk routine jarak jauh dan opsi pemicu mereka, lihat [Routines](/id/routines).

12 

13## Bandingkan opsi penjadwalan

14 

15Claude Code offers three ways to schedule recurring or one-off work:

16 

17| | [Cloud](/en/routines) | [Desktop](/en/desktop-scheduled-tasks) | [`/loop`](/en/scheduled-tasks) |

18| :------------------------- | :----------------------------- | :------------------------------------- | :---------------------------------- |

19| Runs on | Anthropic cloud | Your machine | Your machine |

20| Requires machine on | No | Yes | Yes |

21| Requires open session | No | No | Yes |

22| Persistent across restarts | Yes | Yes | Restored on `--resume` if unexpired |

23| Access to local files | No (fresh clone) | Yes | Yes |

24| MCP servers | Connectors configured per task | [Config files](/en/mcp) and connectors | Inherits from session |

25| Permission prompts | No (runs autonomously) | Configurable per task | Inherits from session |

26| Customizable schedule | Via `/schedule` in the CLI | Yes | Yes |

27| Minimum interval | 1 hour | 1 minute | 1 minute |

28 

29<Tip>

30 Use **cloud tasks** for work that should run reliably without your machine. Use **Desktop tasks** when you need access to local files and tools. Use **`/loop`** for quick polling during a session.

31</Tip>

32 

33<Note>

34 Secara default, tugas terjadwal berjalan terhadap status apapun yang ada di direktori kerja Anda, termasuk perubahan yang belum di-commit. Aktifkan toggle worktree saat membuat tugas untuk memberikan setiap run worktree Git terisolasi sendiri, dengan cara yang sama seperti [sesi paralel](/id/desktop#work-in-parallel-with-sessions) bekerja.

35</Note>

36 

37## Buat tugas terjadwal

38 

39Klik **Routines** di sidebar, kemudian klik **New routine** dan pilih **Local**. Konfigurasikan bidang-bidang ini:

40 

41| Bidang | Deskripsi |

42| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

43| Name | Pengenal untuk tugas. Dikonversi ke kebab-case huruf kecil dan digunakan sebagai nama folder di disk. Harus unik di seluruh tugas Anda. |

44| Description | Ringkasan singkat yang ditampilkan dalam daftar tugas. |

45| Instructions | Apa yang harus dilakukan Claude saat tugas berjalan. Tulis ini dengan cara yang sama seperti Anda menulis pesan apa pun di kotak prompt. Input instruksi mencakup pemilih untuk mode izin dan model, dan di bawahnya Anda memilih folder kerja dan apakah akan berjalan di worktree terisolasi. |

46| Schedule | Seberapa sering tugas berjalan. Lihat [opsi jadwal](#schedule-options) di bawah. |

47 

48Folder diperlukan sebelum Anda dapat menyimpan tugas. Jika Anda belum mempercayai folder itu, Desktop akan meminta Anda untuk mempercayainya sebelum menyimpan.

49 

50Anda juga dapat membuat tugas dengan mendeskripsikan apa yang Anda inginkan dalam sesi apa pun. Misalnya, "set up a daily code review that runs every morning at 9am" membuat tugas berulang, dan "remind me at 3pm tomorrow to check the deploy" membuat tugas satu kali yang menonaktifkan dirinya sendiri setelah berfungsi.

51 

52## Opsi jadwal

53 

54Pilih preset dari kontrol Schedule:

55 

56* **Manual**: tidak ada jadwal, hanya berjalan saat Anda mengklik **Run now**. Berguna untuk menyimpan prompt yang Anda picu sesuai permintaan

57* **Hourly**: berjalan setiap jam

58* **Daily**: menampilkan pemilih waktu, default ke 9:00 AM waktu lokal

59* **Weekdays**: sama dengan Daily tetapi melewati Sabtu dan Minggu

60* **Weekly**: menampilkan pemilih waktu dan pemilih hari

61 

62Untuk interval yang tidak ditawarkan pemilih, seperti setiap 15 menit, hari pertama setiap bulan, atau run tunggal pada waktu masa depan tertentu, minta Claude dalam sesi Desktop apa pun untuk mengatur jadwal. Gunakan bahasa biasa; misalnya, "schedule a task to run all the tests every 6 hours."

63 

64## Cara tugas terjadwal berjalan

65 

66Tugas terjadwal berjalan di mesin Anda. Desktop memeriksa jadwal setiap menit saat aplikasi terbuka dan memulai sesi segar saat tugas jatuh tempo, independen dari sesi manual apa pun yang Anda buka. Setiap tugas mendapat penundaan kecil beberapa menit setelah waktu terjadwal untuk membagi lalu lintas API. Penundaan bersifat deterministik: tugas yang sama selalu dimulai pada offset yang sama.

67 

68Saat tugas berfungsi, Anda mendapatkan notifikasi desktop dan sesi baru muncul di bawah bagian **Scheduled** di sidebar. Buka untuk melihat apa yang dilakukan Claude, tinjau perubahan, atau respons ke prompt izin. Sesi bekerja seperti yang lain: Claude dapat mengedit file, menjalankan perintah, membuat commit, dan membuka pull request.

69 

70Tugas hanya berjalan saat aplikasi desktop berjalan dan komputer Anda terjaga. Jika komputer Anda tidur melalui waktu terjadwal, run dilewati. Untuk mencegah idle-sleep, aktifkan **Keep computer awake** di Settings di bawah **Desktop app → General**. Menutup laptop lid masih membuatnya tidur. Untuk tugas yang perlu berjalan bahkan ketika komputer Anda mati, atau yang harus dipicu oleh panggilan API atau acara GitHub, buat [routine](/id/routines) jarak jauh sebagai gantinya.

71 

72## Run yang terlewat

73 

74Saat aplikasi dimulai atau komputer Anda bangun, Desktop memeriksa apakah setiap tugas melewatkan run apa pun dalam tujuh hari terakhir. Jika demikian, Desktop memulai tepat satu run catch-up untuk waktu yang paling baru terlewat dan membuang apa pun yang lebih lama. Tugas harian yang melewatkan enam hari berjalan sekali saat bangun. Desktop menampilkan notifikasi saat run catch-up dimulai.

75 

76Ingat ini saat menulis prompt. Tugas yang dijadwalkan untuk 9am mungkin berjalan pada 11pm jika komputer Anda tidur sepanjang hari. Jika waktu penting, tambahkan guardrail ke prompt itu sendiri, misalnya: "Only review today's commits. If it's after 5pm, skip the review and just post a summary of what was missed."

77 

78## Izin untuk tugas terjadwal

79 

80Setiap tugas memiliki mode izin sendiri, yang Anda atur saat membuat atau mengedit tugas. Aturan izin dari `~/.claude/settings.json` juga berlaku untuk sesi tugas terjadwal. Jika tugas berjalan dalam mode Ask dan perlu menjalankan alat yang tidak memiliki izin, run terhenti sampai Anda menyetujuinya. Sesi tetap terbuka di sidebar sehingga Anda dapat menjawab nanti.

81 

82Untuk menghindari stall, klik **Run now** setelah membuat tugas, perhatikan prompt izin, dan pilih "always allow" untuk masing-masing. Run masa depan dari tugas itu auto-approve alat yang sama tanpa meminta. Anda dapat meninjau dan mencabut persetujuan ini dari halaman detail tugas.

83 

84## Kelola tugas terjadwal

85 

86Klik tugas dalam daftar **Routines** untuk membuka halaman detailnya. Dari sini Anda dapat:

87 

88* **Run now**: mulai tugas segera tanpa menunggu waktu terjadwal berikutnya

89* **Status**: toggle antara Active dan Paused untuk menjeda atau melanjutkan run terjadwal tanpa menghapus tugas

90* **Edit**: ubah instruksi, jadwal, folder, atau pengaturan lainnya

91* **Review history**: lihat setiap run masa lalu, termasuk run yang dilewati. Arahkan entri yang dilewati untuk melihat mengapa: komputer Anda tidur, run sebelumnya masih berlangsung, atau tugas terjadwal lainnya sudah berjalan. Klik **Show more** untuk memuat entri yang lebih lama.

92* **Review allowed permissions**: lihat dan cabut persetujuan alat yang disimpan untuk tugas ini dari panel **Always allowed**

93* **Delete**: hapus tugas dan arsipkan semua sesi yang dibuatnya. Kotak centang **Also delete files on disk** muncul di dialog konfirmasi; centang untuk juga menghapus file `SKILL.md` tugas dan data terkait dari `~/.claude/scheduled-tasks/`.

94 

95Anda juga dapat membuat daftar, membuat, mengedit, dan menjeda tugas dengan meminta Claude dalam sesi Desktop apa pun. Misalnya, "pause my dependency-audit task" atau "show me my scheduled tasks." Untuk menghapus tugas, gunakan tombol **Delete** di halaman detailnya.

96 

97Tugas terjadwal juga dapat memodifikasi jadwal atau prompt sendiri dari dalam sesi yang berjalan menggunakan alat MCP `update_scheduled_task`. Ini memungkinkan tugas untuk menjadwalkan ulang dirinya sendiri berdasarkan apa yang ditemukannya, misalnya, menjadwalkan ulang tinjauan kode untuk berjalan lebih awal ketika mendeteksi cabang rilis telah dibuat.

98 

99Untuk mengedit prompt tugas di disk, buka `~/.claude/scheduled-tasks/<task-name>/SKILL.md` (atau di bawah [`CLAUDE_CONFIG_DIR`](/id/env-vars) jika diatur). File menggunakan frontmatter YAML untuk `name` dan `description`, dengan prompt sebagai body. Perubahan berlaku pada run berikutnya. Schedule, folder, model, dan enabled state tidak ada dalam file ini: ubah melalui formulir Edit atau minta Claude.

100 

101## Sumber daya terkait

102 

103* [Routines](/id/routines): jalankan tugas pada infrastruktur yang dikelola Anthropic pada jadwal, melalui panggilan API, atau sebagai respons terhadap acara GitHub, bahkan ketika komputer Anda mati

104* [Run prompts on a schedule](/id/scheduled-tasks): penjadwalan scoped sesi dengan `/loop` di CLI

105* [Claude Code GitHub Actions](/id/github-actions): jalankan Claude pada jadwal di CI alih-alih di mesin Anda

106* [Use Claude Code Desktop](/id/desktop): panduan aplikasi Desktop lengkap

env-vars.md +3 −1

Details

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

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

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

48| `ANTHROPIC_WORKSPACE_ID` | ID Workspace untuk [workload identity federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Atur ini saat aturan federasi Anda dibatasi ke lebih dari satu workspace sehingga pertukaran token tahu workspace mana yang ditargetkan |

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

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

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


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

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

140| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Atur ke `1` untuk menyimpan cache marketplace yang ada saat `git pull` gagal alih-alih menghapus dan re-cloning. Berguna di lingkungan offline atau airgapped di mana re-cloning akan gagal dengan cara yang sama. Lihat [Pembaruan Marketplace gagal di lingkungan offline](/id/plugin-marketplaces#marketplace-updates-fail-in-offline-environments) |141| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Atur ke `1` untuk menyimpan cache marketplace yang ada saat `git pull` gagal alih-alih menghapus dan re-cloning. Berguna di lingkungan offline atau airgapped di mana re-cloning akan gagal dengan cara yang sama. Lihat [Pembaruan Marketplace gagal di lingkungan offline](/id/plugin-marketplaces#marketplace-updates-fail-in-offline-environments) |

142| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Atur ke `1` untuk clone GitHub `owner/repo` plugin sources melalui HTTPS alih-alih SSH. Berguna di CI runners, kontainer, atau lingkungan apa pun tanpa kunci SSH yang dikonfigurasi untuk `github.com` |

141| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Jalur ke satu atau lebih direktori seed plugin baca-saja, dipisahkan oleh `:` pada Unix atau `;` pada Windows. Gunakan ini untuk menggabungkan direktori plugin yang sudah diisi sebelumnya ke dalam gambar kontainer. Claude Code mendaftarkan marketplace dari direktori ini saat startup dan menggunakan plugin yang sudah di-cache tanpa re-cloning. Lihat [Pre-populate plugins for containers](/id/plugin-marketplaces#pre-populate-plugins-for-containers) |143| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Jalur ke satu atau lebih direktori seed plugin baca-saja, dipisahkan oleh `:` pada Unix atau `;` pada Windows. Gunakan ini untuk menggabungkan direktori plugin yang sudah diisi sebelumnya ke dalam gambar kontainer. Claude Code mendaftarkan marketplace dari direktori ini saat startup dan menggunakan plugin yang sudah di-cache tanpa re-cloning. Lihat [Pre-populate plugins for containers](/id/plugin-marketplaces#pre-populate-plugins-for-containers) |

142| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Atur oleh platform host yang menyematkan Claude Code dan mengelola perutean penyedia model atas namanya. Saat diatur, pemilihan penyedia, titik akhir, dan variabel autentikasi seperti `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL`, dan `ANTHROPIC_API_KEY` dalam file pengaturan diabaikan sehingga pengaturan pengguna tidak dapat mengganti perutean host. Opt-out telemetri otomatis untuk Bedrock, Vertex, dan Foundry juga dilewati, sehingga telemetri mengikuti opt-out standar `DISABLE_TELEMETRY`. Lihat [Perilaku default menurut penyedia API](/id/data-usage#default-behaviors-by-api-provider) |144| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Atur oleh platform host yang menyematkan Claude Code dan mengelola perutean penyedia model atas namanya. Saat diatur, pemilihan penyedia, titik akhir, dan variabel autentikasi seperti `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL`, dan `ANTHROPIC_API_KEY` dalam file pengaturan diabaikan sehingga pengaturan pengguna tidak dapat mengganti perutean host. Opt-out telemetri otomatis untuk Bedrock, Vertex, dan Foundry juga dilewati, sehingga telemetri mengikuti opt-out standar `DISABLE_TELEMETRY`. Lihat [Perilaku default menurut penyedia API](/id/data-usage#default-behaviors-by-api-provider) |

143| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Atur ke `1` untuk memungkinkan proxy melakukan resolusi DNS alih-alih pemanggil. Opt-in untuk lingkungan di mana proxy harus menangani resolusi nama host |145| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Atur ke `1` untuk memungkinkan proxy melakukan resolusi DNS alih-alih pemanggil. Opt-in untuk lingkungan di mana proxy harus menangani resolusi nama host |


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

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

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

155| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Atur ke `1` untuk menggunakan prompt sistem yang lebih pendek dan deskripsi alat yang disingkat pada Opus 4.7. Tidak berpengaruh pada model lain. Set alat lengkap, hook, server MCP, dan penemuan CLAUDE.md tetap diaktifkan |157| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Atur ke `1` untuk menggunakan prompt sistem yang lebih pendek dan deskripsi alat yang disingkat pada model apa pun. Atur ke `0`, `false`, `no`, atau `off` untuk menolak bahkan pada model di mana eksperimen atau konfigurasi server akan mengaktifkannya sebaliknya. Set alat lengkap, hook, server MCP, dan penemuan CLAUDE.md tetap diaktifkan |

156| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Lewati autentikasi sisi klien untuk [Claude Platform on AWS](/id/claude-platform-on-aws), untuk gateway yang menandatangani permintaan sendiri |158| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Lewati autentikasi sisi klien untuk [Claude Platform on AWS](/id/claude-platform-on-aws), untuk gateway yang menandatangani permintaan sendiri |

157| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Lewati autentikasi AWS untuk Bedrock (misalnya, saat menggunakan gateway LLM) |159| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Lewati autentikasi AWS untuk Bedrock (misalnya, saat menggunakan gateway LLM) |

158| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Lewati autentikasi Azure untuk Microsoft Foundry (misalnya, saat menggunakan gateway LLM) |160| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Lewati autentikasi Azure untuk Microsoft Foundry (misalnya, saat menggunakan gateway LLM) |

Details

156 156 

157### Menggunakan skills157### Menggunakan skills

158 158 

159Input `prompt` menerima [skill](/id/skills) invocation serta teks biasa:

160 

161* Untuk skill di direktori `.claude/skills/` repositori Anda, jalankan `actions/checkout` sebelum langkah action dan berikan `/skill-name`.

162* Untuk skill yang dikemas dalam plugin, instal plugin dengan input `plugin_marketplaces` dan `plugins` serta berikan `/plugin-name:skill-name` dengan namespace.

163 

164Workflow berikut menginstal plugin `code-review` dan menjalankan skillnya pada setiap pull request baru atau yang diperbarui:

165 

159```yaml theme={null}166```yaml theme={null}

160name: Code Review167name: Code Review

161on:168on:


168 - uses: anthropics/claude-code-action@v1175 - uses: anthropics/claude-code-action@v1

169 with:176 with:

170 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}177 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

171 prompt: "Review this pull request for code quality, correctness, and security. Analyze the diff, then post your findings as review comments."178 plugin_marketplaces: "https://github.com/anthropics/claude-code.git"

172 claude_args: "--max-turns 5"179 plugins: "code-review@claude-code-plugins"

180 prompt: "/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"

173```181```

174 182 

175### Otomasi kustom dengan prompt183### Otomasi kustom dengan prompt


622Claude Code Action v1 menggunakan konfigurasi yang disederhanakan:630Claude Code Action v1 menggunakan konfigurasi yang disederhanakan:

623 631 

624| Parameter | Description | Required |632| Parameter | Description | Required |

625| ------------------- | ----------------------------------------------------------------- | -------- |633| --------------------- | ----------------------------------------------------------------------------- | -------- |

626| `prompt` | Instruksi untuk Claude (teks biasa atau nama [skill](/id/skills)) | No\* |634| `prompt` | Instruksi untuk Claude (teks biasa atau nama [skill](/id/skills)) | No\* |

627| `claude_args` | Argumen CLI yang diteruskan ke Claude Code | No |635| `claude_args` | Argumen CLI yang diteruskan ke Claude Code | No |

636| `plugin_marketplaces` | Daftar URL Git marketplace plugin yang dipisahkan baris baru | No |

637| `plugins` | Daftar nama plugin yang dipisahkan baris baru untuk diinstal sebelum eksekusi | No |

628| `anthropic_api_key` | Kunci Claude API | Yes\*\* |638| `anthropic_api_key` | Kunci Claude API | Yes\*\* |

629| `github_token` | Token GitHub untuk akses API | No |639| `github_token` | Token GitHub untuk akses API | No |

630| `trigger_phrase` | Frasa pemicu kustom (default: "@claude") | No |640| `trigger_phrase` | Frasa pemicu kustom (default: "@claude") | No |

glossary.md +1 −1

Details

70 70 

71### Checkpoint71### Checkpoint

72 72 

73Snapshot otomatis dari kode Anda yang ditangkap sebelum setiap edit yang Claude buat. Tekan `Esc` dua kali atau jalankan `/rewind` untuk mengembalikan kode, percakapan, atau keduanya ke titik sebelumnya. Checkpoint bersifat lokal untuk sesi, terpisah dari git, dan tidak melacak perubahan yang dibuat melalui tool Bash.73Titik pemulihan yang dibuat di setiap prompt yang Anda kirim. Claude Code mengambil snapshot file sebelum setiap edit sehingga checkpoint dapat mengembalikannya. Tekan `Esc` dua kali atau jalankan `/rewind` untuk mengembalikan kode, percakapan, atau keduanya ke titik sebelumnya, atau untuk merangkum bagian percakapan dari pesan yang dipilih. Checkpoint bersifat lokal untuk sesi, terpisah dari git, dan tidak melacak perubahan yang dibuat melalui tool Bash.

74 74 

75Pelajari lebih lanjut: [Checkpointing](/id/checkpointing)75Pelajari lebih lanjut: [Checkpointing](/id/checkpointing)

76 76 

goal.md +1 −1

Details

108 108 

109### Jalankan non-interaktif109### Jalankan non-interaktif

110 110 

111`/goal` bekerja dalam [mode non-interaktif](/id/headless) dan melalui [Remote Control](/id/remote-control). Menetapkan tujuan dengan `-p` menjalankan loop hingga selesai dalam satu invokasi:111`/goal` bekerja dalam [mode non-interaktif](/id/headless), di aplikasi desktop (/id/desktop), dan melalui [Remote Control](/id/remote-control). Menetapkan tujuan dengan `-p` menjalankan loop hingga selesai dalam satu invokasi:

112 112 

113```bash theme={null}113```bash theme={null}

114claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"114claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"

hooks.md +48 −8

Details

297| :-------------- | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |297| :-------------- | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

298| `type` | ya | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"`, atau `"agent"` |298| `type` | ya | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"`, atau `"agent"` |

299| `if` | tidak | Sintaks aturan izin untuk memfilter kapan hook ini dijalankan, seperti `"Bash(git *)"` atau `"Edit(*.ts)"`. Hook hanya spawn jika pemanggilan tool cocok dengan pola, atau jika perintah Bash terlalu kompleks untuk diurai. Hanya dievaluasi pada tool events: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, dan `PermissionDenied`. Pada event lain, hook dengan `if` yang ditetapkan tidak akan pernah dijalankan. Menggunakan sintaks yang sama seperti [aturan izin](/id/permissions) |299| `if` | tidak | Sintaks aturan izin untuk memfilter kapan hook ini dijalankan, seperti `"Bash(git *)"` atau `"Edit(*.ts)"`. Hook hanya spawn jika pemanggilan tool cocok dengan pola, atau jika perintah Bash terlalu kompleks untuk diurai. Hanya dievaluasi pada tool events: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, dan `PermissionDenied`. Pada event lain, hook dengan `if` yang ditetapkan tidak akan pernah dijalankan. Menggunakan sintaks yang sama seperti [aturan izin](/id/permissions) |

300| `timeout` | tidak | Detik sebelum membatalkan. Default: 600 untuk command, 30 untuk prompt, 60 untuk agent |300| `timeout` | tidak | Detik sebelum membatalkan. Default: 600 untuk `command`, `http`, dan `mcp_tool`; 30 untuk `prompt`; 60 untuk `agent`. [`UserPromptSubmit`](#userpromptsubmit) menurunkan default `command`, `http`, dan `mcp_tool` menjadi 30 |

301| `statusMessage` | tidak | Pesan spinner kustom ditampilkan saat hook dijalankan |301| `statusMessage` | tidak | Pesan spinner kustom ditampilkan saat hook dijalankan |

302| `once` | tidak | Jika `true`, dijalankan hanya sekali per sesi kemudian dihapus. Hanya dihormati untuk hooks yang dideklarasikan dalam [skill frontmatter](#hooks-in-skills-and-agents); diabaikan dalam file pengaturan dan agent frontmatter |302| `once` | tidak | Jika `true`, dijalankan hanya sekali per sesi kemudian dihapus. Hanya dihormati untuk hooks yang dideklarasikan dalam [skill frontmatter](#hooks-in-skills-and-agents); diabaikan dalam file pengaturan dan agent frontmatter |

303 303 


558 558 

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

560 560 

561Pada macOS dan Linux, command hooks berjalan dalam sesi mereka sendiri tanpa terminal pengontrol sejak v2.1.139. Proses hook dan proses anak apa pun tidak dapat membuka `/dev/tty` atau mengirim urutan escape langsung ke antarmuka Claude Code. Windows tidak memiliki `/dev/tty`. Untuk menampilkan pesan kepada pengguna di platform apa pun, kembalikan [`systemMessage`](#json-output) dalam output JSON. Untuk memicu notifikasi desktop, atur judul jendela, atau bunyikan bel, kembalikan [`terminalSequence`](#emit-terminal-notifications) sebagai gantinya.

562 

561### Bidang input umum563### Bidang input umum

562 564 

563Hook events menerima bidang-bidang ini sebagai JSON, selain bidang spesifik event yang didokumentasikan dalam setiap bagian [hook event](#hook-events). Untuk command hooks, JSON ini tiba melalui stdin. Untuk HTTP hooks, itu tiba sebagai badan permintaan POST.565Hook events menerima bidang-bidang ini sebagai JSON, selain bidang spesifik event yang didokumentasikan dalam setiap bagian [hook event](#hook-events). Untuk command hooks, JSON ini tiba melalui stdin. Untuk HTTP hooks, itu tiba sebagai badan permintaan POST.


685 687 

686Stdout hook Anda harus berisi hanya objek JSON. Jika profil shell Anda mencetak teks saat startup, itu dapat mengganggu parsing JSON. Lihat [JSON validation failed](/id/hooks-guide#json-validation-failed) dalam panduan troubleshooting.688Stdout hook Anda harus berisi hanya objek JSON. Jika profil shell Anda mencetak teks saat startup, itu dapat mengganggu parsing JSON. Lihat [JSON validation failed](/id/hooks-guide#json-validation-failed) dalam panduan troubleshooting.

687 689 

688Hook output yang disuntikkan ke dalam konteks (`additionalContext`, `systemMessage`, atau plain stdout) dibatasi pada 10.000 karakter. Output yang melebihi batas ini disimpan ke file dan diganti dengan pratinjau dan path file, dengan cara yang sama seperti hasil tool besar ditangani.690String output hook, termasuk `additionalContext`, `systemMessage`, dan plain stdout, dibatasi pada 10.000 karakter. Output yang melebihi batas ini disimpan ke file dan diganti dengan pratinjau dan path file, dengan cara yang sama seperti hasil tool besar ditangani.

689 691 

690Objek JSON mendukung tiga jenis bidang:692Objek JSON mendukung tiga jenis bidang:

691 693 


694* **`hookSpecificOutput`** adalah objek bersarang untuk events yang memerlukan kontrol yang lebih kaya. Ini memerlukan bidang `hookEventName` yang diatur ke nama event.696* **`hookSpecificOutput`** adalah objek bersarang untuk events yang memerlukan kontrol yang lebih kaya. Ini memerlukan bidang `hookEventName` yang diatur ke nama event.

695 697 

696| Bidang | Default | Deskripsi |698| Bidang | Default | Deskripsi |

697| :--------------- | :-------- | :--------------------------------------------------------------------------------------------------------------------------------- |699| :----------------- | :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

698| `continue` | `true` | Jika `false`, Claude berhenti memproses sepenuhnya setelah hook dijalankan. Mengambil alih bidang keputusan spesifik event apa pun |700| `continue` | `true` | Jika `false`, Claude berhenti memproses sepenuhnya setelah hook dijalankan. Mengambil alih bidang keputusan spesifik event apa pun |

699| `stopReason` | tidak ada | Pesan ditampilkan ke pengguna saat `continue` adalah `false`. Tidak ditampilkan ke Claude |701| `stopReason` | tidak ada | Pesan ditampilkan ke pengguna saat `continue` adalah `false`. Tidak ditampilkan ke Claude |

700| `suppressOutput` | `false` | Jika `true`, menyembunyikan stdout dari debug log |702| `suppressOutput` | `false` | Jika `true`, menyembunyikan stdout dari debug log |

701| `systemMessage` | tidak ada | Pesan peringatan ditampilkan ke pengguna |703| `systemMessage` | tidak ada | Pesan peringatan ditampilkan ke pengguna |

704| `terminalSequence` | tidak ada | Urutan escape terminal untuk Claude Code yang akan dipancarkan atas nama Anda, seperti notifikasi desktop, judul jendela, atau bel. Dibatasi pada OSC `0`/`1`/`2`/`9`/`99`/`777` dan BEL. Jika nilai berisi apa pun di luar daftar putih, bidang diabaikan. Gunakan ini alih-alih menulis ke `/dev/tty`, yang tidak tersedia untuk hooks |

702 705 

703Untuk menghentikan Claude sepenuhnya terlepas dari tipe event:706Untuk menghentikan Claude sepenuhnya terlepas dari tipe event:

704 707 


706{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }709{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }

707```710```

708 711 

712#### Emit terminal notifications

713 

714Bidang `terminalSequence` memerlukan Claude Code v2.1.141 atau lebih baru.

715 

716Hooks berjalan tanpa terminal pengontrol, jadi menulis urutan escape langsung ke `/dev/tty` gagal. Sebagai gantinya, kembalikan urutan escape dalam bidang `terminalSequence` dan Claude Code memancarkannya untuk Anda melalui jalur penulisan terminal miliknya sendiri. Ini bebas race, bekerja di dalam tmux dan GNU screen, dan bekerja di Windows di mana tidak ada `/dev/tty`.

717 

718Bidang menerima string dari satu atau lebih urutan escape yang diizinkan:

719 

720* OSC `0`, `1`, `2`: judul jendela dan ikon

721* OSC `9`: notifikasi iTerm2, ConEmu, Windows Terminal, dan WezTerm, termasuk `9;4` kemajuan taskbar

722* OSC `99`: notifikasi Kitty

723* OSC `777`: notifikasi urxvt, Ghostty, dan Warp

724* BEL telanjang

725 

726Urutan dapat diakhiri dengan BEL atau dengan ST. Apa pun di luar daftar putih, termasuk urutan kursor dan warna CSI, urutan palet OSC, hyperlink OSC 8, penulisan clipboard OSC 52, dan OSC 1337, ditolak dan bidang diabaikan.

727 

728Contoh di bawah menjalankan notifikasi desktop dari hook `Notification`. Urutan escape dibangun dengan `printf` octal escapes sehingga byte kontrol tidak pernah muncul di baris perintah shell, dan `jq -n --arg` membangun output JSON sehingga tanda kutip, backslash, dan newline dalam pesan notifikasi diloloskan dengan benar:

729 

730```bash theme={null}

731#!/bin/bash

732# Notification hook: ping desktop ketika Claude Code membutuhkan perhatian.

733input=$(cat)

734title="Claude Code'

735body=$(jq -r '.message // "Needs your attention"' <<<"$input")

736seq=$(printf '\033]777;notify;%s;%s\007' "$title" "$body")

737jq -nc --arg seq "$seq" '{terminalSequence: $seq}'

738```

739 

740Bentuk `{ "terminalSequence": "..." }` sama dari shell atau bahasa apa pun. Di Windows, bangun string escape di PowerShell atau skrip dan pancarkan objek JSON yang sama.

741 

742<Note>

743 `terminalSequence` adalah pengganti yang didukung untuk hooks yang sebelumnya menulis urutan escape langsung ke `/dev/tty`. Daftar putih dibatasi pada urutan yang tidak dapat memindahkan kursor atau mengubah warna, jadi hook tidak pernah dapat merusak prompt di layar.

744</Note>

745 

709#### Tambahkan konteks untuk Claude746#### Tambahkan konteks untuk Claude

710 747 

711Bidang `additionalContext` meneruskan string dari hook Anda ke jendela konteks Claude. Claude Code membungkus string dalam pengingat sistem dan menyisipkannya ke dalam percakapan pada titik di mana hook dijalankan. Claude membaca pengingat pada permintaan model berikutnya, tetapi itu tidak muncul sebagai pesan chat dalam antarmuka.748Bidang `additionalContext` meneruskan string dari hook Anda ke jendela konteks Claude. Claude Code membungkus string dalam pengingat sistem dan menyisipkannya ke dalam percakapan pada titik di mana hook dijalankan. Claude membaca pengingat pada permintaan model berikutnya, tetapi itu tidak muncul sebagai pesan chat dalam antarmuka.


989 1026 

990Dijalankan ketika pengguna mengirimkan prompt, sebelum Claude memproses. Ini memungkinkan Anda menambahkan konteks tambahan berdasarkan prompt/percakapan, memvalidasi prompts, atau memblokir jenis prompts tertentu.1027Dijalankan ketika pengguna mengirimkan prompt, sebelum Claude memproses. Ini memungkinkan Anda menambahkan konteks tambahan berdasarkan prompt/percakapan, memvalidasi prompts, atau memblokir jenis prompts tertentu.

991 1028 

1029Hooks `UserPromptSubmit` memiliki timeout default 30 detik untuk tipe `command`, `http`, dan `mcp_tool`, lebih pendek dari default 600 detik untuk tipe tersebut pada event lain. Karena hook ini dijalankan sebelum setiap prompt dan memblokir pemrosesan model sampai selesai, hook yang macet menghentikan sesi. Jika hook Anda memerlukan lebih banyak waktu, atur bidang `timeout` dalam entri hook.

1030 

992#### Input UserPromptSubmit1031#### Input UserPromptSubmit

993 1032 

994Selain [bidang input umum](#common-input-fields), UserPromptSubmit hooks menerima bidang `prompt` yang berisi teks yang dikirimkan pengguna.1033Selain [bidang input umum](#common-input-fields), UserPromptSubmit hooks menerima bidang `prompt` yang berisi teks yang dikirimkan pengguna.


2598 2637 

2599Ketika async hook dijalankan, Claude Code memulai proses hook dan segera melanjutkan tanpa menunggu selesai. Hook menerima JSON input yang sama melalui stdin seperti hook sinkron.2638Ketika async hook dijalankan, Claude Code memulai proses hook dan segera melanjutkan tanpa menunggu selesai. Hook menerima JSON input yang sama melalui stdin seperti hook sinkron.

2600 2639 

2601Setelah proses latar belakang keluar, jika hook menghasilkan respons JSON dengan bidang `systemMessage` atau `additionalContext`, konten itu disampaikan ke Claude sebagai konteks pada turn percakapan berikutnya.2640Setelah proses latar belakang keluar, jika hook menghasilkan respons JSON dengan bidang `additionalContext`, konten itu disampaikan ke Claude sebagai konteks pada turn percakapan berikutnya. Bidang `systemMessage` ditampilkan kepada Anda, bukan kepada Claude.

2602 2641 

2603Notifikasi penyelesaian async hook ditekan secara default. Untuk melihatnya, aktifkan mode verbose dengan `Ctrl+O` atau mulai Claude Code dengan `--verbose`.2642Notifikasi penyelesaian async hook ditekan secara default. Untuk melihatnya, aktifkan mode verbose dengan `Ctrl+O` atau mulai Claude Code dengan `--verbose`.

2604 2643 


2619 exit 02658 exit 0

2620fi2659fi

2621 2660 

2622# Jalankan tests dan laporkan hasil via systemMessage2661# Jalankan tests dan laporkan hasil ke Claude via additionalContext

2623RESULT=$(npm test 2>&1)2662RESULT=$(npm test 2>&1)

2624EXIT_CODE=$?2663EXIT_CODE=$?

2625 2664 

2626if [ $EXIT_CODE -eq 0 ]; then2665if [ $EXIT_CODE -eq 0 ]; then

2627 echo "{\"systemMessage\": \"Tests passed after editing $FILE_PATH\"}"2666 MSG="Tests passed after editing $FILE_PATH"

2628else2667else

2629 echo "{\"systemMessage\": \"Tests failed after editing $FILE_PATH: $RESULT\"}"2668 MSG="Tests failed after editing $FILE_PATH: $RESULT"

2630fi2669fi

2670jq -nc --arg msg "$MSG" '{hookSpecificOutput: {hookEventName: "PostToolUse", additionalContext: $msg}}'

2631```2671```

2632 2672 

2633Kemudian tambahkan konfigurasi ini ke `.claude/settings.json` dalam akar proyek Anda. Flag `async: true` memungkinkan Claude terus bekerja sementara tests dijalankan:2673Kemudian tambahkan konfigurasi ini ke `.claude/settings.json` dalam akar proyek Anda. Flag `async: true` memungkinkan Claude terus bekerja sementara tests dijalankan:


2655 2695 

2656### Keterbatasan2696### Keterbatasan

2657 2697 

2658Async hooks memiliki beberapa keterbatasan dibandingkan dengan hooks sinkron:2698Async hooks memiliki beberapa batasan dibandingkan dengan hooks sinkron:

2659 2699 

2660* Hanya hooks `type: "command"` yang mendukung `async`. Prompt-based hooks tidak dapat dijalankan secara asinkron.2700* Hanya hooks `type: "command"` yang mendukung `async`. Prompt-based hooks tidak dapat dijalankan secara asinkron.

2661* Async hooks tidak dapat memblokir pemanggilan tool atau mengembalikan keputusan. Pada saat hook selesai, tindakan pemicu sudah dilanjutkan.2701* Async hooks tidak dapat memblokir pemanggilan tool atau mengembalikan keputusan. Pada saat hook selesai, tindakan pemicu sudah dilanjutkan.

hooks-guide.md +5 −2

Details

865### Keterbatasan865### Keterbatasan

866 866 

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

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

869 * `command`, `http`, `mcp_tool`: 10 menit. `UserPromptSubmit` menurunkan ini menjadi 30 detik.

870 * `prompt`: 30 detik.

871 * `agent`: 60 detik.

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

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

871* Hook `Stop` aktif kapan pun Claude selesai merespons, bukan hanya pada penyelesaian tugas. Mereka tidak aktif pada interupsi pengguna. Kesalahan API menjalankan [StopFailure](/id/hooks#stopfailure) sebagai gantinya.874* Hook `Stop` aktif kapan pun Claude selesai merespons, bukan hanya pada penyelesaian tugas. Mereka tidak aktif pada interupsi pengguna. Kesalahan API menjalankan [StopFailure](/id/hooks#stopfailure) sebagai gantinya.

872* Ketika beberapa hook PreToolUse mengembalikan [`updatedInput`](/id/hooks#pretooluse) untuk menulis ulang argumen alat, yang terakhir selesai menang. Karena hooks berjalan secara paralel, urutannya tidak deterministik. Hindari memiliki lebih dari satu hook memodifikasi input alat yang sama.875* Ketika beberapa hook PreToolUse mengembalikan [`updatedInput`](/id/hooks#pretooluse) untuk menulis ulang argumen alat, yang terakhir selesai menang. Karena hooks berjalan secara paralel, urutannya tidak deterministik. Hindari memiliki lebih dari satu hook memodifikasi input alat yang sama.

873 876 

mcp.md +1 −1

Details

458 458 

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

460 460 

461Claude Code menandai server jarak jauh sebagai memerlukan autentikasi ketika server merespons dengan `401 Unauthorized` dan header `WWW-Authenticate` yang menunjuk ke server otorisasinya. Server kustom apa pun yang mengembalikan respons tersebut mendapatkan alur autentikasi `/mcp` yang sama seperti server jarak jauh lainnya.461Claude Code menandai server jarak jauh sebagai memerlukan autentikasi ketika server merespons dengan `401 Unauthorized` atau `403 Forbidden`. Salah satu kode status ini menandai server di `/mcp` sehingga Anda dapat menyelesaikan alur OAuth. Server kustom yang mengembalikan header `WWW-Authenticate` yang menunjuk ke server otorisasinya mendapatkan penemuan otomatis yang sama seperti server jarak jauh lainnya.

462 462 

463<Steps>463<Steps>

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

Details

51 Bendera yang tersedia:51 Bendera yang tersedia:

52 52 

53 | Bendera | Deskripsi |53 | Bendera | Deskripsi |

54 | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |54 | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

55 | `--name "My Project"` | Tetapkan judul sesi khusus yang terlihat dalam daftar sesi di claude.ai/code. |55 | `--name "My Project"` | Tetapkan judul sesi khusus yang terlihat dalam daftar sesi di claude.ai/code. |

56 | `--remote-control-session-name-prefix <prefix>` | Awalan untuk nama sesi yang dibuat secara otomatis ketika tidak ada nama eksplisit yang ditetapkan. Default adalah nama mesin Anda, menghasilkan nama seperti `myhost-graceful-unicorn`. Atur `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` untuk efek yang sama. |56 | `--remote-control-session-name-prefix <prefix>` | Awalan untuk nama sesi yang dibuat secara otomatis ketika tidak ada nama eksplisit yang ditetapkan. Default adalah nama mesin Anda, menghasilkan nama seperti `myhost-graceful-unicorn`. Atur `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` untuk efek yang sama. |

57 | `--spawn <mode>` | Bagaimana server membuat sesi.<br />• `same-dir` (default): semua sesi berbagi direktori kerja saat ini, sehingga dapat bertentangan jika mengedit file yang sama.<br />• `worktree`: setiap sesi sesuai permintaan mendapatkan [git worktree](/id/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees) miliknya sendiri. Memerlukan repositori git.<br />• `session`: mode sesi tunggal. Melayani tepat satu sesi dan menolak koneksi tambahan. Atur saat startup saja.<br />Tekan `w` saat runtime untuk beralih antara `same-dir` dan `worktree`. |57 | `--spawn <mode>` | Bagaimana server membuat sesi.<br />• `same-dir` (default): semua sesi berbagi direktori kerja saat ini, sehingga dapat bertentangan jika mengedit file yang sama.<br />• `worktree`: setiap sesi sesuai permintaan mendapatkan [git worktree](/id/worktrees) miliknya sendiri. Memerlukan repositori git.<br />• `session`: mode sesi tunggal. Melayani tepat satu sesi dan menolak koneksi tambahan. Atur saat startup saja.<br />Tekan `w` saat runtime untuk beralih antara `same-dir` dan `worktree`. |

58 | `--capacity <N>` | Jumlah maksimum sesi bersamaan. Default adalah 32. Tidak dapat digunakan dengan `--spawn=session`. |58 | `--capacity <N>` | Jumlah maksimum sesi bersamaan. Default adalah 32. Tidak dapat digunakan dengan `--spawn=session`. |

59 | `--verbose` | Tampilkan log koneksi dan sesi terperinci. |59 | `--verbose` | Tampilkan log koneksi dan sesi terperinci. |

60 | `--sandbox` / `--no-sandbox` | Aktifkan atau nonaktifkan [sandboxing](/id/sandboxing) untuk isolasi sistem file dan jaringan. Dimatikan secara default. |60 | `--sandbox` / `--no-sandbox` | Aktifkan atau nonaktifkan [sandboxing](/id/sandboxing) untuk isolasi sistem file dan jaringan. Dimatikan secara default. |


113 113 

114* **Buka URL sesi** di browser apa pun untuk langsung ke sesi di [claude.ai/code](https://claude.ai/code).114* **Buka URL sesi** di browser apa pun untuk langsung ke sesi di [claude.ai/code](https://claude.ai/code).

115* **Pindai kode QR** yang ditampilkan bersama URL sesi untuk membukanya langsung di aplikasi Claude. Dengan `claude remote-control`, tekan spacebar untuk beralih tampilan kode QR.115* **Pindai kode QR** yang ditampilkan bersama URL sesi untuk membukanya langsung di aplikasi Claude. Dengan `claude remote-control`, tekan spacebar untuk beralih tampilan kode QR.

116* **Buka [claude.ai/code](https://claude.ai/code) atau aplikasi Claude** dan temukan sesi berdasarkan nama dalam daftar sesi. Sesi Remote Control menampilkan ikon komputer dengan titik status hijau saat online.116* **Buka [claude.ai/code](https://claude.ai/code) atau aplikasi Claude** dan temukan sesi berdasarkan nama dalam daftar sesi. Di aplikasi mobile Claude, ketuk **Code** dalam navigasi untuk mencapai daftar sesi. Sesi Remote Control menampilkan ikon komputer dengan titik status hijau saat online.

117 117 

118Judul sesi jarak jauh dipilih dalam urutan ini:118Judul sesi jarak jauh dipilih dalam urutan ini:

119 119 


130 130 

131### Aktifkan Remote Control untuk semua sesi131### Aktifkan Remote Control untuk semua sesi

132 132 

133Secara default, Remote Control hanya diaktifkan ketika Anda secara eksplisit menjalankan `claude remote-control`, `claude --remote-control`, atau `/remote-control`. Untuk mengaktifkannya secara otomatis untuk setiap sesi interaktif, jalankan `/config` di dalam Claude Code dan atur **Enable Remote Control for all sessions** ke `true`. Atur kembali ke `false` untuk menonaktifkan.133Secara default, Remote Control hanya diaktifkan ketika Anda secara eksplisit menjalankan `claude remote-control`, `claude --remote-control`, atau `/remote-control`. Untuk mengaktifkannya secara otomatis untuk setiap sesi interaktif, jalankan `/config` di dalam Claude Code dan atur **Enable Remote Control for all sessions** ke `true`. Atur kembali ke `false` untuk menonaktifkan. Di aplikasi Desktop, Anda juga dapat mengalihkan ini dari **Settings → Claude Code → Enable remote control by default**.

134 134 

135Dengan pengaturan ini aktif, setiap proses Claude Code interaktif mendaftarkan satu sesi jarak jauh. Jika Anda menjalankan beberapa instance, masing-masing mendapatkan lingkungan dan sesi sendiri. Untuk menjalankan beberapa sesi bersamaan dari satu proses, gunakan [mode server](#start-a-remote-control-session) sebagai gantinya.135Dengan pengaturan ini aktif, setiap proses Claude Code interaktif mendaftarkan satu sesi jarak jauh. Jika Anda menjalankan beberapa instance, masing-masing mendapatkan lingkungan dan sesi sendiri. Untuk menjalankan beberapa sesi bersamaan dari satu proses, gunakan [mode server](#start-a-remote-control-session) sebagai gantinya.

136 136 


190* **Ultraplan memutuskan Remote Control**: memulai sesi [ultraplan](/id/ultraplan) memutuskan sesi Remote Control aktif apa pun karena kedua fitur menempati antarmuka claude.ai/code dan hanya satu yang dapat terhubung pada satu waktu.190* **Ultraplan memutuskan Remote Control**: memulai sesi [ultraplan](/id/ultraplan) memutuskan sesi Remote Control aktif apa pun karena kedua fitur menempati antarmuka claude.ai/code dan hanya satu yang dapat terhubung pada satu waktu.

191* **Beberapa perintah hanya lokal**: perintah yang membuka pemilih interaktif di terminal, seperti `/mcp`, `/plugin`, atau `/resume`, hanya bekerja dari CLI lokal. Perintah yang menghasilkan output teks, termasuk `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/extra-usage`, `/recap`, dan `/reload-plugins`, bekerja dari mobile dan web.191* **Beberapa perintah hanya lokal**: perintah yang membuka pemilih interaktif di terminal, seperti `/mcp`, `/plugin`, atau `/resume`, hanya bekerja dari CLI lokal. Perintah yang menghasilkan output teks, termasuk `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/extra-usage`, `/recap`, dan `/reload-plugins`, bekerja dari mobile dan web.

192 192 

193## Pemecahan masalah193## Pemecahan Masalah

194 194 

195### "Remote Control memerlukan langganan claude.ai"195### "Remote Control memerlukan langganan claude.ai"

196 196 


215 215 

216### "Remote Control dinonaktifkan oleh kebijakan organisasi Anda"216### "Remote Control dinonaktifkan oleh kebijakan organisasi Anda"

217 217 

218Kesalahan ini memiliki tiga penyebab yang berbeda. Jalankan `/status` terlebih dahulu untuk melihat metode login dan langganan mana yang Anda gunakan.218Kesalahan ini memiliki empat penyebab yang berbeda. Jalankan `/status` terlebih dahulu untuk melihat metode login dan langganan mana yang Anda gunakan.

219 219 

220* **Anda diautentikasi dengan kunci API atau akun Console**: Remote Control memerlukan OAuth claude.ai. Jalankan `/login` dan pilih opsi claude.ai. Jika `ANTHROPIC_API_KEY` diatur di lingkungan Anda, batalkan pengaturannya.220* **Anda diautentikasi dengan kunci API atau akun Console**: Remote Control memerlukan OAuth claude.ai. Jalankan `/login` dan pilih opsi claude.ai. Jika `ANTHROPIC_API_KEY` diatur di lingkungan Anda, batalkan pengaturannya.

221* **Admin Tim atau Enterprise Anda belum mengaktifkannya**: Remote Control dimatikan secara default di paket ini. Admin dapat mengaktifkannya di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) dengan mengaktifkan toggle **Remote Control**. Ini adalah pengaturan organisasi sisi server, bukan kunci [pengaturan yang dikelola](/id/permissions#managed-only-settings).221* **Admin Tim atau Enterprise Anda belum mengaktifkannya**: Remote Control dimatikan secara default di paket ini. Admin dapat mengaktifkannya di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code) dengan mengaktifkan toggle **Remote Control**. Toggle ini adalah pengaturan organisasi sisi server.

222* **Toggle admin berwarna abu-abu**: organisasi Anda memiliki konfigurasi retensi data atau kepatuhan yang tidak kompatibel dengan Remote Control. Ini tidak dapat diubah dari panel admin. Hubungi dukungan Anthropic untuk membahas opsi.222* **Toggle admin berwarna abu-abu**: organisasi Anda memiliki konfigurasi retensi data atau kepatuhan yang tidak kompatibel dengan Remote Control. Ini tidak dapat diubah dari panel admin. Hubungi dukungan Anthropic untuk membahas opsi.

223* **Kesalahan menyebutkan `disableRemoteControl`**: administrator IT Anda telah menonaktifkan Remote Control di perangkat ini melalui [pengaturan yang dikelola](/id/settings#settings-files), terlepas dari toggle organisasi-lebar.

223 224 

224### "Remote credentials fetch failed"225### "Remote credentials fetch failed"

225 226 

sub-agents.md +6 −4

Details

158 158 

159Ini adalah cara yang direkomendasikan untuk membuat dan mengelola subagent. Untuk pembuatan manual atau otomasi, Anda juga dapat menambahkan file subagent secara langsung.159Ini adalah cara yang direkomendasikan untuk membuat dan mengelola subagent. Untuk pembuatan manual atau otomasi, Anda juga dapat menambahkan file subagent secara langsung.

160 160 

161Untuk membuat daftar semua subagent yang dikonfigurasi dari baris perintah tanpa membuka [tampilan agen](/id/agent-view), alirkan output dari `claude agents`. Misalnya, `claude agents | cat` mencetak agen yang dikelompokkan berdasarkan sumber dan menunjukkan mana yang ditimpa oleh definisi prioritas lebih tinggi.

162 

163### Pilih cakupan subagent161### Pilih cakupan subagent

164 162 

165Subagent adalah file Markdown dengan frontmatter YAML. Simpan mereka di lokasi berbeda tergantung cakupan. Ketika beberapa subagent berbagi nama yang sama, lokasi prioritas lebih tinggi menang.163Subagent adalah file Markdown dengan frontmatter YAML. Simpan mereka di lokasi berbeda tergantung cakupan. Ketika beberapa subagent berbagi nama yang sama, lokasi prioritas lebih tinggi menang.


178 176 

179**Subagent pengguna** (`~/.claude/agents/`) adalah subagent pribadi yang tersedia di semua proyek Anda.177**Subagent pengguna** (`~/.claude/agents/`) adalah subagent pribadi yang tersedia di semua proyek Anda.

180 178 

179Claude Code memindai `.claude/agents/` dan `~/.claude/agents/` secara rekursif, sehingga Anda dapat mengorganisir definisi ke dalam subfolder seperti `agents/review/` atau `agents/research/`. Jalur subdirektori tidak mempengaruhi cara subagent diidentifikasi atau dipanggil, karena identitas hanya berasal dari bidang frontmatter `name`. Jaga nilai `name` tetap unik di seluruh pohon: jika dua file dalam satu cakupan mendeklarasikan nama yang sama, Claude Code menyimpan satu dan membuang yang lain tanpa peringatan.

180 

181Direktori `agents/` plugin juga dipindai secara rekursif. Tidak seperti cakupan proyek dan pengguna, subfolder di dalam direktori `agents/` plugin menjadi bagian dari [pengenal yang dibatasi cakupan](#invoke-subagents-explicitly): file di `agents/review/security.md` dalam plugin `my-plugin` terdaftar sebagai `my-plugin:review:security`.

182 

181**Subagent yang ditentukan CLI** dilewatkan sebagai JSON saat meluncurkan Claude Code. Mereka hanya ada untuk sesi itu dan tidak disimpan ke disk, menjadikannya berguna untuk pengujian cepat atau skrip otomasi. Anda dapat mendefinisikan beberapa subagent dalam satu panggilan `--agents`:183**Subagent yang ditentukan CLI** dilewatkan sebagai JSON saat meluncurkan Claude Code. Mereka hanya ada untuk sesi itu dan tidak disimpan ke disk, menjadikannya berguna untuk pengujian cepat atau skrip otomasi. Anda dapat mendefinisikan beberapa subagent dalam satu panggilan `--agents`:

182 184 

183<Tabs>185<Tabs>


638 640 

639Pesan lengkap Anda masih pergi ke Claude, yang menulis prompt tugas subagent berdasarkan apa yang Anda minta. @-mention mengontrol subagent mana yang Claude panggil, bukan prompt apa yang diterima.641Pesan lengkap Anda masih pergi ke Claude, yang menulis prompt tugas subagent berdasarkan apa yang Anda minta. @-mention mengontrol subagent mana yang Claude panggil, bukan prompt apa yang diterima.

640 642 

641Subagent yang disediakan oleh [plugin](/id/plugins) yang diaktifkan muncul di typeahead sebagai `<plugin-name>:<agent-name>`. Subagent background bernama yang saat ini berjalan dalam sesi juga muncul di typeahead, menunjukkan status mereka di samping nama. Anda juga dapat mengetik mention secara manual tanpa menggunakan picker: `@agent-<name>` untuk subagent lokal, atau `@agent-<plugin-name>:<agent-name>` untuk subagent plugin.643Subagent yang disediakan oleh [plugin](/id/plugins) yang diaktifkan muncul di typeahead dengan nama yang dibatasi, seperti `my-plugin:code-reviewer` atau `my-plugin:review:security` ketika plugin [mengorganisir agen ke dalam subfolder](#choose-the-subagent-scope). Subagent background bernama yang saat ini berjalan dalam sesi juga muncul di typeahead, menunjukkan status mereka di samping nama. Anda juga dapat mengetik mention secara manual tanpa menggunakan picker: `@agent-<name>` untuk subagent lokal, atau `@agent-` diikuti dengan nama yang dibatasi untuk subagent plugin, misalnya `@agent-my-plugin:code-reviewer`.

642 644 

643**Jalankan seluruh sesi sebagai subagent.** Lewatkan [`--agent <name>`](/id/cli-reference) untuk memulai sesi di mana thread utama itu sendiri mengambil prompt sistem subagent, pembatasan alat, dan model:645**Jalankan seluruh sesi sebagai subagent.** Lewatkan [`--agent <name>`](/id/cli-reference) untuk memulai sesi di mana thread utama itu sendiri mengambil prompt sistem subagent, pembatasan alat, dan model:

644 646 


650 652 

651Ini berfungsi dengan subagent bawaan dan khusus, dan pilihan bertahan ketika Anda melanjutkan sesi.653Ini berfungsi dengan subagent bawaan dan khusus, dan pilihan bertahan ketika Anda melanjutkan sesi.

652 654 

653Untuk subagent yang disediakan plugin, lewatkan nama yang dibatasi: `claude --agent <plugin-name>:<agent-name>`.655Untuk subagent yang disediakan plugin, lewatkan nama yang dibatasi: `claude --agent <plugin-name>:<agent-name>`. Jika plugin menempatkan agen dalam subfolder dari direktori `agents/` nya, sertakan subfolder dalam nama yang dibatasi, misalnya `claude --agent my-plugin:review:security`.

654 656 

655Untuk menjadikannya default untuk setiap sesi dalam proyek, atur `agent` dalam `.claude/settings.json`:657Untuk menjadikannya default untuk setiap sesi dalam proyek, atur `agent` dalam `.claude/settings.json`:

656 658 

Details

16 16 

17Dikte suara mengalirkan audio yang direkam ke server Anthropic untuk transkripsi. Audio tidak diproses secara lokal. Layanan ucapan-ke-teks hanya tersedia saat Anda melakukan autentikasi dengan akun Claude.ai, dan tidak tersedia saat Claude Code dikonfigurasi untuk menggunakan kunci API Anthropic secara langsung, Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry. Transkripsi tidak menggunakan pesan Claude atau token dan tidak dihitung terhadap batas yang ditampilkan di `/usage`. Lihat [penggunaan data](/id/data-usage) untuk mengetahui bagaimana Anthropic menangani data Anda.17Dikte suara mengalirkan audio yang direkam ke server Anthropic untuk transkripsi. Audio tidak diproses secara lokal. Layanan ucapan-ke-teks hanya tersedia saat Anda melakukan autentikasi dengan akun Claude.ai, dan tidak tersedia saat Claude Code dikonfigurasi untuk menggunakan kunci API Anthropic secara langsung, Amazon Bedrock, Google Vertex AI, atau Microsoft Foundry. Transkripsi tidak menggunakan pesan Claude atau token dan tidak dihitung terhadap batas yang ditampilkan di `/usage`. Lihat [penggunaan data](/id/data-usage) untuk mengetahui bagaimana Anthropic menangani data Anda.

18 18 

19Dikte suara juga memerlukan akses mikrofon lokal, sehingga tidak berfungsi di lingkungan jarak jauh seperti [Claude Code di web](/id/claude-code-on-the-web) atau sesi SSH. Di WSL, dikte suara memerlukan WSLg untuk akses audio, yang disertakan dengan WSL2 di Windows 11. Di Windows 10 atau WSL1, jalankan Claude Code di Windows asli sebagai gantinya.19Dikte suara juga memerlukan akses mikrofon lokal, sehingga tidak berfungsi di lingkungan jarak jauh seperti [Claude Code di web](/id/claude-code-on-the-web) atau sesi SSH. Di WSL, dikte suara memerlukan WSLg untuk akses audio. WSLg disertakan dengan WSL2 saat diinstal dari Microsoft Store di Windows 10 atau 11. Jika WSLg tidak tersedia, misalnya di WSL1, jalankan Claude Code di Windows asli sebagai gantinya.

20 20 

21Perekaman audio menggunakan modul asli bawaan di macOS, Linux, dan Windows. Di Linux, jika modul asli tidak dapat dimuat, Claude Code kembali ke `arecord` dari ALSA utils atau `rec` dari SoX. Jika tidak ada yang tersedia, `/voice` mencetak perintah instalasi untuk manajer paket Anda.21Perekaman audio menggunakan modul asli bawaan di macOS, Linux, dan Windows. Di Linux, jika modul asli tidak dapat dimuat, Claude Code kembali ke `arecord` dari ALSA utils atau `rec` dari SoX. Jika tidak ada yang tersedia, `/voice` mencetak perintah instalasi untuk manajer paket Anda.

22 22 


51}51}

52```52```

53 53 

54Saat dikte suara diaktifkan, footer input menampilkan petunjuk `hold Space to speak` saat prompt kosong. Teks petunjuk sama di kedua mode, dan tidak muncul jika Anda memiliki [baris status kustom](/id/statusline) yang dikonfigurasi.54Saat dikte suara diaktifkan, footer input menampilkan petunjuk `hold Space to speak` saat prompt kosong. Petunjuk mencerminkan pengikatan `voice:pushToTalk` saat ini Anda dan diperbarui jika Anda [mengikat ulang kunci dikte](#rebind-the-dictation-key). Teks petunjuk sama di kedua mode, dan tidak muncul jika Anda memiliki [baris status kustom](/id/statusline) yang dikonfigurasi.

55 55 

56Transkripsi disesuaikan untuk kosakata pengkodean di kedua mode. Istilah pengembangan umum seperti `regex`, `OAuth`, `JSON`, dan `localhost` dikenali dengan benar, dan nama proyek saat ini dan nama cabang git Anda ditambahkan sebagai petunjuk pengenalan secara otomatis.56Transkripsi disesuaikan untuk kosakata pengkodean di kedua mode. Istilah pengembangan umum seperti `regex`, `OAuth`, `JSON`, dan `localhost` dikenali dengan benar, dan nama proyek saat ini dan nama cabang git Anda ditambahkan sebagai petunjuk pengenalan secara otomatis.

57 57 


148 148 

149Beberapa kunci tidak dikirimkan ke aplikasi terminal dan tidak dapat diikat sama sekali. Misalnya, `Caps Lock` menampilkan kesalahan jika Anda mencoba mengikatnya. Lihat [sesuaikan pintasan keyboard](/id/keybindings) untuk sintaks keybinding lengkap dan daftar pintasan yang dicadangkan.149Beberapa kunci tidak dikirimkan ke aplikasi terminal dan tidak dapat diikat sama sekali. Misalnya, `Caps Lock` menampilkan kesalahan jika Anda mencoba mengikatnya. Lihat [sesuaikan pintasan keyboard](/id/keybindings) untuk sintaks keybinding lengkap dan daftar pintasan yang dicadangkan.

150 150 

151## Pemecahan masalah151## Pemecahan Masalah

152 152 

153Masalah umum saat dikte suara tidak diaktifkan atau merekam:153Masalah umum saat dikte suara tidak diaktifkan atau merekam:

154 154 

155* **`Voice mode requires a Claude.ai account`**: Anda diautentikasi dengan kunci API atau penyedia pihak ketiga. Jalankan `/login` untuk masuk dengan akun Claude.ai.155* **`Voice mode requires a Claude.ai account`**: Anda diautentikasi dengan kunci API atau penyedia pihak ketiga. Jalankan `/login` untuk masuk dengan akun Claude.ai.

156* **`Microphone access is denied`**: berikan izin mikrofon ke terminal Anda di pengaturan sistem. Di macOS, buka System Settings → Privacy & Security → Microphone dan aktifkan aplikasi terminal Anda, kemudian jalankan `/voice` lagi. Di Windows, buka Settings → Privacy & security → Microphone dan aktifkan akses mikrofon untuk aplikasi desktop, kemudian jalankan `/voice` lagi. Jika terminal Anda tidak terdaftar dalam pengaturan macOS, lihat [Terminal tidak terdaftar dalam pengaturan Mikrofon macOS](#terminal-not-listed-in-macos-microphone-settings).156* **`Microphone access is denied`**: berikan izin mikrofon ke terminal Anda di pengaturan sistem. Di macOS, buka System Settings → Privacy & Security → Microphone dan aktifkan aplikasi terminal Anda, kemudian jalankan `/voice` lagi. Di Windows, buka Settings → Privacy & security → Microphone dan aktifkan akses mikrofon untuk aplikasi desktop, kemudian jalankan `/voice` lagi. Jika terminal Anda tidak terdaftar dalam pengaturan macOS, lihat [Terminal tidak terdaftar dalam pengaturan Mikrofon macOS](#terminal-not-listed-in-macos-microphone-settings).

157* **`No audio recording tool found` di Linux**: modul audio asli tidak dapat dimuat dan tidak ada fallback yang diinstal. Instal SoX dengan perintah yang ditampilkan dalam pesan kesalahan, misalnya `sudo apt-get install sox`.157* **`No audio recording tool found` di Linux**: modul audio asli tidak dapat dimuat dan tidak ada fallback yang diinstal. Instal SoX dengan perintah yang ditampilkan dalam pesan kesalahan, misalnya `sudo apt-get install sox`.

158* **`Voice mode could not find a working audio recorder in WSL`**: WSLg merutekan audio melalui PulseAudio daripada perangkat ALSA, jadi SoX memerlukan backend PulseAudio-nya diinstal secara eksplisit. Jalankan `sudo apt install sox libsox-fmt-pulse`. Menginstal `sox` saja menarik backend ALSA, yang tidak dapat merekam di WSL karena tidak ada perangkat `/dev/snd`.

159* **`Voice input is failing repeatedly and has been paused`**: dikte suara mengalami beberapa kegagalan awal berturut-turut dan berhenti mencoba sesi baru sampai satu berhasil. Ini biasanya berarti mikrofon atau tumpukan audio di host ini tidak dapat menangkap audio, misalnya server headless, shell jarak jauh tanpa passthrough audio, atau izin mikrofon yang ditolak. Konfirmasi perangkat input yang berfungsi, perbaiki penyebab mendasar dari entri di atas, kemudian picu suara lagi.

158* **Tidak ada yang terjadi saat menahan `Space` dalam mode tahan**: perhatikan input prompt saat Anda menahan. Jika spasi terus menumpuk, dikte suara kemungkinan mati; jalankan `/voice hold` untuk mengaktifkannya. Jika hanya satu atau dua spasi muncul dan kemudian tidak ada, dikte suara aktif tetapi deteksi tahan tidak dipicu. Deteksi tahan memerlukan terminal Anda untuk mengirim peristiwa pengulangan kunci, sehingga tidak dapat mendeteksi kunci yang ditahan jika pengulangan kunci dinonaktifkan di tingkat OS. Beralih ke mode ketuk dengan `/voice tap` untuk menghindari persyaratan pengulangan kunci.160* **Tidak ada yang terjadi saat menahan `Space` dalam mode tahan**: perhatikan input prompt saat Anda menahan. Jika spasi terus menumpuk, dikte suara kemungkinan mati; jalankan `/voice hold` untuk mengaktifkannya. Jika hanya satu atau dua spasi muncul dan kemudian tidak ada, dikte suara aktif tetapi deteksi tahan tidak dipicu. Deteksi tahan memerlukan terminal Anda untuk mengirim peristiwa pengulangan kunci, sehingga tidak dapat mendeteksi kunci yang ditahan jika pengulangan kunci dinonaktifkan di tingkat OS. Beralih ke mode ketuk dengan `/voice tap` untuk menghindari persyaratan pengulangan kunci.

159* **Mengetuk `Space` mengetik spasi alih-alih merekam dalam mode ketuk**: ketukan pertama hanya mulai merekam saat input prompt kosong. Hapus input terlebih dahulu, atau periksa bahwa Anda dalam mode ketuk dengan menjalankan `/voice tap`.161* **Mengetuk `Space` mengetik spasi alih-alih merekam dalam mode ketuk**: ketukan pertama hanya mulai merekam saat input prompt kosong. Hapus input terlebih dahulu, atau periksa bahwa Anda dalam mode ketuk dengan menjalankan `/voice tap`.

160* **`No audio detected from microphone`**: perekaman dimulai tetapi menangkap keheningan. Konfirmasi perangkat input yang benar diatur sebagai default sistem dan tingkat inputnya tidak dibisukan atau mendekati nol. Di Windows, buka Settings → System → Sound → Input dan pilih mikrofon Anda. Di macOS, buka System Settings → Sound → Input.162* **`No audio detected from microphone`**: perekaman dimulai tetapi menangkap keheningan. Konfirmasi perangkat input yang benar diatur sebagai default sistem dan tingkat inputnya tidak dibisukan atau mendekati nol. Di Windows, buka Settings → System → Sound → Input dan pilih mikrofon Anda. Di macOS, buka System Settings → Sound → Input.