App filter — three modes
| Mode | Behavior |
|---|---|
open | No filter — every third-party app available (the default). |
allowlist | Only the listed toolkits are available. |
blocklist | Every app except the listed ones. |
allowlist and blocklist are mutually exclusive — modeled as
toolkits: { enable } vs { disable }.
Per-tool filter
Within an allowed toolkit, restrict to specific tools withtools.<toolkit>.enable or .disable (mutually exclusive). E.g. allow Gmail but only
read + send.
White-label
custom_auth_configs.<toolkit> pins your own provider auth config id for an app, so
the OAuth consent screen shows your brand instead of Naive’s or the provider’s.
Governance — require approval
Each gated primitive acceptsrequiresApproval, and connections accept
requiresApproval / approvalToolkits. When on, an agent’s sensitive action is
frozen as a pending approval (HTTP 202) until a human
approves it.
cards, domains, verification, formation, and connections.connect
default to requiring approval; set requiresApproval: false to opt a primitive
out. Human (dashboard/session) callers always bypass the gate — only agent
(API-key / MCP) calls are gated.
How it maps to the connections provider
Naive translates a kit to the provider’s session config:| Kit | Provider session config |
|---|---|
mode: "open" | toolkits omitted (full catalog) |
mode: "allowlist" | toolkits: { enable: [...] } |
mode: "blocklist" | toolkits: { disable: [...] } |
tools | passed through unchanged |
custom_auth_configs | authConfigs |
mode: "open" with every native primitive enabled.