Skip to content

v21.4.0 — the hardening release

Choose a tag to compare

@adynrisy adynrisy released this 13 Oct 08:15
· 636 commits to main since this release

Install / update

Stop AgentQon first, then:

npm install -g agentqon@latest

agentqon setup --repair

agentqon

What changed

Backend — isolation and reliability

  • Per-run isolation: concurrent runs can no longer cross model routing or
    share per-run state (the audit's top critical).
  • Custom-agent instructions are tenant-scoped — no more leaking across
    accounts.
  • Queue claiming is atomic, with real heartbeats and owner fencing; the
    inline runner claims the correct job.
  • Vault configuration parsing fixed and now fails loudly instead of
    silently; the kill switch works in the default mode; approval state
    cannot be flipped after the fact; API errors no longer leak tracebacks.

CLI — the terminal hang is dead

  • Fixed the Progress timer leak that hung the terminal after "ready"
    (16/16 new regression tests pass).
  • Repair is staged-and-swapped, so it cannot brick an install, and it
    refuses to run while a server is live.
  • Python detection now tries every interpreter on the machine.
  • Server identity + version check on launch: a stale server left over
    from an older install is restarted, never silently reused. This was
    the root cause of the lingering ::1 loopback error in 21.2.x — the fix
    shipped in 21.2.1, but an old running server kept serving the bug.

Web UI

  • Export downloads work again, including in Shield mode.
  • Custom-agent registry capped at 100 rows with debounced filtering.
  • An expired session now shows a clear "session expired — relaunch with
    agentqon" banner instead of failing silently.
  • Run statuses are honest, and counts corrected to the verified 6,799
    agent roster.

Release pipeline

  • The pack-gate now scans the compiled payload, asserts the package
    identity and the Python 3.12 build, and uses wider secret patterns.
  • The package rename is a verified script (11 replacements, gate PASS
    with identity verified for this staging).

Test evidence

  • Backend unit: 240 passed (the one sandbox queue-timing failure is
    environmental and proven as such).
  • Integration: 149 passed.
  • CLI (node): 16/16.
  • UI: 25/25.

Note on dependencies

Three pins an early audit draft called "dead" (opentelemetry-api, PyYAML,
python-dotenv) are in fact required by FastAPI / uvicorn[standard] under
the hash-locked requirements — proven in a clean venv. They stay.