Full schema
[runtime]
[start]
[limits]
The global execution ceiling. Any one limit stopping the agent stops the entire run.
Named limit sets —
[limits.<name>] inherits all fields from [limits] and overrides only the fields it declares:
@agent("researcher") (Python) or #[nanny::agent("researcher")] (Rust).
[tools]
Per-tool configuration — [tools.<name>]
The tool name in
[tools.<name>] must exactly match the function name used in the @tool decorator or #[nanny::tool] macro.
[observability]
[proxy]
Optional. Enables HTTP CONNECT proxy mode on the governance server. Proxy mode is active only whenallowed_hosts is present and non-empty. An empty list — or omitting [proxy] entirely — disables proxy mode.
See HTTP proxy mode for full details.
[managed]
Only read when[runtime] mode = "managed". Cloud connection config.
Supplying the API key
The key is read from theNANNY_API_KEY environment variable, so nanny.toml
stays safe to commit:
NANNY_API_KEY— wins whenever it is set to a non-empty value.[managed] api_keyinnanny.toml— fallback.
NANNY_API_KEY counts as unset (an unset CI secret
usually surfaces as ""), so it falls through to the config file rather than
authenticating with an empty string.
If no key is found, Nanny prints a warning and keeps enforcing locally — it
simply does not forward events to the cloud. Enforcement never depends on the
network.
Your organization is derived from the API key on the cloud side, so there is no
org_id field to configure.