Reference

Errors

Every error OKE produces — permanent OKE codes with fixes, gate denials, and subsystem errors, with what to do about each.

OKE has two error families, and confusing them is the most common mistake: failures are values a flow returns ({ data: null, error: { code, data } } — clients switch on error.code), while framework errors are thrown for invariant violations and carry a permanent numeric code, a cause, and a fix.

OKE1101  domain table not found — migrations have not been applied.
         → run `oke db migrate` against this environment.
         https://oke.omqkhafi.dev/e/1101

Codes are permanent once published — you can match on them safely across upgrades.

OKE numeric codes

CodeNameCauseFix
1001undeclared readFlow reads a resource not in effects.readsAdd it to the flow's effects.reads
1002undeclared writeFlow writes a resource not in effects.writesAdd it to the flow's effects.writes
1003undeclared emitFlow emits a signal not in effects.emitsAdd it to the flow's effects.emits
1004undeclared sendFlow sends a template not in effects.sendsAdd it to the flow's effects.sends
1005undeclared askFlow asks a prompt not in effects.asksAdd it to the flow's effects.asks
1006undeclared secretFlow reads a secret not in effects.secretsAdd it to the flow's effects.secrets
1007undeclared callFlow calls a flow not in effects.callsAdd it to the flow's effects.calls
1042orphan emitEmitted signal has no subscriberAdd on(signal, …) or declare optional: true
1101schema missingDomain table absent in docker/prod — no auto-DDLRun oke db migrate against this environment

Effects are usually inferred

The 1001–1007 family exists for flows that declare effects explicitly. Most apps never write an effects block — inference covers them — so seeing one of these means an explicit declaration drifted from the code.

Gate denials (typed failures)

Returned, not thrown — the request never reached do:

CodeWhenPayload
UnauthorizedPolicy denied, request not authenticated
ForbiddenPolicy denied, authenticated but not allowedgate, reason
RateLimitedRate gate budget exhaustedretryAfterMs

Framework validation failures

CodeWhen
ValidationErrorInput failed the in schema, or a list param isn't whitelisted (unknown list param "x")
NotFoundA store.resource get/update/remove hit a missing row

Subsystem errors

Thrown by specific subsystems — each names its own cause:

ErrorThrown whenWhat to do
VaultBootErrorA vault contract has no value in any resolution layerSet the missing names — the error lists every gap
OpenBaoUnavailableErrorVault driver can't reach OpenBao, or it's sealed, in docker/prodRestore the vault or unseal it — never silently skipped
OpenBaoBootstrapErrorFirst-boot init/unseal failed, or key material is missing/unsafeRead the message — it names the exact failing step
AiPiiBuildErrorBuild: a flow sends PII fields to a third-party modelDrop the fields or add allowPii: true — fields named
AiSchemaValidationErrorA model response failed the prompt's out schemaFix the prompt or the schema — response didn't conform
ScheduleNotOverridableErrorConsole tried to edit a clock declared without overridable: trueDeclare it overridable and redeploy
ClockResourceNotFoundErrorConsole action targeted an unknown clock nameCheck the name against your clock() declarations
DryRunWriteIsolationErrorA write attempted inside a dry runDry runs never write — use a real run
ManifestValidationErrorThe compiled Manifest failed schema validationRe-run the build; the error names the offending entry
CrossPlaneErrorA user-plane token was used on the operator plane (or vice versa)Use the correct principal for the plane
AttenuationErrorA token was used beyond its attenuated scopeRe-issue with the needed scope
SessionErrorSession token invalid, expired, or malformedRe-authenticate
OperatorErrorOperator-plane operation failed its checksError message names the failed check
AccessGrantErrorConsole access grant rejectedRe-request access with a valid grant
UnsupportedPathErrorA route path shape the router can't compileSimplify the path pattern

Learn more

  • Flowfx.fail and the response envelope
  • Gate — where the three denials come from
  • CLI Referenceoke db migrate and friends

On this page