Skip to main content

Cyberstrike is now open source! AI-powered penetration testing for security professionals. Star on GitHub

Global Configuration

Global configuration sets default behavior for all Cyberstrike sessions across all projects.

📸 SCREENSHOT: global-config.png

Global configuration file location

File Location

Global configuration lives in the global config directory:

~/.config/cyberstrike/

This resolves to $XDG_CONFIG_HOME/cyberstrike when XDG_CONFIG_HOME is set.

Supported File Names

The following files are read from the global config directory and merged in order:

FileFormatPriority
config.jsonJSONLow (base, auto-generated)
cyberstrike.jsonJSONMedium
cyberstrike.jsoncJSON with CommentsHigh (preferred)

If multiple files exist, all are read and each subsequent file is merged on top of the previous one.

Directory Structure

~/.config/cyberstrike/
├── config.json ← auto-generated global config
├── cyberstrike.json ← global config
├── cyberstrike.jsonc ← global config (preferred)
├── agents/ ← custom agents (*.md) (also accepts agent/)
├── commands/ ← custom commands (*.md) (also accepts command/)
└── plugins/ ← plugins (*.ts / *.js) (also accepts plugin/)

Cyberstrike additionally scans a ~/.cyberstrike/ directory in your home folder for cyberstrike.json/cyberstrike.jsonc and the same agents/, commands/, plugins/ subfolders.

Creating Global Config

There is no init command — create the file manually:

~/.config/cyberstrike/cyberstrike.jsonc
{
// Cyberstrike global config
"$schema": "https://cyberstrike.io/config.json",
"model": "anthropic/claude-sonnet-4-20250514"
}

Model Configuration

Default Model

{
"model": "anthropic/claude-sonnet-4-20250514"
}

Format: provider/model.

Small Model

Used for lightweight tasks such as session title generation:

{
"small_model": "anthropic/claude-haiku-4-5-20251001"
}

Provider Configuration

Configure providers individually under provider. The options object is passed through to the provider SDK:

{
"provider": {
"anthropic": {
"options": {
"apiKey": "{env:ANTHROPIC_API_KEY}"
}
}
}
}

Enabling / Disabling Providers

{
"disabled_providers": ["ollama"],
"enabled_providers": ["anthropic", "openai"]
}

When enabled_providers is set, only those providers are loaded; all others are ignored. See AI Providers for per-provider details.

Theme

theme is the name of an installed theme (a string). The default is cyberstrike:

{
"theme": "cyberstrike"
}

Browse and switch themes in the TUI with the /themes command (or <leader>t). Built-in themes include cyberstrike, tokyonight, catppuccin, dracula, gruvbox, nord, github, monokai, matrix, rosepine, solarized, and more.

Keybindings

Leader Key

{
"keybinds": {
"leader": "ctrl+x"
}
}

Custom Bindings

{
"keybinds": {
"leader": "ctrl+a",
"session_new": "<leader>n",
"session_list": "<leader>l",
"model_list": "<leader>m",
"theme_list": "<leader>t",
"app_exit": "ctrl+c,ctrl+d,<leader>q"
}
}

See Keybindings for the full list of actions and defaults.

Permission Defaults

Permissions map a tool name to an action (ask, allow, or deny), or to a glob → action map. There is no separate allow/deny list — the tool key is the grouping:

{
"permission": {
"read": "allow",
"glob": "allow",
"grep": "allow",
"bash": {
"*": "ask",
"rm -rf *": "deny"
},
"edit": {
"*": "ask",
"~/.ssh/**": "deny"
}
}
}

Only * and ? are supported as wildcards. See Permissions for the full model and the list of permission keys.

MCP Servers

MCP servers are declared as a flat map under mcp, keyed by server name. Local servers use type: "local" with a single command array (command + args together); remote servers use type: "remote" with a url:

{
"mcp": {
"filesystem": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "~"],
"environment": { "DEBUG": "true" },
"enabled": true
},
"remote-api": {
"type": "remote",
"url": "https://api.example.com/mcp",
"enabled": true
}
}
}

Bolt servers are configured separately under the top-level bolt key, not under mcp. See Bolt / MCP.

Default Agent

Set the default agent (must be a primary agent; falls back to cyberstrike if unset or invalid):

{
"default_agent": "cyberstrike"
}

Custom agents are loaded from the agents/ (or agent/) directory in the config dir — see Custom Agents.

Compaction

Control automatic context compaction:

{
"compaction": {
"auto": true,
"prune": true
}
}
OptionDescription
autoAuto-compact when the context is full (default: true)
prunePrune old tool outputs (default: true)

Logging & Updates

{
"logLevel": "INFO",
"autoupdate": "notify"
}

logLevel is one of DEBUG, INFO, WARN, ERROR (default INFO). autoupdate accepts true, false, or "notify".

Full Example

~/.config/cyberstrike/cyberstrike.jsonc
{
"$schema": "https://cyberstrike.io/config.json",
"model": "anthropic/claude-sonnet-4-20250514",
"small_model": "anthropic/claude-haiku-4-5-20251001",
"default_agent": "cyberstrike",
"theme": "cyberstrike",
"share": "manual",
"autoupdate": "notify",
"provider": {
"anthropic": {
"options": {
"apiKey": "{env:ANTHROPIC_API_KEY}"
}
}
},
"permission": {
"read": "allow",
"edit": { "*": "ask" },
"bash": { "*": "ask", "rm -rf *": "deny" }
},
"mcp": {
"filesystem": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "."],
"enabled": true
}
},
"keybinds": { "leader": "ctrl+x" },
"compaction": { "auto": true, "prune": true }
}

Backup

Terminal window
cp ~/.config/cyberstrike/cyberstrike.jsonc ~/.config/cyberstrike/cyberstrike.jsonc.backup

Security Considerations

File Permissions

Terminal window
chmod 600 ~/.config/cyberstrike/cyberstrike.jsonc
chmod 700 ~/.config/cyberstrike/

Sensitive Data

Never store API keys directly — reference environment variables instead:

{
"provider": {
"anthropic": {
"options": {
"apiKey": "{env:ANTHROPIC_API_KEY}"
}
}
}
}

Caution

Always use environment variable references ({env:VAR}) for sensitive data like API keys.