Jawaban singkat untuk pertanyaan yang paling sering diajukan pembaca tentang topik ini.
01Di mana file managed-settings.json Claude Code diletakkan?
Di direktori sistem untuk sistem operasinya: /Library/Application Support/ClaudeCode/ di macOS, /etc/claude-code/ di Linux dan WSL, serta C:\Program Files\ClaudeCode\ di Windows. Path ProgramData lama di Windows sudah tidak dibaca. Direktori yang sama juga memuat direktori drop-in managed-settings.d opsional dan managed-mcp.json.
02Kenapa file managed settings Claude Code saya diabaikan?
Hampir selalu karena ada sumber managed berprioritas lebih tinggi. Claude Code memakai sumber pertama yang memuat setidaknya satu policy key — remote settings, lalu kebijakan MDM atau OS, lalu file, lalu registry pengguna — dan mengabaikan sisanya tanpa peringatan apa pun. Jalankan /status dan baca baris Setting sources untuk melihat sumber mana yang benar-benar dipilih.
03Apakah managed settings Claude Code dari sumber berbeda digabungkan?
Tidak, dengan satu pengecualian kecil. Claude Code memilih satu sumber dan mengabaikan yang lain alih-alih menggabungkannya. Beberapa key lintas sumber tetap dibaca dari setiap admin source — lock sandbox, sebagian kontrol sandbox, dan sejak v2.1.223 blok env, yang digabung per variabel sehingga sumber lebih rendah mengisi variabel yang dibiarkan kosong oleh yang lebih tinggi.
04Bisakah developer menimpa managed settings Claude Code?
Tidak lewat file setting, tetapi ada empat hal di luar aturan itu. Nilai model managed adalah default, bukan kunci, jadi pakai availableModels untuk membatasi pilihan. Administrator lokal bisa mengedit sumber managed-nya sendiri. Edit pada cache server-managed hanya bertahan sampai pengambilan berikutnya. Dan managed settings mengikat Claude Code, bukan perkakas lain yang memanggil API.
05Apa yang terjadi ketika sebuah nilai managed settings tidak valid?
Claude Code memperbaiki entri satuan yang bisa diperbaiki, membuang key tingkat atas yang tetap gagal, dan terus menegakkan semua yang valid. Beberapa key penegakan justru gagal tertutup — allowlist MCP atau model yang tidak valid ditegakkan sebagai kosong. Batas versi minimum dan maksimum sengaja gagal terbuka, supaya kiriman kebijakan yang keliru tidak bisa menghentikan Claude Code berjalan.
Managed Settings Claude Code: Kebijakan yang Benar-Benar Mengikat
Claude Code memilih sumber managed pertama yang memuat policy key lalu mengabaikan sisanya — ia tidak menggabungkannya. Satu aturan itu menjelaskan hampir semua kebijakan yang diam-diam gagal.
Managed settings Claude Code berlaku di atas setiap level setting lain, sehingga tidak ada nilai user, project, maupun local yang bisa menimpanya. Ketika lebih dari satu sumber managed mengirimkan kebijakan, Claude Code memakai yang pertama memuat policy key lalu mengabaikan sisanya sepenuhnya alih-alih menggabungkannya, dan ia tidak menampilkan peringatan apa pun untuk sumber yang dilewati.
Seorang administrator yang saya ajak bicara sudah mengirimkan file managed settings yang disusun rapi ke setiap mesin, memverifikasi JSON-nya, memverifikasi path-nya, dan tetap tidak paham kenapa tak satu pun berlaku. File-nya tidak bermasalah. Organisasi mereka juga sudah mengonfigurasi server-managed settings beberapa bulan sebelumnya, dan sumber itu mengalahkan sebuah file — jadi Claude Code membaca kebijakan remote dan diam-diam mengabaikan yang baru saja mereka kirim.
Managed settings adalah mekanisme yang membuat Claude Code bisa digelar di organisasi yang punya aturan, dan yang membuatnya membingungkan adalah ia tidak berperilaku seperti sisa sistem setting. Tulisan ini membahas empat mekanisme pengirimannya, prioritas menang-mutlak beserta pengecualiannya, key yang hanya bisa disetel sumber managed, apa yang terjadi ketika sebuah nilai tidak valid, dan dua perintah yang menjawab apakah kebijakan itu benar-benar berlaku.
Empat cara mengirimkan key yang sama
Setiap mekanisme membawa policy key yang sama seperti file setting biasa, jadi referensi setting berlaku untuk semuanya. Yang berbeda adalah di mana kebijakannya disimpan dan kapan Claude Code membacanya. Baris file dan MDM bersama-sama disebut endpoint-managed, karena kebijakannya tersimpan di perangkat; server-managed adalah baris tempat Claude Code justru mengambilnya.
Pilih berdasarkan cara Anda sudah mengelola perangkat:
Mekanisme
Kapan Claude Code membacanya
Pakai kalau
Server-managed settings
Diambil saat startup, di-poll tiap jam
Anda ingin satu tempat mengubah kebijakan tanpa menyentuh mesin
Kebijakan MDM atau level OS
Saat startup, diperiksa ulang tiap 30 menit
Anda sudah menjalankan Jamf, Intune, atau Group Policy
File managed settings
Saat startup, dimuat ulang saat file berubah
Mesin tanpa MDM, host Linux, image yang Anda bangun
Registry pengguna di Windows
Saat startup, diperiksa ulang tiap 30 menit
Anda tidak bisa menulis key level mesin
# managed-settings.json goes in the system directory for the OS.
# Note that the legacy Windows ProgramData path is NOT read.
macOS /Library/Application Support/ClaudeCode/
Linux and WSL /etc/claude-code/
Windows C:\Program Files\ClaudeCode\
# Same directory also holds an optional drop-in directory and
# the managed MCP configuration:
# managed-settings.d/*.json
# managed-mcp.json
# Drop-ins let several teams own parts of one policy. Claude Code
# merges managed-settings.json first, then every .json file in the
# directory in ALPHABETICAL order — so prefix them:
# 10-telemetry.json
# 20-security.json
Aturan prioritas yang menjegal semua orang
Inilah bagian yang layak dibaca dua kali. Claude Code memeriksa sumbernya dengan urutan tetap dan memakai yang pertama memuat setidaknya satu policy key. Ia tidak menggabungkan sisanya — ia mengabaikannya, tanpa peringatan:
Remote settings, dari claude.ai atau Claude apps gateway. Hanya diambil ketika sesi melakukan autentikasi langsung ke Anthropic API dengan login yang memenuhi syarat, jadi di provider lain Claude Code memulai dari sumber berikutnya.
Kebijakan MDM atau level OS — domain managed preferences macOS atau key registry level mesin di Windows.
File managed settings, dengan direktori drop-in ikut digabungkan.
Registry Windows yang bisa ditulis pengguna, dibaca hanya ketika tidak ada di atasnya yang memuat policy key.
Sumber yang hanya memuat kontrol pewarisan WSL tidak dihitung sebagai mengirimkan policy key, dan Claude Code beralih ke sumber berikutnya. Itu satu-satunya pengecualian yang disengaja pada aturan penghitungannya, dan ia ada supaya kontrol tersebut bisa disetel tanpa tanpa sengaja mengklaim seluruh slot kebijakan.
Key yang tetap dibaca dari setiap sumber
Sekumpulan kecil key melanggar aturan menang-mutlak itu, karena mereka berupa lock atau kontrol keamanan tempat nilai yang lebih ketat dari mana pun seharusnya menang. Claude Code membacanya dari setiap admin source — yang tidak mencakup registry yang bisa ditulis pengguna:
Lock sandbox untuk managed domain dan managed read path. Nilai true di admin source mana pun menyalakan lock-nya, dan selama menyala, allowlist-nya digabung dari setiap admin source.
Beberapa kontrol sandbox dan path binary-nya, plus flag yang memaksa pengambilan ulang remote settings saat startup.
Blok environment, digabung per variabel sejak v2.1.223 — tiap variabel berasal dari sumber berprioritas tertinggi yang mendefinisikannya, sehingga sumber lebih rendah mengisi celahnya alih-alih dibuang.
Menulis kebijakan yang benar-benar membatasi sesuatu
Sebagian besar key khusus managed adalah lock. Nilai yang diatur sebuah lock — permission rule, domain sandbox — adalah key biasa yang bisa disetel level mana pun; lock-lah yang memberi tahu Claude Code untuk hanya menghormati nilai managed. Mengirimkan aturan tanpa lock yang bersesuaian adalah cara paling umum sebuah kebijakan berakhir sebagai saran alih-alih ikatan.
// A managed policy that actually constrains something.
{
"permissions": {
"deny": ["Read(./.env)", "Read(./secrets/**)"],
"disableBypassPermissionsMode": "disable"
},
// Without this, a developer's own allow rules still apply
// alongside yours. With it, ONLY managed rules count — and
// --allowedTools is ignored too.
"allowManagedPermissionRulesOnly": true
}
# Confirm it landed on one machine before the fleet:
/status # look for the "Setting sources" line
# Enterprise managed settings (file)
# ... (remote) (plist) (HKLM) (drop-ins) (HKCU)
# ... (parent process) (helper)
claude doctor # lists every entry Claude Code DROPPED, with
# its source and field
Ada daftar panjang key khusus managed di luar permission: kontrol untuk hook mana yang boleh berjalan, MCP server mana yang diterima, marketplace plugin mana yang diizinkan, apakah plugin bersumber command boleh berjalan sama sekali, apakah flag sideload ditolak saat startup, dan apakah skill, agent, hook, serta MCP server boleh datang dari sumber user dan project. Referensi setting menandai masing-masing, dan baris scope adalah kolom yang perlu dibaca.
Nilai tidak valid tidak semuanya gagal dengan cara yang sama
Claude Code sengaja toleran terhadap managed settings: ia memperbaiki yang bisa diperbaiki, membuang key tingkat atas yang tetap gagal, dan terus menegakkan semua yang valid. Segelintir key penegakan menolak dibuang, karena membuangnya justru hasil yang tidak aman:
Allowlist MCP server yang tidak valid ditegakkan sebagai allowlist kosong, sehingga tidak ada server yang diterima sampai diperbaiki.
Allowlist model yang tidak valid juga ditegakkan sebagai kosong, menyisakan hanya model default.
Key managed-hooks-only, managed-MCP-only, dan sumber plugin command semuanya diperlakukan sebagai true ketika tidak valid.
Batas versi minimum dan maksimum justru sengaja gagal terbuka, supaya kiriman kebijakan yang keliru tidak bisa menghentikan Claude Code dari berjalan sama sekali.
Yang terakhir itu keputusan desain yang layak dihargai. Setiap key penegakan lain gagal tertutup, tetapi batasan versi gagal terbuka, karena salah ketik di field versi minimum yang membuat CLI setiap developer mati total akan jauh lebih buruk daripada batas versi yang sementara tidak ditegakkan. Itu naluri yang bagus untuk ditiru di perkakas kebijakan Anda sendiri.
Apa yang masih bisa diubah developer
Managed settings memang kuat, dan layak jujur soal empat hal yang berada di luarnya, karena tinjauan keamanan pasti menanyakannya:
Model untuk sebuah sesi. Nilai model managed adalah default, bukan kunci — flag dan environment variable tetap memilih modelnya, jadi kirimkan allowlist model untuk membatasi pilihannya.
Hak administrator lokal. Orang yang menjadi admin di mesin itu bisa mengedit sumber managed-nya sendiri, dan justru itulah sebabnya perkakas MDM mengirim ulang secara terjadwal.
Cache server-managed, tempat sebuah edit lokal hanya bertahan sampai pengambilan berikutnya berhasil.
Perkakas lain sama sekali. Managed settings mengikat Claude Code, bukan developer yang memanggil API dari alat lain.
Kalau beberapa tim memiliki bagian dari satu kebijakan, pakai direktori drop-in alih-alih satu file bersama. Claude Code menggabungkan file utamanya dulu, lalu setiap file JSON di direktori itu secara alfabetis, jadi prefiks angka mengatur urutannya. List digabung dengan duplikat dibuang, blok bersarang digabung per key, dan nilai tunggal digantikan file berikutnya — yang berarti dua tim bisa memiliki urusan yang benar-benar terpisah tanpa mengedit file yang sama.
Menjawab apakah ia benar-benar berlaku
Dua perintah menuntaskan setiap versi pertanyaan ini. Baris setting-sources pada perintah status menyebutkan sumber managed yang dipilih Claude Code, di dalam kurung, sehingga Anda tahu sekaligus bahwa sebuah kebijakan aktif dan mekanisme mana dari empat itu yang menang. Baris yang hilang berarti tidak ada sumber yang mengirimkan policy key sama sekali; baris yang menyebut sumber lain berarti ada sumber berprioritas lebih tinggi dan milik Anda diabaikan.
Perintah doctor menjawab separuh lainnya: apa yang terbuang. Ketika sebuah file, profil, nilai registry, atau payload server gagal validasi skema, Claude Code melewati entri yang bisa diperbaikinya dengan satu peringatan masing-masing, lalu membuang key tingkat atas yang nilainya tetap gagal. Sesi interaktif menampilkan dialog saat startup, run non-interaktif mencetak ke standard error, dan perintah doctor mendaftar tiap entri tidak valid beserta sumber dan field-nya.
Aturan yang perlu dibawa pulang: managed settings bukan penggabungan, melainkan pemilihan. Putuskan mana dari empat mekanisme itu yang menjadi sumber kebenaran Anda, kirimkan hanya lewat mekanisme tersebut, dan verifikasi lewat baris status di satu mesin sebelum menyentuh seluruh armada. Lalu pasangkan setiap aturan dengan lock yang membuatnya mengikat, karena permission rule tanpa lock-nya hanyalah saran — dan saran bukan yang ingin dikirim siapa pun yang menggelar managed settings.