§00Changelog

Every version, and what it changed for you.

63 releases since 25 Jul 2026. Breaking changes say what to do about them, and a version that rebuilds your index says so at the top.

Archis updates itself: chi update checks what is published, verifies the release hash before writing anything, and puts the previous binary back if the new one does not start. chi update --check installs nothing.

  1. 0.41.0

    Archis stops paying twice for what a session already has — the same build errors, the source inside a file it was given whole, the lines of a read it already saw — and says why the provider's cache missed when it did.

    • Newchi session cost says why the cache missed, not just how often. Every turn chi agent bills with no cache read in it is classified — a cold start, the TTL running out, or something moving the prompt's prefix — and the three have different fixes, which one "cache writes" number could never tell apart. The five-minute window is an assumption and says so wherever it is printed. The same command now also splits what a session keeps re-sending into fresh, superseded and stale, so the share that is no longer earning its place is a figure rather than a suspicion.
    • Newchi agents check --live runs every hook Archis installed and reports whether it answered. The old check asked whether the binary a settings file names still exists — which catches Archis moving and nothing else. A binary that is there but is the wrong build, cannot execute, or sits behind a wrapper that swallows it passed that check and failed silently in every session, because a hook that fails is a hook whose output nobody reads. The hooks are asked to reply, not to do their work, so the check costs nothing and changes nothing.
    • NewThe originals behind shortened tool output now expire. They are kept so a model can ask for what it was not shown, and they had no time limit, no ceiling and no quota — so a repository worked in for a month carried every build log of that month. They now follow the same policy as the local artifact store: twenty-four hours from last use, five hundred and twelve originals, 256 MiB, oldest-unused first, swept when the store is opened. And each byte range a retrieval serves is verified against the hash written with it, not just the whole original.
    • ImprovedA build that fails for the same reasons does not pay for them twice. A codec compresses one output and cannot see that thirty-eight of its forty compiler errors are the same thirty-eight it rendered two turns ago — and forty distinct diagnostics are irreducible on their own, so no codec ever will. Runs of lines a session was already shown now come back as a pointer to the answer they came from, before the token budget rather than after it, so the budget is spent on what is new. Measured over six builds of a forty-error crate with two errors fixed each round: 7,477 tokens down to 2,787, a 63% saving against the identical loop with folding off. Tool output only, and deliberately: a file with holes in it is a buffer whose line numbers describe nothing on disk.
    • ImprovedExact source a session already holds inside a file it was given whole is not sent again. Read the file, then ask for a function in it: the commonest pair of calls there is, and the second was paid for in full. Measured over an outline, a whole-file read and then the source of eight functions in it: 1,248 tokens down to 520, a 58% saving. Only the whole file and only at the same revision — an outline does not cover a body, one symbol does not cover another, and an edited file covers nothing, because a wrong answer here costs the model content while a missed one costs an accounting row. force=true still serves the bytes.
    • ImprovedA file the session has already seen comes back as what changed, not as the whole outline again. A large file's outline is around 1,500 tokens, and after adding one function a session used to pay all of it to learn about one line — several times in every edit→build→edit loop, and once more on every patch, which attaches the post-edit outline because an edit moves every span below it. Measured over a forty-symbol file: 39% off five edit→read rounds and 47% off a patch's attachment. Nothing new is stored, and every case a delta cannot serve falls back to the whole outline.
    • ImprovedA command that reads a file is answered byte-exact rather than summarised. cat, head, tail, sed -n and the rest used to go through the same parsers and head-and-tail budget as a build log, so a four-hundred-line source file arrived with its middle removed — and an edit built against what was shown then failed for a reason nobody could see. A read now bypasses the codecs, and the budget cuts from the end only, so what arrives is a true prefix of the file with a line saying where it stopped. Anything that could write, any pipeline, and lockfiles are not reads.
    • ImprovedA shortened output ends with a pointer the model can see: <<chi:8f3a9c02d1e45b67,lines,4.5KB>>. The hint used to be a JSON field and a sentence, spelled out in full on every truncated response — forty-four tokens to say what eighteen can, and nothing could detect it. retrieve_artifact now takes that hash, a local://… uri or a session handle id, so there is one door for both stores; a key that is gone says retention expired it and to re-run the command rather than ask again.
    • ImprovedA linked git worktree is the same repository, and its index starts from the primary checkout's rather than from nothing.
    • FixedAn Edit or Write made with the harness's own tools now invalidates what Archis had shown of that file. Those edits have been recorded since the attribution hook shipped and nothing read them back, so a session went on re-sending a description of bytes that were no longer on disk — and could be told it already had a version of the file that nobody had.
    • FixedThe tool-output documentation described a router Archis does not have. It promised "probe every parser, take the most confident" when the real rule is first-claim by registration order, left the guarantee that a codec which does not shrink an artifact gets the original served instead entirely unwritten, named a command that does not exist, and never said what the subsystem covers — which is what Archis itself runs, and never a Read or a Grep the harness ran on its own.

Run the current release

Archis Free is the whole local engine, with no card. Everything semantic runs on your machine — there is no endpoint that accepts source.