# Choose an automation stack for one owned business job
> Compare a fixed n8n workflow, an owner-code-directed Claude Code process and a model-directed OpenAI Agents SDK run against the same real job, with permission, review, recovery and cost gates.
By BIGCHANGE.AI Editorial
Published: 2026-10-26T12:52:39.710Z
Updated: 2026-10-26T12:52:39.710Z
Canonical: https://bigchange.ai/blog/choose-automation-stack-n8n-claude-code-openai-agents-sdk

AI-generated conceptual illustration by BIG CHANGE.
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](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent.md) can choose among the tools connected inside that graph. Decide whether the job uses [n8n Cloud or self-hosting](https://docs.n8n.io/deploy/host-n8n.md), 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](https://docs.n8n.io/integrations/builtin/credentials.md) document authentication by node.
For a sensitive **AI Agent tool**, n8n's [Human review](https://docs.n8n.io/build/integrate-ai/ai-examples/human-in-the-loop-for-tools.md) 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](https://docs.n8n.io/build/flow-logic/handle-errors-gracefully.md) before a replay.
### Owner-code-directed process: Claude Code
An owner process can invoke [`claude -p`](https://code.claude.com/docs/en/headless) or embed the [Claude Agent SDK](https://code.claude.com/docs/en/agent-sdk/overview). 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](https://code.claude.com/docs/en/agent-sdk/quickstart) documents a Claude Console API key or supported cloud-provider credentials for the host. The [hosting guide](https://code.claude.com/docs/en/agent-sdk/hosting) 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](https://code.claude.com/docs/en/agent-sdk/permissions), `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`](https://openai.github.io/openai-agents-python/quickstart/). The [runner loop](https://openai.github.io/openai-agents-python/running_agents/) handles model-selected registered tools and possible handoffs. Register only the tools that the job requires. The SDK [configuration](https://openai.github.io/openai-agents-python/config/) 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](https://openai.github.io/openai-agents-python/human_in_the_loop/) 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](https://openai.github.io/openai-agents-python/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](https://n8n.io/pricing/) and which [published executions](https://docs.n8n.io/build/understand-workflows/understand-executions.md) count. A supported Cloud node may use [prepaid Gateway credits](https://docs.n8n.io/deploy/use-n8n-cloud/gateway-credits.md); a node using the owner's [OpenAI credential](https://docs.n8n.io/integrations/builtin/credentials/openai.md) has a separate provider bill. For Claude's API-key route, check the [model rates](https://platform.claude.com/docs/en/about-claude/pricing) and account bill; the SDK's [cost fields](https://code.claude.com/docs/en/agent-sdk/cost-tracking) are estimates. The OpenAI SDK [usage record](https://openai.github.io/openai-agents-python/usage/) counts calls and tokens; apply the selected [API model and tool rates](https://developers.openai.com/api/docs/pricing). 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](https://bigchange.ai/blog/evaluate-ai-agent-product-three-axis-decision-guide). This comparison adds the distinct execution and authority paths of three named implementations.
## Sources
- [n8n: AI Agent node (checked October 26, 2026)](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent.md) — Primary hashed excerpt. The AI Agent node connects a model and tools and chooses among those tools. An outer visual workflow can be fixed while its inner agent is dynamic. The manual notes an agent-type setting deprecation from 1.82.0 and future v1 node removal in 3.0. This does not establish one deployed workflow's node version or tool access.
- [n8n: Understand workflows (checked October 26, 2026)](https://docs.n8n.io/build/understand-workflows.md) — Defines a workflow as connected nodes. Supports the fixed outer graph description, not a claim that any AI Agent node within it behaves deterministically.
- [n8n: Understand executions (checked October 26, 2026)](https://docs.n8n.io/build/understand-workflows/understand-executions.md) — Distinguishes manual from published production executions and describes paid-plan production execution quota rules. Actual execution counts and model charges require the chosen account.
- [n8n: Handle errors gracefully (checked October 26, 2026)](https://docs.n8n.io/build/flow-logic/handle-errors-gracefully.md) — Documents error workflows and inspection of failed executions. A particular workflow still needs a configured failure path and saved run data.
- [n8n: Hosting n8n (checked October 26, 2026)](https://docs.n8n.io/deploy/host-n8n.md) — Documents self-hosted n8n infrastructure and edition differences. This does not fix the reader's actual region, credential store, model-provider data path or administrative workload.
- [Anthropic: Run Claude Code programmatically (checked October 26, 2026)](https://code.claude.com/docs/en/headless) — Describes noninteractive `claude -p` use, CLI options and allowed tools. The owner still supplies trigger, business input, process lifetime and downstream effects.
- [Anthropic: Agent SDK overview (checked October 26, 2026)](https://code.claude.com/docs/en/agent-sdk/overview) — Separates owner-run Agent SDK Python/TypeScript, Claude Code CLI, direct API SDK and Managed Agents. The chosen route here is owner-run Agent SDK or headless CLI; it must not inherit hosted Managed Agents features.
- [Anthropic: Configure permissions (checked October 26, 2026)](https://code.claude.com/docs/en/agent-sdk/permissions) — SDK allow entries pre-approve calls, not remove unlisted tools; auto-approved calls can skip canUseTool. Permission mode, deny rules and hooks need separate inspection, as does downstream service authorization.
- [Anthropic: Track cost and usage (checked October 26, 2026)](https://code.claude.com/docs/en/agent-sdk/cost-tracking) — SDK cost fields are client-side estimates; authoritative billing is the account Usage and Cost API or Console. This packet contains no comparable cost measurement.
- [OpenAI: Running agents (checked October 26, 2026)](https://openai.github.io/openai-agents-python/running_agents/) — Documents Runner's model/tool/handoff loop, max-turn failure and separate durable orchestration integrations. Base SDK use does not itself demonstrate restart-safe business jobs.
- [OpenAI: Human-in-the-loop (checked October 26, 2026)](https://openai.github.io/openai-agents-python/human_in_the_loop/) — Documents tool approval interruption, saved RunState and resume after a human decision. The application owner must bind this to its own identity, side-effect and state policy.
- [OpenAI: Tracing (checked October 26, 2026)](https://openai.github.io/openai-agents-python/tracing/) — Documents built-in tracing and privacy controls; traces can contain model and tool details and may be unavailable under Zero Data Retention. No live trace was examined.
- [n8n: Human-in-the-loop for tools (checked October 26, 2026)](https://docs.n8n.io/build/integrate-ai/ai-examples/human-in-the-loop-for-tools.md) — Tool-specific human review: Tools panel, approval channel, attached tool, tool/parameter request, approve or deny.
- [n8n: Credentials (checked October 26, 2026)](https://docs.n8n.io/integrations/builtin/credentials.md) — n8n nodes authenticate to external systems with configured credentials; actual scopes are account-specific.
- [n8n: OpenAI credentials (checked October 26, 2026)](https://docs.n8n.io/integrations/builtin/credentials/openai.md) — OpenAI model nodes can authenticate with OpenAI credentials; supported Cloud nodes may use Gateway credits.
- [n8n: Gateway credits (checked October 26, 2026)](https://docs.n8n.io/deploy/use-n8n-cloud/gateway-credits.md) — Gateway credits are prepaid per request for supported nodes on eligible Cloud plans, not self-hosted or Enterprise.
- [n8n: n8n pricing (checked October 26, 2026)](https://n8n.io/pricing/) — Current n8n plan page prices by workflow executions; exact plan, billing period and terms require reader check.
- [Anthropic: Agent SDK quickstart (checked October 26, 2026)](https://code.claude.com/docs/en/agent-sdk/quickstart) — Agent SDK requires Claude Console API key in host environment or documented cloud-provider auth; not third-party claude.ai login.
- [Anthropic: Hosting the Agent SDK (checked October 26, 2026)](https://code.claude.com/docs/en/agent-sdk/hosting) — Host guide distinguishes inbound authentication, model key and outbound tool credentials.
- [Anthropic: Claude Code identity and access (checked October 26, 2026)](https://code.claude.com/docs/en/iam) — Interactive Claude Code has several login routes; this is distinct from third-party Agent SDK auth.
- [Anthropic: Claude API pricing (checked October 26, 2026)](https://platform.claude.com/docs/en/about-claude/pricing) — Claude API model and feature charges vary by model and usage; no per-job price is inferred.
- [OpenAI: Agents SDK quickstart (checked October 26, 2026)](https://openai.github.io/openai-agents-python/quickstart/) — OpenAI SDK quickstart covers API key and Runner invocation.
- [OpenAI: Agents SDK configuration (checked October 26, 2026)](https://openai.github.io/openai-agents-python/config/) — OpenAI SDK configuration documents default API key and client/provider settings.
- [OpenAI: Agents SDK usage (checked October 26, 2026)](https://openai.github.io/openai-agents-python/usage/) — OpenAI SDK usage aggregates model calls and token counts during a run.
- [OpenAI: OpenAI API pricing (checked October 26, 2026)](https://developers.openai.com/api/docs/pricing) — OpenAI API model and tool pricing varies by selected service; no per-job cost is inferred.
The BIG CHANGE newsletter
The big picture. At your pace.
Recent stories on AI and robotics, the shifts worth watching and practical ideas to use. Choose a daily briefing, weekly digest or monthly perspective.
Next scheduled send (UTC): . Your first edition arrives at the next scheduled send after you confirm.
Your privacy, your choice.
Necessary storage supports site security and remembers your choices. Optional Google Analytics stays off until you allow it. You can read every story with necessary storage only. Privacy details