Configuration
Verboo Code uses JSON files for configuration. There are three scopes:
| File | Scope | Committed? |
|---|---|---|
~/.verboo/settings.json |
Global (all projects) | N/A |
.verboo/settings.json |
Project | Yes (recommended) |
.verboo/settings.local.json |
Local project | No (gitignored) |
Configuration is merged in that order — local settings override project, which override global.
Full schema
{
"permissions": {
"defaultMode": "ask",
"allow": [],
"deny": []
},
"env": {},
"model": "",
"mcpServers": {},
"hooks": {},
"plugins": [],
"autoCompact": true,
"cleanupPeriodDays": 30
}Permissions
`permissions.defaultMode`
Default behavior for tools without an explicit rule:
| Value | Behavior |
|---|---|
"ask" |
Asks the user (default) |
"auto" |
Automatic approval of safe operations |
"bypassPermissions" |
Ignores all permissions (only for controlled environments) |
`permissions.allow`
List of always-approved tools. Syntax:
{
"permissions": {
"allow": [
"Bash",
"Bash(npm run *)",
"Bash(git *)",
"Edit",
"Read",
"WebFetch(domain:github.com)",
"WebFetch(domain:raw.githubusercontent.com)",
"Glob",
"Grep"
]
}
}Supported patterns:
| Pattern | Means |
|---|---|
"Bash" |
Any bash command |
"Bash(npm *)" |
Bash with npm prefix |
"WebFetch(domain:example.com)" |
WebFetch only for that domain |
"Edit" |
Any file edit |
"Write(path:/tmp/*)" |
Write only in /tmp |
`permissions.deny`
List of always-blocked tools (takes priority over allow):
{
"permissions": {
"deny": [
"Bash(rm -rf *)",
"Bash(sudo *)",
"WebFetch(domain:internal.company.com)"
]
}
}Environment variables
The env block injects environment variables into the agent session:
{
"env": {
"NODE_ENV": "development",
"DATABASE_URL": "postgres://localhost:5432/dev",
"DEBUG": "app:*"
}
}Never put secrets in
settings.json(committed). Usesettings.local.jsonfor sensitive variables.
Model
Override the model for the session:
{
"model": "claude-sonnet-4-6"
}Can be any model supported by the configured provider.
MCP Servers
MCP server configuration (see MCP for detailed examples):
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./"],
"disabled": false
}
}
}Hooks
Lifecycle hook configuration (see Hooks for examples):
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "prettier --write '{{tool_input.file_path}}' 2>/dev/null || true",
"async": true
}
]
}
],
"Stop": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Verboo Code finished\" with title \"Verboo\"'",
"async": true
}
]
}
]
}
}Auto-compaction
{
"autoCompact": true
}When true, Verboo Code automatically compacts context when approaching the context window limit. Disable if you prefer manual control via /compact.
Session cleanup
{
"cleanupPeriodDays": 30
}Sessions older than this number of days are automatically removed.
Plugins
{
"plugins": [
{
"name": "my-plugin",
"source": "https://marketplace.verboo.ai/plugins/my-plugin"
}
]
}SSH configuration (remote sessions)
{
"sshConfig": {
"host": "my-server.com",
"user": "ubuntu",
"identityFile": "~/.ssh/id_rsa",
"port": 22
}
}Attribution customization
{
"attribution": {
"coAuthoredBy": false
}
}Disables automatic addition of Co-Authored-By: Verboo Code in commits.
Complete example
Typical settings.json for a project:
{
"permissions": {
"defaultMode": "ask",
"allow": [
"Bash(npm run *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)",
"Read",
"Edit",
"Glob",
"Grep",
"WebFetch(domain:docs.npmjs.com)",
"WebFetch(domain:developer.mozilla.org)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(sudo *)"
]
},
"env": {
"NODE_ENV": "development"
},
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "npx prettier --write '{{tool_input.file_path}}' 2>/dev/null || true",
"async": true
}
]
}
]
}
}And settings.local.json (gitignored) with secrets:
{
"env": {
"DATABASE_URL": "postgres://user:password@localhost:5432/dev",
"OPENAI_API_KEY": "sk-..."
}
}