Alert Types
Fishnet monitors for 10 different security events:Prompt Drift
Type:prompt_driftSeverity: Warning/Critical Detects when prompts deviate significantly from established baselines using cosine similarity.
fishnet.toml
Prompt Size
Type:prompt_sizeSeverity: Warning Triggers when prompt length exceeds configured limits.
Budget Warning
Type:budget_warningSeverity: Warning Alerts when spending reaches 80% of daily budget.
Budget Exceeded
Type:budget_exceededSeverity: Critical Triggered when daily spending limit is reached. New requests are blocked until the next day.
On-chain Denied
Type:onchain_deniedSeverity: Critical Fires when a blockchain transaction is blocked by policy rules:
- Destination address not whitelisted
- Gas price exceeds maximum
- Daily transaction limit reached
- Value transfer too high
Rate Limit Hit
Type:rate_limit_hitSeverity: Warning Indicates the per-minute request limit was reached.
Anomalous Volume
Type:anomalous_volumeSeverity: Warning Detects unusual spikes in request volume compared to historical patterns.
New Endpoint
Type:new_endpointSeverity: Warning Alerts when an agent accesses a previously unseen API endpoint.
Time Anomaly
Type:time_anomalySeverity: Warning Triggers for requests outside normal operating hours (configurable).
High Severity Denied Action
Type:high_severity_denied_actionSeverity: Critical Fires when a high-risk action is blocked by policy (e.g., database deletion, credential exposure).
Alert Severity Levels
Alerts are classified into two severity levels:Critical
Immediate threats requiring urgent attention:
- Budget exceeded
- On-chain transaction denials
- High-severity denied actions
Warning
Potential issues to monitor:
- Prompt drift
- Budget warnings
- Rate limits
- Anomalous patterns
Configuring Alerts
Enable or disable alert types infishnet.toml:
fishnet.toml
Alert configuration can also be updated through the dashboard at
/settings.Alert Retention
Alerts are automatically cleaned up based on the retention policy:- Default retention: 30 days
- Cleanup interval: Every 7 days
- Startup cleanup: Runs on server start
Webhook Notifications
Fishnet can send alerts to external services via webhooks.Supported Providers
- Discord
- Slack
Webhook Payload Format
Fishnet sends alert notifications with the following structure:Webhook Retry Logic
Fishnet implements exponential backoff for failed webhook deliveries:- Max attempts: 3
- Timeout: 8 seconds per request
- Backoff: 250ms → 500ms → 1000ms
- Retry conditions: 429 (rate limit), 5xx (server errors)
Webhook Security
Fishnet validates webhook URLs to prevent SSRF attacks:- ✅ Public HTTPS endpoints only (in production)
- ❌ Localhost/loopback addresses blocked
- ❌ Private IP ranges (10.x, 192.168.x, 172.16-31.x) blocked
- ❌ Link-local addresses (169.254.x.x) blocked
- ❌ Cloud metadata endpoints blocked
Alert Dispatch Behavior
Not all alerts trigger webhooks. The following types are sent:| Alert Type | Webhook Sent |
|---|---|
prompt_drift | ✅ |
prompt_size | ✅ |
budget_warning | ✅ |
budget_exceeded | ✅ |
onchain_denied | ✅ (rate-limited to 1/hour) |
rate_limit_hit | ✅ |
anomalous_volume | ✅ |
new_endpoint | ✅ |
time_anomaly | ✅ |
high_severity_denied_action | ✅ |
onchain_denied alerts are rate-limited to prevent webhook spam from repeated transaction attempts.