UNCUT CLI
A headless coding agent in one Go binary: reads and edits files, runs commands and never trims context silently
- 601 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- The model runs shell commands with your user's permissions and there are no approval prompts
- The file tools write and replace files in the workspace
- A session file stores source code, command output and possible secrets
Install
In your terminal, with SkillFoxx CLI
npx skillfoxx add cli/uncutDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The model runs shell commands with your user's permissions and there are no approval prompts
- The file tools write and replace files in the workspace
- A session file stores source code, command output and possible secrets
This is third-party code. Review the repository files before installing.
What it does
UNCUT is a command-line coding agent: a static Go binary with no interface, telemetry or plugins. It has four tools: `read_file`, `write_file`, `replace` and `run_command`. You pass the task as an argument and feed a log or `git diff` through a pipe: `git diff | uncut "Review this diff. Do not edit files."`. The model receives the whole conversation on every call. The agent never trims file contents or combined command output, and it never summarizes them. If the provider cuts the answer at its token limit, the agent exits with code 3 and does not present the partial text as a success. Without a final answer inside 32 steps (the default of `--max-steps`) the run ends with code 4. The model connects through any OpenAI-compatible Chat Completions endpoint, local ones included; the author tested the Ollama setup on `qwen3:8b`. The `--json` flag prints NDJSON events, and `--session file.jsonl` appends the history to a file and resumes from it.
Who it is for. Developers who run an agent in CI jobs, containers and shell scripts and want the full context with no hidden trimming.
Good fit when
- A failing-test log has to go through the model right inside a pipeline: `cat failing-test.log | uncut "Find the likely cause"`
- A CI job runs the task and another program reads the result, so the NDJSON event stream from `--json` fits
- A refactor runs across several invocations and a `--session` file keeps the history between them
- The model runs locally through Ollama and nothing may be trimmed silently
Not a fit when
- You want an interactive interface that confirms edits: UNCUT has no windows or approval prompts
- The model has to read images: the agent handles only text and tool calls
- The task must be isolated from the system: the shell runs commands with your user's permissions
- You expect plugins, background agents or automatic retries: the author left them out on purpose
Example request
Run uncut with the model from UNCUT_MODEL and have it find why the tests fail in this repositoryLimitations
UNCUT is not a sandbox: the model runs shell commands with your user's permissions, and path checks cover only the file tools. The agent rejects binary files and invalid UTF-8, and UTF-16 output on Windows too. The binaries are unsigned, so SmartScreen or Gatekeeper may warn: compare the SHA-256 with `checksums.txt` from the release. The agent does not extend a model's context window: past the limit the provider rejects the request or cuts the answer.
How to disable. Delete the `uncut` binary from `$HOME/.local/bin` (on Windows from `%LOCALAPPDATA%\Programs\UNCUT`) and unset `UNCUT_API_KEY`, `UNCUT_MODEL` and `UNCUT_BASE_URL`. Delete the `.jsonl` session files separately.
FAQ
What does exit code 3 mean?
The provider returned `finish_reason=length` or `max_tokens`: the answer was cut at its limit, and UNCUT rejects it. Raise `--max-tokens` or pick a model with a longer output window, then run again.
How do I connect a local model through Ollama?
Pull a model that supports tools, for example `ollama pull qwen3:8b`, and set `UNCUT_BASE_URL=http://localhost:11434/v1` and `UNCUT_MODEL=qwen3:8b`. A local address needs no API key. How the model calls tools depends on the model itself.
Does UNCUT read an AGENTS.md file?
Yes, it takes the whole file from the workspace root and adds it to the system message. The `--no-agents` flag turns this off. A resumed session uses the system message stored in the session file.
How can I check that nothing gets trimmed?
Build the binary and run `python bench/proof.py ./bin/uncut`. The script drives the real binary against a deterministic local provider and needs no API key. It tests data transport and does not rate model quality.
What happens when a replacement finds no match in a file?
`replace` changes exactly one occurrence: with zero or several matches the tool returns an error and the file stays as it was. The file tools' paths must stay inside the workspace set by `--cwd`. `run_command` goes through `/bin/sh -c` on Unix and `cmd.exe /D /S /C` on Windows.
Discussion
No questions or reviews yet.
Related
CLI toolsA teaching terminal coding agent in Python, built as a "nanoGPT for agents": read it, take it apart and fork it
An open coding agent for the terminal, browser and desktop that works with models from OpenAI and Claude to Ollama
A Go CLI that configures the AI coding agents you already use: it gives them shared memory, a workflow and deterministic steps without replacing the agents them
A harness for your own agent: tool loop, sessions, approvals, REPL and dashboard, with tools and skills kept as editable files.
A Go coding agent for open models: it turns a chat into tasks on separate branches, checks and merges the result and runs all projects in one window
Self-hosted AI agent in a single Go binary: terminal, web UI, chat apps and desktop all run on any compatible model
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Repository stars | Main difference |
|---|---|---|---|
| UNCUT (this card) | no | 601 | |
| Aider | no | 49,945 | holds a dialogue in the terminal, shows edits and commits them to git, while UNCUT runs without an interface or automatic commits |
| OpenCode | no | 224,591 | an agent with build and plan modes in a terminal and on desktop, while UNCUT is four tools and a pipeline |
README in short
The description opens with a promise: a 7 MB binary, four tools, plain stdin and stdout. Install steps for Linux, macOS and Windows with checksum verification follow, then a quick start and tables of variables, flags and exit codes. A separate section explains what the author calls "lossless" and warns that UNCUT is not a sandbox.