Veritabanı araçları yazma işlerini gerçekten yapabiliyor — ama bir satır güncellemekle bir tabloyu düşürmek artık aynı izne bağlı değil. Yanında, alan adı işlemlerinde makineyi tutarsız bırakan dört yol.
Eklendi
- Şema keşfi:
db_tablesvedb_describe. Tablolar satır sayısı ve boyutla, sütunlar tip, anahtar ve varsayılanlarıyla listeleniyor. Bir yapay zekâ istemcisinin en sık ihtiyaç duyduğu iki işlem artık ham SQL yazmayı gerektirmiyor — ve sorgu yazmadan önce sütun adlarını doğrulamak, uydurmanın yerini alıyor. - SQL yazma üç kademeye ayrıldı. Okuma serbest;
INSERT/UPDATE/REPLACEiçinallow_write;DELETE/DROP/TRUNCATE/ALTER/CREATEiçin ayrıcaallow_destructive. Bir satır güncellemek ile bir tabloyu düşürmek aynı istek değil ve aynı anahtara bağlanamaz.
Düzeltildi
allow_writeaçıldığında hiçbir denetim kalmıyordu. Çoklu ifade reddi bile yalnızca salt-okunur daldaydı, yaniallow_writeile"DROP DATABASE a; DROP DATABASE b"çalışıyordu. Artık çoklu ifade her kademede reddediliyor ve SQL hiçbir bayrakla dosya sistemine ulaşamıyor — bir veritabanına yazma izni, diski okuma izni değildir.- Silinen bir alan adının vhost'u geri yazılabiliyordu. Kayıt denetimi yazımın etrafındaydı, içinde değil; aradaki
configtestbeklemesinde silme baştan sona koşabiliyordu. Sonuç, artık var olmayan bir sertifikayı gösteren öksüz bir vhost:configtestkalıcı olarak düşer ve Apache hiç başlamaz — makinedeki bütün siteler birden gider. Üstelik hata logu bastırıldığı için sessizce. - Alan adı oluşturulurken kayıt en sonda yazılıyordu. Site klasörü, sertifika, vhost ve
/etc/hostsgirişi hazırken kayıt yoktu;/etc/hostsyönetici parolası isteyip süresiz beklediğinden bu pencere dakikalar sürebiliyordu. Orada çıkılırsa geriye hiçbir arayüzde görünmeyen, hiçbir şeyin toplamadığı dosyalar kalıyordu. - Yedekten geri yükleme, canlı bir paylaşımın altından vhost'u çekiyordu. Tünel ayakta kalıp
Hostbaşlığını artık var olmayan bir bloğa taşıyor ve istek varsayılan siteye düşüyordu — localhost kökü, phpMyAdmin ve Adminer dâhil. Çalışan bir arka plan uygulaması da kaydı gittiği için bir daha hiç durdurulamıyordu. Artık silmeden önce canlılığa bakılıyor. Ayrıcalocalhost.confyanlışlıkla öksüz sayılabiliyordu. nginx.confkorumasız yazılıyordu. Yedek başarısız olsa bile yazım devam ediyor,nginx -tyapılmıyor ve geri dönüş bulunmuyordu. Dahası budama en eskiden başlayarak sildiğinden, kullanıcının BRAMPP öncesinginx.conf'u altı rutin işlemden sonra kayboluyordu. En eski yedek artık kalıcı.
Değişti
- Teşhis paneli kaydı olmayan vhost dosyalarını bildiriyor — ve bilerek silmiyor. Aynı dizinde elle eklenmiş yapılandırmalar da duruyor; "kaydı yok" ile "çöp" aynı şey değil.
- MCP izin sınırı test altına alındı. 25 aracın alanı ve yazma gereksinimi elle yazılıyordu ve hiçbir doğrulaması yoktu; bir bayrağı ters çevirmek yıkıcı bir aracı salt-okunur bir izinde sessizce kullanılabilir kılardı.
Ayrıntı: Değişiklikler
Apple Silicon, macOS 14+.
In English
The database tools can genuinely write now — but updating a row and dropping a table are no longer the same permission. Alongside that, four ways domain operations could leave the machine inconsistent.
Added
- Schema discovery:
db_tablesanddb_describe. Tables with row counts and size, columns with types, keys and defaults. The two things an AI client needs most often no longer require writing raw SQL — and checking a column name beats guessing it. - SQL writing is split into three levels. Reading is open;
INSERT/UPDATE/REPLACEneedallow_write;DELETE/DROP/TRUNCATE/ALTER/CREATEadditionally needallow_destructive. Updating a row and dropping a table are not the same request and cannot share a switch.
Fixed
- Turning on
allow_writeremoved every check. Even the multiple-statement rejection lived only in the read-only branch, soallow_writealso accepted"DROP DATABASE a; DROP DATABASE b". Multiple statements are now refused at every level, and SQL cannot reach the filesystem under any flag — write permission on a database is not permission to read the disk. - A deleted domain's vhost could be written back. The record check sat around the write rather than inside it, and deletion can complete during the
configtestwait in between. The result is an orphan vhost pointing at a certificate that no longer exists:configtestfails permanently and Apache will not start at all, taking every site on the machine with it — silently, because the error log was suppressed. - Creating a domain saved the record last. The site folder, certificate, vhost and
/etc/hostsentry all existed before the record did, and the hosts step can sit on an admin password prompt indefinitely. Quit in that window and the files stayed, invisible to the UI and collected by nothing. - Restoring a backup removed a vhost out from under a live share. The tunnel kept carrying the Host header to a block that no longer existed, so the request fell through to the default site — localhost root, phpMyAdmin and Adminer included. A running background app also became unstoppable once its record was gone. Liveness is now checked before removal, and
localhost.confcould previously be mistaken for an orphan. nginx.confwas rewritten without protection. A failed backup did not stop the write, there was nonginx -tand no rollback. Worse, pruning dropped the oldest first, so the user's pre-BRAMPPnginx.confdisappeared after six routine operations. The oldest backup is now kept permanently.
Changed
- Diagnostics reports vhost files with no record — and deliberately does not delete them. Hand-written configuration lives in the same directory; "no record" and "garbage" are not the same thing.
- The MCP permission boundary is under test. The scope and write requirement of all 25 tools were written by hand with nothing asserting them; flipping one flag would silently expose a destructive tool at a read-only permission level.
Details: Changelog
Apple Silicon, macOS 14+.