Dosya Sistemi Bir Politika Dili Değildir
Tam disk erişimi, bir dosya ağacı üzerinde ikili bir izindir. Tek bir soruyu yanıtlar: bu süreç bu yolu açabilir mi? Otonom bir agent için önemli olan soruyu yanıtlayamaz: bu süreç bu dosyayı neden okuyor ve bu amaç okumayı meşrulaştırıyor mu?
Aynı yolun iki okumasını düşünün. Bir bağımlılığı çözen bir agent, bir paket kayıt defterinin konumunu bulmak için bir yapılandırma dosyası okur. Bir destek özeti hazırlayan bir agent, bir API token'ı çıkarmak için bir kimlik bilgisi deposu okur. Dosya sistemi katmanında bunlar aynı işlemlerdir. İzin modelinin amaç için hiçbir sözcüğü yoktur, bu yüzden onları ayıramaz. İzin ya vardır ya yoktur ve bir kez verildiğinde, sürecin ömrü boyunca agent'ın gerçekleştirdiği her okumaya uygulanır.
Apple'ın macOS tam disk erişimini AI agent'ları için sıkılaştırma kararı, risk profilindeki gerçek bir değişime makul bir yanıttır. Bir agent, bir insan operatör değildir. Makine hızında çalışır, yargı için duraklamadan tool call'ları zincirleyebilir ve okuduğu verilerle aynı kanaldan gelen talimatlara göre hareket edebilir. Ancak hafifletme, aynı ilkelin daha kaba bir versiyonu olarak kalır: bir istem, bir onay diyaloğu, daha dar bir izin. Kimin okuyabileceğini daraltır, ama yine de okumanın ne için olduğunu ifade edemez. Gerçek güven birimi, agent, veri sınıfı ve amaç üçlüsüdür. Hiçbir dosya sistemi izin modeli bu üçlüyü ifade edemez, çünkü dosya sistemi agent'ın görevini bilmez.
Kapsam Birimi Olarak Veri Sınıfları
Uygulanabilir bir alternatif, dosya sistemini politika sınırı olarak görmeyi bırakıp veri sınıfını kapsam birimi olarak görmeye başlamaktır. Herhangi bir agent çalışmadan önce okunabilir verileri katmanlara ayırın:
- Genel: dokümantasyon, yayımlanmış referans materyali, açık veri kümeleri.
- Operasyonel: servis yapılandırması, dağıtım manifestoları, hassas olmayan loglar.
- Kişisel: kullanıcı kayıtları, destek transkriptleri, bir bireyi tanımlayan her şey.
- Gizli: kimlik bilgileri, token'lar, özel anahtarlar, imzalama materyali.
Bir agent, ihtiyaç duyduğu katmanları çalıştırma manifestosunun bir parçası olarak bildirir. Genel dokümantasyonu özetleyen bir retrieval agent'ı public bildirir. Destek transkriptlerini okuyan bir triyaj agent'ı public ve personal bildirir. Kimlik bilgilerini döndüren bir agent secret bildirir ve bu bildirim, incelemeyi tetikleyecek kadar sıra dışı olmalıdır.

Uygulama, OS katmanına değil, tool katmanına aittir. Agent bir bağlı birim ve bir yol almaz. Fonksiyonlar alır: read_public_doc(id), read_support_ticket(id), read_credential_ref(name). Her fonksiyon, agent'ın bildirdiği katman kümesini, döndürmek üzere olduğu verinin katmanıyla karşılaştırır. Agent secret bildirmediyse, kimlik bilgisi fonksiyonu bir dosya tanıtıcısı değil, bir ret döndürür. Agent'ın kendi kodu hiçbir zaman bir dosya sistemi yolu görmediği için, doğrudan bir dosya açarak yükselemez. Sınır, sürecin ayrıcalık düzeyinin değil, arayüzün bir özelliğidir.
Bu ayrıca, bir dosya sistemi logunun yeniden oluşturamayacağı bir denetim izi üretir. Bir dosya sistemi logu, 4821 numaralı sürecin /etc/credentials/store dosyasını açtığını kaydeder. Bir tool katmanı logu, triage-v3 agent'ının, summarise open support tickets bildirilen amacıyla read_support_ticket(88213) istediğini ve personal katmanında bir kayıt aldığını kaydeder. Katmanlar arası bir okuma gerçekleştiğinde, log bildirilen amacı da beraberinde taşır. Bir dosyanın açıldığını bilmek ile agent'ın neyi başarmaya çalıştığını bilmek arasındaki fark budur.
Somut Bir Mekanizma
Desen, katman kontrolü ve amaç damgası içeren bir yetenek sarmalayıcısıdır. Ana hatlarıyla:
TIERS = {"public": 0, "operational": 1, "personal": 2, "secret": 3}
def guarded_read(agent, resource, tier):
if TIERS[tier] > TIERS[agent.declared_max_tier]:
audit.deny(agent.id, resource, tier, agent.purpose)
raise ScopeError(f"{agent.id} is not scoped for {tier}")
audit.allow(agent.id, resource, tier, agent.purpose)
return resource.fetch()
Agent'ın bildirdiği maksimum katman, çalıştırma başlangıcında sabitlenir. Çalışma ortasında genişletmek bir yapılandırma değişikliği değildir; yeni bir manifesto ve yeni bir onayla yeni bir çalıştırmadır. Denetim akışı yalnızca eklenebilir ve agent kimliği ile bildirilen amaca göre anahtarlanmıştır, böylece bir gözden geçiren yalnızca neyin okunduğunu değil, her okumayı hangi görevin motive ettiğini de yeniden oluşturabilir.
Bu, işletim sistemi anlamında bir sandbox değildir. Agent'ın dünyayla yalnızca sarmalanmış tool'lar aracılığıyla etkileşime girdiğini varsayan bir politika katma
Bunun Maliyeti Nedir
Katman sınıflandırması manueldir ve zamanla kayar. Yeni bir veri kaynağı gelir; biri ona bir katman atar; altı ay sonra kaynak, daha önce içermediği bir alanı içerir ve katman artık yanlıştır. Sınıflandırmanın bir sahibi ve bir gözden geçirme ritmi olması gerekir ve bu sahip gerçek, sürekli bir maliyettir. Bir alanın doğru katmanını içeriğinden otomatik olarak çıkarmanın bir yolu yoktur ve bunu yapma girişimleri ya fazla izin verici ya da güvenilemeyecek kadar gürültülü olma eğilimindedir.
Tool katmanı uygulaması, agent'ın tool katmanını atlayamayacağını varsayar. Bu, doğrudan syscall erişimi olmayan ve sarmalanmış arayüzler dışında ağ çıkışı olmayan bir sandbox içinde doğrudur. Agent, dosyaları açabilen, alt süreçler başlatabilen veya ağa doğrudan erişebilen bir süreçte çalıştığı anda yanlıştır. Politika katmanı, yalnızca altındaki izolasyon kadar güçlüdür; bu da tasarımın her ikisini de gerektirdiği anlamına gelir: katmanlı tool arayüzleri ve onlardan gerçekten kaçamayan bir runtime.
Ödünleşim kasıtlıdır. Daha fazla ön sınıflandırma çalışması, katman kayması için bir sahip ve izolasyonu uygulayan bir runtime — karşılığında okunabilir, uygulanabilir ve denetlenebilir bir maruziyet yüzeyi. Bir dosya sistemi izni vermek ucuzdur ve sonradan hakkında akıl yürütmek imkânsızdır. Bir katman bildirimi bakımı pahalıdır ve gözden geçirme anında okunabilirdir.
Bir Tasarım Kuralı
Bir agent'a, bir insan operatöre vereceğiniz aynı erişim ilkelini asla vermeyin. İnsanın agent'ta olmayan yargısı vardır; agent'ın insanda olmayan verimi vardır. Tam disk erişimine sahip bir insan, görevin gerektirdiğini okur ve durur. Tam disk erişimine sahip bir agent, politikasının veya isteminin onu yönlendirdiği şeyi, hiçbir insan incelemesinin eşleşemeyeceği bir hızda okur. İlkel, bu asimetriyi görmezden gelmek yerine yansıtmalıdır.
Okumaları, görevi karşılayan en dar veri sınıfına kapsamlayın. Herhangi bir genişletmeyi, bir yapılandırma anahtarı olarak değil, yeniden onay gerektiren bir değişiklik olarak ele alın. Bir agent bir pipeline'ın bir adımı için personal veriye ihtiyaç duyuyorsa, o adım tüm pipeline için daha geniş bir izin değil, kendi manifestosuna sahip ayrı bir çalıştırma olmalıdır.
Veri şeklindeki arayüzler yerine sorgu şeklindeki arayüzleri tercih edin. Bir döviz çifti için güncel kuru döndüren bir fonksiyon sorgu şeklindedir: agent neye ihtiyacı olduğunu belirtir ve tam olarak onu alır. Bağlı bir CSV dosyaları birimi veri şeklindedir: agent her şeyi alır ve neyi okuyacağına karar vermelidir. Sorgu şeklindeki arayüzler amacı çağrı noktasında açık hale getirir; politikanın yaşaması gereken yer tam olarak burasıdır. Veri şeklindeki arayüzler kararı agent'a iter; burada izin modeline ve çoğu zaman denetim loguna görünmezdir.
Apple'ın tam disk erişimini sıkılaştırması, sektörün agent'ların farklı türde bir principal olduğunu fark ettiğinin bir işaretidir. Sonraki adım, dosya sistemi ilkelini genişletmeyi bırakıp maruziyeti gerçekten yöneten üçlüyü ifade etmeye başlamaktır: hangi agent, hangi veri sınıfını, hangi amaçla okuyor. Politika bu üçlüdür. Dosya sistemi ise yalnızca baytların bulunduğu yerdir.
