NewIntroducing Integrations
All guides
Glossary
Updated
2 min read
by Anlyon Team

What is an unknown outcome for an AI agent action?

An unknown outcome is an action that may or may not have happened at the provider, because no usable response came back. Why it is not a failure, why it must not be retried blindly, and how it settles.

glossaryunknown outcomestimeoutsreconciliation

An unknown outcome is the state of an AI agent action that may have reached the provider but returned no usable response, so nobody can yet say whether it happened, and it must be settled from the provider's own record before anything is retried. Absence is never failure.

Why is unknown not the same as failed?

A request can succeed at the provider and still look like an error to the caller. The refund is issued, then the response times out on the way back. If that is recorded as failed, every sensible retry policy sends it again, and the customer is refunded twice.

So Anlyon records three situations as unknown, not failed:

  • The request timed out, or the connection dropped after the request was written.
  • The destination answered with a 5xx.
  • Stripe or Resend answered 409 on an idempotent write.

Anlyon does not retry an action invocation. Where a request may have reached the destination and the outcome cannot be confirmed, the invocation is recorded as unknown and you reconcile before retrying.

How does an unknown outcome settle?

On a governed action, it stays unknown until one of these happens:

  1. A read-back finds the operation in the provider's own record. Reconciliation backs off from 30 seconds to one hour and stops after 12 attempts.
  2. A replay inside the provider's idempotency window returns the original response. Stripe and Resend keep a key for 24 hours.
  3. An operator resolves it with evidence. That resolution is labelled manual, never provider-verified.

Not finding the operation proves nothing. While the outcome is unknown, its amount stays held against the shared limit, so another agent cannot use that room while nobody knows whether the refund ran.

Example

On 2026-10-04 a Stripe refund of $54.00 (5400 in minor units) was sent and its response was discarded on purpose, as an injected fault. Anlyon recorded the effect as unknown, with the 5400 held as unknown exposure, while Stripe already showed the refund. An on-demand reconcile settled it as confirmed, with one dispatch and no second refund.

import { Client } from '@anlyonhq/sdk';

const ops = new Client({ apiKey: process.env.ANLYON_OPERATOR_KEY! });

// Effects waiting on their outcome.
const { data: open } = await ops.actions.effects({ grade: 'unknown' });

// Read the provider's record again. This sends no second write.
for (const effect of open ?? []) await ops.actions.reconcileEffect(effect.id);

What to tell the model

A tool that returns "error" for an unknown outcome invites the model to try again. Return the state instead: the refund may already have been issued, so do not retry, and check the record first.

Frequently asked questions

What does an unknown outcome mean?

No usable response. Anlyon does not send it again. It stays unknown until a read-back or an operator settles it. A timeout, a dropped connection after the request was written, or a 5xx from the destination are recorded as unknown, not failed, because the provider may have processed the request.

Should an agent retry when the outcome is unknown?

No. Retrying an unknown refund can refund the customer twice. Anlyon does not retry an action invocation. Settle the outcome from the provider's own record first. A deliberate re-run of a template action needs a failed original, a new idempotency key and retryOf, and an unknown original must be resolved before that.

Continue with a related task

Free tier, no credit card. One command if you use Claude or Cursor.

$ claude mcp add anlyon -- npx -y @anlyonhq/mcp-server