AgentStack
MCP verified Apache-2.0 Self-run

Sofos Code

mcp-alexylon-sofos-code · by alexylon

Terminal-based AI coding assistant with Claude/OpenAI support, secure local tools, web search, and MCP integrations.

No reviews yet
0 installs
7 views
0.0% view→install

Install

$ agentstack add mcp-alexylon-sofos-code

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Sofos Code? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Sofos Code

  [](https://crates.io/crates/sofos)

Sofos Code is a terminal-based AI coding assistant for software projects. It connects Claude or OpenAI models to local tools for reading code, editing files, running approved commands, searching the web, viewing images, and using external tools through the Model Context Protocol (MCP).

Sofos is written in Rust and runs in your terminal. Its access model is explicit: project files are available by default, while external paths and higher-risk actions require approval or configuration.

Sofos runs on macOS, Linux, and Windows. On macOS and Linux, the default shell mode uses an operating-system sandbox when the required platform support is available. On Windows, command confinement is disabled in this release. The bash executor still runs commands through the sh.exe provided by Git for Windows, which Sofos can find at the standard install path even when an integrated terminal does not expose Git on PATH.


Table of contents

  • [What Sofos does](#what-sofos-does)
  • [Key features](#key-features)
  • [Installation](#installation)
  • [Requirements](#requirements)
  • [Prebuilt binary](#prebuilt-binary)
  • [Install with Cargo](#install-with-cargo)
  • [Install from source](#install-from-source)
  • [Quick start](#quick-start)
  • [Usage](#usage)
  • [Interactive commands](#interactive-commands)
  • [Input behaviour](#input-behaviour)
  • [One-shot prompts](#one-shot-prompts)
  • [Image vision](#image-vision)
  • [CLI reference](#cli-reference)
  • [Models and reasoning effort](#models-and-reasoning-effort)
  • [Tools](#tools)
  • [Native tools](#native-tools)
  • [Read-only mode tools](#read-only-mode-tools)
  • [MCP tools](#mcp-tools)
  • [Security model](#security-model)
  • [Workspace and external paths](#workspace-and-external-paths)
  • [Access modes](#access-modes)
  • [Sandboxing: reads vs. writes](#sandboxing-reads-vs-writes)
  • [Bash command permissions](#bash-command-permissions)
  • [Destructive operations](#destructive-operations)
  • [Configuration](#configuration)
  • [Custom instructions](#custom-instructions)
  • [Permissions](#permissions)
  • [MCP servers](#mcp-servers)
  • [Sessions and cost tracking](#sessions-and-cost-tracking)
  • [Development](#development)
  • [Project structure](#project-structure)
  • [Release process](#release-process)
  • [Troubleshooting](#troubleshooting)
  • [License](#license)
  • [Acknowledgments](#acknowledgments)
  • [Links](#links)

What Sofos does

Sofos provides an AI assistant with controlled access to your project from inside the terminal. It can:

  • inspect files and directories;
  • search code with ripgrep;
  • edit files with exact replacements or Morph Apply;
  • create, move, copy, and delete files with permission checks;
  • run approved build, test, and inspection commands;
  • fetch documentation and use provider-native web search;
  • open local image files or remote image URLs;
  • accept image pastes from the clipboard;
  • keep a visible task plan during multi-step work;
  • save and resume conversations;
  • connect to external tools through MCP servers.

The assistant acts through visible tool calls. Dangerous commands are blocked, deletion prompts for confirmation, and access outside the workspace is controlled by separate permission scopes.


Key features

  • Terminal interface — Inline viewport at the bottom of your terminal while normal scrollback remains available.
  • Claude and OpenAI support — Shared provider layer with provider-specific streaming, reasoning, web search, and cache handling.
  • Streaming Markdown — Responses render as they arrive, including code blocks, headings, lists, tables, blockquotes, and links.
  • Iterative tool use — The model can use tools across multiple steps, with a hard limit to prevent endless loops.
  • Safe file editing — Exact edits, chunked writes, visual diffs, atomic writes, and optional Morph Apply.
  • Explicit permissions — Separate Read, Write, and Bash grants for paths outside the workspace.
  • Bash safety checks — Command tiers and structural checks for parent traversal, hidden subcommands, ANSI-C quoting, unconfined redirection, and dangerous Git operations.
  • Access presets — Five permission modes: read-only, sandboxed-ask, sandboxed-retry, sandboxed-strict, and unsandboxed.
  • Image vision — Local image files, remote image URLs, and pasted clipboard images.
  • MCP integration — Tools from stdio or streamable HTTP MCP servers.
  • Session persistence — Saved conversations with compatible model, permission preset, and cost counters restored.
  • Cost visibility — Token totals, cache usage, and provider-specific cost estimates.
  • Context compaction — Local and provider-supported compaction for older conversation context.

Installation

Requirements

Set at least one provider API key:

  • ANTHROPIC_API_KEY for Claude models; or
  • OPENAI_API_KEY for OpenAI models.

Optional tools and keys:

  • ripgrep, recommended for fast code search through search_code;
  • MORPH_API_KEY, required for the morph_edit_file tool.

On Linux, the sandboxed-* presets need Bubblewrap (bwrap) for operating-system command confinement. Without it, Sofos starts unsandboxed and the sandboxed presets are disabled. Install it with your distribution's package manager:

# Debian / Ubuntu
sudo apt update
sudo apt install bubblewrap

# Fedora / RHEL
sudo dnf install bubblewrap

# Arch
sudo pacman -S bubblewrap

Bubblewrap also relies on kernel support for user namespaces, which is enabled by default on most modern distributions.

Prebuilt binary

Download the latest binary from GitHub Releases.

# macOS / Linux
tar xzf sofos-*.tar.gz
sudo mv sofos /usr/local/bin/

# Windows
# Extract the .zip archive and add the extracted folder to PATH.

On macOS, Gatekeeper may block the first run. Open System Settings → Privacy & Security, then choose Allow Anyway for the Sofos binary.

Install with Cargo

cargo install sofos

Install from source

git clone https://github.com/alexylon/sofos-code.git
cd sofos-code
cargo install --path .

Keep .sofos/ out of version control. It stores sessions, local permissions, and personal settings. AGENTS.md is project-level context and is intended to be version controlled.


Quick start

Set a provider key:

export ANTHROPIC_API_KEY='your-anthropic-key'
# or
export OPENAI_API_KEY='your-openai-key'

Optionally enable Morph Apply edits:

export MORPH_API_KEY='your-morph-key'

Start the interactive assistant:

sofos

Use a different model:

sofos --model gpt-5.5
sofos --model claude-opus-4-8 -e high

Run one prompt and exit:

sofos -p "Review the error handling in src/error.rs"

Start with inspection tools only:

sofos --readonly

Resume a saved session:

sofos --resume

Usage

Interactive commands

| Command | Description | |---|---| | /resume | Open the session picker and resume a saved conversation. | | /clear | Clear the current conversation history and start a new session id. | | /compact | Compact older context to reduce token usage. | | /effort | Open the reasoning-effort picker. The picker lists only the levels supported by the active model. Use Up / Down to select, Enter to switch, and Esc to cancel. | | /effort off\|low\|medium\|high\|xhigh\|max | Switch directly to a reasoning level. Unsupported levels print a clear error. | | /model | Open the model picker. Use Up / Down to select, Enter to switch, and Esc to cancel. Models from the other provider are greyed out because the API client is fixed at startup. | | /model | Switch directly to a model on the active provider. To switch provider, restart Sofos with --model . | | /permissions | Open the permission preset picker. The presets are read-only, sandboxed-ask, sandboxed-retry, sandboxed-strict, and unsandboxed. Use Up / Down to select, Enter to switch, and Esc to cancel. Where sandboxing is unavailable, such as Windows, the sandboxed-* presets are shown but disabled. | | /permissions | Switch directly to a permission preset. | | /exit, /quit, /q, Ctrl+D | Save the session and exit with a cost summary. | | Esc or Ctrl+C while busy | Interrupt the current AI turn. |

Input behaviour

  • Enter submits the current message.
  • Shift+Enter inserts a newline when the terminal supports it.
  • Alt+Enter and Ctrl+Enter are newline fallbacks.
  • Ctrl+U deletes from the cursor to the start of the line.
  • Ctrl+W deletes the previous word.
  • Ctrl+K deletes from the cursor to the end of the line.
  • These editing shortcuts match common readline behaviour used by bash, zsh, and fish.
  • Alt+Up and Alt+Down move through previously submitted prompts. Sofos preserves the current draft and restores it when you move past the newest entry.
  • Typing / at the start of the input opens command suggestions. Use Up / Down to select, Enter to run the selected command, Tab to insert it into the input, and Esc or Ctrl+C to dismiss the list.
  • You can keep typing while the model is working. New messages are queued and processed in order.
  • If the model is inside a tool loop, a queued message is delivered at the next tool-result boundary. This lets you steer the current turn without interrupting it.
  • The status line shows the model, permission mode, reasoning setting, running token totals, and cache token counters when available.

One-shot prompts

One-shot mode sends a prompt, runs the assistant turn, saves the session, prints a summary, and exits.

sofos -p "Find the likely cause of the failing tests"
sofos -p "Create a high-level summary of this crate" --readonly

Image vision

Ask about an image by mentioning the file path or URL in your message. Sofos will call view_image to open it.

What is wrong in ./screenshots/error.png?
Describe ./docs/architecture-diagram.webp.
Review https://example.com/chart.png
What do you see in the images in ./assets/?

For a folder, Sofos lists the directory first, then opens each image one by one.

Clipboard paste:

Ctrl+V    # Inserts a numbered marker such as ①.

Supported formats are JPEG, PNG, GIF, and WebP. Local images are limited to 20 MB. Images larger than 2048 pixels on the long side are scaled down proportionally before being sent to the model, so large screenshots do not inflate token usage unnecessarily. Images outside the workspace require Read permission the first time, like any other external file.


CLI reference

-p, --prompt           Run one prompt and exit.
    --readonly               Start in read-only mode with inspection tools only.
    --no-sandbox             Start unsandboxed: run shell commands without operating-system confinement.
-r, --resume                 Resume a previous session.
    --check-connection       Check provider connectivity and exit.
    --api-key           Anthropic API key. Overrides ANTHROPIC_API_KEY.
    --openai-api-key    OpenAI API key. Overrides OPENAI_API_KEY.
    --morph-api-key     Morph API key. Overrides MORPH_API_KEY.
    --model           Model to use. Default: claude-sonnet-4-6.
    --morph-model     Morph model to use. Default: morph-v3-fast.
    --max-tokens          Maximum output tokens per response. Default: 32768.
-e, --reasoning-effort   off, low, medium, high, xhigh, or max. Default: medium.

--max-tokens must be greater than 16384 when reasoning effort is enabled. The hidden, deprecated --thinking-budget flag still parses for backwards compatibility, but it has no effect and is intentionally omitted from the CLI help.


Models and reasoning effort

Sofos supports these models, shown in /model picker order:

| Model | Provider | |---|---| | claude-fable-5 | Anthropic | | claude-opus-4-8 | Anthropic | | claude-sonnet-4-6 (default) | Anthropic | | claude-haiku-4-5 | Anthropic | | gpt-5.5 | OpenAI | | gpt-5.4 | OpenAI | | gpt-5.4-mini | OpenAI | | gpt-5.3-codex | OpenAI |

--model accepts only the values above. Any other value is refused at startup and Sofos prints the supported list. The same list drives the /model picker, so the CLI and picker stay consistent.

Sofos exposes six reasoning levels:

off, low, medium, high, xhigh, max

The active model determines which levels are valid. Sofos validates the level at startup and when /effort is used, so unsupported combinations fail before a provider request is sent.

Examples:

sofos -e medium                       # Default balance.
sofos -e off                          # Lowest-cost path.
sofos -e high                         # More reasoning for hard tasks.
sofos -e max --model claude-opus-4-8  # Highest Anthropic adaptive level.
sofos -e xhigh --model gpt-5.5        # Highest OpenAI gpt-5 reasoning level.

Support matrix:

| Effort | Fable 5 | Opus 4.8 | Sonnet 4.6 | Haiku 4.5 | OpenAI gpt-5 reasoning models | |---|:---:|:---:|:---:|:---:|:---:| | off | ✓ | ✓ | ✓ | ✓ | ✓ | | low | ✓ | ✓ | ✓ | ✓ | ✓ | | medium | ✓ | ✓ | ✓ | ✓ | ✓ | | high | ✓ | ✓ | ✓ | ✓ | ✓ | | xhigh | ✓ | ✓ | ✗ | ✗ | ✓ | | max | ✓ | ✓ | ✓ | ✗ | ✗ |

Provider mapping:

  • OpenAI sends reasoning.effort. off maps to minimal reasoning and suppresses reasoning summaries.
  • Claude Fable 5, Opus 4.8, and Sonnet 4.6 use adaptive thinking. The provider chooses the token budget from the effort level.
  • Claude Haiku 4.5 uses fixed legacy thinking budgets for low, medium, and high. off disables extended thinking.

Tools

Native tools

| Tool | Purpose | |---|---| | list_directory | List one directory. Use glob_files for recursive discovery. | | read_file | Read a file. External paths require Read permission. | | glob_files | Find files recursively with glob patterns. Build and vendor directories are skipped by default. | | search_code | Search code with ripgrep when rg is installed. | | write_file | Create, overwrite, or append to a file. External paths require Write permission. | | edit_file | Replace exact text in an existing file. Non-global edits require one unique match. Use replace_all only for intentional global replacement. External paths require Read and Write permission. | | morph_edit_file | Apply fast Morph edits when MORPH_API_KEY is configured. External paths require Read and Write permission. | | create_directory | Create directories. External paths require Write permission. | | move_file | Move or rename files or directories. External paths require Write permission. | | copy_file | Copy files. External sources require Read permission, and external destinations require Write permission. | | delete_file | Delete a file after confirmation. External paths require Write permission. | | delete_directory | Delete a directory after confirmation. External paths require Write permission. | | execute_bash | Run approved shell commands through the bash permission system. | | update_plan | Show the current task plan with pending, in_progress, and completed statuses. | | view_image | Attach a local image file or an http(s):// URL to the conversation so the model can see it. | | web_fetch | Fetch a URL and return readable text. | | web_search | Use provider-native web search. |

Clipboard pastes are not routed through a tool. Pressing Ctrl+V in the prompt attaches the image directly to the message.

Read-only mode tools

Read-only mode is enabled with --readonly or the read-only preset in /permissions. It limits the native tool set to:

  • list_directory;
  • read_file;
  • glob_files;
  • search_code when ripgrep is installed;
  • update_plan;
  • view_image

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.