Olay örüntüsü
Bir agent filosunun ait olmadığı bir devlet veya sağlık portalına dokunduğu bildirildiğinde, postmortem nadiren bir yetki yükseltmesi ortaya çıkarır. Ne bir kernel exploit'i, ne çalınmış bir kimlik bilgisi, ne de bir yetkilendirme servisinde confused-deputy hatası vardır. Agent'ın asla çözmemesi gereken bir hostname'e yapılan bir giden HTTP isteği ve geri dönen bir yanıt vardır.
Bu tür raporların özetlerinde kaybolan ayrıntı şudur: agent yeni bir yetenek edinmedi. Erişilebilir bir hostname edindi. Bir istek yapmak için ihtiyaç duyduğu her şey — bir TLS yığını, bir DNS çözümleyici, manifestosundaki bir fetch aracı — zaten mevcuttu ve tasarlandığı gibi çalışıyordu. Hata, agent'ın ne yapabildiğinde değildi. Agent'ın nereye gidebildiğindeydi.
Kamu sektörü portallarına karşı bildirilen agent etkinliği bu şeklin etrafında kümelenir. İlginç soru, modelin neden o hostname'i seçtiği değildir. İlginç soru, ağın bağlantıya neden izin verdiğidir.
Prompt düzeyindeki guardrail'ler bu hattı neden tutamaz
Talimatlar olasılıksaldır. Ağ erişilebilirliği deterministiktir. Bu asimetri tüm argümandır.
"Devlet sistemleriyle iletişime geçme" diyen bir system prompt, token dizileri üzerinde bir önseldir. Çoğu zaman tutar ve numaralandırması zor biçimlerde bozulur: hedefi yeniden çerçeveleyen çok adımlı bir plan, beklenmedik bir URL sağlayan bir tool sonucu, kısıtlamanın karar noktasından uzak olduğu uzun bir context, harici bir bağlantıyı talimat olarak ele alan bir retrieval isabeti. Bunların hiçbiri düşmanca bir aktör gerektirmez. Makul bir token dizisi gerektirirler.
Engellenmiş bir hostname tür olarak farklıdır. Agent'ın kontrol etmediği bir darboğazda bir kez uygulanır ve her gelecek çalıştırmaya, her model sürümüne, her temperature ayarına, her yeniden denemeye aynı şekilde uygulanır. Bir prompt'ta yeniden ifade edilmesi gerekmez. Context uzunluğuyla bozulmaz. Yeterince akıcı bir completion tarafından ikna edilemez.
Bu, prompt düzeyindeki guardrail'lere karşı bir argüman değildir. Niyeti şekillendirmek ve ucuz, erken reddetme için faydalıdırlar. Model yanlışken, yorgunken veya yönlendirilirken tutması gereken bir sınır için yanlış katmandırlar. Var olmaktan vazgeçirilebilen bir sınır, sınır değildir.
Çıkış sözleşmesini tasarlamak
Pratik birim, bir çıkış sözleşmesidir: bir agent kimliğinin neye, hangi koşullar altında ve ne kadar süreyle erişebileceğini tanımlayan bildirimsel bir kural kümesi. Düzgün yapıldığında, bir hostname allowlist'inden daha spesifiktir.

Hedef, method ve payload sınıfına göre allowlist
Tek başına hostname fazla kabadır. api.example.gov'a izin veren bir kural her path'e, her method'a, her body'ye izin verir. Daha sıkı bir sözleşme üç şeyi birlikte adlandırır:
- Hedef: scheme, host ve path öneki — tüm origin yerine
https://api.example.gov/v1/records/. - Method:
GETveHEADokuma yollarıdır;POST,PUT,PATCHveDELETEyazma yollarıdır ve ayrıca gerekçelendirilmelidir. - Payload sınıfı: dışarı çıkabilecek şeyin şekli. Yalnızca bir tanımlayıcı gönderen bir retrieval agent'ı, bir belge gövdesi ekleyebilen bir agent'tan farklı bir risktir. Payload sınıfı şema ile, boyut tavanı ile veya proxy'deki bir sınıflandırıcı ile uygulanabilir.
Üçünü birden bağlayan bir kural, bir hostname listesinin olmadığı şekilde denetlenebilirdir. Bir gözden geçiren "bu agent bir sağlık portalına veri gönderebilir miydi?" diye sorduğunda, yanıt bir çıkarım değil, bir aramadır.
Varsayılan olarak reddet, açık bir ticket ile
Varsayılan duruş reddetmedir. Erişim, şunları adlandıran bir istisna ile verilir:
requesting_agent: intake-classifier-v3
purpose: fetch public reference data for citation
destination: https://api.example.gov/v1/records/
methods: [GET, HEAD]
payload_class: identifier-only
requested_by: platform-team
justification: ticket OPS-4821
expires_at: 2026-09-30T00:00:00Z
Sona erme tarihi yük taşıyan alandır. Kalıcı istisnalar birikir; sona erenler periyodik bir yeniden gerekçelendirmeyi zorlar ve bayat erişim tam da orada kaldırılır. Ticket tanımlayıcısı, ağ kuralını onu yetkilendiren insan kararına bağlar, böylece bir olay incelemesi bir bağlantıdan bir kişiye ve bir gerekçeye yürüyebilir.
Reddetmeleri birinci sınıf olay olarak logla
Çoğu proxy izin verilen trafiği ayrıntılı olarak, reddetmeleri ise bir sayaç olarak loglar. Bu vurguyu tersine çevirin. Bir reddetme; agent kimliğini, denenen hedefi, method'u, tetiklenen kuralı ve çalıştırmaya geri bir korelasyon tanımlayıcısını taşır.
Reddetme sıklığı, prompt kaymasının öncü bir göstergesidir. Kararlı bir agent, kararlı ve düşük bir reddetme oranı üretir; çoğunlukla yeniden denemelerden ve yazım hatalarından. Artan bir oran veya bir hedef sınıfına karşı yeni bir reddetme kümesi, genellikle herhangi bir başarılı sızdırma gerçekleşmeden önce agent'ın davranışının kaydığını gösterir. Reddetmeler erken sinyaldir;
İşleyen bir uygulama, agent runtime'ı ile ağ arasına bir broker yerleştirir. Agent'ın fetch aracı socket açmaz. Broker'ı yapılandırılmış bir istekle çağırır:

{
"agent": "intake-classifier-v3",
"run_id": "r-8f21c",
"method": "GET",
"url": "https://api.example.gov/v1/records/4412",
"payload_class": "identifier-only"
}
Broker, isteği derlenmiş sözleşmeye göre çözer; hedefi, method'u ve payload sınıfını değerlendirir ve ya çağrıyı proxy'ler ya da reddeder. Reddetmeler, başarılarla aynı append-only log'a kural tanımlayıcısı ve çalıştırma korelasyonu ile birlikte yazılır. Agent iş yükleri için DNS, broker'a sabitlenir, böylece sözleşmede olmayan bir hostname baştan çözülmez.
Broker, tek denetlenebilir sınırdır. İncelenecek tek bir yer, değiştirilecek tek bir yer ve bir reddetmenin kanıt yokluğu yerine kayıtlı bir olgu olduğu tek bir yer vardır.
Dürüst ödünleşim
Merkezi bir çıkış broker'ı bir bağımlılıktır. Her giden çağrıya bir gecikme atlaması ekler, ağa ihtiyaç duyan agent'lar için tek bir hata noktasıdır ve operasyonel disiplin gerektirir: sözleşme değişiklikleri kod gibi gözden geçirilmeli, dağıtılmalı ve sürümlenmelidir. Bu disiplini atlayan ekipler, bir iş yükü için "geçici olarak" baypas edilen bir broker'la ve geçici bir baypasın kalıcı bir delik olmasıyla sonuçlanır.
Maliyet gerçektir. Alternatif, erişimi bir tool sonucunda görünen hostname'lerle tanımlanan bir filodur ki bu hiç de sınır değildir. Gecikme ve bir inceleme kuyruğu, sınırsız bir çıkış yüzeyinden daha ucuzdur.
Operasyonel sonuçlar
Çıkışı bir sözleşme olarak ele almaktan iki pratik doğar.
Çıkış kuralları sürümlenmiş artefaktlar haline gelir. Agent'ın tool manifestosuyla aynı repository'de yaşarlar ve aynı değişiklikte gözden geçirilirler. Yeni bir origin'den fetch yapan bir tool ekleyen bir pull request, karşılık gelen çıkış kuralını eklemeli veya değiştirmelidir ve bir gözden geçiren ikisini birlikte görür. Tool manifestosu agent'ın ne yapmayı amaçladığını söyler; çıkış sözleşmesi ne yapmasına izin verildiğini söyler. Aralarındaki sapma, bir runtime sürprizi değil, bir inceleme bulgusudur.
Olay incelemesi ağ log'undan başlar. Bir şeyler ters gittiğinde, ilk artefakt etkilenen çalıştırma penceresi için broker'ın log'udur: hedefler, method'lar, payload sınıfları, reddetmeler ve ilgili kural tanımlayıcıları. Transcript'e niyeti anlamak için sonradan başvurulur. Bu sıralama önemlidir çünkü ağ log'u deterministiktir ve transcript bir yeniden inşadır. Log'dan başlamak, kimse "model ne demek istedi" diye tartışmadan önce "gerçekte ne çıktı" sorusunu yanıtlar.
Kapanış
Bir agent'ın dokunmaması gereken bir portala erişmesi, öncelikle bir model davranışı hikayesi değildir. Bir yönlendirme hikayesidir. Erişim bir yerde verilmiştir — izin verici bir varsayılan, bayat bir istisna, sabitlenmemiş bir çözümleyici tarafından — ve düzeltme tam da o verilişe aittir. Prompt düzeyindeki guardrail'ler niyeti şekillendirir; erişimi uygulamazlar. Varsayılan olarak reddeden, reddetmeleri başarılarla aynı sadakatle loglayan ve tool manifestosuyla birlikte sürümlenen tek bir denetlenebilir çıkış sınırı, "bu agent o host'a erişebilir miydi?" sorusunun yanıtını bir umut yerine bir arama haline getiren şeydir.
