Choose where to run the proxy
While you can technically run the agent and the proxy on a single machine, we recommend running the proxy on a different machine from the agent. If the agent and the proxy run on the same machine, the agent could read the proxy token and the private key of the proxy’s certificate authority.Supported connections
The proxy attaches credentials to HTTP/1.1 requests, over both HTTPS and plain HTTP. These connections fail through the proxy:- WebSocket connections, such as to a
wss://URL - Clients that only speak HTTP/2, such as gRPC clients
Create a proxy and start it
1
In Agent Vault, go to Proxies and select Create Proxy.
2
Enter a Name. To set the traffic policy, exceptions, or poll interval now, expand Advanced Options. You can change these settings later.

3
Select Create. The Proxy Token dialog shows the proxy token, and commands for the CLI, systemd, Docker, and Kubernetes with your token and instance filled in.
4
Run one of the commands on each machine where the proxy will run.
- CLI
- Docker
- Kubernetes
- systemd
Command flags
The commands use these settings:INFISICAL_AGENT_VAULT_PROXY_TOKENor--proxy-token: the proxy token (prefer the environment variable, because other users on the machine can read anything on a command line)--domainorINFISICAL_DOMAIN: your Infisical instance URL (required for EU Cloud and self-hosted instances, because the default is Infisical Cloud in the US)
~/.infisical/agent-vault, or /etc/infisical/agent-vault as root, or --data-dir). If it can’t reach Infisical for 60 seconds, it starts from that copy, or exits if there isn’t one.
For the proxy’s other flags, such as the port and the data directory, check out the
agent-vault proxy CLI reference.Settings
To change a setting, select Edit Settings on the proxy’s menu. If the proxy is running, it applies the change within one poll interval (60 seconds by default).Traffic policy
The Traffic Policy setting controls which hosts agents can reach through the proxy:- Any host (default): the proxy forwards every request, and attaches a credential only for hosts covered by a service
- Access bundle hosts only: the proxy refuses requests to hosts that no service in the session’s access bundle covers, unless the host is an exception
Blocked requests
If the policy blocks a request, the proxy still accepts the connection and completes the TLS handshake, so the agent gets a 403 response instead of a connection error:- A request to a port the service’s host pattern doesn’t name, such as
example.com:8443for a service onexample.com, which only covers port443 - A request that breaks the service’s method or path rules, under either traffic policy
- A request to a service that needs the session owner’s personal values, before they set them up
Exceptions
Exceptions allow your agents to access hosts that aren’t covered by any service in an access bundle, even when your proxy uses Access bundle hosts only. Use exceptions for hosts every agent needs, such as a package registry or a documentation site. To add exceptions, select the policy and enter the hosts in Exceptions as a comma-separated list. The field doesn’t appear under Any host, because that policy already lets every host through. Exception hosts behave differently from hosts that are covered by services:- Credentials: The proxy never attaches a credential to requests to an exception host
- Ports: An exception with no port matches the host on every port, while a service’s host pattern with no port only matches port
443 - Interception: The proxy still decrypts requests to an exception host, but doesn’t block them
- Scope: An exception applies to every agent that uses the proxy
Poll interval
The poll interval is how often, in seconds, the proxy re-checks each active session with Infisical and applies settings changes. It defaults to 60 and can be set from 10 to 300. If the proxy can’t reach Infisical:- The proxy keeps using the session data it last fetched for five poll intervals
- After that, the proxy refuses the affected requests with a 502 until it reaches Infisical again, instead of forwarding them without their credentials
- The Proxies page marks the proxy Unreachable after three missed check-ins
Certificate trust
The proxy decrypts HTTPS traffic to attach the credential, so each agent has to trust the proxy’s certificate authority (CA). Infisical generates a self-signed CA for each proxy when you create the proxy, and a new one each time you rotate the proxy’s token.- With the CLI
- Without the CLI
If you start the agent with
infisical agent-vault run, the CLI sets up trust for you. On every run, it fetches the certificate from the proxy and sets these variables for the agent: SSL_CERT_FILE, NODE_EXTRA_CA_CERTS, REQUESTS_CA_BUNDLE, CURL_CA_BUNDLE, GIT_SSL_CAINFO, and DENO_CERT.On macOS, if you run the CLI in a terminal, it also adds the certificate to your login keychain for tools such as gh and docker that read the system trust store. macOS asks you to approve the change. To skip this step on a machine that already trusts the proxy, pass --no-ca-trust.Pin the proxy’s certificate
If the agent runs on a network you don’t fully control, pin the proxy’s certificate so the agent only talks to your proxy. Copy the fingerprint from the Certificate Authority column on the Proxies page, and pass it with--ca-fingerprint:

Use your own certificate authority
To serve your own CA instead of the one Infisical generates, pass it to the proxy with--ca-cert and --ca-key, or with the INFISICAL_AGENT_VAULT_CA_CERT and INFISICAL_AGENT_VAULT_CA_KEY environment variables. Each value can be the PEM text, the PEM encoded as base64, or the path to a PEM file. The key has to be an ECDSA P-256 key.
APIs with a private certificate authority
The proxy checks the certificate of each API it connects to, the way any HTTPS client does. If an API uses a private certificate authority, the machine running the proxy has to trust that authority. The agent’s machine doesn’t need to trust it.Rotate a proxy’s token
Rotate the token if it leaked, or to bring back a proxy whose access you revoked:1
On the Proxies page, select Rotate Proxy Token on the proxy’s menu, then select Rotate.
2
Store the new token from the Proxy Token dialog somewhere safe.
3
Restart the proxy with the new token on every machine where it runs.
- Restart every agent that uses the proxy, because those agents still trust the old certificate
- Update any
--ca-fingerprintpin - Replace any
ca.pemfile you mounted for an agent - On macOS, replace the certificate in your login keychain
Revoke or delete a proxy
Both actions are on the proxy’s menu:
Revoke access if you think a machine running the proxy is compromised.
High availability
To keep the proxy available when one machine goes down, run it on several machines with the same proxy token and put a load balancer in front of them. Every machine serves the same certificate authority, so agents trust whichever machine they reach.- Load balancer type: use a TCP (layer 4) load balancer, because agents send
CONNECTrequests that most HTTP load balancers don’t forward. You don’t need sticky sessions - Health checks: send an HTTP
GETto/_agent-vault/caon each machine, which returns200while the proxy is serving - Your own certificate authority (optional): if you want to use your own, pass the same
--ca-certand--ca-keyto every machine