File format
Pass the file to the binary with--config=/absolute/path/mdm.toml.
- The format follows the file extension:
.jsonis read as JSON,.yamland.ymlare rejected, and anything else is read as TOML. - Unknown keys fail validation, except inside
agents.claude-code.managed_settings, which follows Claude Code’s own schema. - Explicit CLI flags override the matching file values.
- Never put tokens, refresh tokens, or client secrets in the file.
~/.tf/config.toml and from the agents-policy.json file that the binary generates.
Fields
Connection, agent selection, and sign-in
Connection, agent selection, and sign-in
How
tools works:- Explicit list: configures exactly those agents. Claude Code, Codex, Claude Desktop, and agents with managed settings (OpenCode, Qwen Code, Gemini CLI’s managed file, and Grok Build on macOS and Linux) are configured before installation. Agents configured through user settings are configured on the first run after installation.
[]: configures no agents. Use it for a Cursor monitoring-only rollout.- Omitted: detects Claude Code, Codex, and Claude Desktop if installed. Other agents must be listed explicitly. A
[monitoring.cursor]table turns detection off, so list agents explicitly when you use it.
Models
Models
MCP servers and Skills
MCP servers and Skills
[[mcp.custom]] is not applied in MDM rollouts. Register custom servers in the gateway and use their registry names.Claude Code policy and gateway overrides
Claude Code policy and gateway overrides
For the Claude Code policy, see Set the Claude Code policy. For a Codex template, use the
--codex-settings-file flag. On Windows it applies only to config.toml, not requirements.toml.Claude Desktop
Claude Desktop
All fields are under
agents.claude-desktop.Desktop inference headers use the
--desktop-header flag; a headers key fails validation.Prompt blocking
Prompt blocking
Cursor monitoring and sign-in failures
Cursor monitoring and sign-in failures
Additional agent options
Additional agent options
Set only the keys an agent supports; others fail validation.
headersis an array of"Name: Value"strings.context_windowandmax_tokensare positive token counts that match the model. Where written, the defaults are 128000 and 16384.- The default
apiis the first value in each row. - OpenCode’s
gateway_only = truehides other providers. - Gemini CLI’s
provider_accountroutes natively through<gateway>/gemini/<account>/proxy. - VS Code’s
utility_modelis"mainAgent"(default),"copilot", or"none".insiders = truetargets VS Code Insiders.
CLI flags
Keep routine configuration in the TOML file. Add these flags to the binary’s command in your script when needed:
Prompt blocks stop new submissions, not launching the app, manual edits, or Cursor Tab completions, and native Windows hooks do not cover WSL.
Client version requirements
Older versions ignore the setting, and Codex on Windows falls back to
config.toml, which employees can override.
Files written
Managed files (locked, administrator-only)
Managed files (locked, administrator-only)
The organization policy directory holds
agents-policy.json (configuration, never credentials), agents-state.json, cursor-monitoring.json, and, for prompt blocks, agent-blocking.json with its tfy-agent-blocking.sh or .ps1 script.Employee files
Employee files