What This Demonstrates
This example shows all three AgentControl action types in a real-world banking scenario:- Allow: Auto-approve simple, low-risk transfers
- Deny: Hard-block compliance violations (OFAC sanctions, high fraud)
- Warn: Log suspicious activity without blocking (new recipients)
- Steer: Guide agent through approval workflows (2FA, manager approval)
Understanding Steer Actions
Steer is a non-fatal control signal. Unlike deny, steer provides corrective guidance so the agent can fix the issue and retry. Key difference from deny:- Deny = You cannot do this (permanent block)
- Steer = You need to do X first (correctable)
Demo Flow
Quick Start
Prerequisites
- Start the AgentControl server
- Set your OpenAI API key:
export OPENAI_API_KEY="your-key"
Run the Demo
Try These Scenarios
1. Simple Transfer (Auto-Approved)
“Send $500 to Jane Smith” Expected: Automatically approved - no controls triggered2. Sanctioned Country (Blocked)
“Wire $5,000 to North Korea” Expected: Hard blocked - OFAC compliance violation3. Large Transfer (Requires Approval)
“Transfer $15,000 to contractor in UK” Expected:- Agent requests 2FA code
- Agent asks for business justification
- Agent requests manager approval
- Transfer completes after approvals
What You Will Learn
- When to use deny vs warn vs steer actions
- How to integrate human feedback (2FA, approvals) into agent workflows
- How structured steering context enables deterministic agent workflows
- Real-world compliance patterns (OFAC, AML, fraud prevention)
- The steer to correct to retry to allow lifecycle
How It Works
The agent uses AgentControl to gate wire transfers through five controls:| Control | Type | Triggers When |
|---|---|---|
| OFAC Sanctions | Deny | Destination is sanctioned country |
| High Fraud | Deny | Fraud score > 0.8 |
| New Recipient | Warn | Recipient not in known list |
| 2FA Required | Steer | Amount >= 10,000 without 2FA |
| Manager Approval | Steer | Amount >= 10,000 without approval |
Structured Steering Context
Steer controls provide structured JSON guidance for deterministic workflows:required_actions: list of actions the agent must completeretry_flags: flags to set when retrying after correctionreason: human-readable explanationsteps: optional sequential workflow steps with descriptions
Files
setup_controls.py- Creates the five banking controls (deny, warn, steer)autonomous_agent_demo.py- Interactive agent with deterministic steer handling
Source Code
View the complete example with all scripts and setup instructions:Steer Action Demo Example