Job opportunities

Reversibility is not a permission

Cita
M. García discusses governing AI agents in Drupal by evaluating action reversibility dynamically.

When an editor hits publish, from where they sit, just one thing happened. However underneath it’s seven or eight, and at least two can’t be taken back.

On a mature platform: purge the CDN, reindex search, fire a partner webhook, notify subscribers, push to social accounts, update a partner feed, emit an analytics event.

In Drupal a competent team can easily grep the hooks and event subscribers, read the ECA models etc, and have an inventory in a week as a wiki page. What an agent needs though is a declared catalogue: operations with typed inputs, known authorization, and a receipt on the way out.

As Scott Falconer puts it in the Outside AI roadmap: what’s missing is declaration, not governance. The permission system already works; authorization attaches to the operation, not the entry point. Operations beyond entity CRUD aren’t declared anywhere an agent can find them. For authorization that’s right but knowing an agent may run an operation doesn’t tell you which runs a human should look at.

Meta’s Agents Rule of Two, after Simon Willison‘s lethal trifecta says that an agent holding untrusted input, private data and the ability to change state within a session shouldn’t run autonomously. It needs human approval or another reliable means of validation. Because agents produce thousands of changes where a team produced a handful you need a second axis, not a substitute. The trifecta says which agents need supervision, something else has to say which of their calls do. Reversibility is the obvious candidate, however it’s not a clean yes or no. A reindex is re-runnable, yet while the rebuild happens the wrong results are served. The undo exists but the damage happened anyway. A usable class needs a mechanism, a window and the residue.

So placement is the real issue. Reversibility appears in the roadmap (stage four, where revisions make a change reversible), but that’s verification, after the fact. A gate needs it before, at dispatch. And it can’t be a static label, because deleting a node with revision retention on is a different class of action than the same call with it off. It depends on runtime config and the arguments of the call, which is why it isn’t a permission, and why declaring it is harder than declaring types.

Which also means the catalogue can’t enforce it. A field the agent reads is documentation, not a gate, and under injection the agent is the last actor you’d ask whether it should proceed. The check has to fire where entity access already fires — in the layer that runs the operation, evaluated against the arguments actually passed.

So a question for anyone working on this. If reversibility class belongs anywhere, does it belong in the Tool API declaration alongside typed inputs and authorization or somewhere else entirely?

Sources and further reading, for anyone who wants to dig in or get involved:

-M. García

Scroll to Top

Dies bestimmt unseren Kurs als Unternehmen und inspiriert unsere Entscheidungen, um die folgenden grundlegenden Ziele zu erreichen:

  • Zur erfolgreichen Umsetzung innovativer und bedeutender Technologieprojekte beitragen.
  • Eine reibungslose Kommunikation mit unseren internen und externen Interessengruppen (Mitarbeiter, Lieferanten, Kunden und andere Partner) etablieren.
  • Ein unverzichtbarer und vertrauenswürdiger Partner für unsere Kunden bei der Auslagerung von Aktivitäten mit hohem Mehrwert sein.

Unsere Mission

It sets our course as a company and inspires our decisions to achieve the following fundamental goals:

  • Contribute to the successful execution of innovative and transcendent technological projects.

  • Establish fluid communication with our internal and external stakeholders (employees, suppliers, clients and other collaborators).

  • To be the indispensable and trusted partner of our clients for the outsourcing of their high added value activities.

Our mission