Skip to main content

Overview

Formal Endpoint reads ~/.formal/config.toml on startup. Restart Formal Endpoint after you edit the file. On macOS, Forced .mobileconfig keys override ~/.formal/config.toml. See MDM overrides.

config.toml settings

Every key the Endpoint reads from ~/.formal/config.toml:
Omit [oidc] and auth_mode unless the Endpoint should authenticate with OIDC. Use oidc.env or oidc.file instead of oidc.provider when the JWT comes from an environment variable or a file. See Log In with OIDC.

Configuring Transparent Mode on Startup

To avoid toggling Transparent Mode every time you open Formal Endpoint, configure it in ~/.formal/config.toml.
enable specifies whether the endpoint agent should try to enable Transparent Mode upon startup. If omitted, enable defaults to false. enforce controls whether you can change Transparent Mode behavior with formal transparent-proxy install, formal transparent-proxy enable, and the tray toggle. If omitted, enforce defaults to false.
Privileged users can still disable the network extension without formal transparent-proxy enable or formal transparent-proxy disable.
fail can be open or closed. If the endpoint agent errors, open preserves network connectivity. closed keeps enforcing that Transparent Mode is running. If omitted, fail defaults to open. allow_quic controls whether Transparent Mode allows QUIC traffic (UDP/443). Blocking QUIC is required to intercept Claude Chat sessions in the Claude Desktop App. If omitted, allow_quic defaults to false. intercept_localhost controls whether Transparent Mode intercepts IPv4 loopback traffic, such as local tunnels on 127.0.0.1. If omitted, intercept_localhost defaults to false. On Linux, restart the Endpoint after changing either synthetic DNS pool. Invalid CIDRs or incorrect address families prevent Transparent Mode from enabling. Restart client applications to clear cached DNS answers from the old pool. runtime_ca_env controls which runtimes the Endpoint points at its CA bundle. none sets no variables and removes the ones the Endpoint wrote to Claude Code’s ~/.claude/settings.json. agents_only sets them only in Claude Code’s settings. all also sets them in the macOS login session. If omitted, runtime_ca_env defaults to agents_only. The legacy values false and true mean agents_only and all. See Runtime TLS trust. See Transparent Mode for install and enable steps.

Third-party telemetry

By default, the Endpoint sends errors and crash reports to Sentry. On macOS, this includes the network extension. To opt out, set third_party = false under [telemetry]:
This setting covers third-party services only. The Endpoint still sends its own health telemetry to the Formal Control Plane. Restart the Endpoint after you change this setting. On macOS, the network extension picks up the change the next time Transparent Mode starts.

MDM overrides (macOS)

Forced .mobileconfig keys override ~/.formal/config.toml. On macOS, Forced keys in the com.formal.desktop domain take precedence over the file. They apply even when config.toml is absent. Deploy the values as Forced (locked) keys in a com.apple.ManagedClient.preferences payload. Generate the profile from Endpoint Rollout in the Control Plane. These config.toml keys have no MDM mapping: postgres_db, launch_commands, auth_mode, and [oidc].

Require a password to uninstall

Set the uninstallPasswordHash managed preference to protect formal uninstall. This key exists only in the .mobileconfig profile. It is not a config.toml setting. When the key is present, the CLI prompts for the password. It refuses to remove Formal unless the password matches. Turn on Require uninstall password on the Configuration Profile step in Endpoint Rollout and enter a password. Formal embeds the SHA-256 hex digest in the profile. The plaintext password never leaves your browser.
This is a deterrent, not tamper protection. A user with sudo can still stop processes and delete files manually.

Next Steps

Formal Endpoint

Install the app, log in, and connect to resources

Linux

Install the headless package on Debian or Ubuntu

MDM Integration

Deploy Formal Endpoint with your MDM