Anthropic, yoğun Claude Code kullanan herkesin zaten hissettiği bir soruna net bir sayı koydu: kullanıcılar izin istemlerinin yaklaşık %93’ünü onaylıyor ve şirket, istemler biriktikçe dikkatin düştüğünü söylüyor (Anthropic). Bu, onay yorgunluğu demek; “döngüde insan” fikrini “Enter’a basılı tutan insan”a çeviriyor.
Yanlış tepki, dizüstü bilgisayarında --dangerously-skip-permissions çalıştırıp modelin uslu durmasını ummak. Doğru tepki sıkıcı güvenlik mühendisliği: Claude Code’u bir dev container içine koy, yalnızca repo’yu ver, dışarı giden trafiği kısıtla, bypass mode’u politikayla kapat ve auto mode’u sadece gerçekten desteklendiği yerde kullan.
Bu rehber, bugün bir repo’ya bırakıp çalıştırabileceğin bir kurulum gösteriyor. Ayrıca mevcut topluluk tartışmasına da değiniyor: geliştiriciler ajanların daha otonom olmasını istiyor, ama görünmez korkuluklar ya da kara kutu gibi dosya taraması istemiyor. Pratik cevap “Claude’a daha çok güven” değil. “Otonominin kabul edilebilir hale gelmesi için patlama yarıçapını yeterince küçült” demek.

Tartışma Aslında Gözlemlenebilirlik ve Patlama Yarıçapı Hakkında
“Anthropic tries to hide Claude’s AI actions” etrafındaki Hacker News başlığı yalnızca şikâyet tiyatrosu değil. Bir yorumcu geliştiricinin korkusunu iyi özetledi: bir ajan bayat config dosyalarını açmaya ya da alakasız dosyaları taramaya başlarsa, operatör bunu durdurabilecek kadar hızlı bilmek zorunda (Hacker News). Claude Code’u “dangerously” çalıştırmakla ilgili başka bir başlık da aynı pratik kalıpta birleşti: ajanı serbest bırak, ama yalnızca sınırlı dosya ve ağ erişimi olan bir sandbox içinde (Hacker News).
Anthropic’in kendi mühendislik yazısı da aynı yere varıyor. Savunmaları ortam, model ve harici içerik diye ayırıyor. Ortam, deterministik hale getirebileceğin kısım. Kimlik bilgileri sandbox’a hiç girmezse Claude onları dışarı sızdıramaz; sebep prompt injection, modelin haddini aşması ya da kötü bir kullanıcı talimatı olsun fark etmez (Anthropic).
Auto mode burada anlamlı, ama sihir değil. Anthropic, auto mode’un eylemler çalışmadan önce onları incelemek için ayrı bir sınıflandırıcı kullandığını söylüyor; dokümanları da bunun hassas operasyonlarda incelemenin yerine geçen bir şey değil, araştırma önizlemesi olduğunu belirtiyor (Claude Code docs). Bu ayrım önemli. Auto mode istemleri azaltır. Container’lar sonuçları azaltır.
Takımlar için önerdiğim duruş şu:
| Mode | Şunun için kullan | Şunun için kullanma |
|---|---|---|
plan | yabancı repo’lar, riskli değişiklikler | uzun, gözetimsiz düzenlemeler |
acceptEdits | normal özellik geliştirme | deploy’lar, sırlar, infra değişiklikleri |
auto | çıkış trafiği kontrollü izole dev container’lar | production sistemleri veya bilinmeyen repo’lar |
bypassPermissions | yalnızca tek kullanımlık VM’ler | geliştirici dizüstüleri |
Anthropic dokümanları auto mode’un Claude Code v2.1.83 veya üstünü gerektirdiğini söylüyor. Anthropic API üzerinde desteklenen modeller Claude Opus 4.6 veya üstü ile Sonnet 4.6’yı içeriyor. Bedrock, Vertex AI ve Microsoft Foundry üzerinde dokümanlar auto mode için yalnızca Opus 4.7 ve Opus 4.8’i listeliyor (Claude Code docs).
Dev Container’ı Oluştur
Repo’nda üç dosya oluştur:
.devcontainer/
devcontainer.json
Dockerfile
managed-settings.json
.devcontainer/devcontainer.json ile başla:
{
"name": "claude-code-safe",
"build": {
"dockerfile": "Dockerfile"
},
"remoteUser": "node",
"mounts": [
"source=claude-code-config-${devcontainerId},target=/home/node/.claude,type=volume"
],
"runArgs": [
"--cap-add=NET_ADMIN",
"--cap-add=NET_RAW"
],
"containerEnv": {
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_AUTOUPDATER": "1",
"ANTHROPIC_BASE_URL": "https://api.onehop.ai/anthropic",
"ANTHROPIC_API_KEY": "${localEnv:ONEHOP_API_KEY}"
},
"postCreateCommand": "sudo /usr/local/bin/init-firewall.sh"
}
Anthropic’in dev container dokümanları, komutların host’tan uzakta çalışması ama düzenlemelerin bağlı repo’da görünmeye devam etmesi için Claude Code’u container içinde çalıştırmayı öneriyor (Claude Code docs). Ayrıca ~/.ssh ya da bulut kimlik bilgisi dosyaları gibi host sırlarını mount etmemen konusunda uyarıyorlar. Bu tavsiyeye uy. Claude repo kapsamlı bir GitHub token’ına ihtiyaç duyuyorsa, kısa ömürlü bir token’ı ortam üzerinden geçir. Sırf pratik diye tüm home dizinini bind-mount etme.
Şimdi Dockerfile:
FROM mcr.microsoft.com/devcontainers/javascript-node:22
RUN npm install -g @anthropic-ai/claude-code@latest
COPY managed-settings.json /etc/claude-code/managed-settings.json
COPY init-firewall.sh /usr/local/bin/init-firewall.sh
RUN chmod +x /usr/local/bin/init-firewall.sh
Anthropic dokümanları bir Dev Container Feature da sunuyor, ama Dockerfile üzerinden kurmak takım repo’sunda politika ve sürümlemeyi akılda tutmayı kolaylaştırıyor. Tekrarlanabilirlik istiyorsan @anthropic-ai/claude-code paketini belirli bir sürüme sabitle ve DISABLE_AUTOUPDATER=1 değerini koru.
Auto Mode’u Açmadan Önce İzinleri Kilitle
.devcontainer/managed-settings.json oluştur:
{
"permissions": {
"defaultMode": "auto",
"disableBypassPermissionsMode": "disable",
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Read(./config/credentials.json)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(git push *)",
"Bash(kubectl *)",
"Bash(terraform apply *)",
"WebFetch(domain:169.254.169.254)"
],
"ask": [
"Bash(npm publish *)",
"Bash(docker push *)",
"Bash(gh release *)"
],
"allow": [
"Bash(npm install)",
"Bash(npm test *)",
"Bash(npm run lint *)",
"Bash(git diff *)",
"Bash(git status *)"
]
},
"autoMode": {
"environment": {
"trustedDomains": [
"registry.npmjs.org",
"github.com"
]
}
}
}
Burada iki ayrıntı gerçekten iş yapıyor.
İlki, disableBypassPermissionsMode yönetilen ayarlar üzerinden zorlandığında bypassPermissions modunu engelliyor ve --dangerously-skip-permissions bayrağını devre dışı bırakıyor. Anthropic bu kontrolü ayarlar referansında aynen belgeliyor (Claude Code docs).
İkincisi, deny kuralları auto mode’da hâlâ önemli. Anthropic, auto mode’un isteğin ötesine geçen, tanınmayan altyapıyı hedefleyen ya da düşmanca içerikten yönlendirilmiş gibi görünen eylemleri engellediğini söylüyor; ama takım politikanı bir sınıflandırıcıya outsource etmemelisin. Bir ajan oturumundan kimse terraform apply çalıştırmamalıysa bunu deny kuralı olarak yaz.
Bir uyarı: repo tarafından yönetilen politika, repo’yu düzenleyebilen herkes tarafından değiştirilebilir. Anthropic dokümanları Linux içinde /etc/claude-code/managed-settings.json dosyasının yüksek önceliğe sahip olduğunu söylüyor; ama geliştiricilerin repo dosyalarını düzenleyerek atlatamayacağı politika için server-managed settings veya MDM kullan (Claude Code docs). Bir startup takımı için check-in edilmiş politika yine de iyi bir başlangıç çizgisidir. Kurumsal yayılımda orada durma.

Çıkış Trafiğini Küçük Bir Allowlist ile Kısıtla
.devcontainer/init-firewall.sh ekle:
#!/usr/bin/env bash
set -euo pipefail
ALLOWED_HOSTS=(
api.onehop.ai
api.anthropic.com
claude.ai
platform.claude.com
registry.npmjs.org
github.com
raw.githubusercontent.com
)
iptables -P OUTPUT DROP
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
for host in "${ALLOWED_HOSTS[@]}"; do
for ip in $(getent ahostsv4 "$host" | awk '{print $1}' | sort -u); do
iptables -A OUTPUT -p tcp -d "$ip" --dport 443 -j ACCEPT
done
done
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
Bu bilerek basit tutuldu. Başlangıçta izin verilen host adlarını çözüyor ve bu IP’lere TCP 443 izni veriyor. Production seviyesinde kontrol için container’ı bir proxy arkasına koy ve her isteği logla. Ama bu temel deny-by-default kuralı bile otonom bir kodlama ajanının tüm internete konuşmasına izin vermekten iyidir.
Anthropic’in ağ dokümanları kurulum ve auth yoluna bağlı olarak api.anthropic.com, claude.ai, platform.claude.com, downloads.claude.ai, storage.googleapis.com ve raw.githubusercontent.com gibi gerekli domain’leri listeliyor (Claude Code docs). npm üzerinden kurup otomatik güncellemeleri kapatırsan, çalışma zamanında indirme domain’lerine ihtiyaç duymayabilirsin. Listeyi sıkı tut, sonra yalnızca build’ler bilinen bir nedenle başarısız olduğunda domain ekle.
Çalıştır:
export ONEHOP_API_KEY=oh_your_key_here
code .
# VS Code: Dev Containers: Rebuild and Reopen in Container
claude --permission-mode auto
Container içinde doğrula:
whoami
claude --version
curl -I https://api.onehop.ai
curl -I https://example.com
OneHop isteği çalışmalı. example.com isteği, sen eklemediysen başarısız olmalı.
Claude Fable 5’i OneHop Üzerinden Yönlendir
Anthropic, Claude Fable 5 ve Claude Mythos 5’i 9 Haziran 2026’da yayımladı; Fable 5’in fiyatı milyon input token başına 10 dolar ve milyon output token başına 50 dolar, yani Mythos Preview fiyatının yarısından az (Anthropic). OneHop, Claude Fable 5’i anthropic/claude-fable-5 olarak listeliyor; resmi fiyatı $10/M input ve $50/M output, OneHop fiyatını ise $3/M input ve $15/M output olarak gösteriyor. Ayrıca yeni kullanıcılar için kart gerektirmeden $10 ücretsiz kredi var (OneHop).
Güncel operasyon notu: OneHop Fable 5 sayfası modelin listelenmeye devam ederken geçici olarak kullanılamadığını söylüyor. Config’i yerinde tut, ama hesabın ve bölgen erişim kazandığında kullanmayı bekle.
OneHop üzerinden doğrudan Anthropic Messages çağrısı için OneHop’un bu model için yayımladığı Anthropic uyumlu endpoint’i kullan:
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.onehop.ai/anthropic",
api_key="oh_your_key_here",
)
message = client.messages.create(
model="anthropic/claude-fable-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Summarize this repo's test strategy."}],
)
print(message.content[0].text)
Uygulaman zaten OneHop’un OpenAI uyumlu gateway’ini kullanıyorsa, tek satırlık base URL değişikliği şu:
client = OpenAI(base_url="https://api.onehop.ai/v1", api_key="oh_your_key_here")
Claude Code özelinde, ANTHROPIC_BASE_URL içinde Anthropic uyumlu base URL kullan; çünkü Claude Code Anthropic Messages API ile konuşur. OneHop’un Fable 5 model sayfası şu anda Anthropic Messages’ı https://api.onehop.ai/anthropic adresinde kullanılabilir gösterirken OpenAI Chat Completions bu model için desteklenmiyor olarak işaretlenmiş (OneHop).

İşletim Modeli: Daha Az Güven, Daha Hızlı Teslim
En iyi Claude Code kurulumu en izinli olan değildir. Hataların ucuz olduğu kurulumdur.
Claude yeni bir codebase’i keşfederken plan modunu kullan. Yalnızca görev sınırlandırıldıktan sonra auto moduna geç. bypassPermissions modunu politikayla kapalı tut. Sırlara okumayı engelle. Deploy’ları, protected branch’lere push’ları, bulut mutasyonlarını ve metadata endpoint’lerini engelle. Ajanı root olmayan bir dev container içine koy. Varsayılan olarak çıkış trafiğini engelle. Merge’den önce diff’i incele.
Bu YOLO mode’dan daha yavaş görünebilir. Pratikte daha hızlıdır; çünkü kimse 40 önemsiz isteme dadılık yapmak ya da bir onayın modele token sızdırma izni verip vermediğini merak etmek zorunda kalmaz. Anthropic’in kendi containment yazısı, referans dev container’ın Claude Code’un eylem başına onay olmadan gözetimsiz çalışabilmesi için var olduğunu söylüyor (Anthropic). Eksik parça takım politikası.
Sağlayıcı yığınını yeniden inşa etmeden Fable sınıfı kodlama işini denemenin en kısa yolunu istiyorsan Claude Fable 5 on OneHop üzerinden yönlendir. Yeni hesaplar $10 ücretsiz krediyle başlayabilir. base URL değişikliği kolay kısım. Asıl kazanç, bunu otonomiyi kullanılacak kadar güvenli hale getiren bir container ile eşleştirmek.