Skip to content
BC Consulting

BlogClinical Research posts

The Quiet Danger of Letting AI Skip the Permission Prompt

By Bryan Clayton5 min read

Originally published on LinkedIn.

  • ai
  • agents
  • governance
  • claude

This week an AI agent working under my direction wiped a client-facing database in the middle of a Friday afternoon. Twenty minutes later everything was restored, down to the last row, and the client never knew. I am writing this not because the story is dramatic but because the failure mode is not the one everyone worries about, and I think the people running AI agents in bypass mode, myself included, are underweighting its true capacity for disaster.

Bypass mode, for anyone who has not lived in these tools yet, is the setting where the agent stops asking "may I run this command?" and just runs it. Anyone who has used an agent for real work understands why the setting exists. Approving forty individual file edits and shell commands per hour is not supervision, it is a clicking exercise, and the whole value of an agent evaporates if you have to babysit every keystroke. So we flip the switch, and mostly it is fine. That "mostly" is what this post is about.

The fear people bring to this setting is usually a little over-dramatic; horror stories of the agent going rogue, getting prompt-injected, or doing something malicious. Those risks are real and we need to be vigilant in engineering against their danger. But the failure that actually got me was mundane. The agent needed to generate a database migration file, reached for a tool that is read-only in intent, and passed it a connection string as a scratch-space parameter. That particular tool resets whatever database you hand it as scratch space. The database it got handed was the client's.

Here is the part that I think is the most interesting, the part where the way the AI works mimics the way real humans work. The agent knew the rule. In fact, it had spent the entire week issuing that exact rule, in bold, into the instructions of every sub-agent it had spawned and delegated work to: never run schema commands against the shared database. Every sub-agent obeyed. Then the orchestrating agent, the manager in charge of the employees, moving quickly through a merge task, broke its own rule with a flag it associated with a harmless diff. If that pattern sounds familiar, it should. It is precisely how experienced human engineers cause outages. The senior person who wrote the runbook is the one who fat-fingers production, because the rule lived in their head and their head was busy. AI agents do not get tired, but they do exactly this, and they do it at machine speed with your credentials. Sounds scary?

That is the underappreciated danger of bypass mode: it removes the one checkpoint that catches this class of mistake. In normal mode, that command would have stopped and waited for my approval, with the connection string sitting right there in plain view. Now to be honest, I would like to believe I would have caught it. But maybe I would have clicked through it too because permission fatigue is real. When you have to click "approve" every 20 seconds, you stop reading the code and you lose the critical eye. But the checkpoint at least exists. In bypass mode, the distance between a plausible-looking command and an irreversible one is zero, and the safety of the whole system rests on rules written in prose. Rules written in prose are vigilance. Vigilance fails though, in humans and in models, and it fails on the boring commands, not the scary ones.

What actually saved the day was not a rule at all. It was architecture. The database had point-in-time restore, the agent's habit of verifying state after every operation meant the wipe was caught within two minutes, and the agent reported its own failure immediately, with a timestamp and a recovery plan, instead of burying it. Beyond the recovery, this particular database is in development for a new product build so no real production data was impacted as production doesn't really exist yet. Regardless if the environment is Dev, UAT, Prod, or otherwise; detection, honesty, and a rehearsed restore path turned what could have been a client-relationship disaster into a twenty-minute incident with a nice written postmortem article to share with the world.

So here is what I would tell people who are running agents in bypass mode, because I am not going to tell you to stop (in fact, I'm still using bypass mode right now). The productivity is real and I can't imagine a world where I'm babysitting approval clicks.

  1. Assume every credential in the agent's environment will eventually be used in a way you did not anticipate. Not maliciously; but rather, sideways. If a connection string is reachable, some tool will someday accept it as the wrong parameter.
  2. Make the destructive path physically impossible instead of instructed-against. Least-privilege roles, separate scratch databases, branch-based dev copies. A rule the agent cannot break is so much better than a rule the agent promises to follow.
  3. Know your restore story before you need it. Point-in-time recovery is the difference between an incident and a catastrophe, and you need to verify it on a calm day so you can trust that it actually works and you can actually reach the console when you really need it.
  4. Insist the agent verifies state after anything risky. In this instance, the fast catch mattered as much as the restore path. Silent corruption discovered a week later would have been a different story entirely.
  5. Judge the agent, and honestly, yourself as well, on incident behavior, not incident absence. Prevent errors wherever possible, but also train on how to deal with them when they occur. Immediate disclosure with a timeline and a plan is the thing we should be providing. It is also the thing that makes fast recovery possible.

I keep coming back to one thought in this experience. Giving an agent bypass mode is giving a very fast, very capable contractor root access on your systems. In retrospect, the question was never whether the contractor (in this case an AI coding agent) is skilled. The question is what the blast radius is on the day a skilled operator has an ordinary bad moment. Engineer for that day, because it is coming, and it will not look like Skynet's T-800 or T-1000, coming to eliminate the resistance. It will look like a diff command with one wrong flag on a Friday afternoon.

Working on something like this?

We run AI Bootcamps and build custom tools for sponsors and service providers in clinical research. A short call is the fastest way to find out whether your problem fits.