Hashline Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Hashline Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
an MCP server for precise, hash-referenced file editing. instead of reproducing exact content or relying on fragile line numbers, models reference lines by short content hashes — making edits atomic, verifiable, and resistant to state drift.
current LLM edit tools are broken in predictable ways:
all of these approaches force models to recall exact file content they've already seen, which is fundamentally the wrong abstraction.
tag each line with a short content hash. models reference lines by line:hash instead of reproducing content:
12:a3|function hello() {
13:f1| return "world";
14:0e|}to edit line 13, a model just says "replace 13:f1 with return "hello";" — no need to perfectly recall the original string, no whitespace sensitivity, no ambiguity about which occurrence to match.
if the file changed since the model last read it, the hash won't match and the edit fails cleanly. re-read, retry. simple.
hashline_readreads a file and returns every line tagged as lineNumber:hash|content, where the hash is the first 2 hex characters of SHA-256 of the line content.
{
"path": "src/index.ts",
"range": { "start": 1, "end": 50 }
}hashline_editapplies one or more operations using line:hash references. all hashes are validated upfront — if any mismatch, the entire edit is rejected (atomic all-or-nothing). operations are applied bottom-to-top to preserve line numbers.
supported operations:
| operation | description |
|---|---|
replace | replace a single line or range with new content |
insert_after | insert content after a referenced line |
insert_before | insert content before a referenced line |
delete | delete a single line or range |
{
"path": "src/index.ts",
"operations": [
{ "type": "replace", "target": "12:a3", "content": "function greet() {" },
{ "type": "delete", "target": "20:b7", "end_target": "25:c1" },
{ "type": "insert_after", "target": "30:d4", "content": "// new section\nconst x = 1;" }
]
}after a successful edit, the response includes a context window (±5 lines around each edit) with updated hashes so the model can continue editing without a full re-read.
requires node 18+.
npm install
npm run buildadd to your MCP config (~/.claude/settings.json or project-level):
{
"mcpServers": {
"hashline": {
"command": "node",
"args": ["path/to/hashline-mcp/dist/index.js"]
}
}
}npm run dev # runs with tsx, no build step needed@modelcontextprotocol/sdk for MCP server/transportzod for schema validationthe hashline concept was inspired by Can Bölük's article The Harness Problem, which argues that the tooling mediating between LLMs and code changes — not the models themselves — is the real bottleneck in AI-assisted development. the article demonstrates that line-hash referencing dramatically improves edit success rates across models while reducing token usage.
MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.