Built-in Tools
Cyberstrike’s core tools for reading/writing files, running shell commands, and keeping persistent notes across sessions.
File Operations
Five tools for interacting with the filesystem.
Read
Reads file contents with line numbers. Also handles images, PDFs, and binary files.
> Read the contents of src/auth/login.ts> Read lines 50-100 of src/auth/login.ts> Read the screenshot at ./evidence/vuln-poc.pngWrite
Creates or overwrites a file.
> Write a Python script to exploit the SQL injection to exploit.pyCaution
Write overwrites existing files without warning. Use Edit for partial modifications.
Edit
Makes precise string replacements in existing files. Requires reading the file first.
> Edit src/auth/login.ts to replace the raw SQL concatenation with a parameterized queryUse replace_all to change every occurrence at once.
Glob
Finds files by glob pattern.
| Pattern | Matches |
|---|---|
**/*.ts | All TypeScript files |
src/**/*.test.ts | Test files in src |
**/.env* | Environment files |
**/secret* | Files with “secret” in name |
Grep
Searches file contents with regex.
> Search for API key patterns in the codebase| Purpose | Pattern |
|---|---|
| SQL Injection | (SELECT|INSERT|UPDATE|DELETE).*\+.*\$ |
| Command Injection | (exec|spawn|system)\s*\( |
| Hardcoded Secrets | (password|secret|key)\s*=\s*['"][^'"]+ |
| XSS Sinks | (innerHTML|outerHTML|document\.write) |
File Permissions
| Permission | Tools | Default |
|---|---|---|
read | Read | ask |
edit | Write, Edit | ask |
glob | Glob | allow |
grep | Grep | allow |
Auto-approve writes to specific paths:
{ "permission": { "edit": { "reports/**": "allow", "findings/**": "allow" } }}Only * and ? are supported as wildcards. See Permissions for the full model.
Bash
Executes shell commands with timeout control and permission gating.
Usage
> Run nmap scan on 192.168.1.1> Find all .env files and search for API keysTimeout
Commands timeout after 120 seconds by default. For long-running operations, the agent uses an explicit timeout wrapper or background execution.
Piping Input
echo "analyze this code" | cyberstrike runnmap -sV target.local | cyberstrike run "analyze these scan results"Bash Permissions
The bash permission maps a glob (matched against the command string) to an action:
{ "permission": { "bash": { "nmap *": "allow", "nuclei *": "allow", "rm -rf *": "deny" } }}See Permissions for the full model.
Memory
Four tools for persistent notes stored as Markdown files in your project.
Tools
| Tool | Purpose |
|---|---|
memory_write | Append a note to long-term memory or daily notes |
memory_read | Read a specific memory file by name or date |
memory_search | Full-text search across all stored notes |
memory_context | Load full memory context (long-term + recent daily notes) |
Storage Layout
.cyberstrike/├── MEMORY.md ← long-term memory (decisions, preferences, facts)└── memory/ └── 2026-07-03.md ← dated daily notesMEMORY.md— durable, long-term facts. Each entry is appended with an ISO timestamp heading.memory/YYYY-MM-DD.md— per-day notes, each starting with a# Daily Notes - <date>heading and timestamped entries.
Global memory (shared across projects) lives under ~/.config/cyberstrike/memory/.
memory_write
parameters: content: string — the note content type: "long_term" | "daily" — defaults to "daily" title: string? — optional headingLong-term entries go into MEMORY.md, daily entries go into memory/<today>.md.
memory_read
Accepts these values for the file parameter:
| Value | What it reads |
|---|---|
"long_term" or "memory.md" | MEMORY.md |
"today" or "daily" | Today’s daily notes |
"yesterday" | Yesterday’s daily notes |
"YYYY-MM-DD" | A specific date’s notes |
"list" | Lists all available memory files (most recent first) |
memory_search
Simple text search across MEMORY.md and all daily note files. Returns up to 20 matches with surrounding context (2 lines before, 2 after).
memory_context
Returns the combined context of long-term memory + today’s notes + yesterday’s notes. Automatically called at session start but can be invoked manually to refresh.
Because everything is Markdown on disk, you can read, edit, or version-control memory like any other project file.
Dynamic Tool Loading
Built-in tools are always available. MCP tools are loaded on demand so that connecting a server with hundreds of tools doesn’t flood the model’s context.
Loading Tools
| Tool | Purpose |
|---|---|
tool_search | Find MCP tools by capability (accepts query and optional limit) |
load_tools | Load specific tools into the active context |
unload_tools | Remove loaded tools to free context |
list_loaded_tools | Show which tools are currently loaded |
The agent uses these automatically: it searches for a capability, loads the matching MCP tool, calls it, and can unload it afterward.
{ "query": "sql injection testing", "limit": 10}What’s Lazy vs Always-On
- Always available — every built-in tool (
bash,read,edit,glob,grep,write,task,webfetch,websearch, memory tools, …). - Loaded on demand — tools exposed by connected MCP servers (including Bolt). Discovered with
tool_searchand pulled in withload_tools.
Disabling a Tool
The tools config maps tool name → boolean. Set a tool to false to disable it:
{ "tools": { "websearch": false }}Related Documentation
- Tools Overview — All tools and permissions
- Permissions — Permission model and glob patterns
- MCP — Connecting MCP servers