ANY /custom//*
Proxy requests to custom HTTP services with configurable authentication, endpoint blocking, and rate limiting. Ideal for GitHub API, Stripe, or any other HTTP API your agent needs.Authentication
Does not require session authentication. Uses credentials from the vault or environment variables.Endpoint Format
{name} must match a configured service in [custom] section of fishnet.toml.
Configuration
Define custom services infishnet.toml:
Base URL of the upstream service (without trailing slash).
HTTP header name for authentication (e.g.,
Authorization, X-API-Key).
Leave empty if no authentication is needed.Prefix for the auth header value (e.g.,
Bearer , token ).Environment variable to read auth value from if vault credential is not found.
List of endpoint patterns to block (e.g.,
DELETE /repos/*).
Supports wildcard matching with *.Maximum requests per window. 0 = no limit.
Rate limit window in seconds.
Credential Resolution
Fishnet resolves credentials in this order:- Vault credential: Service
custom.{name}(e.g.,custom.github) - Environment variable: Value from
auth_value_env - Error: If neither is found, request is denied
Vault credentials take precedence over environment variables. This allows you to rotate keys without restarting Fishnet.
Endpoint Blocking
Blocked endpoint patterns use method + path matching:Headers Forwarding
All request headers are forwarded except:authorization(replaced with vault credential if configured)x-api-key(stripped)- Custom
auth_header(replaced with vault credential) host,connection,keep-alive,transfer-encoding,content-length(HTTP infrastructure)
Body Forwarding
Request bodies are forwarded as-is to the upstream service. Fishnet does not parse or modify custom service request bodies.Examples
Stripe Example
Error Responses
/custom/{name}/{path} format.[custom.myapi] is not configured in fishnet.toml.base_url is required in service configuration.blocked_endpoints.rate_limit and rate_limit_window_seconds).Audit Log Entry
Each proxied request creates an audit log entry:GET /api/audit?service=github.
Credential Management
Add custom service credentials to the vault:Security Features
- Credential override: Client-provided auth headers are always replaced with vault credentials
- Endpoint blocking: Pattern-based blocking with high-severity alerts
- Rate limiting: Per-service rate limits with configurable windows
- Anomaly detection: New endpoint alerts, volume spike detection, time-based anomalies
- Audit trail: Every request logged with cryptographic integrity
- Namespace isolation: Custom service credentials are namespaced as
custom.{name}to prevent conflicts
Use Cases
- GitHub automation: List repos, create issues, manage PRs (with deletion protection)
- Stripe integration: Fetch customer data, create invoices (with transfer blocking)
- Internal APIs: Proxy to internal microservices with centralized auth
- Third-party APIs: Zapier, Airtable, Notion, etc.
- Webhook receivers: Proxy agent-generated webhooks to external services
Wildcard Pattern Matching
Endpoint patterns support* wildcards:
DELETE /repos/*- MatchesDELETE /repos/fishnetio/fishnetPOST /orgs/*/teams/*- MatchesPOST /orgs/acme/teams/engineering*- Matches any method and pathGET *- Matches all GET requests
/custom/{name}/.