← All writing
Writing

Before AI acts unprompted, decide what it’s allowed to start

AI & Agents · Strategy
A business signal entering a controlled event node surrounded by authorization and recovery layers

A customer call ends with a delivery promise, a revised deadline, and a request for legal review. Its transcript reaches the CRM, but the handoff never reaches the people who own the next action.

Two days later, one person sends a follow-up from memory while another opens a duplicate task. Legal still hasn't seen the promise. Model quality isn't the issue. The workflow couldn't reliably recognize the business change, assemble approved context, route the decision, or preserve the records needed for review.

This failure doesn't automatically justify an event backbone. It forces a buyer decision: should this workflow be authorized to initiate work without a human prompt, and what minimum control backbone must be funded before it does?

Manual control still fits some handoffs, while a schedule or direct API call fits others. A named event, bounded automation, and separate evidence records add value only when the work requires them. Full event sourcing fits a much smaller group.

Choose the smallest design that can control the consequence, measure the outcome, stop unsafe action, and recover from failure.

Authorize the behavior before choosing the architecture

Start by defining the authority the workflow would receive. Preparing work is different from changing a system of record. Drafting a follow-up differs from sending it, just as flagging a promise differs from changing the delivery plan.

Add architectural weight only as the action becomes less reversible, more privileged, more time-sensitive, or harder to inspect.

Use the consequence to choose the trigger.

Pattern

Best fit

Minimum decision

Main tradeoff

Scheduled or manual trigger

Work can wait, volume is predictable, or a person should decide when it starts

Who starts the run and reviews the result

Delayed response and possible missed work between checks

Direct API call

One request needs one bounded response with immediate feedback

What the caller may request and what the service may return or change

Tight coupling and harder recovery for long or multi-step work

Event plus control and evidence

One business change may initiate work without a prompt, needs retries or approval, or has a consequential outcome

Which event is qualified, what action is authorized, where approval sits, and how failure stops

Schema, idempotency, authorization, monitoring, and evidence become funded product work

Full event sourcing

Application state must be rebuilt or reprocessed from durable history

Whether replay and state reconstruction are product requirements

High design, migration, storage, versioning, and operating cost

Compare completed outcomes, not model calls alone.

Qualified-event rate = qualified events ÷ emitted events

Cost per completed outcome = total workflow cost ÷ completed qualified outcomes

Total workflow cost starts with transport, storage, model calls, and tool calls. It also includes reviewer labor, implementation, monitoring, incident response, and failure or rollback work. Reviewer labor depends on how many events reach review, how often a person must intervene, how long each review takes, and the loaded labor rate.

Compare that result with a schedule, polling loop, manual start, or direct invocation over the same period. Keep the definition of a completed outcome constant. Where the company has data, include missed handoffs, duplicate actions, delayed work, and remediation.

Filter before the model wakes. A noisy event stream can produce a low qualified-event rate and expensive review without improving completed outcomes. If the current handoff lacks volume, completion, labor, and incident data, instrument it before funding heavier architecture.

Fund the minimum control envelope

Customer-call follow-through makes the required controls visible without inventing a complex fan-out.

When the call artifact is ready, the recording platform sends a webhook. Before creating a normalized work record, the intake verifies the sender. The record contains the account ID, participants, source reference, relevant transcript sections, commitments, dates, and sensitivity labels. Databricks includes metadata extraction in its preparation guidance for retrieval pipelines, while Unstructured describes ingestion that converts varied source material into consistent data for downstream systems.[1][2]

The workflow emits customer_call.normalized, which starts one bounded worker. That worker prepares a follow-up packet containing the proposed email, changed commitments, conflicts, source excerpts, and required approver. It doesn't send the email or update the delivery plan.

Nine controls form the minimum envelope:

  • Trusted intake: verify signed webhooks before acting. OpenAI recommends signature verification for inbound webhooks, especially when the endpoint can trigger backend action.[3]
  • Qualified events: before any model call, define the event, filtering rule, idempotency key, and authorized outcome.
  • Least privilege: give the worker only the tools and scopes needed for its bounded job. Outside the model, enforce downstream authorization for the affected user or account.
  • Delivery behavior: define retries, dead-letter handling, duplicate suppression, ordering assumptions, and schema compatibility. OpenAI documents retries, possible duplicate delivery, and use of the webhook ID for deduplication. AWS also warns that duplicate messages can occur and recommends idempotent consumers.[3][4]
  • Stable context: point to versioned or immutable source material so reviewers can inspect the evidence used for that run.
  • Data boundaries: minimize the payload, restrict access, and set retention for source material, prompts, outputs, traces, and logs.
  • Approval: place a person before any high-impact or externally visible action. LangChain describes notify, question, and review as human oversight patterns for ambient agents.[5]
  • Stop conditions: stop on invalid signatures, missing context, policy conflicts, authorization failures, repeated delivery failures, or unavailable approval.
  • Recovery: identify every affected record and external side effect, then define rollback, correction, or compensating action before launch.

OWASP identifies excessive functionality, permissions, and autonomy as root causes of excessive agency. Its guidance calls for minimal tools and permissions, execution in the user's context, human approval for high-impact actions, and authorization in downstream systems. The model shouldn't decide what is allowed.[6]

Approval can't substitute for authorization, logging can't replace a stop condition, and retries still need idempotency. Fund the envelope as one operating requirement.

Keep five records separate

A reliable event path doesn't produce one magical log. It produces several records, each with its own purpose, access rules, and retention needs.

  • Transport events show receipt, delivery attempts, retries, dead-letter movement, and duplicate handling. They prove movement through the transport layer.
  • The application's operational state holds its current business truth. A conventional database can remain the source of truth even when events initiate work.
  • Decision evidence links the proposed action to the applicable policy or rubric, source references, approver, approval state, final outcome, and any correction or rollback. This is the owner-facing record of consequential work.
  • For diagnosis, model and tool traces capture model calls, tool requests, tool results, and orchestration behavior. They can help reconstruct the context supplied to a run only when the system retains the relevant versions and source references.
  • Security logs record authentication, signature checks, authorization decisions, denied requests, privilege use, and security-relevant changes. They serve a different audience and may require tighter access than product evidence.

A correlation ID can join references across these records, but it can't prove that they are complete, correct, private, or untampered. Append-only storage alone doesn't provide tamper evidence or privacy safety. Nor does it guarantee that every side effect was captured or explain what the agent knew when it produced an output.

Establishing those properties requires access policy, retention, and integrity protection. Preserve source and policy versions, instrument consequential side effects, and keep a reviewable decision record. A trace points to that evidence but doesn't explain the decision on its own.

Full event sourcing makes a different promise. The event log becomes the source from which application state is rebuilt. Azure notes that the pattern adds complexity, can be costly to migrate to or from, constrains future design choices, and isn't needed when traditional data management is sufficient.[7]

Use full event sourcing when replay or state reconstruction is a product requirement, not merely because the workflow emits events.

Buy the transport and own the decision boundary

Most teams shouldn't build event transport from scratch. Existing webhooks, managed queues, brokers, and outbox or change-data-capture support can handle message movement when they meet measured delivery, ordering, isolation, and latency needs. The company still owns what those messages mean and what they can cause.

The product owner defines the meaningful event, qualified outcome, and completed-outcome measure. Schema compatibility, idempotency, authorization, and observability belong to the platform owner, along with record separation and recovery mechanics. The business or risk owner sets approval policy, stop conditions, retention constraints, and acceptable rollback.

Before the first autonomous action runs, the company must own the event semantics, approval boundary, evidence people will inspect, and rollback policy.

Bring Majestic AI one recurring handoff from the last 30 days. Include what starts it today, whether it should initiate work without a prompt, what systems it can affect, who approves the consequence, how failure is detected, and what evidence exists.

Submit the handoff for an architecture and readiness judgment. Majestic AI will tell you whether it should stay manual, use a schedule or direct call, or receive a funded event and control backbone.

Sources

  1. Databricks, “Build an unstructured data pipeline for RAG applications”
  2. Unstructured, “Ingestion overview”
  3. OpenAI, “Webhooks”
  4. AWS Prescriptive Guidance, “Transactional outbox pattern”
  5. LangChain, “Introducing ambient agents”
  6. OWASP GenAI Security Project, “LLM06:2025 Excessive Agency”
  7. Microsoft Azure Architecture Center, “Event Sourcing pattern”

Keep thinking with us

Practical AI ideas, delivered where you already are.

Get occasional field notes on choosing models, building useful AI workflows, and making better decisions with the tools.

Prefer a messaging app?

Telegram and WhatsApp are broadcast-only and carry the same posts. Pick the app you prefer.