Skip to main content
This page lists every option for an MDM rollout. For guidance on when to use them, see the overview and the Claude and Codex pages.

File format

Pass the file to the binary with --config=/absolute/path/mdm.toml.
  • The format follows the file extension: .json is read as JSON, .yaml and .yml are 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.
This file is separate from personal setup’s ~/.tf/config.toml and from the agents-policy.json file that the binary generates.

Fields

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.
[[mcp.custom]] is not applied in MDM rollouts. Register custom servers in the gateway and use their registry names.
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.
All fields are under agents.claude-desktop.Desktop inference headers use the --desktop-header flag; a headers key fails validation.
Set only the keys an agent supports; others fail validation.
  • headers is an array of "Name: Value" strings.
  • context_window and max_tokens are positive token counts that match the model. Where written, the defaults are 128000 and 16384.
  • The default api is the first value in each row.
  • OpenCode’s gateway_only = true hides other providers.
  • Gemini CLI’s provider_account routes natively through <gateway>/gemini/<account>/proxy.
  • VS Code’s utility_model is "mainAgent" (default), "copilot", or "none". insiders = true targets 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

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.
With device login, managed agent files contain the employee’s credential. When you contact support, share your TOML and log errors, not token files, dry-run output, or generated agent files.