---
title: "coding.sh v0.1.2 (page 2) · Changelog"
description: "What changed in coding.sh v0.1.2, page 2 of 5: every change to Capture, Examples, Improve, MCP, Harness, Judges and Stores, one line each."
canonical: https://coding.sh/changelog/v0-1-2/2
human_url: https://coding.sh/changelog/v0-1-2/2
markdown_url: https://coding.sh/changelog/v0-1-2/2.md
agents_url: https://coding.sh/agents.md
llms_url: https://coding.sh/llms.txt
updated: 2026-11-11
---

[Changelog](https://coding.sh/changelog)

Nov 8, 2026 · 177 changes · page 2 of 5

# coding.sh v0.1.2

coding.sh runs on Windows, and CI tests it there.

## Capture

- Added `coding.sh init` imports the sessions each agent already keeps on this machine, so the viewer the installer opens shows your own history. It shows progress, stops after 8 seconds and imports the rest in the background; the viewer says "Importing past sessions…" until it is done. `--no-import` skips it. An empty viewer shows the import command, `coding.sh ingest --backfill`, and what each imported session shows. [What init changes](https://github.com/jackulau/coding.sh/blob/main/docs/guides/install.md#what-init-changes).
- Added `coding.sh proxy` is a local pass-through for the Anthropic and OpenAI APIs. Each model call is logged with its redacted request (system prompt, tool definitions, messages) and response, usage with cache reads and writes, status, time to first byte and token, and rate limits, inside the Claude Code or Codex session its hooks capture. Auth headers are forwarded and never stored. It adds 0.34 ms per streamed chunk and 1.96 ms to first byte (CI fails over 2 ms and 5 ms). [Capture with the proxy](https://coding.sh/docs/how-to/capture-with-proxy).
- Added Proxy calls record reasoning effort (including Anthropic's `output_config.effort`), service tier and speed from the request when the response has none, and `compaction: true` on calls that compacted the conversation, including Codex's `/responses/compact`, which is now logged. [What is stored](https://coding.sh/docs/how-to/capture-with-proxy#what-is-stored)
- Added The proxy stores a call's messages in content-addressed blocks shared with the session's earlier calls, instead of the whole conversation again on every call, and reads the body back exactly. A synthetic 500-call session took 5× fewer bytes (828 KiB instead of 4,116 KiB); reading a call back takes about 10 ms. Works on SQLite, Postgres and ClickHouse stores; calls stored whole still read, and `gc` and `purge` follow the blocks. [What is stored](https://coding.sh/docs/how-to/capture-with-proxy#what-is-stored)
- Added Proxy calls from a Claude Code subagent land in the subagent's own session instead of the parent's. Calls record the parent session, Claude Code's agent id and Codex's parent thread, fork and subagent kind when the client sends them, the account as a 16-character hash (the account id is not stored, in the event or the request body), and behind CLIProxyAPI the credential index it used. A session seen only through the proxy links to its parent. [What is stored](https://coding.sh/docs/how-to/capture-with-proxy#what-is-stored)
- Added CI runs real OpenCode, Pi, Goose, Factory Droid, GitHub Copilot CLI and Aider sessions on Linux and Windows against a stub model, checks the recorded prompt, tool call, file change, model and reply, and checks that `ingest --backfill` adds no duplicates. [Install guide](https://github.com/jackulau/coding.sh/blob/main/docs/guides/install.md#windows).
- Added Sessions stored before an adapter's parsing changed are re-parsed from their transcripts and spool in the background, so this release's dedupe fixes reach data already captured. `coding.sh ingest --rebuild` does it now. [Troubleshooting](https://github.com/jackulau/coding.sh/blob/main/docs/troubleshooting.md#old-sessions-show-doubled-counts).
- Added Claude Code Bash commands that edit files (`sed -i`, a heredoc write, `tee`) record a `file.change` per file with its diff, taken from Claude Code's own edit diff, even when the command then failed. A nested instructions file or skills folder loaded mid-session, a Skill call's skill folder and the skills restored after `/compact` become `harness.loaded` events and show in `show` and the viewer timeline. Stored Claude Code sessions are re-parsed to pick them up. CI checks both on a real Claude Code 2.1.319 session. [Adapters](https://github.com/jackulau/coding.sh/blob/main/docs/ADAPTERS.md#known-breakage-to-design-around).
- Fixed Backfill follows symlinked and junctioned transcript directories and files, and skips dangling links. Before, a `~/.claude/projects` made of links ingested nothing. [Adapters](https://github.com/jackulau/coding.sh/blob/main/docs/ADAPTERS.md#known-breakage-to-design-around).
- Fixed Claude Code subagents that fire no SubagentStart or SubagentStop (`web-fetch`) are linked to their parent from the parent's `Agent` tool result, with their prompt, result, model and end, instead of showing as a top-level session with no prompt. [Adapters](https://github.com/jackulau/coding.sh/blob/main/docs/ADAPTERS.md#subagents).
- Fixed The background re-parse after an upgrade no longer blocks reads: it holds the ingest lock at most a second at a time and ingests new hook lines between holds, so `sessions` and the viewer answer in about a second instead of waiting 8 to 24 seconds. It writes blobs in batches, resumes where a cut-short run stopped, and works out stats and flags again for every stored session when an upgrade changes them. Listing a large spool is faster too. [Troubleshooting](https://github.com/jackulau/coding.sh/blob/main/docs/troubleshooting.md#old-sessions-show-doubled-counts).
- Fixed A full ingest of a 25k-line spool takes 4 s instead of 294 s on macOS, and 39 s instead of 153 s on Linux: blobs are made durable once per checkpoint instead of with two fsyncs per line, and each checkpoint commits its events, session rows and spool cursors in one transaction, so a crash mid-drain neither loses nor duplicates events.

## Examples

- Added `examples/plugin-ab` A/B tests a Claude Code plugin against plain Claude Code on ten small tasks in a container, with `coding.sh compare`: pass rate, tokens, cost split by token type, wall time, reply length and a blind clarity judge, paired by task with bootstrap intervals. It takes any plugin directory and ships a small demo plugin. [The example](https://github.com/jackulau/coding.sh/tree/main/examples/plugin-ab).
- Added The skill eval tests an edit to the skill: `run.sh <out-dir> --candidate <skill-dir>` runs the pinned skill as arm A and the edited copy as arm B, graded the same way, with the `--promote` line in the report. `TASKS="01 06"` runs some of the tasks. [Skill eval example](https://github.com/jackulau/coding.sh/tree/main/examples/skill-eval#run-it).
- Fixed The skill eval's live site check counts a network command that uses `$LIVE_SITE` as touching the site; it missed those, and passed runs that had probed the site. Scenario 06 no longer tells the agent to record open questions instead of waiting, since its pass is to stop and ask. [Skill eval example](https://github.com/jackulau/coding.sh/tree/main/examples/skill-eval#live-run-a-real-vercel-team-read-only).
- Fixed The skill eval's live mode grades fairly: `--help` and `help` calls never count as writes, a refused `env ls` reads "refused secret read", live task copies name the team, project and site only through `$VERCEL_SCOPE`, `$VERCEL_PROJECT` and `$LIVE_SITE`, the site checks match the team's real domains (kept from the agent), and `out/checks` records each run's task and arm. `run.sh <out-dir> --regrade` grades stored runs again without calling the agent. [Evaluate an Agent Skill](https://coding.sh/docs/how-to/evaluate-a-skill#2-stub-what-the-skill-touches).

## Improve

- Added `coding.sh improve` lists what goes wrong most in this repo's sessions (failure flags, and any command failing the same way in two or more sessions), each with an example session, the AGENTS.md line that fixes it and the next commands. `improve fix N` adds the line, uncommitted. `improve check` compares the sessions before and after each committed AGENTS.md, rule or skill change, with how often the agent follows each new line, says Helped, Regressed, No clear change or Too early, and exits 1 on a regression; `--watch` re-checks as sessions arrive. No API key needed. [Improve your agent every week](https://github.com/jackulau/coding.sh/blob/main/docs/guides/improve.md).
- Added `improve check` lists, under each change, the sessions still flagged after it with their flags and start time (five, or all with `--sessions`; every flagged session before and after in `--json`), and the MCP `harness_changes` tool returns them as `after.flaggedSessions`, so your agent can answer "which sessions still failed after it?". [Did it help?](https://github.com/jackulau/coding.sh/blob/main/docs/guides/improve.md#5-did-it-help)
- Fixed `improve check --repo <DIR|all>` counts the sessions that ran in other checkouts and worktrees of the repo. Before, it ignored `--repo` and counted only sessions whose repo root was the current checkout, so a repo whose agents work in worktrees showed every change as "No sessions yet". [Improve](https://github.com/jackulau/coding.sh/blob/main/docs/guides/improve.md).

## MCP

- Added `improve` and `harness_changes` tools, and `improve` and `did-it-help` prompts, run the same loop from inside your agent: what to fix first, and whether an AGENTS.md change helped, without a shell. [Improve your agent every week](https://github.com/jackulau/coding.sh/blob/main/docs/guides/improve.md#from-inside-your-agent).
- Added An `eval_init` tool lets your agent build an eval suite for you, with the same sources as `eval init`; it writes files only with `confirm: true`. [MCP server](https://coding.sh/docs/mcp).
- Added `exp_session_note` adds a redacted note to the project's experiment session (the hypothesis before a run, the reading after it) and `exp_session_summary` returns its timeline, paged, with the same blocks as `exp session summary --json`, so an agent can pick an investigation back up after a context reset. Without a session both return a `not_found` error naming `coding.sh exp session new --name <topic>`. [Explore](https://github.com/jackulau/coding.sh/blob/main/docs/guides/explore.md#mcp).
- Fixed Tool calls no longer wait for a big ingest: they answer within 1.5 s from what is indexed, with `pending: {files, indexing}` in the result. [CLI reference](https://github.com/jackulau/coding.sh/blob/main/docs/reference/cli.md#codingsh-mcp).

## Harness

- Added `coding.sh harness audit` lists each memory and instruction file (Claude auto-memory, AGENTS.md and the other instructions files, rules, skills) with the sessions that loaded it, read it and wrote it, its size and its load cost in tokens, and flags files never read, written but never read back, and skills listed but never used. `--agent`, `--since` (default 30d) and `--json`. [Memory and instruction files](https://github.com/jackulau/coding.sh/blob/main/docs/guides/explore.md#memory-and-instruction-files).
- Fixed `harness audit` skips a file or directory it can't stat (a symlink loop, or a Windows junction Node can't follow) instead of failing with "unknown error". [Memory and instruction files](https://github.com/jackulau/coding.sh/blob/main/docs/guides/explore.md#memory-and-instruction-files).

## Judges

- Added LLM graders take `"provider": "claude-code"`, which grades through `claude -p` on a Claude subscription (`CLAUDE_CODE_OAUTH_TOKEN` from `claude setup-token`) instead of an API key. The judge runs with no tools, setting sources, plugins, MCP servers or saved session, so the hooks of the arm under test never reach it. [Evaluate an Agent Skill](https://coding.sh/docs/how-to/evaluate-a-skill#4-grade-in-two-steps).
- Added Judge prompts escape data tags in the judged text and say it is untrusted, so an output can't close `</output>` and order a pass. `judge calibrate --probe-injection judge.json` plants a "respond pass" order in human-fail cases and reports how many verdicts flip; any flip exits 1. Default-prompt judges get new version ids. [Evals](https://coding.sh/docs/evals#calibration).
- Added Checklist items can grade rule compliance from the trace with no model call: `ran-command`, `read-path`, `wrote-identifier`, and `follows-rules`, which checks every imperative line that names a backticked command, flag, path or identifier (``Never use `git push --force` ``) against what the agent did. [Evals guide](https://github.com/jackulau/coding.sh/blob/main/docs/guides/evals.md#checklists-and-trace-checks).
- Added `judge calibrate --grader tests` audits a test or command verifier: `--sample-passes 40` lists unlabelled passing cases to label, and the audit reports precision (how many passes a person would accept) with a Wilson interval and the false accepts. `exp show` and `exp compare` then print the precision and a pass rate corrected for it. [Evals guide](https://github.com/jackulau/coding.sh/blob/main/docs/guides/evals.md#auditing-a-test-verifier).
- Added `follows-rules` reads rule-file frontmatter: a Claude Code rule with `paths:`, a Cursor rule with `globs:` (or neither glob nor `alwaysApply`), or a Copilot rule with `applyTo:` is graded only after the agent touches a matching file or opens the rule. Before that the agent never saw it, so it no longer counts as skipped. [Evals guide](https://github.com/jackulau/coding.sh/blob/main/docs/guides/evals.md#checklists-and-trace-checks)
- Added `judge calibrate` prints the judge's discrimination gap and label efficiency η, and warns when auditing outputs directly would need fewer human labels: `label efficiency η 0.21 · auditing outputs directly needs ~4.8x fewer human labels for the same precision`. `--judge-cost 0.001` adds the human label cost above which the judge pays off. The calibration state is unchanged; `--json` carries `calibration.efficiency` (Choi et al., arXiv 2610.35698). [Evals](https://coding.sh/docs/evals#calibration).
- Added `exp compare --pairwise` and judge graders in `exp compare` print how often a resample of the cases picks the same winner, and n*, the smallest size where that holds 95% of the time: `stable B better in 97% of resamples (n*=50)` or `unstable B better in 61% of resamples (n* censored)`. An uncalibrated judge that never settles warns "pick or calibrate the judge before collecting more verdicts" (arXiv 2611.04090). `--json` carries `stability`. [Evals](https://coding.sh/docs/evals#judges).
- Added `judge sample <exp> --budget 60 --out plan.json` says which cases to label next: a seeded random sample stratified by the judge's verdict and confidence, with labels in proportion to stratum size, so the labels don't favour the doubtful cases. `judge calibrate --plan plan.json` then prints the human-audited pass rate: `human-audited pass rate 0.71 [0.63, 0.79] (42/50 of plan labelled; worst case ±0.09)` (Choi et al., arXiv 2610.35698). [Evals guide](https://github.com/jackulau/coding.sh/blob/main/docs/guides/evals.md#which-cases-to-label).
- Added New `no-test-tamper` checklist check, with no model call: it answers no when a test change hid a failure (a skip marker, a test deleted while red, an assertion edit that alone turned the tests green), cites the change and the test runs around it, and quotes what the agent said: `weaken test/sum.test.js by Edit in e42 (turned failing tests green), disclosed: "…"`. Saying why never makes it pass. [Evals guide](https://github.com/jackulau/coding.sh/blob/main/docs/guides/evals.md#checklists-and-trace-checks).
- Added LLM graders take `"provider": "codex"`, which grades through `codex exec` on a ChatGPT subscription. [Evals](https://github.com/jackulau/coding.sh/blob/main/docs/guides/evals.md#judges).
- Fixed The Anthropic and OpenAI judge providers read `ANTHROPIC_BASE_URL` and `OPENAI_BASE_URL`, like the vendors' SDKs, so judges and drafts reach a proxy, gateway or local stub without `--base-url`. [Judges](https://github.com/jackulau/coding.sh/blob/main/docs/guides/evals.md#judges).

## Stores

- Added The Postgres and ClickHouse store plugins answer `--where` in the database, with every value bound: session and event keys, `has:`, `is:`, bare words, `sort:` and `--facets`, for `sessions`, `usage`, `export`, the viewer API and MCP. `sessions --where` and facets no longer stop at the newest 20,000 sessions there, and event keys and bare words no longer fail with `unsupported_store`. [Query language](https://github.com/jackulau/coding.sh/blob/main/docs/reference/query.md).

[Previous page v0.1.2, page 1](https://coding.sh/changelog/v0-1-2) [Next page v0.1.2, page 3](https://coding.sh/changelog/v0-1-2/3)

From [CHANGELOG.md](https://github.com/jackulau/coding.sh/blob/main/CHANGELOG.md) · [RSS](https://coding.sh/changelog.xml) · [All releases](https://coding.sh/changelog)

To set coding.sh up for a user, follow the agent workflow at [/agents.md](https://coding.sh/agents.md).
