Skip to content

Settings files

Lime config is merged from five scopes, lowest to highest precedence:

#ScopeFilesCommitted?
1PolicyPath from LIME_MANAGED_SETTINGS (enterprise / policy layer)n/a
2User~/.lime/settings.json, ~/.lime/config.tomlNo
3Project.lime.json, .lime/settings.json, .lime/config.toml, .mcp.json (MCP servers only)Usually yes
4Local.lime/settings.local.json, .lime/settings.local.tomlNo
5CLI flags--settings FILE_OR_JSON, --permission-mode, --dangerously-skip-permissionsn/a

Within a single scope, TOML follows JSON (TOML wins on conflict). Later sources deep-merge and override earlier ones.

Restricting the merge

Terminal window
lime --setting-sources user,local # ignore project + policy
lime --settings ./test-overlay.json # bolt one extra layer on top

--settings accepts either a path to a JSON/TOML file, or inline JSON. --setting-sources is a CSV of policy, user, project, local, flag.

Top-level keys

{
"model": "gpt-5.4",
"models": {
"default": { "slug": "gpt-5.4" },
"high": { "slug": "claude-opus-4-7", "reasoningEffort": "high" },
"low": { "slug": "gpt-5.4-nano", "verbosity": "low" }
},
"permissions": {
"defaultMode": "acceptEdits",
"allow": ["read_file", "glob_search", "grep_search"],
"ask": ["write_file", "edit_file"],
"deny": ["bash"],
"additionalDirectories": ["/var/log/myapp"]
},
"reasoningEffort": "medium",
"verbosity": "medium",
"hooks": {
"PreToolUse": ["./scripts/before_tool.sh"],
"PostToolUse": ["./scripts/log_tool.sh"]
},
"mcpServers": {
"sqlite": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "./data.db"]
}
},
"plugins": {
"externalDirectories": ["/path/to/plugins"],
"marketplaceUrl": "https://marketplace.lime.dev"
},
"enabledPlugins": { "my-plugin": true },
"sandbox": {
"enabled": true,
"namespaceRestrictions": true,
"networkIsolation": true,
"filesystemMode": "workspace-only",
"allowedMounts": ["/tmp"]
}
}
KeyTypeNotes
modelstringShorthand for models.default.slug.
modelsobjectPer-tier (default, high, low) overrides — slug, autoCompactThreshold, reasoningEffort, verbosity.
permissionsobjectSee Permission model. defaultMode is User+Local-only.
reasoningEffortstringOne of none, low, medium, high, xhigh. Applies when the model supports it.
verbositystringOne of low, medium, high.
hooksobjectSee Hooks. Twelve event names.
mcpServersobjectSee MCP transports & config. Trusted-pin: User+Local-only.
pluginsobjectexternalDirectories, installRoot, registryPath, bundledRoot, marketplaceUrl, extraMarketplaceUrls, marketplaceAutoUpdates.
enabledPluginsobjectMap of pluginId → bool. Legacy alternative to plugins.enabled.
sandboxobjectSee Sandboxing.

Trusted-settings pin

permissions.defaultMode and mcpServers resolve from User + Local (and Policy) only — Project values are ignored for trust resolution and a diagnostic warning is logged. This prevents a checked-in repo file from silently lowering trust on a teammate’s machine. The rest of the config (permissions.allow/deny/ask, hooks, plugins, sandbox) merges normally.

TOML form

Both JSON and TOML are accepted. Starting fresh, JSON is the simpler choice. The TOML form is useful when you want comments without //:

.lime/config.toml
model = "claude-opus-4-7"
[permissions]
defaultMode = "acceptEdits"
allow = ["read_file", "glob_search"]
ask = ["write_file"]
deny = ["bash"]

Inspecting the resolved config

/config Pretty-print all resolved sections.
/config env Provider credentials & Lime knobs (redacted).
/config hooks Hooks resolved for the current session.
/config model Model catalog with built-in vs user tags.
/config plugins Plugin discovery and enable state.