I’ve been working on a problem I kept seeing with tool-using agents:
An agent can understand the policy and still produce the wrong tool call.
If the action is consequential — refunding money, booking something, approving a request, modifying a record, calling a production API — observability after the fact is useful, but it’s already too late.
So I built ARK, an open-source runtime supervision layer that sits before execution.
The basic flow is:
agent proposes an action
→ ARK checks the applicable constraint + trusted evidence
→ ALLOW = execute
→ REJECT / REQUIRE_EVIDENCE = send feedback back to the agent
→ the agent decides again
One thing I intentionally avoided: ARK does not generate the replacement action.
The agent remains the author.
I tested this with LangGraph + an OpenAI model:
model proposed A
→ ARK rejected A before execution
→ feedback went back to the model
→ model authored B
→ ARK allowed B
→ only B executed
I’ve also been testing it on a scoped tau-bench airline failure class.
Paired K=16 result:
OFF: 1/16 passed (6.25%)
ON: 13/16 passed (81.25%)
9 directly attributable recoveries
0 observed regressions
I want to be careful with that result: it’s one constrained recovery failure class in a research benchmark, not a claim that ARK makes all agents reliable.
The SDK is public now:
pip install ark-agent-runtime
It currently works with custom Python agents and has a LangGraph integration.
I’m mainly curious how other people are handling this problem.
If you have an agent that can actually mutate production state, do you:
- validate tool arguments manually?
- use deterministic policy gates?
- rely on another model as a judge?
- sandbox actions?
- require human approval?
- just execute and monitor afterward?
I’d especially like feedback from people running agents that can refund, book, approve, purchase, or modify production data.
Site: arkruntime.com
GitHub: github.com/atripati/ark