Skip to content

Govern AI Agent Actions with VB-OS

Autonomous agents, whether AI-driven, rule-based, or hybrid, take actions with real-world consequences. VB-OS provides deterministic authorization boundaries around those actions.

Probabilistic guardrails evaluate or filter agent outputs using model-dependent or probabilistic mechanisms. They can reduce undesirable outcomes, but their decisions do not provide deterministic replay guarantees.

VB-OS takes a different approach: separate the agent’s capability to act from the authority to act. The agent produces a recommendation. VB-OS independently determines whether that recommendation is authorized to execute — and that determination is deterministic, replayable, and model-independent.

┌──────────────┐ ┌──────────────┐ ┌──────────┐
│ Agent │────▶│ VB-OS │────▶│ Action │
│ (recommends │ │ (authorizes │ │ (executes│
│ action) │ │ or defers) │ │ if │
└──────────────┘ └──────────────┘ │ ASSERT) │
└──────────┘
  1. The agent produces a recommendation (e.g., “execute trade”, “send notification”, “deploy update”)
  2. Your application submits the recommendation context as evidence to VB-OS
  3. VB-OS evaluates the evidence against the authorization boundary
  4. If ASSERT: the action proceeds
  5. If DEFER: the action is blocked, logged, and optionally escalated
boundary_id: agent-action-gate
version: 1
scope: production
require_evidence: agent_id
require_evidence: action_type
require_evidence: risk_level
require_evidence: authorization_tier
require_type: risk_level: integer
require_type: authorization_tier: integer
prohibit_evidence: raw_model_output
predicate: authorized_tier: authorization_tier >= 2
predicate: risk_within_bounds: risk_level <= 50
from vbos import VBOSClient
client = VBOSClient(api_key="YOUR_API_KEY")
def execute_agent_action(agent_id, action, risk_level, auth_tier):
result = client.verify(
workload={
"agent_id": agent_id,
"action_type": action,
"risk_level": risk_level,
"authorization_tier": auth_tier,
},
project="agent-platform",
boundary_ref="agent-action-gate",
)
if result.decision == "ASSERT":
perform_action(action)
return {"status": "executed", "evaluation_id": result.evaluation_id}
else:
escalate_to_human(action, result.failure_reasons)
return {"status": "deferred", "reasons": result.failure_reasons}
  • Deterministic: the same agent context always produces the same authorization decision
  • Replayable: every authorization decision can be reproduced for audit
  • Model-independent: swap the agent model; the authorization boundary is unchanged
  • Binary: ASSERT or DEFER, no confidence scores or partial approvals
  • Fail-closed: missing context produces DEFER, not a best guess