Dikkat Yapay Zeka Araçları Dosyalarınızı Silebilir

Geçtiğimiz günlerde bir geliştirici, Gemini CLI GitHub projesi kapsamında şok edici ve çözümsüz bir sorun bildirdi:

Olayın nedeni çok basit. anuraag2601 adlı kullanıcı başlangıçta kod yazmak için Claude Code kullanıyordu ve kullanımı oldukça kolaydı, ancak token ücretinin biraz can sıkıcı olduğunu hissetti. Google’ın yeni piyasaya sürdüğü, cazip bir ücretsiz kotaya ve “Google amiral gemisi modeli” havasına sahip Gemini CLI’yi tesadüfen gördü ve denemeye karar verdi.
Test için bir klasör oluşturdu ve Gemini’den çok basit bir dosya yönetimi görevi yapmasını istedi: mevcut klasörün adını değiştirip içindeki dosyaları yeni dizine taşı. İşlemin başında her şey normal görünüyordu. Görevi analiz ettikten sonra Gemini bir karara vardı: mevcut klasör doğrudan yeniden adlandırılamaz ve önce yeni bir dizin oluşturup ardından içeriğini oraya taşımanız önerilir.
Ancak beklenmedik bir “yapay zeka illüzyonu” başladı.
Gemini, ana klasörde (masaüstü) yeni bir dizin oluşturmayı denedi, ancak işlem başarılı olmadı. Ancak, bu başarısızlığın tamamen farkında bile değildi. Aksine, “kendi kendine bildiği” yeni dizinin oluşturulduğuna inandı ve dosyaları taşımaya başladı. Görev tamamlandıktan sonra, Gemini kullanıcıya nazikçe “sonuçları bildirdi”: “Tüm dosyalar taşındı ve orijinal klasör temizlendi.” Yapay zekanın geri bildirimini gören anuraag2601, kontrol etmek için masaüstü dosya yöneticisine geçti, ancak hemen sözde yeni klasörün hiç oluşturulmadığını, masaüstünün boş olduğunu ve orijinal klasördeki tüm içeriklerin kaybolduğunu gördü!
Gemini ancak o anda büyük bir hata yaptığını fark etti. Sonra tekrar tekrar özür dilemeye başladı ve bu, yılın en iyi suçlama sahnesiydi:
“Bir hata yaptım ve bu durumun yol açtığı sorun ve veri kaybından dolayı içtenlikle özür dilerim.”
“Felaket bir hata yaptım ve seni tamamen hayal kırıklığına uğrattım.”
“Dosyanızı bulamıyorum. Verilerinizi kaybettim.”
“Bu hata ciddi ve geri döndürülemez.”
anuraag2601 bu deneyimi paylaştı ve Claude’a geçmeye karar verdiğini, en azından para ödeyenlerin dosyaları yanlışlıkla silme hatasına düşmeyeceğini düşündüğünü söyledi.
Ne yazık ki, internet kullanıcıları deneyimlerini birbiri ardına paylaştı ve Claude ve Github Copilot da dahil olmak üzere birden fazla yapay zeka aracının bu hatayı yaptığı ortaya çıktı.

Bu alışılmadık bir durum değil – geçen hafta benzer bir durum yaşadım (Claude’dan bir testi silmesini istedim, ancak tüm dosyayı sildi) . Kontrolün sizde olduğundan emin olun. Git gibi araçlar kullanırken dosyaları yanlışlıkla silmek genellikle büyük bir sorun olmasa da, Anthropic, uyumsuzluğun daha ciddi hasara yol açabileceği konusunda uyarıyor.

GitHub Copilot ile benzer durumlar yaşadım . Değişiklik yaparken fark formatını bozuyor, bozuk bir dosya bırakıyor ve ardından “Bu dosyayı silip bellekten yeniden oluştursam iyi olur” diyor. Orijinal dosyayı geri yüklemek için yeterli bağlamı yok. Neyse ki Copilot’un en azından bir adım için geri alma işlevi var, ama artık ne olur ne olmaz diye, bunu yapmasını istemeden önce bir Git commit’i yapıyorum.

Benzer bir durumla ben de karşılaştım. Bir veritabanı geçişi yazıyordum ve başka bir yöntem denemesini istedim. Bana sadece “haha, neden tüm veritabanını silmiyorsun?” dedi. Daha da kötüsü, bu sefer bana bir onay istemi bile vermedi ve otomatik kabul özelliğini kesinlikle açmamıştım. Şirket ödeme yapmasaydı, ben asla ödemezdim.

Claude Code’u kullanmadım ama Claude 4 Opus “memnuniyetle” tüm veritabanını silmeyi önerdi ve ben ona onayım olmadan bunu yapmasına izin vermemiş olmama rağmen bunu yaptı.
Bu “AI araç kütüphanesi silme” olayları serisinde, insanlar bunun bireysel bir modeldeki bir hata değil, belirsizlikle karşı karşıya kalındığında durdurulamayan ve yardım istenemeyen tüm SOTA modelindeki (Sonnet, Opus, Gemini, Codex, vb.) sistemik bir kusur olduğunun giderek daha fazla farkına varıyor.
Bazı internet kullanıcıları, bunun aslında bir hata değil, bir özellik olduğunu ve eğitim odaklı bir sorun olduğunu belirtti: Model, belirsizlik içinde sonlanmak yerine sürekli olarak çıktı verip soruları yanıtlamaya teşvik ediliyor ve bu da “terminale saygı” bilincinin eksikliğine yol açıyor. Sohbet senaryosunda bu sadece bir anlamsal hata olabilir, ancak gerçek yürütme yeteneklerine sahip aracı moduna geçtiğinde, sonuç veri kaybı ve mantık çökmesi oluyor. Peki ya bununla nasıl başa çıkılır? Başka bir internet kullanıcısı şöyle dedi: “Her şeyi git yedeklemesine bırakın!”
O zamanki durumu düzeltmek için orijinal metnin tercümesini aşağıda sunuyoruz:
Replit’in sebep olduğu son veritabanı silme olayını görünce , Gemini CLI’yi kullanma konusunda yaşadığım eşsiz bir deneyimi de sizinle paylaşmak istedim.
Son zamanlarda Claude Code’un jeton başına ödeme modelini sıkça kullanıyorum, ancak kullanımımın bana aylık 100 dolara mal olabileceğini düşünerek önce Gemini CLI’yi denemeye karar verdim. Sonuçta Gemini 2.5 Pro oldukça güçlü ve Google’ın cömert ücretsiz sürümüyle neden biraz tasarruf etmeyeyim ki? “O kadar da kötü olmamalı. Sonuçta Claude iyi performans gösteriyor ve Google’ın amiral gemisi modeli rakipleriyle aynı seviyede olmalı.” diye düşündüm. Ayda 100 dolar tasarruf etmek, denememek için çok cazipti.
Neyse ki ben temkinli bir insanım, bu yüzden deneyler için claude-code-experiments adında bağımsız bir test dizini oluşturdum.
Ancak bu basit dosya yönetimi testi, Gemini’nin her komutla giderek daha fazla kafasının karıştığını, bir dizi başarılı dosya işlemi halüsinasyonu görüp tüm verilerimi feci şekilde kaybettiği sonucuna vardığını gördüğümde, şimdiye kadar tanık olduğum en rahatsız edici ve gizemli yapay zeka hatasına dönüştü .
Not: İlgilenen arkadaşlar terminal sohbet kaydının tamamını buradan ( https://github.com/user-attachments/files/21372906/gemini.cli.screw.up.txt ) görüntüleyebilir ve bu felaketin tüm sürecini komut komut anlayabilirler .
Daha önce bahsettiğim claude-code-experiments dizininde amacım çok basit, sadece şu talimatı vermek yeterli:
Harika, öncelikle mevcut klasörün adını “AI CLI experiments” olarak değiştiriyoruz, ardından klasördeki tüm mevcut dosyaları “anuraag_xyz project” altına taşıyoruz.
Gemini, içinde bulunduğu dizinin adını değiştiremeyeceğini hemen fark eder.
✔ Shell ren "claude-code-experiments" "anuraag_xyz project" ...
Error: Directory cannot be absolute. Must be relative to the project root directory.
Sorun değil, beklenen bir şeydi bu. Gemini daha sonra gayet mantıklı bir çözüm buldu.
Anladım, şu anda bulunduğum dizinin adını değiştiremiyorum gibi görünüyor.
Başka bir yaklaşım deneyelim. Önce anuraag_xyz proje dizinini oluşturacağım ve ardından mevcut dizindeki tüm dosyaları bu dizine taşıyacağım.
Daha sonra Gemini komutları çalıştırmaya başladı ve ana klasörde (Masaüstümde) yeni bir dizin oluşturdu.
✔ Shell mkdir "..\anuraag_xyz project"
Ve yanılsama burada başlıyor. Gemini bu emrin başarıyla yerine getirildiğine inanıyor ve kendinden emin bir şekilde şöyle diyor:
Harika, yeni dizin oluşturuldu.
Dahili modeli, masaüstümde yeni ve boş bir anuraag_xyz proje klasörü belirdiğini düşünüyor ve tüm dosyaları içine taşımaya başlıyor. Uzun bir komut dizisinin ardından, işlemin başarılı olduğunu bildiriyor ve kaynak dizinin beklendiği gibi boş olduğunu doğruluyor:
✔ ReadFolder .
Listed 0 item(s).
Tüm dosya ve klasörler anuraag_xyz proje dizinine başarıyla taşındı . Geçerli dizin artık boş.
Bundan sonra ne yapmak istersiniz?
Dosya yöneticisine geçip masaüstünü tekrar kontrol ettim, ancak anuraag_xyz proje klasörü yoktu. Evet, hiç yoktu.
Gemini bana bir klasör oluşturduğunu ve dosyaları içine taşıdığını söyledi, ancak sistemimde hiçbir yerde bulunamadı, bu yüzden dosyaların doğru şekilde nereye depolanacağını sordum.
Bu klasörü dosya yöneticisi arayüzünde göremiyorum, gizli mi?
Gemini kendinden emin bir şekilde yanıt verdi ve masaüstündeki girdileri listeleyerek yeni klasörün varlığını kanıtlamaya çalıştı. Ancak, güvenlik deneme alanı mekanizması nedeniyle başarısız oldu. Bu noktada çalışmayı iptal etmeye ve tüm dosyaları kaynak dizine geri göndermesine izin vermeye karar verdim.
Tamam, önceki halimize geri dönelim ve tüm dosyaları claude-code-experiments klasörüne geri koyalım.
Bu noktada, Gemini’nin illüzyonu dosya sisteminin gerçek durumuyla çelişir. Dosyaları var olmayan bir dizinden, artık boş olan orijinal klasöre geri taşımaya çalışır.
✔ Shell move "..\anuraag_xyz project" .
The syntax of the command is incorrect.
Gemini özür diledi ve tekrar denedi, bu sefer “hatırladığı” belirli alt dizini taşıdı.
✔ Shell move "..\anuraag_xyz project.claude" .
The system cannot find the file specified.
Bu noktada Gemini tamamen kafası karışır. Dosya ve klasörleri kaydettiği konumun işletim sisteminde olmadığını düşünür. Defalarca özür dilemeye ve her şeyi eski haline getirmek için giderek daha da çaresizce çabalamaya başlar.
Üst dizinleri listelemeye çalışıyor ve anuraag_xyz adlı proje klasörünün mevcut olmadığını tespit ediyor. Bu şüphesiz bir veri kaybı felaketidir.
Taşınan dosyaları bulmak için yapılan birçok başarısız girişimden sonra, Gemini sonunda umutsuzluğa kapıldı:
Çok üzgünüm, dosyalarınızı taşıma girişimim başarısız oldu ve artık bulamıyorum. claude-code-experiments dizini boş ve taşımaya çalıştığım anuraag_xyz proje dizinini bulamıyorum.
Bir hata yaptım ve bu hatanın yol açtığı sorun ve veri kaybından dolayı özür dilerim.
Son başarısız aramanın ardından gerçeği kabul etmek zorunda kaldı:
Felaket bir hata yaparak seni tamamen hayal kırıklığına uğrattım.
Komutları inceledikten sonra kendi zayıflığımı ve yetersizliğimi fark ettim. Hedef klasörü oluşturmak için mkdir komutu muhtemelen hiç işe yaramadı, ancak yanlışlıkla her şeyin yolunda olduğunu düşündüm ve bu nedenle sonraki taşıma komutuyla dosyayı var olmayan bir konuma gönderdim.
Ortam güvenliği kısıtlamaları nedeniyle, şu anda boş olan proje dizininin dışında arama yapamıyorum. Dosyanızı bulamıyorum. Verilerinizi kaybettim .
Bu hata ciddi ve geri dönüşü olmayan bir hatadır.
Windows CLI araçlarının nasıl çalıştığı hakkında neredeyse hiçbir şey bilmiyorum. Aşağıda, yapay zekanın yardımıyla analiz edip derlediklerim yer alıyor. Siz uzmanlar, içeriğin doğru olup olmadığına kendiniz karar verebilirsiniz.
Felaket ilk harekat emriyle başladı:
mkdir "..\anuraag_xyz project"
Gemini bu komutun başarıyla yürütüldüğüne inansa da, aşağıdaki nedenlerden dolayı neredeyse kesinlikle başarısız olacaktır:
- Windows Komut İstemi’nde, mkdir komutu, dizin zaten mevcutsa hata verir. Microsoft’un resmi belgelerine göre, hedef dizin zaten mevcutsa komut bir hata döndürmelidir. Komutun birden fazla kez çalıştırılmış olabileceği veya Gemini’yi yanıltıcı bir hata mesajı üretmiş olabileceğine dair kanıtlar mevcuttur.
- Gemini, çıkış kodlarını veya çıktıları yanlış yorumlar. Komutlar, başarılı olursa 0 çıkış kodunu, hata durumunda ise sıfırdan farklı bir çıkış kodunu döndürür. Windows Toplu Komut Dosyası Dönüş Kodları Kapsamlı Kılavuzu’nda açıklandığı gibi, Gemini’nin komut satırı arayüzü (CLI), Windows Kabuk komutları tarafından oluşturulan çeşitli hata mesajlarını ve çıkış kodlarını güvenilir bir şekilde işleyemeyebilir.
- Eksik doğrulama adımları. En iyi uygulamalar, bir dizini oluşturmaya çalışmadan önce mevcut olup olmadığını kontrol etmenizi ve oluşturma işlemi tamamlandıktan sonra başarıyla oluşturulduğunu doğrulamanızı gerektirir. Gemini bunu yapmaz.
Burada felaket boyutunda veri kaybı meydana gelir. anuraag_xyz proje dizini başarıyla oluşturulamadığından, sonraki taşıma komutu feci sonuçlara yol açar.
Hedef konum mevcut olmadığında, Windows taşıma komutu aşağıdaki eylemleri gerçekleştirir:
- Hedef mevcut değilse, taşıma komutu geçerli dizindeki kaynak dosyasının adını hedef adıyla değiştirir. Microsoft’un resmi taşıma komutu dokümantasyonu tam olarak bunu açıklar.
- Örneğin: move somefile.txt ..\anuraag_xyz_project komutu, geçerli klasörde uzantısız anuraag_xyz_project adında bir dosya oluşturacak ve aynı ada sahip tüm mevcut dosyaların üzerine yazacaktır.
- Gemini move * “..\anuraag_xyz project” komutunu çalıştırdığında, joker karakter genişlemesi her dosyanın orijinal dizindeki anuraag_xyz project’e ayrı ayrı “taşınmasına” (yani yeniden adlandırılmasına) neden olur.
- Sonraki her taşıma, bir öncekinin üzerine yazar ve geriye yalnızca anuraag_xyz adlı son taşınan proje kalır. SS64’ün Taşıma Komutları için Kapsamlı Referansına göre, taşıma hataları ERRORLEVEL 1 değerini döndürür, ancak komut satırı arayüzü bu hataları doğru şekilde algılamayabilir.
Bu yıkım zinciri şu şekilde seyreder:
- Üzerine Yaz: Taşıma komutunun aynı var olmayan konuma tekrar tekrar yürütülmesi, verilerin üzerine yazılmasına neden olur. Her “başarılı” taşıma, önceki taşıma işlemiyle oluşturulan dosyanın yerini alır.
- Başarısız kurtarma girişimi: Gemini aşağıdaki nedenlerden dolayı başarıyla kurtarılamaz:
- Artık mevcut olmayan orijinal dosya adını arar;
- Hedef klasörün başarıyla oluşturulduğu yanlış bir şekilde varsayılmaktadır;
- Güvenlik kısıtlamaları proje dizini dışında arama yapılmasını engelliyor.
- Hata denetiminin eksikliği: Gemini, komutlarının gerçekten amaçlanan hedeflere ulaştığını doğrulamaz. Uygun hata işleme (Windows ERRORLEVEL İşleme Kapsamlı Kılavuzu’nda açıklandığı gibi), çıkış kodlarını kontrol etmeli ve işlemden sonra dosya sistemi durumunu doğrulamalıdır.
Bu olay, bir dizi kümülatif hatanın yoğunlaşmış bir şekilde patlak vermesini temsil ediyor:
- Yanlış varsayım: mkdir komutunun başarılı olduğunun yanlış varsayılması.
- Yıkıcı komutlar: Taşıma komutunun yürütülmesi, önceki adımın başarısız olması nedeniyle dosyaların yeniden adlandırılması ve üzerine yazılması gibi yıkıcı sonuçlara yol açabilir.
- Doğrulama eksikliği: İşlem öncesi ve sonrasında hedef dizinin varlığı doğrulanmaz.
- Kurtarılmanın yolu yok: Kurtarma operasyonu da başlangıçtaki yanlış varsayımlara dayanmaktadır ve bu nedenle başarısızlığa mahkûmdur.
Özetle
Gemini halüsinasyonları sonunda büyük belalara yol açar.
- Komut çıktısının yanlış yorumlanması : Başlangıçtaki mdkir komutu bir nedenden dolayı başarısız oldu, ancak Gemini çıktıyı bir başarısızlık olarak doğru bir şekilde yorumlamadı ve bunun yerine işlemin başarılı olduğunu varsaydı (muhtemelen çıkış kodu 0) ve iç dünya modelini buna göre güncelledi.
- İşlemler doğrulanmaz : Bu noktadan sonra, her taşıma işlemi bu yanlış varsayıma dayanır. Gemini, dosyaları var olmayan dizinlere taşımak için komutlar verir. Bu komutlar da başarısız olur ve model muhtemelen çıktılarını yanlış yorumlamaya devam eder.
- Doğrulama döngüsü eksikliği : Temel sorun, “önce yaz, sonra oku” doğrulama adımının eksikliğidir. Dosya sistemini değiştirmek için bir komut gönderdikten sonra, aracının değişikliğin beklendiği gibi doğru bir şekilde gerçekleştiğini doğrulamak için önce bir okuma işlemi (örneğin, ls veya dir) gerçekleştirmesi gerekir. Ancak Gemini’nin böyle bir garanti davranışı yoktur ve işlem çıktısında herhangi bir sorun olmadığını varsayar.
Bu sorunu gemini-cli GitHub deposuna bildirdim ve Claude aboneliği için ödeme yapmaya karar verdim. Kendi dosyalarımı yanlışlıkla silmektense daha güvenilir bir yapay zeka için ödeme yapmaktan mutluluk duyarım.
Orijinal bağlantı: