
chargehand
io.github.EgoushkaPublished by GitHub account Egoushkav0.19.23Updated Nov 13, 2026
Runs coding-agent workers on a codebase question; every claim in the answer carries evidence.
Overview
Runs read-only coding-agent sessions on a repository and returns answers whose claims each cite a file and lines at a pinned commit.
- What you can do
- Ask questions about a codebase and get typed results with claims, citations, open questions, confidence and cost
- Run preset-driven sessions with token and dollar budgets, optional splitting into read-only subtasks, and approval stops
- Write a tested branch or draft pull request through a code preset and sandboxed driven batches
- Inspect run logs, cache and routes, and gate prompt or preset changes with paired evals
- Use it from an MCP client, an HTTP API, a CLI, a browser operator console or a Claude Code plugin command
- When to use it
- Useful when you want an assistant's answers about a repository to be checkable rather than prose: each claim points at a file and line range at a pinned commit, and unresolved claims are moved to open questions. Also suited to teams that want budgets, presets and logged prompts around agent runs.
- Requirements
- Runs locally over stdio via dnx, so the .NET 10 SDK is needed; Claude Code 2.1.283 on PATH and signed in, or OpenCode as the worker runtime. A worker token is required: CLAUDE_CODE_OAUTH_TOKEN from claude setup-token, or ANTHROPIC_API_KEY. Optional CHARGEHAND_PROFILE and CHARGEHAND_RUNTIME. Desktop only.
Installation
In SourceWeft
- Open chargehand in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
[status: Active] [CI] [last commit]
chargehand
Ask a question about your code from Claude Code or any MCP client and get back claims that each cite a file at a pinned commit, checked before you see them.
Active. I work on it this month.
Why
Coding agents answer in prose. A program that calls one needs something it can check: claims tied to files at a commit, diffs, session messages or the caller's own inputs, plus a confidence and the exact prompts behind the answer. I also wanted the control flow (the task graph, budgets, retries, parallelism) in code rather than in a prompt, so each agent's context stays small, cached and disposable.
What it does
Answers with checked citations. You ask a question about a repository; chargehand runs a read-only agent session
(Claude Code or OpenCode) on a clone at a pinned commit and returns typed JSON (result/v1): claims, open questions, a
confidence, the cost and the prompts behind it. A citation is a file and line range, a commit, a diff range, a
session message or an input id. Each one must exist at the pinned commit before a claim leaves its worker; the worker
gets one repair turn, and claims that still fail move to open questions.
You reach it as an MCP server (stdio or HTTP), an HTTP API or a CLI. Presets (default, cheap, thorough,
strict, draft, review) set the tools, the token and dollar budgets and whether a question may be split into 2 to 4
read-only subtasks.
Also in the box, each with its own guide:
- A
codepreset and driven batches that write a tested branch or a draft pull request in a sandbox (Writing a branch, Driven sessions). /chargehand:change, a Claude Code plugin command: one prompt to a reviewed change on a local branch (the change command).- An operator console in the browser (Web UI).
- Prompt CI, which gates prompt and preset changes on paired evals; the run log records tokens, cache hits, cost and the prompt chain of every call (Prompt CI).
Not here: an agent loop of its own, direct calls to model providers, a model gateway, a memory store (it uses yours over MCP), a hosted service. A citation that resolves points at something that exists; checking that the cited text supports the claim is planned, not built (roadmap).
[!WARNING] Before 1.0. The images have no
latesttag: pin an exact version and read the changelog before you upgrade.
Quick start
Ask Claude Code a question about your own repository, with no clone of chargehand.
You need:
- the .NET 10 SDK (
dotnet --versionprints10.x), which providesdnx; - Claude Code 2.1.283 on
PATH(claude --version), signed in (runclaudeonce); - a token for the workers:
claude setup-tokenprints one for your subscription (anANTHROPIC_API_KEYworks too and bills per token).
Replace 0.19.4 with the newest version of the Chargehand package on
nuget.org and pin it: the package changes before 1.0. In a Claude Code session in the repository you want to ask
about, say: use chargehand to find where retries are decided, and cite the code. The answer lists claims, each
with its file and lines. Other editors and agents (Cursor, VS Code, Codex, Gemini CLI and more) are in
Connect your editor or agent.
From a clone, to ask one question about chargehand itself without MCP: it needs the .NET 10 SDK, git and the same Claude Code, signed in. With no profile, the workers use the CLI's own login and default model.
It prints result/v1 on stdout: claims with citations, open questions, a confidence and the cost. The
quickstart guide explains every field, OpenCode instead of Claude Code, and what to do
when a run fails.
How it works
- Intake reads the request (
request/v1) and writes a Task Spec: one action,answer,split,ask,denyorimprove. The last three stop the run with questions, a reason or a better request. A preset can also stop a run for approval above a risk or cost estimate. - Workers are ordinary Claude Code or OpenCode sessions on a clone of the repository at the pinned commit, inside the directories the profile allows. chargehand never calls a model provider itself.
- The evidence resolver checks every citation against git, the session and the request. The invariant: no claim reaches the result unless its citations resolved.
- The result (
result/v1) carries the claims, the open questions, usage and the prompt chain. The same record goes to the run log, whichshow,cacheandroutesread.
Writing runs follow the same path with a sandboxed worker: the code preset verifies a branch with the repository's
tests, and driven batches add an egress allowlist, a runner that alone holds the Docker socket, and a check gate
before a pull request opens. ARCHITECTURE.md maps the code.
Numbers
Lessons
- Parallelism did not pay on the questions I measured. Splits resolved every citation but cost half again as
much for a small score gain, so the shipped
default,reviewanddraftpresets allow no split (ADR 0017). - A score that measures what run-time checks already enforce catches nothing. The first Prompt CI score measured grounding, which the resolver already forces, so a prompt that dropped a third of the claims passed. The score now multiplies grounding by completeness (ADR 0019).
Docs
- Overview: what it is, how a run works, what it leaves out, status
- What it does, and how we know: each capability with its status and evidence
- Quickstart · Install with Docker Compose: from a clone, or from the release images
- Use it from an MCP client · Run the HTTP server · Web UI
- Writing a branch · Driven writing sessions · Several runners
- The change command: the Claude Code plugin
- Memory and services · Prompt CI · Benchmark
- Reference: commands, routes, presets, contracts, profile fields, environment variables
- Architecture · Decisions · Changelog · Roadmap
- Contributing · Security · License (FSL-1.1-ALv2)
License
Versions after v0.19.19 are under the Functional Source License, Version 1.1, ALv2 Future License (FSL-1.1-ALv2): you may use, copy, modify and redistribute the code for any purpose other than a competing use, and each version converts to Apache-2.0 two years after its release.
Releases up to and including v0.19.19 were published under Apache-2.0 and remain Apache-2.0 (LICENSE-APACHE-2.0). See NOTICE.
Source: README.md at commit d9e29ac
Tools
0Version history
32- v0.19.23LatestNov 13, 2026
- v0.19.21Nov 11, 2026
- v0.19.14Nov 7, 2026
- v0.19.11Nov 4, 2026
- v0.19.10Nov 3, 2026
- v0.19.9Nov 1, 2026
- v0.19.8Oct 30, 2026
- v0.19.7Oct 30, 2026
- v0.19.6Oct 29, 2026
- v0.19.2Oct 26, 2026
- v0.19.0Oct 26, 2026
- v0.18.1Oct 24, 2026
- v0.18.0Oct 23, 2026
- v0.17.0Oct 22, 2026
- v0.15.0Oct 21, 2026
- v0.14.1Oct 20, 2026
- v0.13.1Oct 19, 2026
- v0.12.0Oct 19, 2026
- v0.11.0Oct 19, 2026
- v0.10.1Oct 18, 2026
- v0.9.6Oct 14, 2026
- v0.9.5Oct 14, 2026
- v0.9.4Oct 13, 2026
- v0.9.1Oct 13, 2026
- v0.8.8Oct 12, 2026
- v0.8.6Oct 10, 2026
- v0.8.5Oct 10, 2026
- v0.8.4Oct 5, 2026
- v0.8.2Oct 5, 2026
- v0.8.0Sep 30, 2026
- v0.6.1Sep 30, 2026
- v0.4.1Sep 29, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.
