Документация доступна только на английском языке.

Configuration

Where Nib's settings files live, how they combine, and every key they accept.

Nib is configured with JSON settings files in the widely used settings.json format. You don't need any of them to get started. They exist for when you want to pin a model, pre-approve commands, add hooks or adjust the sandbox.

Settings files

ScopeFileShared?Use it for
ManagedSet by an administrator (see below)OrganizationPolicy that users can't override
Command line--allowedTools, --permission-mode, …This runOne-off overrides
Local.nib/settings.local.jsonNo. Add it to .gitignoreYour personal settings for this project. "Always allow" choices are saved here
Project.nib/settings.jsonYes. Commit itTeam settings for this project
User~/.nib/settings.jsonNoYour defaults for every project

At each scope Nib also reads the shared file (.claude/settings.local.json, .claude/settings.json, ~/.claude/settings.json). When both exist at the same scope, the .nib/ file takes precedence.

Managed settings

PlatformPaths, highest precedence first
macOS/Library/Application Support/Nib/managed-settings.json, /Library/Application Support/ClaudeCode/managed-settings.json
WindowsC:\Program Files\Nib\managed-settings.json, C:\Program Files\ClaudeCode\managed-settings.json
Linux/etc/nib/managed-settings.json, /etc/claude-code/managed-settings.json

How settings combine

Precedence, highest first: managed → command line → local → project → user.

  • Scalar values (model, effortLevel, …): the highest scope that sets the key wins.
  • Permission rules from every scope are combined, then evaluated deny → ask → allow. A deny anywhere wins.
  • Hooks from every scope all run.
  • env values are merged, with higher scopes winning per variable.

Settings are read leniently. Unknown keys are kept and ignored. A known key with an invalid value is dropped with a warning naming the file and key, and the rest of the file still applies. A file that isn't valid JSON is skipped with a warning.

What a project can't set

A repository's settings come from whoever wrote the repository, so some keys are limited:

  • Until you trust the workspace, project and local files can't set hooks, env, apiKeyHelper, statusLine, subagentStatusLine, permissions.allow, permissions.additionalDirectories or sandbox.network.allowedDomains. Deny and ask rules still apply, because they only narrow what the agent can do.
  • Ever: project and local files can't set permissions.defaultMode to auto or bypassPermissions, and can't set protected environment variables (HOME, TMPDIR, TMP, TEMP, XDG_*, OTEL_EXPORTER_OTLP_*, and the config directory variables of Nib and of the agents whose files it reads). They also can't weaken the sandbox: turning it off, opening localhost or Unix sockets, or adding readable or writable paths only works from user, managed or --settings files. Nor can they define MCP servers (mcpServers), approve the project's own servers (enableAllProjectMcpServers, enabledMcpjsonServers) or switch plugins on or off (enabledPlugins): a repository's servers go in .mcp.json, where each asks for your approval. Nor can they move auto memory (autoMemoryDirectory), a folder the agent writes in without asking.
  • Managed only: allowManagedHooksOnly and allowManagedPermissionRulesOnly take effect only in managed settings.

Example

.nib/settings.json
{
  "model": "anthropic:claude-opus-5-5",
  "effortLevel": "medium",
  "permissions": {
    "allow": ["Bash(bun test *)", "Bash(bun run lint)", "Edit(src/**)"],
    "deny": ["Read(.env)", "Read(**/*.pem)"],
    "defaultMode": "acceptEdits"
  },
  "env": {
    "NODE_OPTIONS": "--max-old-space-size=8192"
  },
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write|ApplyPatch",
        "hooks": [{ "type": "command", "command": "bunx biome format --write ." }]
      }
    ]
  }
}

Keys

Nib parses the full settings.json schema. Keys for features that aren't in Nib yet are accepted and ignored, never rejected, so a shared .claude/settings.json keeps working for every tool that reads it.

Model

KeyTypeMeaning
modelstringDefault model, as provider:model or a bare id
effortLevelstringThe effort a session runs at when none was picked for it: none, minimal, low, medium, high, xhigh, max
fallbackModelstring or string[]Model or models to try when the main model is unavailable
availableModelsstring[]Restrict the model picker to these models
outputStylestringName of an output style from .nib/output-styles/ or .claude/output-styles/
languagestringPreferred response language

Permissions

KeyTypeMeaning
permissions.allowstring[]Rules that run without asking
permissions.askstring[]Rules that always ask
permissions.denystring[]Rules that are always denied
permissions.defaultModestringdefault, acceptEdits, plan, auto, dontAsk or bypassPermissions
permissions.additionalDirectoriesstring[]Extra directories the agent may work in, besides the workspace
permissions.disableBypassPermissionsMode"disable" or booleanManaged only. Prevent bypass mode
permissions.disableAutoMode"disable" or booleanManaged only. Prevent auto mode
permissions.blockReadsOutsideWorkingDirectoriesbooleanAccepted so existing settings load, but not applied yet
allowManagedPermissionRulesOnlybooleanManaged only. Ignore rules from other scopes

Rule syntax is described in Permissions.

Hooks

KeyTypeMeaning
hooksobjectHook configuration. See Hooks
disableAllHooksbooleanTurn off hooks: every hook from managed settings, all but managed hooks from anywhere else
allowManagedHooksOnlybooleanManaged only. Run only managed hooks
allowedHttpHookUrlsstring[]URLs that http hooks may call
httpHookAllowedEnvVarsstring[]Environment variables http hooks may interpolate into headers

Sandbox

KeyTypeMeaning
sandbox.enabledbooleanRun shell commands in the OS sandbox. Default true
sandbox.failIfUnavailablebooleantrue refuses shell commands when the sandbox can't be applied; false runs them unsandboxed. Unset: unsandboxed on Windows and on Linux without bubblewrap, refused elsewhere
sandbox.filesystem.allowWrite, allowRead, denyRead, denyWritestring[]Filesystem adjustments
sandbox.network.allowedDomains, deniedDomainsstring[]Hosts reachable through the filtering proxy, and hosts always refused. Advisory on Linux
sandbox.allowUnsandboxedCommandsbooleanfalse: strict mode. Bash refuses dangerouslyDisableSandbox, and the sandbox stays on in bypass mode
sandbox.network.allowLocalBindingbooleanLet commands connect to localhost services, except the daemon's ports. Default true
sandbox.network.allowLocalPortsnumber[]With allowLocalBinding off, the localhost ports commands may connect to
sandbox.network.allowUnixSocketsstring[]Unix sockets commands may connect to

Package registries and toolchain downloads are reachable without listing them, unless deniedDomains lists them. autoAllowBashIfSandboxed, excludedCommands, filesystem.disabled, network.allowAllUnixSockets, network.httpProxyPort and network.socksProxyPort are accepted so existing settings load, but not applied yet. Settings that could weaken the sandbox are ignored in project settings. See Sandbox.

MCP

KeyTypeMeaning
mcpServersobjectServer definitions, in the same format as .mcp.json. User, managed and --settings only: project settings files can't define servers
enabledMcpjsonServersstring[]Approve these project servers
disabledMcpjsonServersstring[]Reject these project servers
enableAllProjectMcpServersbooleanApprove all project servers
disabledMcpServersstring[]Servers turned off by name, whichever file defines them, except managed ones. The app's on/off switch for a server writes here

See MCP servers. The organization policy keys allowedMcpServers, deniedMcpServers, strictKnownMarketplaces and allowedExtensions are described under Managed settings.

Instructions, skills and agents

KeyTypeMeaning
claudeMdExcludesstring[]Globs of instruction files to skip. See Memory
skillOverridesobjectPer-skill on, name-only, user-invocable-only or off
disableSkillShellExecutionbooleanDon't run !`command` in skills
agentstringRun the main session as this agent definition
agentsobjectSubagents defined inline: { "name": { "description": "…", "prompt": "…", … } }, with the same fields as an agent file
autoMemoryEnabledbooleanNotes the agent keeps about a repository between sessions. Default true; false turns them off
autoMemoryDirectorystringFolder for those notes, as an absolute path or ~/…. User, managed and --settings only. A folder that is or holds your home folder or the filesystem root, is a protected path, or is, holds or sits in a secret store is refused: auto memory stays off, with a warning that names the reason. Default: a folder per repository in the user-level folder that holds your user settings, which --data-dir doesn't move
enabledPluginsobjectPlugins switched on or off by id: { "name@marketplace": true }. Wins over the list of installed plugins
disableWorkflowsbooleanTurn off the Workflow tool
workflowSizeGuidelinestringHow many agents a workflow should stay under: small (5), medium (10, the default), large (50) or unrestricted
disableBundledSkillsbooleanTurn off the commands and workflows that come with Nib (/init, /security-review, /simplify, /recap, /statusline and /loop)

Environment and tools

KeyTypeMeaning
envobjectEnvironment variables for shell commands and hooks. Numbers and booleans are converted to strings
apiKeyHelperstringA command that prints an API key, for keys that rotate. Its key is reused for 5 minutes, or for NIB_API_KEY_HELPER_TTL_MS milliseconds, and fetched again after an authentication error
statusLineobject{ "type": "command", "command": "…" }: a command whose output is shown in the status line. padding adds up to 20 spaces before it; refreshInterval re-runs the command every that many seconds (at least 1) while the session is open somewhere
subagentStatusLineobjectThe same, for subagent rows. The command's input also names the agent
eagerToolsstring[]Tool names, or patterns ending in * such as mcp__github__*, to load up front instead of deferring. See Deferred tools
askUserQuestionTimeoutstring60s, 5m or 10m: a question nobody answers in that time closes, and the agent continues on its own assumptions. Unset, questions wait. Plan approvals always wait
promptSuggestionEnabledbooleanSuggest a next prompt after each turn, written by the small model. Default true

Git

KeyTypeMeaning
attribution.commitstringTrailer added to commits the agent makes. attribution: false turns it off
attribution.prstringText added to pull request descriptions

Other files Nib reads

FilePurpose
NIB.md, AGENTS.md, CLAUDE.md, …Instructions. See Memory
.nib/rules/*.mdInstruction rules, optionally path-scoped
.nib/skills/<name>/SKILL.mdSkills
.nib/agents/*.mdSubagents
.nib/mcp.json, .mcp.jsonMCP servers
.nib/output-styles/*.mdOutput styles

Every .nib/ path has a ~/.nib/ user-level counterpart, and a .claude/ equivalent that Nib also reads. The exception is the project's MCP server file, whose counterpart is .mcp.json at the project root.

Daemon configuration

The daemon takes its own configuration from flags and NIB_* environment variables. You rarely need these; the desktop app and CLI set them for you.

VariableDefaultMeaning
NIB_DATA_DIR~/.nibDatabase, checkpoint blobs and worktrees
NIB_HOST127.0.0.1Interface to bind. Non-loopback addresses are refused unless NIB_ALLOW_REMOTE is set
NIB_ALLOW_REMOTEfalsePermit a non-loopback interface. Intended for cloud sandboxes behind an authenticated proxy
NIB_PORT0 (random)TCP port
NIB_TOKENGenerated per launchBearer token, at least 16 characters
NIB_ALLOWED_ORIGINSThe desktop app's originsBrowser origins allowed by CORS and on WebSocket connections
NIB_LOG_LEVELinfofatal, error, warn, info, debug, trace or silent
NIB_PARENT_PID—Exit when this process exits

На этой странице