Security
How Herald protects credentials, blocks unsafe outbound requests, and audits tool invocations.
Encryption at rest
- Webhook URLs, API tokens, and tool secrets are encrypted with AES-256-GCM
- Inbound hook signing secrets are also encrypted at rest
- Plaintext secrets are never shown again after initial creation
MCP key security
- MCP keys are stored as hashes — only a short prefix is kept for identification
- The full key is shown once at generation; it cannot be recovered
- Each key can be limited to selected tools (job packs use this for least privilege)
- You can turn inbox tools on or off per key in Settings
- Revoke compromised keys immediately from workspace Settings
- Keys are sent as
Authorization: Bearerto your workspace MCP URL
OAuth 2.1 (MCP clients)
- Herald supports OAuth 2.1 for MCP clients (with PKCE)
- Access tokens are short-lived; refresh tokens are hashed at rest
- Consent lets you pick workspace, tool allowlist, and inbox access
- HTTPS is required for OAuth redirects
IP allowlists
- Optional per-workspace allowlist of IPs / CIDRs
- Enforced on the MCP gateway after authentication
- Denied requests are recorded in the audit log
Outbound request protection
Before every tool call that hits the internet, Herald blocks requests to private networks, localhost, and link-local addresses. This applies to custom tools and alert channel webhooks.
Inbound webhook verification
- Custom Herald URLs support signing via the
x-herald-secretheader - Provider sources (Stripe, GitHub, etc.) verify their native signatures when configured
- Disabled or suspended workspaces reject inbound traffic
Audit logs
Every MCP tool invocation records:
- Tool name
- Success or error status
- Duration
- Auth method (API key or OAuth) without exposing secrets
- Client IP
- Redacted request args
- Error message (truncated) on failure
View recent logs on the workspace Overview page.
Rate limiting & plan limits
- Monthly invocation limits enforced per workspace plan
- Inbound hook count limited per plan
- Gateway rate limits protect channels from runaway agents
- Suspended workspaces cannot invoke tools or receive hooks
See plan details on the pricing page or in workspace Settings.
Team access control
Workspace routes enforce role-based access. Owners manage billing and team; admins manage integrations and keys; members can view and test. See Workspaces & team.
Production recommendations
- Rotate MCP API keys if a key may have been exposed
- Use a scoped key (job pack) so each agent only sees the tools it needs
- Prefer OAuth 2.1 for clients that support it instead of long-lived Bearer keys
- Review audit logs after connecting new tools or team members
