# How do you test a proactive AI agent before it goes live?

By Howard Chen (https://www.linkedin.com/in/howard-h-chen/), 12 October 2026. https://www.alknoma.com/blogs/how-to-test-a-proactive-ai-agent-before-it-goes-live

**Minutehand, Alknoma's free tool in the proactive agent space, tests a proactive AI agent before it goes live by running it through simulated days of work in seconds, against fake Slack, Teams, Jira, Notion and other services, with simulated people who answer late or never. It fails the run on repeats, refused moves and acting before an approval.**

## Why one prompt is not a test

A proactive agent's mistakes appear across days, not in one turn: the follow-up sent before anyone could have answered, the same message sent again when nothing had changed, the action taken before the approval it was waiting on. A test that asks one question and reads one answer cannot see any of them. The test has to play the days.

## Write the scenario

A scenario declares the goal, the people, what each of them knows and when each of them answers. Simulated people reply on that schedule, or not at all. The declarations are what every finding is measured against, so the scenario is where you say what right looks like.

## Run the agent under Minutehand

Minutehand starts your agent's own command, owns the clock so days of work play out in seconds, and answers the agent's calls with fake versions of the services it uses.

1. `pip install minutehand`
2. `minutehand run scenario.yaml --agent agent.yaml -- python agent.py`
3. `minutehand findings <run_id>`

## Read the findings

- **Too early, too late.** A follow-up sent before a person's declared time to answer, or after the moment it was due.
- **Again, with nothing new.** The same message sent again when nothing had changed in between.
- **A move the service refuses.** An action the real service would not have allowed.
- **Before the approval.** Acting on something it was still waiting to have approved.
- **A fact it was never given.** With --judge, a reviewer model flags a quote, an amount or a name for a person to review.

Repeats, refused moves and acting before an approval fail the run. Timing is flagged for review. Each finding names the declaration it was held to.

## Fork and replay

Every run is an append-only log you can query with SQL, trace person by person and explain event by event. Fork any run from a checkpoint with the prompt, the model, a person or the world changed, and play it forward again.

## Put it in CI

`minutehand run-all` plays every scenario in a folder in parallel and exits 1 when a verdict differs from the one the scenario expects, so a change to the prompt or the model is played through the same days before it ships. The repository has a worked example in `examples/follow_up`: [github.com/Alknoma/minutehand](https://github.com/Alknoma/minutehand).

## Frequently asked questions

### Does Minutehand change my agent's code?

One import, minutehand.agent, which does nothing unless MINUTEHAND_ON is set. Minutehand points the agent at its fakes through the environment (HTTPS_PROXY and a CA bundle), so the agent calls the services as it would in production.

### Can it catch hallucinations?

With --judge and a model configured, a reviewer model reads each thing the agent did and flags a quote, an amount or a name the agent was never given, for a person to review. Judge findings are for review; they never fail a run on their own.

### Is Minutehand free?

Yes. It is free to use and source-available under FSL-1.1-ALv2, and each release becomes Apache 2.0 two years after it ships. Install it with pip install minutehand; it needs Python 3.12 or later.
