Apiiro'nun güvenlik araştırmacılarına göre Claude Code, GitHub'daki herkese açık depolarda gizli bilgiler bırakıyor. Sorun, geliştiricinin fark etmeden internete çıkan yerel bir ayar dosyasından kaynaklanıyor. Bulunan veriler arasında veritabanı parolaları, API tokenları ve root erişimleri var. Yapay zekâ destekli bir kodlama asistanı kullanan herkesi ilgilendiriyor, çünkü dikkatsiz tek bir commit, hâlâ geçerli kimlik bilgilerini herkese açık hale getirebilir.
Olaylara girmeden önce birkaç terim. .gitignore, Git'in hangi dosyaları commit'lere eklememesi gerektiğini belirten dosyadır. Repository, Git tarafından izlenen proje klasörüdür. Gizli bilgi, parola, API tokenı veya özel anahtar gibi bir kimlik bilgisini ifade eder. Fork, bir kullanıcının GitHub'da bir projenin kendi kopyasını oluşturmasıdır. Commit, bir grup değişikliğin proje geçmişine kaydedilmesidir.
Claude Code ve GitHub hakkında ne keşfedildi?
Bunu, Apiiro'nun çalışmasını aktaran Ars Technica anlatıyor. Araştırmacılar, Claude Code'un yerel ayar dosyasının GitHub'daki herkese açık bir repository'ye yüklendiği 100.000'den fazla durum buldu.
Hepsi hassas veri içermiyor. Yalnızca yaklaşık 1.100 dosya, 63 farklı kuruluştan, herkese açık API tokenları, veritabanı parolaları ya da özel anahtarlar gibi gizli bilgiler içeriyordu. Bu sayı toplama göre küçük, ama bunlar örnek değil, gerçek kimlik bilgileri.
Dosya neden internete çıkıyor?
Kullanıcı bir shell komutunu onaylarken «Evet, bir daha sorma» seçeneğini tercih ettiğinde, bu seçim yerel .claude/settings.local.json dosyasında bir kurala dönüşür. Bazen kural genel bir şablon olarak yazılır. Ama sıkça komut, içindeki her şeyle birlikte, kimlik bilgileri dahil olduğu gibi kaydedilir.
Dosya bilgisayarda kaldığı sürece risk sınırlıdır, makine ele geçirilmediği sürece. Sorun, dosya bir commit'e girdiğinde başlar.
.gitignore yeterli olmaz mı?
Teoride olmalı. Ars Technica'ya göre Anthropic'in dokümantasyonu, bu dosyanın geliştiricinin global .gitignore dosyasına eklendiğini belirtiyor. Bu da genellikle yayımlanmasını önler.
Zayıf nokta, kuralın repository düzeyinde yansımaması. Proje başka bir makinede klonlanırsa ya da bir klasör sonradan repository haline gelirse, dosya yanlışlıkla yüklenebilir. Apiiro ayrıca birçok durumda ayar değişikliklerini commit'leyenin kullanıcının müdahalesi olmadan doğrudan Claude Code'un kendisi olduğunu ekliyor.
GitHub'ın resmi dokümantasyonu farkı açıklıyor. Repository kökündeki .gitignore commit edildiğinde, projeyi klonlayan herkes için geçerlidir. ~/.config/git/ignore içindeki global olan ise yalnızca senin bilgisayarında geçerlidir.
Dosyayı silmek sorunu çözmeye yeter mi?
Hayır. Apiiro'ya göre dosyalar keşfedilip bir repository'den kaldırıldıktan sonra bile, kullanıcı dikkat etmezse gizli bilgiler orijinal projenin fork'larında kalabilir.
GitHub dokümantasyonu ayrıca, zaten izlenen bir dosyanın önce git rm --cached DOSYA_ADI ile izlemeden çıkarılması gerektiğini, dışlama kuralının ancak bundan sonra etkili olacağını hatırlatıyor. .gitignore'a bir satır eklemek, geçmişte zaten bulunanı silmez. Bu yüzden bir kimlik bilgisi internete sızmışsa, ele geçirilmiş sayılmalı ve değiştirilmelidir.
Bilmen gereken sınırlar
Rakamlar Ars Technica'da aktarılan Apiiro analizinden geliyor ve biz bu verileri doğrulamadık. Bulunan kimlik bilgilerinden kaçının hâlâ geçerli olduğunu, ya da üçüncü kişiler tarafından kullanılıp kullanılmadığını bilmiyoruz. Kaynaklarda Anthropic'in Claude Code'un davranışında olası değişikliklerle ilgili bir yanıtı yok. Şirket onaylanmış komutların nasıl kaydedildiğine müdahale ederse bu tablo değişebilir.
Dijital çalışanlar için ne değişiyor
Claude Code kullanıyorsan, .claude/settings.local.json dosyasının herhangi bir repository'de izlenip izlenmediğini hemen kontrol et, özel olanlar da dahil. Özel bir proje herkese açık hale gelebilir ya da başka bir yere klonlanabilir. Dosyayı projenin .gitignore dosyasına ekle ve commit'le, böylece kural herkes için geçerli olur. Dosyayı yalnızca kendi klonunda dışlamak istersen GitHub, .git/info/exclude dosyasını öneriyor.
Bir de komutların içine parola yazma alışkanlığı var. Bunun yerine ortam değişkenleri ya da bir gizli bilgi yöneticisi kullanmak daha iyi. Şirket içinde ise her push öncesi otomatik bir gizli bilgi taraması eklemek mantıklı olur.
Bizim görüşümüz
Bu vaka yalnızca kullanıcıların dikkatsizliğini değil, bir tasarım sınırlamasını da gösteriyor. Kimlik bilgisi içerebilecek bir dosya, yalnızca kişisel yapılandırmada değil, en çok ihtiyaç duyulan yerde, yani repository düzeyinde dışlanmalı. Her şeyi kullanıcıya bırakmak, özellikle araç kendi başına commit yaptığında pek işe yaramıyor. Yine de bu bir bizim de sorumluluğumuz. Düz metin parola içeren bir komut, bir yapay zekâ asistanı olsun ya da olmasın düzeltilmesi gereken bir alışkanlık. Bu araçların vaat ettiği hız, gizli bilgiler konusundaki disiplini daha az değil, daha çok önemli kılıyor.
Sık sorulan sorular
Claude Code'un hangi dosyası gizli bilgi içeriyor?
Dosya .claude/settings.local.json. Bir komutu «Evet, bir daha sorma» seçeneğiyle onayladığında oluşturulan kuralları saklıyor. Bazen komut, içindeki kimlik bilgileriyle birlikte tam olarak yazılıyor.
Apiiro kaç açıkta dosya buldu?
GitHub'daki herkese açık repository'lere yüklenmiş 100.000'den fazla dosya. Yaklaşık 1.100'ü, 63 kuruluştan, API tokenı, veritabanı parolası ya da özel anahtar gibi gizli bilgiler içeriyordu.
Global .gitignore bu sorundan korur mu?
Yalnızca kısmen. Bilgisayarında geçerlidir, ama repository'de geçerli değildir. Proje başka yere klonlanırsa ya da bir klasör sonradan repository haline gelirse dosya commit'e girebilir.
Dosyayı repository'den silmek gizli bilgileri ortadan kaldırır mı?
Hayır. Apiiro'ya göre gizli bilgiler projenin fork'larında kalmaya devam edebilir. Bir kimlik bilgisi yayımlandıysa, ele geçirilmiş sayılmalı ve değiştirilmeli.
Git tarafından zaten izlenen bir dosyayı nasıl dışlarım?
Önce dosyayı izlemeden çıkar – git rm --cached DOSYA_ADI. Sonra kuralı .gitignore dosyasına ekle. İlk adım atlanırsa kural, zaten izlenen dosya üzerinde etkili olmaz.
Önümüzdeki aylarda Claude Code güvenliğinde nelere bakmalı
Asıl soru, Anthropic'in onaylanmış komutları nasıl sakladığını değiştirip değiştirmeyeceği. Bu arada aracın güncellemelerini takip etmek en iyisi.
- settings.local.json dosyasının yönetiminin değişip değişmediğini görmek için Claude Code sürüm notlarını oku. Bunun için 2.1.319 sürümüyle ilgili yazımıza da göz atabilirsin.
- Repository geçmişinde commit edilmiş .claude dosyalarını ara ve ortaya çıkan kimlik bilgilerini yenile.
- Dal koruma kurallarını gözden geçir. Bunun için GitHub pull request rehberimizi kullanabilirsin.




