Jika Anda mencoba mengarahkan Claude Code ke DeepSeek V4, OpenRouter, atau penyedia model pihak ketiga lainnya, Anda mungkin pernah mengalami ini: Invalid custom3p enterprise config. Kesalahan ini membingungkan, dokumentasinya tidak menjelaskannya dengan jelas, dan itu menghalangi Anda melakukan sesuatu yang secara resmi didukung oleh Claude Code.
Panduan ini menjelaskan secara tepat apa arti "custom3p", enam alasan paling umum mengapa konfigurasi gagal, dan perbaikan langkah demi langkah untuk masing-masing alasan. Jika Anda mencoba menjalankan loop agen Claude Code melalui DeepSeek atau gateway LLM seperti LiteLLM, Anda akan menemukan contoh konfigurasi yang berfungsi di sini.
TL;DR
Invalid custom3p enterprise config berarti Claude Code tidak dapat memvalidasi konfigurasi penyedia pihak ketiga Anda. "custom3p" adalah label internal Claude Code untuk setiap endpoint API non-Anthropic yang dikonfigurasi melalui ANTHROPIC_BASE_URL. Penyebab paling umum adalah: /v1 yang mengakhiri URL dasar, variabel kredensial yang salah, settings.json yang salah format, dan orientasi yang tidak lengkap pada instalasi baru. Perbaiki format URL terlebih dahulu, itu memecahkan sekitar 60% kasus.
Apa arti sebenarnya "custom3p"
Claude Code merutekan permintaan melalui salah satu dari empat mode:
| Mode | Cara terpicu |
|---|---|
| API Anthropic (default) | Tidak ada penggantian yang ditetapkan |
| Amazon Bedrock | CLAUDE_CODE_USE_BEDROCK=1 |
| Google Vertex AI | CLAUDE_CODE_USE_VERTEX=1 |
| Microsoft Foundry | CLAUDE_CODE_USE_FOUNDRY=1 |
| Pihak ketiga kustom | ANTHROPIC_BASE_URL menunjuk ke hal lain |
Baris terakhir adalah "custom3p", pihak ketiga kustom. Ketika ANTHROPIC_BASE_URL diatur ke host non-Anthropic (LiteLLM, OpenRouter, server vLLM lokal, gateway perusahaan), Claude Code secara internal melabeli jalur itu "custom3p" dan menjalankan pemeriksaan validasi sebelum panggilan API pertama.
Jika pemeriksaan itu gagal, Anda mendapatkan: Invalid custom3p enterprise config.
Kesalahan ini sudah ada sebelum pembatasan Anthropic tahun 2026 pada perangkat pihak ketiga. Ini adalah kesalahan validasi konfigurasi, bukan pemblokiran kebijakan, yang berarti Anda bisa memperbaikinya.
Mengapa developer mengalami kesalahan ini sekarang
Pada bulan April 2026, Anthropic memblokir akses langganan Claude Pro dan Max untuk alat agen pihak ketiga yang memalsukan ID klien Claude Code. Alat seperti OpenClaw, yang merutekan sesi Claude Code melalui backend mereka sendiri, berhenti berfungsi dalam semalam.
Itu adalah masalah terpisah dari yang dibahas artikel ini.
Apa yang terjadi selanjutnya adalah mengapa Anda membaca ini: developer mulai menggunakan dukungan penyedia pihak ketiga resmi Claude Code untuk merutekan melalui backend yang lebih murah. Sebuah utas Reddit mendokumentasikan perpindahan loop agen Claude Code ke DeepSeek V4 Pro melalui OpenRouter, dengan biaya $0.87 per juta token output dibandingkan $15 dari Anthropic, itu sekitar pengurangan biaya 17x. Proyek seperti DeepClaude mengemas ini menjadi pengaturan satu perintah.
Masalahnya: dukungan penyedia pihak ketiga resmi Anthropic memerlukan konfigurasi perusahaan yang benar. Salah satu bidang saja dan Anda akan mengalami Invalid custom3p enterprise config. Sebagian besar panduan online melewatkan konfigurasi perusahaan atau menunjukkan format URL yang salah.
Penyebab utama 1: Trailing /v1 di ANTHROPIC_BASE_URL
Ini adalah kesalahan paling umum. Claude Code secara otomatis menambahkan /v1/messages ke URL apa pun yang Anda tetapkan. Jika URL dasar Anda sudah menyertakan /v1, jalur akhirnya menjadi /v1/v1/messages yang mengembalikan 404.
Salah:
export ANTHROPIC_BASE_URL="https://api.openrouter.ai/api/v1"
Salah:
export ANTHROPIC_BASE_URL="https://litellm.yourcompany.com/v1"
Benar:
export ANTHROPIC_BASE_URL="https://api.openrouter.ai/api"
Benar:
export ANTHROPIC_BASE_URL="https://litellm.yourcompany.com"
Untuk memverifikasi URL akhir yang diakses Claude Code, jalankan curl ini:
curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
"${ANTHROPIC_BASE_URL}/v1/messages" \
-d '{"model":"claude-sonnet-4-6","max_tokens":1,"messages":[{"role":"user","content":"hi"}]}'
Kode 200 atau 400 (permintaan buruk, tetapi endpoint ada) berarti URL benar. Kode 404 berarti Anda masih memiliki masalah /v1.
Penyebab utama 2: Variabel kredensial yang salah
Claude Code menggunakan dua variabel lingkungan yang berbeda untuk otentikasi tergantung pada konteksnya, dan mencampurkan keduanya menyebabkan konfigurasi perusahaan gagal validasi secara diam-diam.
| Variabel | Dikirim sebagai | Kapan digunakan |
|---|---|---|
ANTHROPIC_API_KEY |
header x-api-key |
Gateway format Anthropic yang mengharapkan otentikasi kunci API |
ANTHROPIC_AUTH_TOKEN |
header Authorization: Bearer |
Gateway bergaya OAuth, LiteLLM, sebagian besar pengaturan OpenRouter |
OpenRouter, misalnya, mengharapkan token bearer:
export ANTHROPIC_AUTH_TOKEN="sk-or-kunci-openrouter-anda"
export ANTHROPIC_BASE_URL="https://openrouter.ai/api"
Menggunakan ANTHROPIC_API_KEY dengan OpenRouter mengirimkan header x-api-key yang diabaikan OpenRouter — permintaan otentikasi gagal, dan Claude Code melaporkannya sebagai konfigurasi perusahaan yang tidak valid.
Untuk LiteLLM:
export ANTHROPIC_AUTH_TOKEN="sk-litellm-kunci-virtual-anda"
export ANTHROPIC_BASE_URL="https://server-litellm-anda:4000"
Untuk gateway DeepSeek atau server vLLM lokal yang berjalan dengan kunci API:
export ANTHROPIC_API_KEY="kunci-anda-di-sini"
export ANTHROPIC_BASE_URL="https://server-vllm-anda"
Periksa dokumentasi otentikasi gateway Anda untuk mengonfirmasi header mana yang diharapkan.
Penyebab utama 3: settings.json yang salah format
Jika Anda mengatur URL dasar dan kredensial di ~/.claude/settings.json daripada variabel lingkungan, kesalahan format JSON menyebabkan konfigurasi perusahaan gagal sebelum permintaan apa pun dibuat.
Kesalahan paling umum:
Koma di akhir (JSON tidak valid):
{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
"ANTHROPIC_AUTH_TOKEN": "sk-or-kunci-anda", ← koma di akhir
}
}
Tanda kutip keriting/pintar (salin-tempel dari docs atau Word):
{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api" ← tanda kutip salah
}
}
Format yang benar:
{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
"ANTHROPIC_AUTH_TOKEN": "sk-or-kunci-openrouter-anda"
}
}
Validasi file pengaturan Anda sebelum meluncurkan Claude Code:
python3 -c "import json; json.load(open('~/.claude/settings.json'.replace('~', __import__('os').path.expanduser('~'))))" && echo "JSON Valid"
Atau gunakan jq:
jq . ~/.claude/settings.json
Kesalahan penguraian di sini berarti validasi konfigurasi perusahaan tidak pernah selesai — Claude Code tidak dapat membaca konfigurasi, sehingga menandainya sebagai tidak valid.
Penyebab utama 4: Instalasi baru belum menyelesaikan orientasi
Claude Code memeriksa ~/.claude.json untuk hasCompletedOnboarding: true sebelum membaca konfigurasi perusahaan dari settings.json. Pada instalasi baru, flag ini tidak diatur, sehingga Claude Code melewati konfigurasi pihak ketiga kustom Anda dan mencoba melakukan otentikasi melalui alur standarnya — yang gagal jika Anda tidak memiliki langganan Anthropic yang dikonfigurasi.
Periksa status Anda saat ini:
cat ~/.claude.json | python3 -m json.tool 2>/dev/null | grep hasCompletedOnboarding
Jika kunci itu hilang atau salah (false), Claude Code berada dalam mode orientasi dan konfigurasi perusahaan settings.json Anda tidak akan dibaca.
Perbaikan: Tambahkan flag orientasi ke ~/.claude.json:
{
"hasCompletedOnboarding": true,
"primaryApiKey": "sk-placeholder"
}
Nilai primaryApiKey adalah placeholder — itu akan diganti oleh konfigurasi perusahaan Anda. Atur ke apa pun yang dimulai dengan sk- untuk melewati pemeriksaan format. Setelah menyimpan, mulai ulang Claude Code.
Penyebab utama 5: Gateway tidak meneruskan header yang diperlukan
Validasi konfigurasi perusahaan Claude Code menyertakan "jabat tangan" fitur — ia mengirimkan header anthropic-beta ke gateway untuk menegosiasikan kemampuan mana yang tersedia. Jika gateway Anda menghapus header ini, Claude Code mendapatkan kembali respons yang tidak cocok dengan yang diharapkan, dan melaporkan Invalid custom3p enterprise config.
Header yang wajib diteruskan oleh gateway Anda:
anthropic-beta
anthropic-version
X-Claude-Code-Session-Id
Untuk LiteLLM, ini berfungsi secara default sejak v1.82.9+. Untuk proxy kustom atau pengaturan nginx, tambahkan penerusan header secara eksplisit:
location /v1/ {
proxy_pass http://backend;
proxy_set_header anthropic-beta $http_anthropic_beta;
proxy_set_header anthropic-version $http_anthropic_version;
proxy_set_header X-Claude-Code-Session-Id $http_x_claude_code_session_id;
}
Jika Anda tidak dapat memodifikasi gateway untuk meneruskan header beta, atur ini sebelum meluncurkan:
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
Ini memberi tahu Claude Code untuk melewatkan fitur yang memerlukan header beta sehingga permintaan berhasil melalui gateway yang tidak dapat meneruskannya. Anda kehilangan akses ke beberapa fitur eksperimental, tetapi loop agen inti berfungsi.
Penyebab utama 6: Konflik kebijakan perusahaan
Jika Anda menggunakan paket Team atau Enterprise Claude dan admin Anda telah menerapkan pengaturan terkelola, pengaturan tersebut akan diutamakan daripada yang lainnya — termasuk ~/.claude/settings.json dan variabel lingkungan Anda. Kebijakan terkelola yang membatasi availableModels atau memblokir URL dasar kustom menyebabkan Invalid custom3p enterprise config meskipun konfigurasi lokal Anda benar.
Periksa apakah pengaturan terkelola aktif:
ls ~/.claude/managed-settings.json 2>/dev/null && echo "Pengaturan terkelola ditemukan"
Atau dari dalam Claude Code:
/status
Jika "Pengaturan terkelola" ditampilkan sebagai aktif, Anda perlu berbicara dengan admin Anda. Mereka dapat:
- Menambahkan domain gateway Anda ke URL dasar yang diizinkan
- Membuat daftar
availableModelsyang menyertakan ID model gateway - Membebaskan Anda dari pembatasan URL dasar kustom
Untuk penerapan perusahaan yang Anda kontrol, pengaturan terkelola berada di /Library/Application Support/ClaudeCode/managed-settings.json (macOS) atau jalur yang setara di Windows/Linux.
Konfigurasi kerja lengkap
Claude Code + OpenRouter (DeepSeek V4 Pro)
OpenRouter mengekspos API yang kompatibel dengan Anthropic. Konfigurasi ini menjalankan loop agen Claude Code lengkap melalui DeepSeek V4 Pro:
Di ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
"ANTHROPIC_AUTH_TOKEN": "sk-or-kunci-openrouter-anda",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek/deepseek-v4-pro",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek/deepseek-v4-pro",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek/deepseek-v4-pro"
}
}
Penggantian nama model diperlukan karena Claude Code secara default ke claude-sonnet-4-6 meskipun Anda telah mengubah URL dasar. Tanpa menetapkan model, permintaan mencapai OpenRouter meminta claude-sonnet-4-6, yang mungkin berhasil (OpenRouter juga mendukung Claude) atau mungkin merutekan dengan salah tergantung pada paket Anda.
Catatan: OpenRouter tidak sepenuhnya mengimplementasikan spesifikasi streaming Anthropic untuk panggilan alat — argumen panggilan fungsi mungkin tiba kosong dalam beberapa kasus tepi. Loop agen utama berfungsi, tetapi rantai multi-alat yang kompleks dapat rusak. Lacak status kompatibilitas OpenRouter untuk pembaruan.
Claude Code + LiteLLM (penyedia apa pun)
LiteLLM adalah gateway yang paling kompatibel untuk Claude Code — ia menangani penerusan header dengan benar dan mendukung perutean model di seluruh model OpenAI, Anthropic, Vertex, Bedrock, dan Hugging Face.
LiteLLM config.yaml:
model_list:
- model_name: claude-sonnet-4-6
litellm_params:
model: deepseek/deepseek-v4
api_key: "sk-kunci-deepseek-anda"
- model_name: claude-opus-4-7
litellm_params:
model: deepseek/deepseek-v4-pro
api_key: "sk-kunci-deepseek-anda"
Claude Code ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:4000",
"ANTHROPIC_AUTH_TOKEN": "sk-litellm-kunci-anda"
}
}
Dengan pengaturan ini, Claude Code mengirimkan claude-sonnet-4-6 di bidang model. LiteLLM mencegatnya dan merutekannya ke DeepSeek V4, jadi Anda tidak perlu menimpa nama model di konfigurasi Claude Code.
Claude Code + vLLM lokal
Untuk inferensi model lokal dengan vLLM, mulai server dalam mode yang kompatibel dengan Anthropic:
python -m vllm.entrypoints.openai.api_server \
--model deepseek-ai/DeepSeek-V3 \
--dtype auto \
--api-key local-key \
--port 8000
Kemudian konfigurasikan Claude Code:
export ANTHROPIC_BASE_URL="http://localhost:8000"
export ANTHROPIC_API_KEY="local-key"
export ANTHROPIC_DEFAULT_SONNET_MODEL="deepseek-ai/DeepSeek-V3"
Debugging kesalahan
Jika tidak ada perbaikan di atas yang berhasil, jalankan Claude Code dengan pencatatan debug:
claude --debug 2>&1 | head -100
Output debug menunjukkan URL persis yang dipanggil, header yang dikirim, dan respons yang diterima. Cari:
Sending request to:— mengonfirmasi URL dasarResponse status:— status HTTP dari gateway Andaenterprise config error:— pesan validasi internal
Untuk debugging sisi gateway, uji permintaan persis yang dikirim Claude Code:
curl -v -X POST "${ANTHROPIC_BASE_URL}/v1/messages" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${ANTHROPIC_AUTH_TOKEN}" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: max-tokens-3-5-sonnet-2024-07-15" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 10,
"messages": [{"role": "user", "content": "hi"}]
}'
Gateway yang valid mengembalikan 200 dengan struktur pesan. Jika Anda mendapatkan 401, 403, atau 422, itu adalah masalah otentikasi atau format di sisi gateway — bukan masalah konfigurasi Claude Code.
Menguji API dengan Apidog
Saat Anda melakukan debug integrasi penyedia pihak ketiga, Apidog mempermudah pemeriksaan permintaan dan respons yang tepat yang melewati gateway LLM Anda. Anda dapat membuat koleksi untuk endpoint /v1/messages gateway Anda, menyimpan template permintaan yang berfungsi, dan membandingkan respons di seluruh penyedia tanpa harus menjalankan ulang Claude Code setiap saat.
Unduh Apidog dan buat koleksi baru yang menunjuk ke URL gateway Anda. Tambahkan header anthropic-version, anthropic-beta, dan Authorization sebagai variabel tingkat koleksi — dengan begitu, Anda dapat menguji konfigurasi gateway yang berbeda dengan mengubah satu variabel daripada mengedit setiap permintaan.

Ini sangat berguna saat melakukan debug masalah penerusan header yang memicu Invalid custom3p enterprise config. Anda dapat mengonfirmasi header mana yang diteruskan oleh gateway Anda sebelum membuang waktu mencari bug dalam konfigurasi Claude Code.
Konfigurasi Claude Code terkait yang perlu diketahui
Nonaktifkan ketergantungan header beta
Beberapa gateway perusahaan tidak dapat meneruskan header kustom. Jika itu situasi Anda:
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
Ini menghapus "jabat tangan" fitur beta dari validasi konfigurasi perusahaan. Loop agen masih berfungsi; Anda kehilangan akses ke fitur yang dibatasi oleh header beta (beberapa varian pemikiran yang diperluas, format panggilan alat tertentu).
Pemilih model dengan penemuan gateway
Mulai Claude Code v2.1.129, Anda dapat mengisi pemilih /model secara otomatis dari daftar model gateway Anda:
export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1
Claude Code menanyakan endpoint /v1/models gateway Anda saat startup dan menambahkan model yang ditemukan ke pemilih. Hanya model dengan ID yang dimulai dengan claude atau anthropic yang ditambahkan — untuk model lain seperti DeepSeek, tetapkan secara manual dengan ANTHROPIC_DEFAULT_SONNET_MODEL.
Entri pemilih model kustom
Tambahkan satu model kustom ke pemilih tanpa memengaruhi pengaturan lain:
export ANTHROPIC_CUSTOM_MODEL_OPTION="deepseek/deepseek-v4-pro"
export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="DeepSeek V4 Pro"
export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="17x lebih murah dari Claude Opus"
Ini muncul di bagian bawah pemilih /model, memudahkan untuk beralih antara model gateway Anda dan model Claude default di tengah sesi.
Panduan terkait
Jika Anda menjelajahi kemampuan agen Claude Code dengan backend model kustom, postingan ini mencakup topik terkait:
- Cara Menulis File AGENTS.md untuk Tim Pengembangan API — konfigurasikan perilaku Claude Code untuk tumpukan spesifik Anda
- Ruflo: Orkestrasi Multi-Agen untuk Claude Code — tambahkan swarm, memori persisten, dan 100+ alat MCP ke Claude Code
- Dapatkan API Claude Gratis Tanpa Batas melalui Puter.js — alternatif berbasis browser jika Anda membangun aplikasi klien
- LLM Lokal Terbaik 2026 — jika Anda lebih suka menjalankan inferensi secara lokal melalui vLLM
FAQ
Apakah menggunakan penyedia pihak ketiga dengan Claude Code bertentangan dengan ketentuan Anthropic?
Tidak. Anthropic mendokumentasikan dan secara resmi mendukung pola ANTHROPIC_BASE_URL untuk perutean melalui Bedrock, Vertex AI, Foundry, dan gateway kustom. Yang diblokir Anthropic pada April 2026 adalah alat pihak ketiga yang memalsukan ID klien Claude Code untuk mengakses API Anthropic sendiri dengan harga langganan. Menggunakan gateway Anda sendiri atau penyedia seperti OpenRouter dengan kunci API Anda sendiri adalah hal yang sama sekali berbeda.
Apakah loop agen Claude Code berfungsi dengan DeepSeek V4 Pro?
Loop intinya berfungsi — pengeditan file, perintah shell, tugas multi-langkah. Dua hal tidak berfungsi melalui penyedia pihak ketiga: alat server MCP dan masukan gambar/penglihatan. Jika alur kerja Anda membutuhkan itu, Anda perlu tetap menggunakan API Anthropic atau Bedrock/Vertex.
Mengapa kesalahan mengatakan "enterprise config" padahal saya tidak menggunakan paket perusahaan?
Claude Code menggunakan label "konfigurasi perusahaan" untuk setiap pengaturan penyedia pihak ketiga, terlepas dari tingkat langganan Anda. Ini adalah label tingkat kode, bukan pembatasan paket. Developer individu pada tingkat gratis atau Pro dapat mengonfigurasi dan menggunakan penyedia pihak ketiga kustom.
Bisakah saya beralih antara Anthropic dan penyedia pihak ketiga di tengah sesi?
Tidak dalam satu sesi. URL dasar dibaca saat startup. Untuk beralih penyedia, keluar dari Claude Code, ubah variabel lingkungan atau pengaturan Anda, dan mulai sesi baru. Alat DeepClaude mengemas ini dalam flag CLI (--backend ds, --backend anthropic) yang menangani pengalihan lingkungan untuk Anda.
Gateway saya berada di belakang firewall perusahaan. Apakah Claude Code mendukung konfigurasi proxy?
Ya. Atur HTTPS_PROXY sebelum meluncurkan:
export HTTPS_PROXY="http://proxy-anda:8080"
export ANTHROPIC_BASE_URL="https://gateway-internal-anda"
Untuk intersepsi TLS oleh proxy perusahaan, tambahkan sertifikat CA Anda:
export NODE_EXTRA_CA_CERTS="/path/to/corporate-ca-bundle.pem"
Kesalahan muncul meskipun pengujian curl saya berhasil. Apa bedanya?
Claude Code membuat permintaan validasi pra-penerbangan tambahan yang tidak direplikasi oleh curl. Jalankan Claude Code dengan --debug untuk melihat permintaan pra-penerbangan yang tepat dan bandingkan dengan pengujian curl Anda. Perbedaan umum: header anthropic-beta, header X-Claude-Code-Session-Id, dan format badan JSON yang tepat untuk permintaan validasi.
Kesimpulan
Invalid custom3p enterprise config adalah kesalahan validasi konfigurasi, bukan pemblokiran kebijakan. Perbaiki format ANTHROPIC_BASE_URL terlebih dahulu (hilangkan /v1), lalu periksa variabel kredensial Anda (ANTHROPIC_AUTH_TOKEN vs. ANTHROPIC_API_KEY), validasi settings.json Anda untuk kesalahan JSON, dan pastikan orientasi telah selesai pada instalasi baru.
Setelah konfigurasi divalidasi, loop agen lengkap Claude Code berjalan melalui backend pilihan Anda. DeepSeek V4 Pro melalui OpenRouter atau LiteLLM mencakup sebagian besar kasus penggunaan Claude Code dengan biaya yang jauh lebih rendah daripada API Anthropic — batasan utamanya adalah alat MCP dan masukan penglihatan, yang memerlukan API Anthropic.
