Provider reference
Stop Reasons
Every provider reports why it ended a turn. Atomic stores one ofstop, length, toolUse, error, or aborted; the provider’s own string (end_turn, MAX_TOKENS, tool_calls, and so on) is mapped onto it.
An unrecognized terminal reason becomes a provider error that names the raw value, not an ordinary successful stop. This makes new truncation or safety reasons visible rather than making the model appear to stop early. Existing successful-stop mappings are unchanged. Provider safety or refusal errors retain the raw reason, for example Provider stopped with: SAFETY.
A streaming partial message carries pending until a terminal reason replaces it. A completed turn cannot remain pending: a stream that ends in that state is a provider error. See Custom providers for the requirements when implementing a provider.
Resolution Order
When resolving credentials for a provider:- CLI
--api-keyflag auth.jsonentry (API key or OAuth token)- Environment variable
- Custom provider keys from
models.json