Repository navigation
Replies: 4 comments 1 reply
|
What scenarios are you envisioning here? Specifically, what kind of information can the guardian retrieve from these events that would influence the decision-making process? Could you walk us through an example? |
|
Happy to provide an example! We have multiple of this shape that we are actually working on, but a simple one would be:
A guardian policy could blanket enforce that any message sent to the outside world when CRM data is in context needs a PII check with a certain response prior to it. Currently in ACS (if my understanding is correct), step 2 would be an The way we have implemented it today is that step 3 is simply logged by the harness (whose logging we trust) as "just another step in the task with its own properties". The "guardian" simply checks whether the PII "gate" was added to the trace (again, with the desired properties) before deciding an In ACS today the guardian would potentially see step 3 as a tool call with some name, but it would not know that it was a check / gate, nor what its verdict was, so any policy enforcing such behavior would have to be written very specifically for specific tools. In addition, a permission prompt shown by the harness is not a tool call at all, so the guardian does not see it (but its approval can just be added to the trace as a passed gate, akin to the "approval" by an ML based PII check). I guess within ACS it would not be hard to facilitate both:
Does that make sense? Note this might relate to earlier #175 as well. And, obviously it relates to #232; adding a "gate" as one of the kinds of action discussed there would satisfy the above. |
|
I like this, and I think the PII example shows one thing the gate record needs to carry, or the policy becomes easy to satisfy by accident. If the gate only says So I'd suggest the gate names what it judged: something like a Two smaller things that fall out of this. It would help to record who produced the gate (a human, a service, or the agent itself), so a policy can say "a human approval from the agent doesn't count". And it may be worth saying whether a gate can be used once or many times. For sends and deletes, one gate per action seems like the safe default. For context, I hit this while building LedgerGuard (https://github.com/Val1-IT/Arvanta-Ledgerguard), a small pre-1.0 approval layer for agent writes to Postgres and ERPs. There, an approval is tied to a plan id and version, and an agent actor can't approve. It's experimental and much narrower than ACS, so I'm only offering it as one data point. I'd be interested to hear whether binding the gate to a digest seems too strict for the harnesses you're working with. |
|
Thanks @Val1-IT, I agree, and I do not think it is too strict. A check should judge the actual content of the call, in most cases right before the call is made. In the PII example that would mean the body of the email is checked after the last model call (when it was generated) and before the send, whatever the agent read earlier and from wherever. So to me it seems indeed reasonable for a gate to name the content it judged. However, the gate itself would not know which tool call will follow; the LLM decides that. Thus, in my view, when the "send email" call comes in, the Guardian can see whether a gate that judged that same content is on record prior to it, and allow the call on that basis. The Guardian then uses the gate to approve where it would otherwise return an What a gate record should carry besides the content it judged still needs working out. I would expect a name for the check, its properties (the result, and perhaps how reliable the check is), and who is accountable for it (which I guess is the main difference between human approvals and ML / rule based approvals). I do not have a schema to propose yet, because there are still some loose ends in my mind. However, if the general direction works for the maintainers, I am happy to help work it out into a well-scoped issue. Note: the Partnership on AI report on agent observability describes the same gap for human review (https://partnershiponai.org/resource/the-observability-gap-in-ai-agents/). |
Uh oh!
There was an error while loading. Please reload this page.
Hi all, here is an idea I would like your view on.
ACS handles approvals of specific actions with
ask. However many approvals happen without a Guardian asking: a coding agent shows a permission prompt, a LangGraph workflow stops at aninterrupt(), etc. As far as I can see there is no hook for these, so a Guardian cannot see approvals handled by the harness (or require one before an action).Would it make sense to add a hook the harness emits when it has run an approval or a check itself? Something like
steps/gate, with a kind (human_approvalorguardrail), a result (passorfail), and the step it belongs to.This would sit next to
ask, not replace it. What the harness reports is only its own claim, and the Guardian decides how much that is worth.It seems related to #175 and #115. Apologies if I have missed an existing thread on this.
Background on where this comes from is here.
All reactions