Skip to main content
The client evaluation API never throws. Abnormal execution returns the caller-supplied default with reason: ERROR and an errorCode (OpenFeature spec §1.4.10). If a typed getter raised, that is a bug. First diagnostic step: read details, not just the value.
flagMetadata["fireweave.errorKind"] is the FireWeave kind. Use it to tell NotReady from AlreadyClosed — both map to OpenFeature PROVIDER_NOT_READY.

15 kinds

Canonical kinds from contracts/errors.md. Messages are secret-redacted (no API keys, bearer tokens, or FW_PROJECT_API_KEY values). * MalformedResponse is permanent for a given response; a later request may succeed. Adapters must not invent flag values. InvalidContext subtype: missing required targetingKeyTARGETING_KEY_MISSING. All other context violations (type, reserved keys, size/depth/count bounds) → INVALID_CONTEXT.

OpenFeature codes

All eight OpenFeature codes are reachable:

Language surfaces

Go extension APIs (Releases().Start, and so on) return error. Evaluation still does not throw through OpenFeature.

Reasons that are not errors

UnsupportedCapability

Expected in phase one for:
  1. Guardrails in every language (guardrails: false).
  2. Java PostHogAdapter.create(config) until a Java server SDK exists.
Anywhere else, compare the name to capabilities.get().

Next

Troubleshooting

Default values, auth, missing exposures

OpenFeature

How kinds appear on ResolutionDetails
Last modified on August 18, 2026