Configuration
Three layers — user, project and environment variables; most settings can be changed from CLI commands or desktop settings.
Neox configuration has three layers: user-level (shared by all projects), project-level (one project directory only) and environment variables (this run only, handy for CI or quick overrides).
User-level
The desktop app and the CLI use the same directory on every platform:
| Platform | Path |
|---|---|
| macOS / Linux | ~/.neox/ |
| Windows | %USERPROFILE%\\.neox\\ |
Files you may touch:
~/.neox/
├── config.json models / providers / MCP / preferences
├── INSTRUCTIONS.md global agent instructions (optional)
├── skills/ global skills
├── agents/ custom subagent roles
├── keybindings.json CLI key bindings (optional)
└── logs/ logsThe same directory also holds encrypted credential files that Neox manages itself — don't edit them. Back up config.json before editing it by hand.
Project-level
In the project root:
<project>/
├── .neox/
│ ├── INSTRUCTIONS.md project agent instructions
│ ├── skills/ project skills
│ ├── agents/ project subagent roles
│ └── mcp.json project MCP config
└── NEOX.md same as .neox/INSTRUCTIONS.mdInstruction files can also be AGENTS.md, CLAUDE.md and others — see Rules for the lookup order. A repository's mcp.json must be approved before it connects; see MCP.
Common settings
Most settings have a ready-made entry point, so you rarely need to edit files:
| Task | CLI | Desktop |
|---|---|---|
| Add a bring-your-own-key provider | neox provider add or /provider | Settings → Models → Providers |
| Switch model | /model | The model menu in the input box |
| Approval level | /approval | Settings → Agent → Permissions |
| MCP | neox mcp ... or /mcp | Settings → Agent → MCP |
In config.json the approval level is approvalMode: auto (ask only for risky actions, the default), manual (ask every step) or dangerous (never ask).
Environment variables
# Logs and debugging
NEOX_DEBUG=1 # more verbose debug output
NEOX_DUMP_LLM_PAYLOAD=1 # write each turn's full request to ~/.neox/logs/llm-requests/
# CLI behavior
NEOX_NON_INTERACTIVE=1 # non-interactive
NEOX_DISABLE_AUTO_UPDATE_CHECK=1 # don't check for updates
NEOX_THEME=slate # colors: neox / slate / warm / mono / nord / neon
NEOX_BG=dark # force a light / dark background
# Running commands
NEOX_OS_SANDBOX=on # OS sandbox (macOS Seatbelt / Linux bubblewrap / Windows AppContainer)
NEOX_BASH_DEFAULT_TIMEOUT_MS=120000 # foreground wait; longer commands move to the background
NEOX_BASH_MAX_TIMEOUT_MS=600000 # hard ceiling
NEOX_DISABLE_FG_ADOPT=1 # never move to the background
# Subagents
NEOX_MAX_AGENT_THREAD_DEPTH=3 # max subagent nesting depth
NEOX_MAX_CONCURRENT_AGENTS=3 # max subagents running at once
# Background service
NEOX_USE_DAEMON=1 # connect the CLI to the background service; see the Daemon page
