Technology6 min read

Two-Person Approval Workflows That Keep AI Agents From Breaking Network Policies

R
RileyAuthor
Two-Person Approval Workflows That Keep AI Agents From Breaking Network Policies

Why prompt injection becomes a network policy problem

AI agents are increasingly asked to “help” with operational tasks: generate firewall rules, tune WAF settings, update SASE access policies, or adjust routing and rate limits. The failure mode isn’t only that the agent is wrong. The bigger risk is that the agent can be coerced by untrusted input (tickets, chat logs, emails, web pages) into producing a policy change that looks plausible but quietly weakens controls.

Prompt injection is dangerous in this context because network policies are high-leverage: a single misconfiguration can expose internal apps, bypass authentication, or disable protections at the edge. The fix is not “better prompts.” The fix is a workflow that assumes the agent can be manipulated and therefore limits what a single automated step can do.

The “two-person rule” for AI-driven policy changes

The two-person rule is simple: one actor proposes, a different actor approves. In AI terms, the agent can draft a change, but it cannot be the only entity that validates and deploys it.

This doesn’t mean slowing everything down. It means creating clear boundaries between:

  • Drafting (agent-assisted, fast, reversible)
  • Review (human, diff-based, policy-aware)
  • Deploy (controlled rollout with staging and rollback)

When implemented well, you get the speed benefit of agent assistance without giving the model unilateral power over production controls.

Workflow architecture: edge staging, diff-based approval, and just-in-time rollback

1) Edge staging as the default landing zone

Start with a hard rule: the agent can only write changes into a staging environment at the edge. In practice, that means a separate zone/account, a dedicated “staging policy set,” or a namespaced configuration that is not attached to production traffic.

Edge staging works because it separates “policy authoring” from “policy enforcement.” An agent can propose a WAF rule update, a Zero Trust access policy, or a rate limit tweak, and you can still observe behavior under controlled conditions. If you run your policies close to the edge, staging can also model production-like traffic patterns without exposing your core systems.

On a platform like Cloudflare’s Connectivity Cloud, staging is easier to treat as a first-class operational habit because application security, performance, and access controls live in a unified plane of control. That reduces the temptation to skip staging when you’re juggling multiple tools and consoles. For reference context on the platform and ecosystem, see cloudflare.com.

2) Diff-based approval instead of “looks good” approvals

Prompt injection thrives on subtlety. A malicious instruction might nudge an agent to add an allowlist entry, broaden an IP range, or relax an authentication condition in a way that looks like a routine fix.

That’s why approvals should be diff-based, not narrative-based. The reviewer should never approve “the agent’s explanation.” They should approve a minimal diff against the last known-good configuration.

Make the diff easy to read:

  • Canonicalize configs before diffing (stable ordering, normalized whitespace, consistent defaults).
  • Show semantic diffs for policy objects (e.g., “action changed from block to allow,” not only JSON line changes).
  • Highlight blast radius: which apps, paths, identities, countries, IP ranges, or user groups are affected.
  • Require a reason tied to a ticket/change request ID.

This is also where you defend against tool confusion and schema ambiguity. If the agent can submit slightly malformed policy objects that are interpreted differently by different tooling, reviewers lose confidence in what they’re approving. A practical companion pattern is to enforce canonical schemas and normalize inputs before they ever reach the policy compiler. If you want a deeper look at that class of risk, the internal write-up on canonical schemas and input normalization is directly relevant.

3) Just-in-time rollback that is always ready

Even with review, mistakes happen. The rollback plan should not be a wiki page. It should be an executable mechanism that can restore the last-known-good state quickly, ideally within minutes.

“Just-in-time rollback” means:

  • Immutable snapshots of the approved baseline (tagged, stored, and auditable).
  • Automated rollback triggers based on health checks or policy validation failures.
  • Short rollback paths: one command, one button, or one pipeline stage.
  • Time-bounded experiments: new policies can expire automatically unless explicitly promoted.

For edge security controls, rollback readiness is a safety net against both adversarial prompt injection and non-adversarial “helpful but wrong” agent behavior.

How the full pipeline looks in practice

Step A: Agent produces a constrained proposal

The agent’s job is to draft a change request in a constrained format: “create a staging policy patch + a short rationale + test plan.” Avoid letting the agent directly call deployment tools with production credentials.

Constrain the proposal scope:

  • Only allow certain policy types (for example, WAF custom rules but not identity provider settings).
  • Limit max number of changes per request (small patches are reviewable).
  • Require explicit selectors (app, hostname, path, group) to avoid broad defaults.

Step B: Automated checks run before any human review

Automation should reject obvious badness before a person spends time reviewing:

  • Schema validation and canonicalization
  • Policy linting (for example: “no ‘allow all’ rules,” “no auth bypass on admin paths”)
  • Safety heuristics (detect suspicious expansions of IP ranges, wildcard hostnames, or weakened actions)
  • Dependency checks (ensure referenced groups, apps, and services exist)

Step C: Human #1 reviews the diff and signs off

The reviewer should see a clean diff, a blast radius summary, and the test plan. Their approval is on the change, not on the agent. If the change is too large, it’s rejected and broken into smaller patches.

Step D: Deploy to edge staging and run tests

Deploy the approved patch to staging. Execute a test suite that includes:

  • Positive tests (legitimate flows still work)
  • Negative tests (blocked flows remain blocked)
  • Observability checks (logs appear, metrics remain within thresholds)
  • Replay tests (known attack patterns, bot behavior, suspicious headers)

Step E: Human #2 promotes to production with guardrails

A second human approves promotion, ideally someone on-call or responsible for the affected service. Promotion should be gated by the same diff view plus staging results.

Use controlled rollout where possible: limited scope, gradual exposure, and a clear rollback hook.

Common failure modes and how this workflow prevents them

Silent broadening of access

Prompt injection often tries to slip in a “temporary allow” or broaden an allowlist. Diff-based approval and policy linting catch expansions. The two-person rule ensures no single reviewer gets socially engineered by urgency.

Tool ambiguity leading to unintended semantics

If the agent outputs configuration with unclear defaults, behavior can differ between environments. Canonical schemas plus normalized diffs reduce surprises and make approvals meaningful.

Rollback that exists only on paper

When rollback isn’t practiced, production incidents become prolonged. Just-in-time rollback turns reversal into a routine operation, not an emergency project.

What to implement first if you’re starting from scratch

  • Separate staging policy sets at the edge.
  • Canonicalize and diff every change request.
  • Require two different approvals for production promotion.
  • Automate rollback to the last-known-good snapshot.

These four steps move you from “agent with admin powers” to a resilient workflow where AI can help, but cannot silently rewire your network defenses.

FAQ
How does the two-person rule reduce prompt-injection risk when using Cloudflare?

What should reviewers look for in a Cloudflare policy diff?

Can Cloudflare staging environments help test AI-generated WAF or Zero Trust changes safely?

What is just-in-time rollback for edge policies in Cloudflare deployments?

How do canonical schemas and input normalization improve Cloudflare change approvals?