On this page
- The agent hit the deadline. It skipped legal on the way.
- Why do agent graphs and workflow graphs look the same?
- Side by side
- What goes wrong when the two are merged?
- Where the line goes
- Four ways to contain agentic behavior
- Evidence without exposing hidden reasoning
- Match agent authority to consequence
- Common anti-patterns
- Ten rules for agents inside governed workflows
- The result: autonomy that composes
- Frequently asked questions
- How Frozion keeps agents inside governed workflows
- Sources
An agent graph decides what the agent tries next: how it plans, which tools it picks, when it revises. A governed workflow decides what's allowed to happen and carries it through: identity, policy, required approvals, durable state and side effects. Let the agent choose the path inside limits the workflow sets, and never let it waive its own controls.
The agent hit the deadline. It skipped legal on the way.
A software company asks an AI application to prepare an urgent contract amendment before pricing expires at end of day. The agent can read the current agreement and the customer's redlines, and it can call a pricing service, the contract system and an e-signature service.
It plans well: compare redlines, classify changes, calculate commercial impact, decide which reviews are needed, draft the amendment, send for signature.
One redline changes a data-residency commitment and widens the customer's rights over subcontractors. The agent reads it as a clarification, not a material legal change. That's wrong, but plausible.
The bigger problem comes next. The same classification decides whether legal and privacy review apply. Since the change is "non-material," the agent drops both reviews from its plan, drafts the amendment, calls the contract API and sends it for signature.
Every step succeeds. The plan is coherent. The amendment matches its schema. The service account is allowed to call both APIs. The downstream systems do exactly what they're asked. The trace shows no errors.
Why do agent graphs and workflow graphs look the same?
Because both are boxes and arrows with branches, loops, tool calls and human steps. The difference isn't how they look; it's what each one is authoritative for.
Both can be drawn visually, stored as structured definitions and run across distributed services. Both can be dynamic. Both can include model calls. So the picture doesn't tell you which one you're looking at.
An agent framework's graph is about deliberation: how the agent reads a goal, breaks it down, picks or delegates tasks, gathers evidence, revises its plan and chooses its next action. OWASP describes agents in the same functional terms: they reason, plan, use tools, keep memory and act toward goals.
A governed workflow is about what may happen: which states exist, which transitions are allowed, which contracts apply at each boundary, whose authority is in play, which policies must hold, which writes may commit, which versions stay bound and what evidence must remain.
The split isn't static versus dynamic, visual versus coded, or deterministic versus probabilistic. It's deliberation versus authority. AI moved path selection from development time to runtime, which is exactly why the authority over what those paths may do has to stay fixed and inspectable.
Side by side
| Dimension | Agent framework graph | Governed workflow |
|---|---|---|
| Main question | What should I try next? | What may happen, and under whose authority? |
| Purpose | Planning, decomposition, delegation, adaptation | Authorized execution, state and accountability |
| Who's in control | Model-directed logic within a permitted scope | The published workflow and its runtime |
| Shape | Expands, loops and re-plans | Can be dynamic, but consequential steps stay inside declared rules |
| State | Working memory, hypotheses, plan | Durable, versioned business and execution state |
| Identity | Knows a user or role as context | Keeps who started it, who is acting, delegated scope and expiry |
| Policy | May read or ask about policy | Checks and enforces policy at each step |
| Tools | Picks tools and proposes arguments | Decides eligibility, authority, effect class, retry and evidence |
| People | May ask someone a question | Holds approval as durable state over a fixed proposal |
| Evidence | Plan, tool requests, intermediate results | Decision records, context sources, approvals, confirmations |
| Optimizes for | Finishing the task well | Correct, authorized, recoverable, explainable outcomes |
Neither column is better. They solve different problems. Things break when one is assumed to cover the other's obligations.
What goes wrong when the two are merged?
The agent ends up writing its own rules: it decides which controls apply, treats tool access as permission, keeps business state in memory and judges its own work before committing it.
OWASP's guidance on excessive agency names three root causes: too much functionality, too many permissions, too much autonomy. Merging the two graphs is how each one gets in.
The planner becomes the policy author. If the agent decides which checks apply, it can remove the checks meant to catch its uncertainty. Policy can use facts the model produced. Whether a control applies shouldn't rest on the same unverified reasoning it exists to check.
Tool access becomes permission. An agent picks from the tools it can see, but seeing isn't being allowed. A tool can be technically callable and still be off-limits for this user, tenant, record, purpose or jurisdiction. Zero-trust guidance is clear that trust isn't implicit and authorization is its own decision.
Working memory becomes the record. Agent memory is good for hypotheses, summaries and plans. It isn't the durable record of a contract, payment or approval. When memory owns business state, retries, long waits and version changes quietly change what the case means. (See agent memory vs application state.)
A generated route becomes the allowed route. A trace shows which steps the agent took. It doesn't prove those were steps the business had allowed.
Delegation inflates authority. A parent agent hands work to a child agent, which calls a service with an application credential, which calls an API. Without carrying who started it and what was delegated, each hop swaps user authority for broader service authority.
The same component judges and commits. Separation of duties exists so no single actor both proposes a high-impact action and certifies that no one else needs to look. That applies to agents too.
Where the line goes
The fix isn't less autonomy. It's putting autonomy where adaptability helps and keeping fixed responsibility where the business owes a durable obligation.
The agent decides:
- which hypothesis to check first and which permitted source to search;
- how to break down an open-ended analysis;
- which approved capability to delegate to;
- whether its answer is good enough, and which plan to propose or revise;
- when to ask for more context or a person's judgment.
The governed workflow decides:
- who is acting, for whom, in which tenant and for what purpose;
- which tools and data sources are eligible for this case;
- the contracts, mappings and business rules each step must meet;
- which policies and approvals apply, and enforcing them;
- durable state, waits, events, deadlines and expiry;
- effect classes, operation IDs, retries, reconciliation and reversals;
- published versions, migrations and evidence.

Four ways to contain agentic behavior
Pick by consequence, reversibility and uncertainty.
1. The agent advises. It gets a typed request and governed context, reasons freely and returns a structured recommendation. It can't write to anything. The workflow validates the output, applies policy and picks the next state. Good for interpretation, investigation, drafting and recommendations.
2. A bounded agentic sub-workflow. Some reasoning needs its own loops, searches and specialists. Run it inside a sub-workflow with declared inputs and outputs, an allowlist of tools and sources, identity and scope carried in, limits on iterations, time, cost and tokens, explicit stop, abstain and escalate outcomes, and no direct path to irreversible actions. Dynamic inside; a governed step from outside.
3. The agent requests; the runtime decides. When an agent may ask for actions, each request enters the runtime as a proposal. The runtime checks the resource, the person and agent, the delegated scope, purpose, policy, typed arguments, effect class and operation ID. The tool runs only after that. (See governing AI agent tool calls.)
4. The agent proposes a plan; the runtime validates it. The most flexible pattern lets the agent produce a plan from approved step types. The plan is data: steps and dependencies, tools and sources needed, assumptions, stop conditions, expected effects and evidence. The runtime checks structure, eligibility, authority, policy, budgets, loop limits and effect rules, then accepts, constrains, sends for review, asks for revision or rejects it.
A plan held as data can be inspected, compared, approved and versioned. Bad steps are rejected without being called. And the record can show three distinct things: what the agent proposed, what the runtime allowed and what actually happened.
Evidence without exposing hidden reasoning
Inspectability doesn't require recording every token the model considered. You need evidence at the control points: the goal and typed request given to the agent; the context and sources it was allowed; the tools it could see; the plan, tool requests and outputs it produced; policy decisions, validations and approvals; the accepted path, the calls actually made and the effects committed; and the model, prompt, workflow and policy versions used. That record is enough to explain and defend the outcome, at design time, at run time and after the run.
Match agent authority to consequence
| Use case | Reasonable agent authority | What the runtime enforces |
|---|---|---|
| Read-only research | Search, summarize, compare and revise within scoped sources | Permission-aware context, provenance, budgets, no writes |
| Drafting and recommending | Produce proposals, alternatives and rationale | Typed output, policy checks, clear "proposed" status, acceptance by a rule or person |
| Reversible operational update | Request approved actions within narrow limits | Authority checks, operation IDs, bounded values, reconciliation, evidence |
| Financial, contractual, identity or regulated change | Analyze and prepare the exact proposal; request review | Independent policy, separation of duties, approval of the exact proposal, controlled commit |
| Unknown or out-of-scope situation | Abstain, gather more, or escalate | Fail closed, no privilege expansion, a clear review path |
Common anti-patterns
| Anti-pattern | Why it fails | What to do instead |
|---|---|---|
| Agent decides which reviews apply | It can waive the checks on its own mistakes | Make required reviews a workflow rule |
| Tool visible means tool allowed | Callable isn't authorized | Authorize every call for this person, record and purpose |
| Business state kept in agent memory | Retries and waits change what the case means | Keep durable state in the workflow |
| Agent executes its own plan directly | No chance to reject bad steps | Treat the plan as data and validate it first |
| Shared service account for every hop | Authority grows with each delegation | Carry who started it and what was delegated |
| Trace used as proof of compliance | It shows what ran, not what was allowed | Define allowed paths before the run |
| Same autonomy for every use case | Drafts and payments carry different risk | Match agent authority to consequence |
Ten rules for agents inside governed workflows
- Let the agent decide what to try; let the workflow decide what's allowed.
- Never let an agent decide whether its own output needs review.
- Treat tool visibility and permission as separate questions.
- Route every agent action through the runtime as a request.
- Treat plans as data to validate, not instructions to execute.
- Keep business state out of agent memory.
- Carry who started the work, and what was delegated, across every hop.
- Bound agentic sub-workflows with budgets, allowlists and stop conditions.
- Match agent authority to the consequence of the action.
- Record what the agent proposed, what was allowed and what happened.
The result: autonomy that composes
Agents widen the range of work software can navigate without every step being planned in advance. That's a real capability, and it isn't the same as authority to redefine the business process while it runs. An agent graph decides how to investigate, plan, delegate and adapt. A governed workflow decides what's permitted, which state lasts, whose authority applies, which controls are mandatory, what may commit and what evidence survives.
Keeping the two apart doesn't make the system less agentic. It makes autonomy composable: agents can change, specialize and improve inside a runtime whose obligations stay stable, inspectable and yours.
Frequently asked questions
What is the difference between an agent graph and a workflow graph?
They can look identical on screen. The agent graph is authoritative for deliberation: planning, decomposition and tool choice. The governed workflow is authoritative for what may happen: who is acting, which policy applies, what needs approval, what state persists and what may change in other systems.
Can an agent decide whether its own output needs review?
It shouldn't. If the same component classifies a change and decides whether that classification needs checking, it can remove the control meant to catch its own mistakes. Which reviews apply is a workflow rule, even when it uses facts the agent produced.
Does putting agents inside a governed workflow make them less autonomous?
Autonomy stays where it adds value: investigating, planning, drafting and choosing among permitted options. The workflow keeps authority over identity, policy, approvals and writes, which makes it safer to give agents more room over time.
How does this work for agents we already run?
Leave the agent framework in place and route its tool calls through a governed runtime over MCP or HTTPS. Each call arrives as a request, and the runtime checks identity, scope and policy, pauses for approval when rules require it, then carries the write through to a confirmed result.
How Frozion keeps agents inside governed workflows
Existing agents connect to Frozion over MCP or HTTPS, and every agent has its own identity. With Agent Delegation, an agent takes on the role of the person it acts for and never exceeds that person's authority. Policy is enforced before and after every step, and authority narrows at each hop. The HITL Inbox brings only rule-selected decisions to a person, bound to the exact revision reviewed. With Visual Orchestration, a workflow can itself be a native agent, and any MCP server can be a workflow step. A kill switch stops an agent; revoke removes its permission to specific resources.
Sources
- OWASP LLM06:2025 Excessive AgencyExcessive functionality, permissions and autonomy as root causes.
- OWASP Top 10 for Agentic Applications (2026)Agent-specific risks, including tool misuse and privilege abuse.
- OWASP AI Agent Security Cheat SheetAgents as systems that reason, plan, use tools and act.
- NIST SP 800-207, Zero Trust ArchitectureNo implicit trust; authorization decided before access.
- RFC 8693, OAuth 2.0 Token ExchangeDistinguishes delegation from impersonation; subject and actor.
- NIST SP 800-53 Rev. 5AC-5 separation of duties and AC-6 least privilege.
- NIST AI Risk Management FrameworkContext-specific risk tolerance and documented human oversight.
- W3C PROV-ONeutral model linking entities, activities and agents.
More in Platform architecture
Why a governed runtime 4
Building AI applications 4
Semantic integration 1
Other topics



