# Pemulihan Claude Code: Safe Mode, /cd, dan Fallback

> Mendiagnosis Claude Code dengan safe mode, perintah /cd, model fallback, dan pemulihan pengaturan. Urutan pemeriksaan dan batasan aslinya.

Source: https://ailoot.ai/blog/id/claude-code-safe-mode-recovery/
Canonical: https://ailoot.ai/blog/id/claude-code-safe-mode-recovery/
Language: id
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-140
Revision: sha256-4db57fea6d74f921dba84b0eb2ba3630bdb5cbcb01ecc0fc335125e664b52e15


Materi praktis tentang bekerja dengan agen: [dokumentasi Ailoot](https://ailoot.ai/docs/).



## Apa yang Berubah di Claude Code pada Juni 2026?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Poin utama

Pada 8 Juni 2026, di Claude Code v2.1.169, Anthropic menambahkan flag `--safe-mode` dan perintah `/cd`. Dua hari sebelumnya, v2.1.166 memperkenalkan model fallback, hingga 3 dalam satu rantai. Ketiga fitur ini mengatasi masalah yang paling umum bagi vibe coder: “semuanya rusak, saya tidak tahu siapa yang harus disalahkan, dan saya tidak mau kehilangan satu jam untuk menginstal ulang.”

</div>

Sebelumnya, ketika Claude Code mulai berperilaku aneh—indikator pemuatan yang tak kunjung berhenti, crash saat startup, agen mengabaikan aturan di `CLAUDE.md`, hook diam-diam tidak berjalan—hanya ada satu jalan keluar: mengomentari bagian `.claude/settings.json` secara manual, menonaktifkan server MCP satu per satu, atau, dalam kasus terburuk, menghapus `~/.claude` dan menginstal ulang. Dalam salah satu kasus yang diceritakan, `~/.claude` dihapus dan konfigurasi server MCP yang membutuhkan waktu satu setengah jam untuk disusun pun hilang. Belakangan diketahui bahwa penyebabnya adalah satu baris di `CLAUDE.md`, yang sebenarnya bisa ditemukan dalam 10 detik—tetapi hal itu baru jelas setelah pemulihan penuh.

Pada Juni 2026, Anthropic meluncurkan tiga mekanisme yang mengubah skenario ini. Berikut ringkasannya, termasuk kapan fitur tersebut hadir:

| Versi | Tanggal | Fitur yang hadir |
|----|----|----|
| **2.1.166** | 6 Juni 2026 | Pengaturan `fallbackModel` + flag `--fallback-model` untuk sesi interaktif |
| **2.1.169** | 8 Juni 2026 | Flag `--safe-mode` dan variabel lingkungan `CLAUDE_CODE_SAFE_MODE`, perintah `/cd` |
| **2.1.176** | 12 Juni 2026 | Perbaikan: `/cd` dan perpindahan worktree tidak lagi menampilkan cabang git lama |

Di bawah ini, tiap mekanisme dijelaskan langkah demi langkah, beserta urutan penerapannya saat sesi Claude Code mulai bermasalah.

## Apa yang Paling Sering Merusak Claude Code?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Poin utama

Berdasarkan pengalaman yang diceritakan, Claude Code biasanya bermasalah bagi vibe coder karena empat hal: `CLAUDE.md` yang terlalu panjang dan berisi aturan saling bertentangan, hook dengan kode keluar yang salah, server MCP yang gagal tanpa memberi tanda, dan pengaturan yang tumpang tindih di tiga tingkat `settings.json`. Biasanya ada satu penyebab, diagnosis memakan waktu beberapa menit, dan kepanikan membuat orang langsung ingin menjalankan `rm -rf`.

</div>

Dalam contoh yang diceritakan, `CLAUDE.md` awalnya disusun dalam 80 baris—dan berfungsi selama sebulan. Pada bulan kedua, mulai terlihat bahwa seminggu sekali Claude melanggar semua aturan yang telah ditetapkan: menyentuh `.env`, menjalankan `git push --force`, mengutak-atik `node_modules`. Bukan dengan sengaja—Claude hanya lupa. Pernah, `.gitignore` dihapus dan alasannya tidak langsung jelas. Skenario ini dibahas lebih lanjut dalam [panduan `CLAUDE.md`](https://ailoot.ai/blog/id/claude-md-template/).

Ketika `CLAUDE.md` membengkak hingga lebih dari 400 baris, masalah mulai muncul tanpa disadari: file itu menghabiskan bagian yang cukup besar dari jendela konteks saat sesi dimulai dan membuat instruksi penting tenggelam di antara instruksi sekunder. Claude tetap membaca file tersebut secara formal, sehingga dari luar tampaknya “aturannya ada, tetapi tidak berfungsi”—tanda umum kontrak yang terlalu panjang.

Hook adalah sumber masalah umum kedua. `Claude Code hooks` memiliki kekhasan yang tidak ditekankan Anthropic.

Artinya, `sys.exit(1)` dalam hook Python (atau nilai konvensional Unix apa pun yang berarti “gagal karena kesalahan”) tidak akan menghentikan Claude. Hanya kode `2` yang memblokir. Dalam kasus yang diceritakan, hook dianggap sebagai “larangan keras”, tetapi kenyataannya hanya mencatat keluhan dan membiarkan tindakan berlanjut.

Server MCP adalah lapisan ketiga, dan juga bisa bermasalah dengan caranya sendiri.

Gejalanya sering kali sama: perintah MCP tersedia, tetapi mengembalikan `failed` tanpa traceback. Untuk informasi lebih lanjut tentang konfigurasi MCP dan menambahkan server dengan `claude mcp add`, lihat [panduan terpisah](https://ailoot.ai/blog/id/mcp-servers-claude-code/).

Sumber keempat adalah hierarki `settings.json` tiga tingkat. Ada `~/.claude/settings.json` (tingkat pengguna), `.claude/settings.json` di root proyek (proyek), `.claude/settings.local.json` (lokal), dan opsional pengaturan terkelola dari administrator perusahaan. Semuanya digabungkan berdasarkan aturan prioritas. Ketika seseorang menambahkan server MCP di tingkat proyek, sementara Anda memiliki entri serupa dengan konfigurasi peluncuran berbeda di tingkat pengguna, terjadi konflik tanpa tanda yang terlihat dan kesannya menjadi “Claude Code rusak.”

## Bagaimana Cara Kerja `--safe-mode`, dan Apa yang Dinonaktifkannya?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Poin utama

`claude --safe-mode` meluncurkan Claude Code dengan penyesuaian yang sepenuhnya dinonaktifkan: `CLAUDE.md`, plugin, skill, hook, server MCP, perintah pengguna, agen, gaya keluaran, alur kerja, dan keybinding. Otorisasi, pemilihan model, alat bawaan, dan izin tetap tersedia. Ini adalah alat diagnostik: jika masalah hilang dalam safe mode, penyebabnya adalah salah satu lapisan yang Anda tambahkan.

</div>

Redaksi asli Anthropic dalam changelog v2.1.169 berbunyi:

<figure>
<blockquote>
<p>Menambahkan flag <code>--safe-mode</code> (dan <code>CLAUDE_CODE_SAFE_MODE</code>) untuk meluncurkan Claude Code dengan penyesuaian yang dinonaktifkan (<code>CLAUDE.md</code>, plugin, skill, hook, server MCP) untuk keperluan diagnostik.</p>
</blockquote>
<figcaption>— Anthropic Claude Code Changelog, https://code.claude.com/docs/en/changelog</figcaption>
</figure>

Anthropic menjelaskan dalam dokumentasi konfigurasi model:

<figure>
<blockquote>
<p>Untuk memeriksa apakah penyesuaian menjadi penyebabnya, mulai sesi dengan <code>claude --safe-mode</code>, yang menonaktifkan <code>CLAUDE.md</code>, skill, server MCP, dan hook. Status git dan nama direktori tidak dianggap sebagai penyesuaian dan tetap tersedia.</p>
</blockquote>
<figcaption>— Anthropic Docs - Model configuration, https://code.claude.com/docs/en/model-config</figcaption>
</figure>

Ini adalah **alat diagnostik**, bukan “lingkungan bersih.” Safe mode membantu menjawab satu pertanyaan: apakah masalahnya ada pada perilaku bawaan Claude Code, atau pada penyesuaian tambahan? Ini bagian dari rekayasa konteks—mengelola apa yang Claude lihat dan tidak lihat pada waktu tertentu. Jika semuanya berfungsi dalam safe mode, jelas bahwa lapisan-lapisan itu perlu diperiksa dengan pencarian biner. Jika tetap tidak berfungsi, masalahnya ada pada instalasi, otorisasi, jaringan, atau infrastruktur, sehingga masuk akal untuk memeriksa `claude doctor` dan log.

Hal yang dinonaktifkan safe mode (daftar resmi Anthropic—5 lapisan utama):

- `CLAUDE.md` di semua tingkat (pengguna / proyek)
- Plugin
- Skill
- Hook
- Server MCP

Hal yang tetap berfungsi:

- Otorisasi (sesi OAuth atau kunci API Anda)
- Pemilihan model (`--model sonnet`, `--model opus`)
- Alat bawaan (Read, Write, Bash, Grep, dan sebagainya)
- Izin
- Status git
- Nama direktori

Detail penting: safe mode tidak menonaktifkan pengaturan terkelola/kebijakan dari administrator perusahaan. Jika Anda bekerja dalam tim yang mengatur `availableModels` melalui Bedrock GovCloud atau konfigurasi MDM, batasan tersebut tetap berlaku—safe mode hanya menonaktifkan penyesuaian Anda, bukan kebijakan perusahaan.

## Bagaimana Cara Mengisolasi Lapisan dan Menemukan Penyebabnya dalam 60 Detik?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Poin utama

Langkah 1: jalankan `claude --safe-mode` di folder yang sama dengan tempat masalah terjadi. Jika berhasil, masalahnya ada pada penyesuaian Anda; aktifkan satu per satu: `CLAUDE.md` -> hook -> MCP -> skill. Jika safe mode pun tidak berhasil, masalahnya ada pada autentikasi, versi, jaringan, atau OS. Dalam kasus itu, jalankan `claude doctor` untuk diagnostik otomatis, tanpa menyentuh `rm -rf`.

</div>

Skenario diagnosis saat Claude Code “berhenti mendengarkan.” Versi minimum untuk semua perintah di bawah adalah **Claude Code v2.1.169**. Jika versi Anda lebih lama, perbarui terlebih dahulu (`npm update -g @anthropic-ai/claude-code` atau gunakan penginstal native Anthropic).

1.  Buka folder yang sama dengan tempat masalah terjadi.
2.  Jalankan `claude --safe-mode`.
3.  Jika aplikasi berjalan dengan baik, periksa permintaan awal Anda. Apakah berhasil? Jika ya, berarti salah satu lapisan menjadi penyebabnya. Lanjut ke langkah 4.
4.  Jika safe mode tetap bermasalah, jangan sentuh konfigurasinya. Jalankan `claude doctor` terlebih dahulu; periksa autentikasi, versi, dan instalasi yang bertentangan.

Setelah safe mode berjalan dengan baik, aktifkan lapisan satu per satu, dimulai dari yang paling mungkin menjadi penyebab. Urutan berdasarkan pengalaman yang diceritakan:

1.  **`CLAUDE.md`.** Jalankan `claude` tanpa safe mode, tetapi ubah nama file itu sementara: `mv CLAUDE.md CLAUDE.md.bak`. Jika berhasil, penyebabnya adalah file tersebut. Setelah itu Anda dapat melakukan pencarian biner: pertahankan separuh barisnya dan periksa.
2.  **Hook.** Buka `.claude/settings.json` dan sementara isi bagian `hooks` dengan `[]`. Mulai ulang `claude`. Apakah berhasil? Jika ya, penyebabnya adalah salah satu hook. Aktifkan satu per satu.
3.  **Server MCP.** Demikian pula, di `~/.claude.json` atau `.claude/settings.json`, sementara ubah bagian `mcpServers` menjadi objek kosong, mulai ulang, lalu periksa.
4.  **Skill.** Pindahkan `.claude/skills/` ke folder sementara. Luncurkan dan periksa.

Arti “mengubah nama sementara”: file tidak dihapus selama diagnosis. `mv` atau `git stash` memungkinkan Anda memulihkan semuanya dengan satu perintah jika lapisan tersebut ternyata bukan penyebabnya.



## Bagaimana Cara Berpindah Folder Kerja dengan `/cd` Tanpa Kehilangan Konteks?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Poin utama

Perintah `/cd <path>` di Claude Code 2.1.169+ mengganti folder kerja dalam sesi aktif tanpa kehilangan cache prompt. Ini berguna ketika konfigurasi proyek saat ini bermasalah: Anda dapat beralih ke folder bersih, memeriksa apakah Claude berfungsi, lalu kembali. Sebelumnya, Anda harus menutup sesi dan memulainya lagi.

</div>

Dari changelog v2.1.169 pada 8 Juni:

<figure>
<blockquote>
<p>Menambahkan perintah <code>/cd</code> untuk mengalihkan sesi ke folder kerja baru tanpa mengatur ulang cache prompt di tengah sesi.</p>
</blockquote>
<figcaption>— Anthropic Claude Code Changelog, https://code.claude.com/docs/en/changelog</figcaption>
</figure>

Mengapa ini berguna saat memperbaiki masalah. Misalkan Anda berada di folder proyek `~/work/myapp`, dan Claude Code berperilaku aneh. Sebelumnya, satu-satunya cara untuk memeriksa “apakah ini berfungsi sama sekali?” adalah menutup sesi, beralih ke folder lain, lalu memulai lagi. Anda kehilangan konteks, riwayat, dan cache prompt yang telah dipanaskan. Sekarang:

```bash
# In the same session:
/cd ~/sandbox/test
```

Claude berpindah ke folder baru dan membaca `CLAUDE.md` di sana (jika ada) sebagai pesan, bukan sebagai pengganti prompt sistem—artinya cache tetap terjaga. Jika semuanya berfungsi di `~/sandbox/test`, jelas bahwa masalahnya ada pada konfigurasi `~/work/myapp`.

Pada 12 Juni, v2.1.176 memperbaiki satu regresi yang merepotkan—`/cd` menampilkan cabang git lama sampai aplikasi dimulai ulang sepenuhnya. Jika versi Anda lebih lama, perbarui atau abaikan saja `git status` untuk beberapa pesan pertama setelah berpindah—informasinya akan diperbarui.

## Bagaimana Cara Mengonfigurasi Model Fallback untuk 529?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Poin utama

Di v2.1.166, Anthropic menambahkan `fallbackModel`—rantai hingga 3 model yang dicoba secara berurutan ketika model utama kelebihan beban atau tidak tersedia. Rantai ini hanya dipicu oleh kesalahan server karena kelebihan beban dan tidak dapat dicoba ulang. Kesalahan otorisasi, penagihan, batas laju, dan transportasi tidak memicu rantai fallback—kesalahan tersebut mengikuti logika percobaan ulang biasa.

</div>

Dalam skenario yang diceritakan, sebuah tugas panjang berjalan dengan Opus di suatu proyek seminggu sekali; setelah 10 menit, API mengembalikan 529 Overloaded dan sesi pun gagal. Sebelumnya, Anda harus menunggu atau beralih secara manual ke Sonnet dengan `--model sonnet` dan kehilangan semua konteks yang telah dipanaskan. Dalam `business/` yang besar dengan pengaturan second brain, ini membutuhkan sekitar dua puluh menit kerja. Sekarang ada mekanisme yang tepat.

Kutipan persis dari dokumentasi resmi:

<figure>
<blockquote>
<p>Ketika model utama kelebihan beban, tidak tersedia, atau mengembalikan kesalahan server lain yang tidak dapat dicoba ulang, Claude Code dapat beralih ke model fallback alih-alih menggagalkan permintaan. Kesalahan otorisasi, penagihan, batas laju, ukuran permintaan, dan transportasi tidak pernah memicu peralihan—kesalahan tersebut mengikuti jalur percobaan ulang dan penanganan kesalahan biasa.</p>
</blockquote>
<figcaption>— Anthropic Docs - Model configuration, https://code.claude.com/docs/en/model-config</figcaption>
</figure>

Dan secara terpisah, cara kerja rantainya:

<figure>
<blockquote>
<p>Konfigurasikan satu atau beberapa model fallback, dan Claude Code akan mencobanya sesuai urutan, menampilkan notifikasi saat beralih. Peralihan hanya berlaku untuk giliran saat ini—pesan berikutnya akan mencoba model utama lagi. Rantai dibatasi hingga tiga model setelah duplikat dihapus; entri tambahan diabaikan.</p>
</blockquote>
<figcaption>— Anthropic Docs - Model configuration, https://code.claude.com/docs/en/model-config</figcaption>
</figure>

Ada dua cara untuk mengonfigurasinya. Melalui CLI:

```bash
claude --fallback-model sonnet,haiku
```

Melalui `~/.claude/settings.json`:

```json
{
  "fallbackModel": ["claude-sonnet-4-6", "claude-haiku-4-5"]
}
```

Ada kekhususan tersendiri soal batas laju. Anthropic sengaja tidak meneruskan kesalahan 429 ke rantai, sehingga batas permintaan tidak dapat diakali dengan beralih ke model berikutnya. Fallback hanya berfungsi ketika model utama kelebihan beban, tidak tersedia, atau mengembalikan kesalahan server yang tidak dapat dicoba ulang (misalnya, 529 Overloaded). Batas laju menggunakan logika percobaan ulang dan jeda bertahap biasa.

Satu kekhususan lagi—pada 12 Juni, v2.1.174 memperbaiki regresi: pemadatan konteks tidak mematuhi `--fallback-model`. Jika Anda memiliki sesi panjang dan konteks dipadatkan saat terjadi kelebihan beban, sebelum perbaikan ini model fallback tidak akan dipanggil. Jika Anda bekerja dengan sesi panjang (`/compact`, `/loop` semalaman), perbarui setidaknya ke v2.1.174.

## Apa yang Harus Diperbaiki Jika Penyebabnya `CLAUDE.md`, Hook, MCP, atau Skill?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Poin utama

Jika safe mode mengidentifikasi lapisan yang menjadi penyebab, perbaikannya bergantung pada lapisan tersebut. Untuk `CLAUDE.md`, gunakan pencarian biner atau kembali ke templat siap pakai dengan kurang dari 200 baris. Untuk hook, periksa kode keluar (2 memblokir, 1 tidak) dan logikanya. Untuk MCP, hapus satu server lalu periksa. Untuk skill, periksa `SKILL.md` apakah ada aturan yang bertentangan dengan `CLAUDE.md`.

</div>

Strategi khusus untuk setiap lapisan.

### Jika Penyebabnya `CLAUDE.md`

Buka file dan periksa ukurannya. Berdasarkan pengalaman yang diceritakan, **pertahankan `CLAUDE.md` aktif tidak lebih dari 200 baris**; pindahkan sisanya ke router dan dokumen pendukung di samping proyek (struktur second brain lengkap ada di [panduan second brain](https://ailoot.ai/blog/id/claude-code-second-brain/)). Jika ada lebih dari 400 baris, kemungkinan besar itulah penyebabnya. Langkah-langkah:

1.  Buat cadangan: `cp CLAUDE.md CLAUDE.md.full`.
2.  Kembali ke templat kerja yang singkat. Templat siap pakai tersedia di [panduan “Cara Mengonfigurasi CLAUDE.md”](https://ailoot.ai/blog/id/claude-md-template/).
3.  Mulai ulang Claude Code. Periksa.
4.  Jika berhasil, pulihkan aturan dalam blok kecil berisi 10–20 baris, lalu periksa setelah tiap blok.
5.  Temukan blok yang merusak perilaku. Tulis ulang sebagai hook dengan kode keluar yang benar (kode keluar untuk hook dibahas di subbagian berikutnya dari H2 ini).

### Jika Penyebabnya Hook

Pertanyaan utamanya adalah apakah kode keluarnya benar. Hook Claude Code menggunakan:

- **Exit 0** — semuanya baik; tindakan dilanjutkan.
- **Exit 1** — kesalahan, tetapi **tidak memblokir**. Claude melanjutkan seolah tidak terjadi apa-apa.
- **Exit 2** — kesalahan yang **memblokir**. Hanya kode ini yang benar-benar menghentikan tindakan.

Jika Anda menulis `sys.exit(1)` atau `exit 1` di hook shell karena mengira itu akan memblokir, di Claude Code kode tersebut berfungsi sebagai log peringatan tanpa menghentikan tindakan. Ubah menjadi `2`. Untuk detail tentang hook dan cara mengonfigurasikannya tanpa jebakan ini, lihat [panduan terpisah](https://ailoot.ai/blog/id/claude-code-hooks/).

Kasus umum kedua adalah hook mengembalikan JSON tidak valid di stdout. Claude Code mengurai respons hook sebagai JSON; jika ada teks tambahan (log, penanda progres, emoji), hook dianggap gagal dan tindakan dilanjutkan. Aturannya: **stdout hanya berisi JSON; hal lain masuk ke stderr**.

Kasus ketiga adalah hook membaca sesuatu dari `~/.claude/` yang disembunyikan safe mode. Ini skenario normal; perbaiki bukan dengan mengubah hook, melainkan dengan memeriksa `os.environ.get('CLAUDE_CODE_SAFE_MODE')` di awal lalu keluar dengan kode 0.

### Jika Penyebabnya Server MCP

Gejala: perintah MCP tersedia, tetapi mengembalikan `failed` tanpa traceback yang jelas. Langkah-langkah:

1.  Jalankan `claude mcp list`—server mana yang terdaftar?
2.  Nonaktifkan server satu per satu di `~/.claude.json`: ubah nama kunci `claude-server-A` menjadi `_claude-server-A` (ini menonaktifkannya tanpa menghapusnya).
3.  Mulai ulang `claude`. Periksa panggilan mana yang berfungsi.
4.  Setelah menemukan server penyebabnya, periksa lognya: `claude mcp logs <name>`.
5.  Jika server tersebut berasal dari pihak ketiga (`@modelcontextprotocol/server-postgres` dan sejenisnya), periksa apakah ada rilis baru. Ekosistem MCP masih bergejolak; server sering rusak setelah pembaruan Claude Code.

Jika Anda mengalami “crash saat startup, dan hanya ketika ada dua MCP,” bandingkan perilakunya dalam safe mode tanpa MCP.

### Jika Penyebabnya Skill

Skill terdiri atas `SKILL.md` dan kode di `.claude/skills/<name>/`. Gejalanya: Claude mengabaikan skill, menerapkannya pada waktu yang salah, atau menerapkannya tetapi menghasilkan keluaran yang tidak berguna. Langkah-langkah:

1.  Buka `SKILL.md`. Periksa deskripsinya—**seharusnya terdiri atas 1–2 kalimat dan secara spesifik menjelaskan kapan skill digunakan**. Jika tertulis “pembantu universal untuk segalanya,” Claude tidak memahami kapan harus menggunakannya.
2.  Periksa apakah ada aturan yang bertentangan dengan `CLAUDE.md`. Jika `CLAUDE.md` mengatakan “selalu tulis tes,” tetapi deskripsi skill mengatakan “gunakan untuk prototipe cepat tanpa tes,” berarti ada konflik.
3.  Jika skill menggunakan perintah eksternal (npm, python, git), periksa apakah perintah tersebut tersedia dalam PATH seluruh sistem. Skill memiliki lingkungan minimalnya sendiri.

## Jika Safe Mode Tidak Membantu: Diagnosis dan Simpan Keadaan Sebelum Memperbaiki

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Poin utama

Jika safe mode juga gagal, kemungkinan tersisa meliputi instalasi, otorisasi, jaringan, atau infrastruktur. Jalankan `claude doctor` dan periksa buktinya. Laporan yang belum meyakinkan tidak membenarkan penghapusan pengaturan atau sesi: simpan dan verifikasi seluruh keadaan terlebih dahulu, lalu perbaiki hanya instalasi yang terdiagnosis.

</div>

Penghapusan keadaan pengguna bukan jalan pintas diagnosis. Gunakan pemeriksaan di bawah untuk mengidentifikasi kesalahan; jika belum meyakinkan, simpan bukti dan selidiki lebih lanjut. Perbaikan instalasi dimulai dengan cadangan terverifikasi serta mempertahankan akun dan identitas penyimpanan kredensial yang ada. Urutannya:

1.  **`claude doctor`** — diagnostik otomatis. Anthropic menulis dalam dokumentasinya:

<figure>
<blockquote>
<p>Jika <code>claude --version</code> berfungsi, tetapi ada hal lain yang bermasalah, jalankan <code>claude doctor</code> untuk membuat laporan diagnostik otomatis.</p>
</blockquote>
<figcaption>— Anthropic Docs - Troubleshoot installation, https://code.claude.com/docs/en/troubleshoot-install</figcaption>
</figure>

2.  **Periksa apakah ada instalasi yang bertentangan.** Banyak orang menginstal versi global npm dan penginstal native secara bersamaan:

<figure>
<blockquote>
<p>Beberapa instalasi Claude Code dapat menyebabkan perbedaan versi atau perilaku yang tidak terduga.</p>
</blockquote>
<figcaption>— Anthropic Docs - Troubleshoot installation, https://code.claude.com/docs/en/troubleshoot-install</figcaption>
</figure>

3.  **Periksa apakah `ANTHROPIC_API_KEY` mencegat sesi OAuth Anda.** Ini penyebab umum dari “tidak ada yang berfungsi, kuncinya kedaluwarsa”:

<figure>
<blockquote>
<p>Saat `ANTHROPIC_API_KEY` ditetapkan dan Anda telah mengonfirmasinya, Claude Code menggunakan kunci tersebut sebagai pengganti kredensial OAuth langganan Anda.</p>
</blockquote>
<figcaption>— Anthropic Docs - Troubleshoot installation, https://code.claude.com/docs/en/troubleshoot-install</figcaption>
</figure>

Solusi: jalankan `unset ANTHROPIC_API_KEY` di sesi shell saat ini atau hapus variabel itu dari `~/.zshrc` / `~/.bashrc`.

4.  **Perbaiki hanya instalasi yang diidentifikasi diagnostik; simpan seluruh keadaan pengguna terlebih dahulu.** Kegagalan safe mode atau laporan doctor yang belum meyakinkan tidak membuktikan data pengguna harus dihapus. Hentikan semua sesi Claude dan penulis data lain sebelum membuat cadangan yang konsisten. Pertahankan akun Unix, HOME, penyimpanan kredensial sistem operasi, dan akun Anthropic yang sama; jangan merotasi kunci atau membuat identitas pengganti.

Contoh cadangan berikut untuk **Linux dengan GNU tar**. Pada macOS atau Windows gunakan alat pencadangan yang mempertahankan ACL, atribut tambahan, tautan, serta metadata platform itu, dan verifikasi pemulihan sebelum melanjutkan; jangan menganggap flag khusus GNU berfungsi di sana. Arsip memuat kredensial dan transkrip sesi: simpan privat dan di luar repositori.

```bash
# Run as the same user who owns the Claude state, after stopping writers.
set -eu
umask 077
backup_dir=$(mktemp -d "$HOME/.claude-recovery-XXXXXXXX")
set --
if [ -e "$HOME/.claude" ] || [ -L "$HOME/.claude" ]; then
  set -- "$@" .claude
fi
if [ -e "$HOME/.claude.json" ] || [ -L "$HOME/.claude.json" ]; then
  set -- "$@" .claude.json
fi
[ "$#" -gt 0 ] || exit 1
tar --acls --xattrs --numeric-owner -cpf "$backup_dir/claude-state.tar" -C "$HOME" "$@"
tar --acls --xattrs --compare -f "$backup_dir/claude-state.tar" -C "$HOME"
sha256sum "$backup_dir/claude-state.tar" > "$backup_dir/claude-state.sha256"
(cd "$backup_dir" && sha256sum -c claude-state.sha256)
mkdir "$backup_dir/restore-check"
tar --acls --xattrs -xpf "$backup_dir/claude-state.tar" -C "$backup_dir/restore-check"
tar --acls --xattrs --compare -f "$backup_dir/claude-state.tar" -C "$backup_dir/restore-check"
printf 'Verified recovery directory: %s\n' "$backup_dir"
```

Semua perintah harus berhasil. Arsip mencakup seluruh pohon `.claude` yang ada, termasuk sesi serta keadaan plugin yang diabaikan/tidak terlacak, dan `.claude.json`, bukan hanya pengaturan terlacak Git. Jika salah satu jalur berupa symlink atau data berada di lokasi konfigurasi terpisah, berhenti dan sertakan target hasil resolusi dalam cadangan terverifikasi yang sama; mengarsipkan tautan saja tidak mencadangkan targetnya. Arsip tidak memuat macOS Keychain atau penyimpanan kredensial eksternal lain, jadi pertahankan identitas tersebut.

Jika diagnostik secara spesifik mengidentifikasi **instalasi lokal lama** sebagai salinan yang bertentangan, pindahkan hanya instalasi itu ke direktori pemulihan privat, alih-alih menghapus konfigurasi serta sesi:

```bash
# Use the verified backup_dir from the previous block.
if [ -d "$HOME/.claude/local" ]; then
  mv "$HOME/.claude/local" "$backup_dir/legacy-local"
fi
```

Hapus instalasi npm hanya jika diagnostik mengidentifikasinya sebagai instalasi yang bertentangan dan Anda bermaksud mempertahankan versi native. Lalu gunakan [installer native terdokumentasi](https://code.claude.com/docs/en/setup), tanpa menghapus `.claude` atau `.claude.json`:

```bash
curl -fsSL https://claude.ai/install.sh | bash
claude --version
claude doctor
```

Pada Windows, perintah instalasi native tetap:

```powershell
irm https://claude.ai/install.ps1 | iex
```

**Pulihkan secara terpisah.** Hentikan penulis data lagi. Periksa checksum arsip dan ekstrak ke direktori pemulihan kosong seperti di atas; pastikan perbandingan berhasil sebelum memakai file. Jika instalasi lama yang dipindahkan harus dipulihkan, pastikan dahulu `$HOME/.claude/local` tidak ada, lalu pindahkan `$backup_dir/legacy-local` kembali ke jalur tepat itu. Pulihkan file pengaturan yang terdiagnosis dari ekstraksi terverifikasi hanya setelah menyimpan pengganti saat ini; jangan menimpa seluruh pohon secara membabi buta. Sesi, pengaturan MCP, dan identitas asli tetap dipertahankan. Snapshot Git saja tidak mencakup transkrip diabaikan/tidak terlacak, kredensial, atau metadata sistem berkas.

## Apa yang Sebaiknya JANGAN Dilakukan Saat Claude Code Bermasalah?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Poin utama

Enam pola anti yang ditemukan dalam kasus dukungan yang diceritakan: mengganti kunci sebelum diagnosis, melakukan reset penuh sebagai langkah pertama, panik karena kesalahan UI pada hook, menaikkan kode keluar hook sebelum memperbaiki logikanya, mengedit `CLAUDE.md` tanpa perlindungan safe mode, dan percaya bahwa “Claude memperbaiki MCP-nya sendiri.” Masing-masing menghabiskan waktu berjam-jam, dan semuanya tidak perlu dilakukan.

</div>

### Jangan Ganti Kunci Sebelum Diagnosis

“Autorisasi tidak berfungsi” dalam 90% kasus disebabkan oleh `ANTHROPIC_API_KEY` yang mencegat langganan, bug UI hook, atau MCP yang gagal. Mengganti kunci tidak akan memperbaiki satu pun dari masalah ini, tetapi akan menambah satu jam waktu henti: Anda harus mencabut kunci lama, menerbitkan yang baru, menandatangani ulang CI dengannya, dan memperbarui variabel di produksi. Jalankan `claude --safe-mode` terlebih dahulu. Apakah berhasil? Jika ya, masalahnya ada pada penyesuaian; kunci tidak perlu disentuh.

### Jangan Lakukan Reset Penuh Sebelum Safe Mode

Safe mode menyediakan lingkungan terisolasi dalam 1 detik. Menghapus `.claude` dapat menghancurkan sesi, konfigurasi MCP, dan keadaan tidak terlacak lainnya. Diagnosis terlebih dahulu, verifikasi cadangan privat, dan gunakan pemindahan yang dapat dibalik hanya untuk lapisan instalasi atau konfigurasi yang benar-benar terkait.

### Jangan Panik karena Kesalahan UI pada Hook

Sebelum memperbaiki apa pun, periksa apakah hook benar-benar berjalan (melalui log ke `stderr` atau cetakan eksplisit), alih-alih mengandalkan indikator visual.

### Jangan Naikkan Kode Keluar Hook Sebelum Memperbaiki Logikanya

Saat hook pemblokir Anda tidak memblokir, Anda mungkin tergoda untuk mengatur `exit 2` lalu menganggapnya selesai. Ini memang tambalan yang berfungsi, tetapi menyembunyikan masalah lain: jika pemblokiran tidak berfungsi selama sebulan, semua hal yang seharusnya dilarang oleh hook telah lolos. Periksa log git terlebih dahulu dan cari tahu dengan tepat apa yang lolos. Setelah itu, tambahkan pemblokiran. Jika tidak, pemblokiran yang kini berfungsi tidak membatalkan apa yang terjadi sebelumnya.

### Jangan Edit `CLAUDE.md` Produksi Tanpa Perlindungan Safe Mode

Dalam kasus yang diceritakan: Anda mengedit `CLAUDE.md`, Claude mulai berperilaku aneh, lalu Anda menjalankan `git diff` dan melihat seseorang juga menambahkan server MCP serta hook ke repo pada malam itu. Anda menyalahkan perubahan Anda, membatalkannya, tetapi Claude masih bermasalah. Aturannya: sebelum menjalankan `git revert`, jalankan `claude --safe-mode`. Jika masalah tetap ada dalam safe mode, perubahan Anda tidak ada kaitannya; tidak perlu membatalkannya.

### Jangan Percaya “Claude Memperbaiki MCP-nya Sendiri”

Skenario yang umum: Anda meminta Claude untuk “menambahkan alat tertentu ke server MCP,” Claude menulis ulang konfigurasi yang berfungsi, semuanya rusak, lalu Claude menghabiskan beberapa giliran untuk men-debug kerusakan yang dibuatnya—dan dalam prosesnya menghabiskan kuota sesi. Ketika MCP bermasalah, **ambil konfigurasi secara manual**; jangan serahkan kepada agen. Sebagian persenjataan alatnya juga berjalan melalui MCP, dan MCP yang rusak berarti alat diagnostik yang rusak.

## Apa yang Harus Dilakukan Setelah Memperbaikinya?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Key takeaways">

Poin utama

Setelah memulihkan Claude Code, tambahkan pencegahan agar masalah tidak berulang. Minimal: `disableBypassPermissionsMode: "disable"` di pengaturan pengguna, hook yang memblokir `.env` dan `git push --force`, serta sandbox untuk proses otonom yang panjang. Panduan pencegahan adalah pendampingnya.

</div>

Setelah menganalisis insiden, jangan langsung kembali bekerja. Tambahkan pencegahan terlebih dahulu agar insiden tidak terulang. Anda bisa kehilangan waktu berjam-jam untuk second brain (folder `business/` dengan struktur proyek) dan `CLAUDE.md`, dan memulihkannya secara manual sulit—itu alasan yang kuat. Set minimum:

1.  **`~/.claude/settings.json`** dengan `permissions.disableBypassPermissionsMode: "disable"`—larangan arsitektural terhadap mode bypass, sehingga `--dangerously-skip-permissions` yang tidak sengaja dijalankan tidak akan berfungsi.
2.  **Hook untuk `Read(./env*)`, `Bash(git push --force)`, `Write(./node_modules/**)`**—hal-hal yang harus ditegakkan sebagai aturan, bukan sekadar harapan.
3.  **Konfigurasi sandbox untuk proses otonom yang panjang** (`/loop`, `/schedule`).
4.  **`/compact` dengan aturan Anda sendiri** tentang apa yang harus dibuang dari konteks, agar Claude tidak menghabiskan dirinya sendiri.

Skema perlindungan empat lapis lengkap ada di [panduan “Cara Mengonfigurasi Claude Code agar Tidak Merusak Proyek Anda Semalaman”](https://ailoot.ai/blog/id/claude-code-safe-overnight-setup/). Satu panduan membahas pencegahan sebelum menjalankan `/loop`; panduan lainnya membahas pemulihan setelah `/loop` terlanjur merusak sesuatu. Pasangan yang masuk akal.

<div class="section" role="doc-bibliography" aria-label="Sources">

### Sumber

- [Anthropic Claude Code Changelog](https://code.claude.com/docs/en/changelog) - changelog resmi yang menjelaskan v2.1.166 (`fallbackModel`), v2.1.169 (safe mode, /cd), v2.1.174 (perbaikan pemadatan konteks), v2.1.176 (perbaikan cabang git /cd).
- [Anthropic Docs - Model configuration](https://code.claude.com/docs/en/model-config) - bagian “Fallback model chains,” “Check what triggered fallback,” “Setting your model.”
- [Anthropic Docs - Troubleshoot installation and login](https://code.claude.com/docs/en/troubleshoot-install) - instalasi yang bertentangan, `claude doctor`, pencegatan `ANTHROPIC_API_KEY`.

</div>

Materi praktis: [dokumentasi Ailoot](https://ailoot.ai/docs/).





Materi dan alat lainnya: [Ailoot](https://ailoot.ai/).

## Pertanyaan tentang Pemulihan Claude Code: Safe Mode, /cd, dan Fallback | Ailoot

### Apakah kegagalan safe mode berarti saya harus menghapus ~/.claude?

Tidak. Masih ada penyebab instalasi, otorisasi, jaringan, dan infrastruktur yang perlu diselidiki. Laporan doctor yang tidak meyakinkan bukan bukti pengaturan atau sesi harus dihapus; perbaiki hanya lapisan yang terdiagnosis.

### Apa yang harus dipertahankan sebelum perbaikan instalasi?

Hentikan penulis data dan cadangkan seluruh keadaan Claude, termasuk sesi, konfigurasi plugin/MCP, file diabaikan, serta metadata sistem berkas. Verifikasi checksum dan ekstraksi sebelum melanjutkan, pertahankan akun serta penyimpanan kredensial yang ada, dan pulihkan hanya lapisan terdiagnosis tanpa menimpa keadaan saat ini secara membabi buta.


## Ailoot · Perusahaan dan portofolio proyeknya

Ailoot bertumpu pada pengalaman operasional yang teruji, basis pelanggan yang besar, layanan yang stabil, dan pemantauan KPI berkelanjutan.

Perusahaan dan portofolio proyeknya: jutaan pelanggan; penjualan miliaran setiap bulan.

Ailoot memanfaatkan pengalaman operasional ini untuk akses API ke fitur AI dalam produk pelanggan, agen, aplikasi, dan otomatisasi.
