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

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
- Databricks, “Build an unstructured data pipeline for RAG applications”
- Unstructured, “Ingestion overview”
- OpenAI, “Webhooks”
- AWS Prescriptive Guidance, “Transactional outbox pattern”
- LangChain, “Introducing ambient agents”
- OWASP GenAI Security Project, “LLM06:2025 Excessive Agency”
- Microsoft Azure Architecture Center, “Event Sourcing pattern”