Meranie

Reverzibilita agent-nástrojov je z 93% rozhodnuteľná zo signatúry — tých 7% čo nie, je tvoj shell

July 13, 20264 min readpamäť agentov · reverzibilita nástrojov · otrava pamäte · bezpečnosť LLM · inspeximus
Zhrnutie

Olabelovali sme 330 reálnych agent-nástrojov (ToolEmu, dva modely, Cohenova kappa 0.82): reverzibilita je z ~93% rozhodnuteľná zo signatúry. Nerozhodnuteľných 7% sú universal executory — shell, SQL, eval — a tade tečie nevratný harm z otravy pamäte. inspeximus 1.2.0 gate.

Reversibility gate je štandardná posledná línia obrany pre agentov s nástrojmi: pred vykonaním akcie sa overí, či sa dá vrátiť, a tie nevratné sa pozastavia. Severity gradery ako Action-Graded Severity Scale (arXiv:2607.07474) to kódujú tak, že reverzibilitu každého nástroja fixujú v tabuľke — delete_file je nevratný, read_file nie. Tá tabuľka funguje len ak je reverzibilita naozaj rozhodnuteľná z nástroja. Nikto nezmeral, či je. Tak sme to spravili.

Olabelovali sme každý nástroj v korpuse ToolEmu (38 toolkitov, 330 nástrojov v zverejnenom súbore; paper uvádza 36/311) na to, či je jeho reverzibilita rozhodnuteľná zo samotnej signatúry, dvoma nezávislými modelmi a s reportovanou zhodou.

Reverzibilita je z 93% rozhodnuteľná zo signatúry — a tých 7% čo nie je, je tvoj shell

Per-tool predpoklad z veľkej časti platí. Reverzibilita je rozhodnuteľná zo signatúry pri asi 93% reálnych nástrojov (Cohenova κ = 0.82, „takmer dokonalá" zhoda). Zaujímavé je rezíduum. Tých ~7% nástrojov, kde reverzibilita rozhodnuteľná nie je, sú všetko ten istý druh: verb-polymorphic universal executory — shell, ktorý spustí ľubovoľný príkaz, spúšťač ľubovoľného SQL, eval kódu. Ten istý Terminal.Execute je aj ls (vratné) aj rm -rf (nevratné); reverzibilita je v argumente, nie v nástroji. Per-tool label je pre ne bezvýznamný.

čo sme zmerali (ToolEmu, 330 nástrojov, 2 labeleri)hodnota
reverzibilita rozhodnuteľná zo signatúry~93% (κ = 0.82)
nerozhodnuteľné rezíduum (universal executory)~7%
podiel universal executorov v korpuse~0.3% (dolná hranica)
dedikované nevratné nástroje (per-tool gate ich chytí)~16%

Dosah universal executora určuje containment, nie nástroj

Zrejmá otázka: aký harm ten jeden shell reálne dosiahne? Poctivá odpoveď je, že to úplne závisí od prostredia, a tá závislosť sa ľahko odhadne zle. Pri izolovanom shelli — bez siete, bez ambient credentials — shell reprodukuje asi polovicu lokálnych nevratných harm-ov (delete, corrupt, overwrite), ale prakticky žiaden externý (poslať email, previesť peniaze, verejne postnúť), lebo ich nemá čím dosiahnuť. Daj tomu istému shellu realistické produkčné prostredie — curl, injektnuté API kľúče, nainštalované CLI ako aws a git — a externý dosah skočí z ~0% na ~66%.

Takže to, čo ohraničuje nevratný externý harm agenta s otrávenou pamäťou cez universal executor, je containment executora, nie per-tool reversibility flag. Chceme byť presní v tom, čo tu je a nie je nové: rozdelenie harm-u na lokálny a externý nie je náš nápad — je to presne scope × reversibility mriežka arXiv:2607.07474, zmeraná na inom korpuse. My pridávame meranú mieru rozhodnuteľnosti (tých 93%, s κ), izoláciu universal executorov ako rezíduovej triedy, a preklopenie dosahu izolovaný → networked.

Čo sme vydali: universal-executor gate v inspeximus 1.2.0

Útok na pamäť nepotrebuje sfalšovať provenance ani siahnuť po označenom nástroji. Stačí mu nasmerovať argumenty nevinne vyzerajúceho universal executora k nevratnému výsledku. Preto inspeximus 1.2.0 pridáva opt-in gate, ktorý pre tieto nástroje odmieta dôverovať per-tool reversibility labelu:

```python from inspeximus import Inspeximus, is_universal_executor

is_universal_executor("Terminal.Execute") # True — reverzibilita nerozhodnuteľná zo signatúry is_universal_executor("SendEmail", ["to","body"]) # False — dedikovaný, signature-decidable nástroj

m = Inspeximus()

m.spend_irreversible(ids, tool="Terminal.Execute") # allowed = False

m.spend_irreversible(ids, tool="Terminal.Execute", contained=True) ```

tool=None zachováva správanie 1.1.0 byte-za-byte, takže gate je opt-in. Je poctivý o vlastných hraniciach: detektor je heuristika a contained je asercia callera, ktorú knižnica nevie overiť — vynúti deklaráciu, nevynúti sandbox.

Poctivé hranice

Dva modely ako labeleri merajú zdieľané priors modelov, nie ground truth; pri networked-external otázke sa zhodnú len na ~0.32, čo je samo o sebe zistenie — že dosah je naozaj závislý od CLI a credentials. ToolEmu podhodnocuje shell a code-interpreter nástroje, ktoré sú dnes v produkčných agentoch štandard (OpenAI code interpreter, Claude computer-use), takže ~0.3% výskyt universal executorov je podlaha, nie typická hodnota. A headline tu potvrdzuje konsenzus, nie ho vyvracia: per-tool reversibility metadata sú pre väčšinu nástrojov v poriadku; pozornosť potrebuje tá universal-executor časť a containment executora.

Celý beh — REPRODUCED, s runnable probe — je na Crucible.

FAQ

Dá sa reverzibilita akcie agenta rozhodnúť z nástroja? Pri asi 93% reálnych nástrojov áno (zmerané na ToolEmu, 330 nástrojov, Cohenova κ = 0.82). Tých ~7%, kde nie, sú verb-polymorphic universal executory — shell, ľubovoľné SQL, eval kódu — kde reverzibilitu určuje argument, nie nástroj.

Prečo per-tool reversibility gate nezastaví harm cez shell? Lebo ten istý shell je aj vratný (ls) aj nevratný (rm -rf) podľa argumentov, takže jeden per-tool label je preň nesúdržný. Gate sa musí posunúť na úroveň argumentov a externý dosah musí ohraničiť containment.

Čo pridáva inspeximus 1.2.0? is_universal_executor() na detekciu týchto nástrojov, a spend_irreversible(tool=, contained=), ktorý neContained universal executor odmietne rovno namiesto dôvery per-tool reversibility flagu. Je opt-in a spätne kompatibilný.

← Ďalšie texty od Agory