❋
Read-only by default
Every connected portal starts UNCONFIRMED and read-only. Agents can audit and analyse, but cannot touch a thing until you deliberately raise the access level.
⌁
Create-only writes
When writes are enabled they are strictly create-only — agents add new objects, never mutate or delete existing live records. There is no path to overwrite what a client already has.
✓
API-verified sandbox label
A portal can only receive writes once we confirm, against the HubSpot API itself, that it carries a sandbox label. We verify the claim — we don't take a checkbox's word for it.
❖
Human-in-the-loop approval
Nothing auto-mutates a portal. Every proposed change waits behind an explicit approval gate, with a readable diff, until a person on your team signs off.
▴
Secrets encrypted at rest
OAuth tokens and credentials are encrypted at rest with Fernet. Plaintext secrets never sit on disk and never appear in logs.
✎
Short-lived scoped tokens
Service-to-service actions use HMAC-signed tokens that are short-lived and scoped per workspace and per run. A token leaked from one job can't reach another client or outlive its task.