Settings

Settings

Syntic Code is configured through settings.json files. Settings cascade — project overrides user, user overrides system defaults.

File Locations

PathScopePrecedence
<repo>/.syntic/settings.local.jsonPer-developer override (gitignored)Highest
<repo>/.syntic/settings.jsonProject (committed)High
~/.syntic/settings.jsonUserMedium
/etc/syntic/settings.jsonSystem (managed by IT)Low

A managed enterprise policy file at /etc/syntic/managed.json always wins. Use it to enforce non-negotiable rules.

Schema

{
  "model": {
    "default": "kimi-k2-6",
    "fallback": "claude-sonnet-4-6",
    "temperature": 0.2
  },
  "permissions": {
    "mode": "approve",
    "allow": [
      "Bash(npm test:*)",
      "Bash(git status)",
      "Read(**)",
      "Edit(**)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(git push --force:*)"
    ]
  },
  "hooks": {
    "PreToolUse": [],
    "PostToolUse": [],
    "Stop": []
  },
  "mcpServers": {},
  "skills": {
    "enabled": ["writing-migrations", "writing-skills"],
    "disabled": []
  },
  "telemetry": {
    "enabled": true,
    "endpoint": "https://telemetry.syntic.ai"
  },
  "ui": {
    "theme": "dark",
    "fontSize": 14,
    "statusLine": "syntic-default"
  }
}

Common Settings

Switch Models Globally

{ "model": { "default": "kimi-k2-6" } }

See Models for the full provider matrix.

Permission Mode

ModeDescription
approveDefault — prompt for state-changing tools
planPlan Mode — no writes without explicit exit
accept-editsAuto-accept Edit/Write within the allow-list
bypassNo prompts (use with hooks for safety)

Allow / Deny Patterns

Patterns use glob-like matching:

{
  "allow": ["Bash(npm test:*)", "Bash(git diff:*)", "WebFetch(domain:github.com)"],
  "deny":  ["Bash(curl:*)", "Edit(.env)"]
}

deny always wins over allow.

Skill Allowlist

{
  "skills": {
    "enabled": ["writing-migrations", "@acme/internal-deploy"],
    "directories": ["~/.syntic/skills", "./skills"]
  }
}

CLI Access

syntic config get model.default
syntic config set model.default kimi-k2-6
syntic config list --scope project

Environment Variable Overrides

Any setting can be overridden via env var using uppercase dot-to-underscore conversion:

SYNTIC_MODEL_DEFAULT=claude-sonnet-4-6 syntic
SYNTIC_PERMISSIONS_MODE=plan syntic

Env vars > settings.local > settings (project) > user > system.

  • Permissions — Detailed permission patterns
  • Hooks — Hook configuration schema
  • Models — Model and provider IDs