An automation stack is easier to choose when the process owner can describe one job precisely. Write down its real trigger, permitted input, required output, destination and reviewer first. Then compare how a fixed n8n workflow, an owner-code-directed Claude Code process and a model-directed OpenAI Agents SDK run would handle that same job. This guide is based on current product documentation, checked 26 October 2026. BIG CHANGE has not built or timed the three implementations.

The big change

  • What changed: These tools give a process owner three documented ways to divide control between a fixed workflow, application code and an agent's tool choices. The outer business approval remains the owner's decision in every route.
  • Why it matters: The division changes which credentials a run can use, where a person can stop a write, and what evidence is available after a failure. A product's advertised agent capability does not establish those controls for a particular account.
  • What to watch: The consequential choice is the first mandatory requirement that a route cannot meet or cannot yet document. Until that row is resolved, a score or a promising demo cannot turn it into a fit.

1. Write the contract for the actual job

Name the process owner and technical implementer. Record the current manual route, source and destination systems, trigger, allowed input fields and data class, expected output schema or artifact, deadline and expected volume. Specify allowed reads and writes, who approves the final side effect, how a duplicate is prevented, where a failed run is found, and the owner's spending ceiling. Mark every condition mandatory or preferred. If the owner cannot supply the job or its mandatory conditions, stop at REQUIREMENTS PENDING. Do not put secrets or personal records in a public comparison record.

Choose one approved, real case that can later serve as a common check. Record its source revision and observable acceptance conditions, plus a missing or denied input and an interrupted-run check. Define the number of attempts and spending limit before any trial. No trial has been run for this article.

2. Trace each route from trigger to final write

For each candidate, draw: trigger → intake → rule or model → integration or tool → draft output → person → final side effect. Add the runner, credential holder, persistent state and failure record to each arrow. The product distinctions below come from official manuals; your selected version, tier, host, integration and permissions still need checking.

Fixed outer workflow: n8n

In n8n, the connected-node graph fixes the outer workflow and a published workflow runs from its configured trigger. An AI Agent node can choose among the tools connected inside that graph. Decide whether the job uses n8n Cloud or self-hosting, then identify every source, model and destination credential at its node. Check the exact permission scope; having a node available does not establish access to the owner's systems. n8n credentials document authentication by node.

For a sensitive AI Agent tool, n8n's Human review attaches to that tool from the agent's Tools panel and uses a configured approval channel. Its request shows the tool and parameters; approval executes that tool and denial cancels it. A write elsewhere in the fixed outer graph needs its own explicit pre-write gate. Identify and check that particular gate rather than treating agent-tool review as coverage for every node. Save the execution ID and inspect failed executions and the error workflow before a replay.

Owner-code-directed process: Claude Code

An owner process can invoke claude -p or embed the Claude Agent SDK. The owner code supplies the business trigger, intake, output checks and final release gate; Claude's tool loop can still make choices inside those boundaries. The SDK quickstart documents a Claude Console API key or supported cloud-provider credentials for the host. The hosting guide separates caller authentication, model credentials and outbound tool credentials. Map all three for this job. An interactive Claude Code login is a separate access question; do not assume a subscription covers a third-party SDK host.

Set tool permissions for the approved reads and draft operations. In the permission order, allowedTools pre-approves matching calls; it does not hide unlisted tools. A call approved earlier may bypass canUseTool, so that callback alone is not an every-action approval gate. Put the final business write behind owner code that checks the draft and reviewer decision. Save the session or process result, failed exit and target-system state so an interrupted call can be distinguished from a completed effect.

Model-directed process: OpenAI Agents SDK

Owner code supplies the trigger and host, then invokes the Python SDK's Runner.run. The runner loop handles model-selected registered tools and possible handoffs. Register only the tools that the job requires. The SDK configuration covers the model API key or provider client; that credential does not authenticate the business caller or grant downstream system permissions. Implement those boundaries in owner code.

The SDK's human approval flow can interrupt a sensitive tool call and resume from RunState. The host must persist the state and bind the decision to the correct person and action. Its tracing and runner errors help inspection, but an SDK call alone does not establish restart-safe business execution. Specify the run record and destination-state check before permitting retries.

3. Apply gates before preferences

Copy the same mandatory rows into three columns: fixed versus dynamic step order; permitted data location; source and destination identity; least-privilege reads and writes; reviewer before the exact effect; visible failure record; safe restart; and the spending ceiling. For each cell, record the selected product version and tier, the applicable official clause, and one of SUPPORTED BY DOCS, UNKNOWN or UNSUPPORTED. A capability documented for another plan or for an agent tool instead of an outer workflow does not fill the cell.

Mark a route NO FIT when a mandatory condition is contradicted. Mark it HOLD when a mandatory condition, entitlement or implementation path is unknown. Use DOCUMENTED FIT FOR A BOUNDED TRIAL only when every mandatory row has applicable evidence and a permitted way to check it. Compare preferences among those remaining routes. If the owner wants an n8n wrapper around an SDK agent, treat it as a fourth architecture and map its credentials, state, failure path and costs afresh.

4. Price and check only the viable routes

The whole cost includes platform or hosting charges, model usage, integration services, storage, review time and incident recovery. For n8n, check the selected plan and which published executions count. A supported Cloud node may use prepaid Gateway credits; a node using the owner's OpenAI credential has a separate provider bill. For Claude's API-key route, check the model rates and account bill; the SDK's cost fields are estimates. The OpenAI SDK usage record counts calls and tokens; apply the selected API model and tool rates. None of these pages supplies a per-job bill for your workflow, and this guide makes no cheaper, faster or more reliable claim.

Only after the process owner authorizes a bounded trial, run the same approved case and output checks for each still-viable route. Record version and tier, configuration, run or execution ID, tool and model calls, output, reviewer corrections, elapsed time, actual usage and operating effort. Check a missing input, denied action and interruption without duplicating an external effect. VALIDATED FIT applies only to the tested job and configuration. A documentation review by itself never earns that label.

Copy this decision record

Text
Decision date / process owner / implementer:
Actual job: trigger ___ | current manual route ___ | source ___ | destination ___
Permitted input and data class ___ | output and acceptance check ___
Deadline/volume ___ | allowed reads ___ | allowed writes ___
Reviewer and exact pre-effect gate ___ | duplicate/replay rule ___
Approved case and source revision ___ | missing/denied/interruption checks ___
Attempt limit and spending ceiling ___

For EACH route: n8n fixed graph | Claude Code owner code | OpenAI SDK model direction
Version/tier/host ___ | current official clause URL ___
Trigger/runner ___ | step selector ___ | integration identity and scope ___
Model credential ___ | caller authentication ___ | tool approval ___
Final write/reviewer ___ | saved state/trace ___ | recovery and replay check ___
Platform + model + host + integration + storage + review cost basis ___
Each mandatory row: SUPPORTED BY DOCS / UNKNOWN / UNSUPPORTED, with evidence ___
Disposition: REQUIREMENTS PENDING / NO FIT / HOLD / DOCUMENTED FIT FOR A BOUNDED TRIAL
If later tested: run ID, observed results, side effects, usage, effort, limits ___

When a document is unavailable or account behavior conflicts with it, keep the exact URL, version and failed check and mark the cell UNKNOWN. If a run has an ambiguous result, inspect its saved execution, session or trace and the destination before replay. With no reliable confirmation, hold the route. Revisit the decision when the model, plan, permissions, data location, workload or integration changes.

For a general single-product evaluation worksheet, see BIG CHANGE's earlier three-axis agent product guide. This comparison adds the distinct execution and authority paths of three named implementations.