I explain a simple two pass pattern that keeps risky actions under human control. You can use it for voice agents, chatbots, and internal tools without sending data off network.
I use two pass verification to keep automation safe. The system proposes an action, then waits for a one time code and a human approval before it runs. This pattern works for voice, chat, and internal tools, and it keeps your data on your network. You can add it to high risk moves like refunds, exports, payouts, and account changes with a clear plan.
Plan the flow
- List actions that always need human approval, such as issuing credits, changing inventory, editing user roles, or exporting files.
- Choose channels you control for codes and approvals, such as company email, an internal chat space, or an in portal approval screen.
- Define who can request and who can approve. Separate requester and approver when possible and document backups.
- Decide what context to show approvers, like requestor, action, target, limits, and a short summary.
Generate and deliver the code
- Use a cryptographically secure random generator to create a short code. A one time code is a secret that works only once and then expires.
- Hash the code with a one way function such as SHA 256 and store only the hash with requestor, action details, and a brief expiration time.
- Send the code on a controlled channel along with the action summary and a unique request ID. Keep the full data on your network.
Approve and execute
- Require the approver to read the summary and enter the code or reply Approve plus the code. Verify the code, request ID, and that details match and are not expired.
- Rate limit attempts, then freeze the request if guesses continue. Log requester, approver, timestamps, action parameters, and outcome.
- Execute only the approved step. Use allow lists and fixed runbooks so the agent cannot add extra commands.
Voice and chat patterns
- For phone, an AI receptionist can confirm the action, collect the code from the approver, and repeat the summary before running it.
- For chat, post the pending request in an internal channel and wait for Approve plus code from a known approver account.
What to check
- Wrong code, expired code, reused code, or mismatched details all fail safely and leave a clear audit trail.
- No code or action data leaves controlled channels. Logs are complete and stored on your network.
- Approver separation holds, attempts are limited, and you can review and replay the audit path in tests.
If you want help, I design and implement this pattern using Voice and Chat Full Conversational AI Agent, Voice and Chat AI Phone, AI and Automation AI Agents and Personas, and AI and Automation Business Automation, including AI phone and chat agents that fit your environment.
Get the next one in your inbox
Pick your topics and how often, from weekly to quarterly. I send a confirmation email first, and you can change or stop it any time.
Get more like this by emailMore in Voice, Chat & Business Intelligence
Full agent for internal teams
I show how one voice and chat agent can capture requests, route work, and log leads for your team.
Bank deposit reconciliation win
I show how I automated bank deposit reconciliation on the client network with a simple chat agent and clear matching rules.
Use AppWT Analytics with BI agents
I show how to turn AppWT Analytics event signals into useful weekly inputs for your BI agent.
Sales data voice assistant at a retailer
I show how I built a secure voice and chat assistant that answers sales questions from on-prem data, plus steps you can try this week.









