Skip to main content
An error is not automatically an agent failure. Validation can reject a recipe before work starts; execution can finish while assessment is unavailable; a network failure can leave an acknowledgement uncertain.

Read the diagnostic

CLI JSON, TypeScript FiredrillError.toJSON(), and Python FiredrillError.to_dict() expose the same diagnostic concepts: Keep diagnostics and private journals protected. Do not log raw recipes, application outputs, credentials, or configuration merely to explain a failure.

Catch typed errors

FiredrillError is exported by @firedrill-run/sdk:
The snippets wrap your existing client, recipe, and actual application target.

Choose the matching recovery action

CLI examples, using actual returned handles:
Execution resume can dispatch unfinished target work; follow only observes. A submission key is not an execution operation ID. Reuse the original account, project/environment, recipe intent, and private journal. Do not switch identity or create a new key to bypass an uncertain action.

Authentication and scope

An explicit FIREDRILL_TOKEN takes precedence over protected interactive login. If it fails, clients do not borrow another identity. SCOPE_CONFLICT means your selected project/environment disagrees across sources; select one consistent pair. FD_SDK_IDENTITY_CHANGED means the protected login changed while a client was active. Verify the intended identity and create a new client deliberately; recover previous work with its original identity. Firedrill selects its service address automatically. FD_API_ENDPOINT_LOCKED rejects custom endpoint settings before network access. Do not edit a saved recovery journal’s origin.

Assessment is separate

A completed execution may have no requested assessment, a partial assessment, or an evaluator error. Missing evidence is not zero and an evaluator outage is not a failed agent. A required gate can be inconclusive; a simulation without a gate is not_configured. See the CLI exit-code reference when integrating with CI.