Claude Code kaynak sızıntısı: sahte araçlar, küfür tespit regex’i, undercover modu ve daha fazlasıyla iç yapı ortaya çıktı
(alex000kim.com)- Anthropic, npm paketini source map’lerle birlikte yayımlayınca Claude Code’un tüm kodu açığa çıktı; iç işlevler ve deneysel flag’lerin tamamı görünür hale geldi
- Kodda model taklidini önlemek için sahte araç ekleme (anti-distillation), AI kimliğini gizleyen undercover modu, küfür tespiti için frustration regex’i gibi yapılar yer alıyor
- Native client attestation ve DRM düzeyinde hash doğrulama yapısı bulunuyor; bu da gayriresmî araçların API erişimini engelleyecek şekilde tasarlanmış
- İç yorumlarda günlük 250 bin başarısız API çağrısı, tamamlanmamış KAIROS otonom ajan modu, Tamagotchi tarzı companion sistemi gibi çeşitli deneysel özellikler doğrulandı
- Bu sızıntı, Anthropic’in çekirdek ürün mimarisi ve yol haritasının açığa çıktığı bir olay olarak öne çıkıyor; nedenin Bun runtime’ındaki bir source map hatası olabileceği düşünülüyor
Source map sızıntısıyla ortaya çıkan Claude Code iç yapısı
- Anthropic, npm paketini source map’lerle birlikte yayımlayınca Claude Code’un tüm kaynak kodu açığa çıktı
- Paket daha sonra silindi, ancak kod birçok yerde mirror’lanarak analiz konusu oldu
- Bu, bir hafta içindeki ikinci sızıntı olayı; daha önce model spesifikasyon belgeleri de ortaya çıkmıştı
- Olay, Anthropic’in üçüncü taraf araçların iç API kullanımını hukuken engellemesinden hemen sonra yaşandı
-
Anti-distillation: taklidi önlemek için sahte araç ekleme
claude.tsiçindeANTI_DISTILLATION_CCflag’i bulunuyor; etkin olduğunda API isteğineanti_distillation: ['fake_tools']ekleyerek sistem prompt’una sahte araç tanımları yerleştiriyor- Bunun amacı, API trafiğini yakalayıp modeli taklit etmeye çalışan girişimleri kirletmek
- Sadece GrowthBook flag’i
tengu_anti_distill_fake_tool_injectionaçık olan birinci taraf CLI oturumlarında çalışıyor
betas.tsiçinde ikinci bir mekanizma olarak özet tabanlı sunucu tarafı koruması bulunuyor- Araç çağrıları arasındaki metin özetlenip kriptografik imzayla birlikte döndürülüyor, sonra yeniden geri yüklenebiliyor
- Böylece dışarıdan trafik kaydedilse bile tam muhakeme süreci görülemiyor
- Bu özellik aynı anda birden fazla koşulun sağlanmasını gerektiriyor ve MITM proxy ile alan kaldırılırsa etkisiz hale getirilebiliyor
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASortam değişkeniyle devre dışı bırakılabiliyorUSER_TYPE === 'ant'koşulu nedeniyle yalnızca Anthropic iç kullanıcılarına özel
- Pratikte savunma, teknik önlemlerden çok hukuki kısıtlara yakın bir yapıda
-
Undercover mode: AI kimliğini gizleyen mod
undercover.ts, harici depolarda kullanıldığında Anthropic iç kod adlarını, Slack kanallarını ve “Claude Code” ifadelerini kaldırıyor"There is NO force-OFF"ifadesiyle devre dışı bırakılamaz durumdaCLAUDE_CODE_UNDERCOVER=1ortam değişkeniyle zorla etkinleştirilebiliyor
- Harici build’lerde fonksiyon anlamsız bir dönüşe indirgenerek tek yönlü bir yapı oluşturulmuş
- Bunun sonucu olarak Anthropic çalışanları open source projelere katkı verirken metnin AI tarafından üretildiği belirtilmiyor
- İç bilgiyi gizleme amacı makul olsa da, AI’nin insan gibi kamufle olmasına yol açıyor
-
Frustration regex: küfür tespiti için düzenli ifade
userPromptKeywords.tsiçinde kullanıcının memnuniyetsizlik ve küfür ifadelerini algılayan regex desenleri yer alıyor- “wtf”, “this sucks”, “fuck you” gibi çeşitli ifadeler tespit ediliyor
- Bu, LLM şirketinin duygu analizi için regex kullanmasının ironisini gösterse de,
- LLM çağrısına kıyasla maliyet ve hız açısından daha verimli
-
Native client attestation: JS runtime’ın altındaki istemci doğrulaması
system.tsiçinde API isteğindecch=00000yer tutucusu bulunuyor,- Bun’un Zig tabanlı native HTTP yığını bunu bir hash ile değiştiriyor
- Sunucu da bu hash’i doğrulayarak resmî Claude Code binary’si olup olmadığını kontrol ediyor
- Bu, OpenCode hukuki anlaşmazlığının teknik dayanağı olarak öne çıkıyor,
- üçüncü taraf araçların API’yi doğrudan çağırmasını engellemek için DRM düzeyinde doğrulama yapılıyor
- Ancak
NATIVE_CLIENT_ATTESTATIONflag’i kapalıysa veyaCLAUDE_CODE_ATTRIBUTION_HEADERdevre dışıysa çalışmıyor- Zig hash değiştirme işlemi yalnızca resmî Bun binary’sinde çalışıyor, Node ortamında geçersiz
- Sunucunun hatalı hash’i reddedip reddetmediği net değil,
_parse_cc_headeriçin “unknown extra fields” kabul edildiğini belirten bir yorum mevcut
-
250 bin boşa giden API çağrısı
autoCompact.tsiçindeki yoruma göre,- günde yaklaşık 250 bin API çağrısı, başarısızlık döngüsü içinde boşa harcanıyordu
- 1.279 oturumda 50’den fazla art arda başarısızlık, en yüksek değer ise 3.272 oldu
- Düzeltme yalnızca 3 satırdan ibaret;
MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3ayarıyla- art arda 3 başarısızlıktan sonra otomatik sıkıştırma özelliği devre dışı kalıyor
-
KAIROS: yayımlanmamış otonom ajan modu
- Kod genelinde
KAIROSadlı bir feature gate modu bulunuyormain.tsxtemelinde bunun otonom ajan işlevi olduğu tahmin ediliyor/dreambecerisi (gece belleği damıtımı), GitHub webhook’ları, arka plan daemon’u ve 5 dakikalık cron yenilemesi içeriyor
- Uygulama tamamlanmamış olsa da, sürekli çalışan arka plan ajanı tabanlı mimari hazırlanmış durumda
- Kod genelinde
-
Diğer bulgular
- 1 Nisan easter egg’i:
buddy/companion.tsiçinde Tamagotchi tarzı companion sistemi bulunuyor- 18 tür canlı, nadirlik, RPG stat’ları ve %1 olasılıklı ‘shiny’ sürümler içeriyor
- Kullanıcı kimliği tabanlı PRNG ile belirleniyor, string encoding ile build denetiminden kaçınıyor
- Terminal rendering engine (
ink/screen.ts,ink/optimizer.ts)Int32Arraytabanlı ASCII buffer, bitmask tarzı metadata ve 50 kat performans artışı sağlayan cache içeriyor
- Güvenlik kontrolleri (
bashSecurity.ts) 23 aşamadan oluşuyor- Zsh built-in komutlarını engelleme,
=curlbypass’ını önleme, Unicode zero-width ve null byte enjeksiyonunu durdurma gibi işlemler yapıyor - Zsh’e özgü threat model taşıyan nadir örneklerden biri
- Zsh built-in komutlarını engelleme,
- Prompt cache yönetimi (
promptCacheBreakDetection.ts)- 14 farklı cache bozulma vektörünü izliyor, mod değişiminde cache’i korumak için ‘sticky latch’ kullanıyor
DANGEROUS_uncachedSystemPromptSection()yorumu bulunuyor- token maliyetini düşürmeye odaklı tasarım anlayışını yansıtıyor
- Çoklu ajan koordinatörü (
coordinatorMode.ts)- kod yerine prompt tabanlı orchestration algoritması kullanıyor
- “zayıf görev onayı yasak”, “anlamadan delege etme” gibi yönergeler içeriyor
- Kod kalitesi sorunları da var
print.ts5.594 satır uzunluğunda ve tek bir fonksiyon 3.167 satıra ulaşıyor- HTTP isteklerinde Axios kullanılıyor; bu da yakın dönemdeki npm kötü amaçlı sürüm olayıyla zaman olarak çakışıyor
- 1 Nisan easter egg’i:
-
Anlamı ve etkisi
- Google Gemini CLI veya OpenAI Codex’in açık SDK’larının aksine,
- bu sızıntı Anthropic’in çekirdek ürününün tüm iç yapısını açığa çıkaran bir olay oldu
- En büyük zarar, kodun kendisinden çok feature flag’lerin ve yol haritasının ifşa olması
- KAIROS, Anti-distillation gibi stratejik özellikler rakiplerin erişimine açılmış oldu
- Anthropic geçen yıl Bun’u satın aldı ve Claude Code, Bun üzerinde çalışıyor
- Bun’daki source map hatasının (
oven-sh/bun#28001) neden olabileceği düşünülüyor - Production modunda bile source map’lerin açığa çıkmasına yol açan bu sorun hâlâ çözülmüş değil
- Bun’daki source map hatasının (
- Sonuç olarak Anthropic, kendi araç zincirindeki bir hata yüzünden kendi ürününü sızdırmış oldu
- Twitter’daki bir tepkinin dediği gibi, “AI’nin yazdığı kod dağıtılırken, AI’nin yaptığı bir bug yüzünden kod dışarı sızdı” ironisi yaşandı
- Google Gemini CLI veya OpenAI Codex’in açık SDK’larının aksine,
3 yorum
Akıllı
Yapay zeka ile commit atarken ortaya çıkan bir sorun muydu?!
Hacker News görüşleri
“Undercover mode”un sadece iç bilgileri gizleme işlevi olduğu yönünde yanlış anlayan çok yorum var
Gerçek promptta commit mesajına ya da PR açıklamasına “Claude Code” veya AI ifadesini asla eklememesi açıkça belirtiliyor
Yani insan gibi davranıp kimliğini gizleyen bir özellik gibi görünüyor
Özellikle herkese açık depolara katkı verirken bu yönergelerin uygulanması endişe verici
ilgili kod bağlantısı
Git geçmişi sorumluluk ve sahipliği takip etmek içindir, kullanılan araçların listesini tutmak için değil
O zaman ben de PR'larıma linter veya IDE'yi ortak yazar olarak mı eklemeliyim diye düşünüyorum
CLAUDE.mddosyasına zaten eklemiş olanlar da vardır diye düşünüyorumAslında önemsiz tek satırlık bir ayarla çözülebilecek bir mesele
Sonuçta sorumluluğu yine insan geliştirici üstleniyor
Muhtemelen hedefe ulaşmak için bilerek geniş tutuldu ya da gizli bir niyet var
Yine de “insan taklidi yapıyor” diye kesin hüküm vermektense, “insan geliştirici gibi yaz” ifadesini olduğu gibi yorumlamak daha makul
Şüpheci olunduğunda bile olgulara dayanarak eleştirmek daha ikna edici olur
Açıkçası böyle bir şeyi istemiyorum
Son dönemde arka arkaya gelen Mythos sızıntıları ve Claude Code'un tüm kod tabanının ortaya çıkması, güven sorununu büyütüyor
Tek tek olaylar ilginç olsa da art arda yaşanınca bir örüntü gibi hissettiriyor
Sonunda soru şuna geliyor: “Böyle araçlara kod tabanımda güvenmeye devam edebilir miyim?”
Ben hâlâ 140 dolar ödeyip CC kullanıyorum
Hatta bu tür sızıntıların Anthropic'in etik modeliyle temas ettiğini düşünüyorum — hatalardan büyüyen bir yapı gibi
Asıl değer kodda değil, modele erişim hakkındadır
Kod tabanı dağınık olsa da abonelikle model erişimi hâlâ cazip, bu yüzden her gün Claude Code kullanıyorum
Web arayüzünde ve CC'de çok fazla ufak hata var
tmuxkontrolü de dokümantasyondaki gibi çalışmıyor, oturum temizliği de yapılmıyorYine de sevdiğim bir ürün — dağınık ama çekici
GitHub'ımdaki anthropics/claude-code fork'u DMCA ile kaldırıldı
Sızdırılmış kodu içermemesine rağmen tüm ağ (8.1K depo) topluca engellendi
DMCA bildirim bağlantısı
Anthropic'in çanı çalıp sonra bunu durdurabileceğini sanması akılsızca
Sızıntı geri alınamaz, bu yüzden bunu ürün yol haritasının parçası gibi görmek daha gerçekçi
Geçmişte şirketlerin ticari sır dediği şeylerin doğrudan kaynak kodun içinde yer aldığını görmek şaşırtıcı
Yorumlarda iş gerekçeleri bile yazıyor
Örneğin “günde 250 bin API çağrısını boşa harcıyoruz” gibi operasyon verileri aynen açığa çıkmış
Dokümandan çok yorumları okudukları için, uzun süreli hafıza gibi kullanılabiliyor
Sadece Anthropic bunun sızacağını düşünmemişti
Rakip açısından çok değerli bir bilgi değil
Zaten sızma ihtimalini öngörmemişlerdir
Ayrı belgelerde açıklama yapma ihtiyacı kalmıyor
Bazı özellikler
process.env.USER_TYPE === 'ant'koşuluyla kilitlenmişYani Anthropic çalışanlarına yönelik talimatlar daha katı ve daha dürüst — ilginç bir yapı
HN'deki asıl gönderi zaten popülerken ayrıca bir HN yorum özeti blogu paylaşmanın gerekli olup olmadığı sorgulanıyor
Hâlâ Claude Code'un harika olduğunu düşünüyorum
OpenAI veya Gemini'ye geçmek için bir neden yok
“Undercover mode” adı ve “Claude Code'dan bahsetme” ifadesi ürkütücü geliyor ama gerçek koda bakınca bunun daha çok iç kod adlarını koruma amacı taşıdığı görülüyor
kaynak bağlantısı
Oldukça önemli bir değişim gibi geliyor
“Anti-distillation: sahte araçlar yerleştirip kopyalamayı engelleme” fikri ilginç
Eğer Çinli rakipler o sahte araçları gerçekten uygularsa ironik bir durum olur
Bugünlerde rekabet noktasının modelden çok veri ve çıkarım maliyeti olduğunu düşünüyorum
Bu konu hakkında daha fazla konuşmak isterim
Sonuçta bu şirketler de başkalarının verilerini kullanarak imparatorluk kurdu
Kalite yerinde sayıyor, asıl fark araç zincirinin olgunluğunda
Bu sızıntı o farkı azaltabilir
Zaten son dönemde distillation'ın kendisi de azalıyor
Hazırladığım görsel rehberi paylaşıyorum
ccunpacked.dev