This release ships the GitHub App integration (repository attachment, run-scoped token minting, and sandboxed egress), a full Claude Code harness adapter alongside the existing Codex adapter, a Docker-only companion setup that replaces the native macOS install path, harness readiness reporting on agent heartbeats, rebuilt agents panel UI with harness tiles and improved presence states, markdown rendering in card comments, and a migration ordering fix that had taken down all agent pairing and heartbeating on production.
Breaking changes
- Companion setup is now Docker-only — native macOS install path removedThe companion runs as a Linux container on macOS, Windows, and Linux via Docker Compose. The native macOS launchd installer, Mach-O verification, release bundler, and Apple Container lab have been removed. If you were using the native macOS companion, switch to the Docker-based setup described in the updated install guide.
d1bbe05f639ed1
New
- Agents can now connect to GitHub repositoriesA GitHub App integration lets you attach a repository to a board. When an agent run starts, the companion mints a short-lived, run-scoped
GH_TOKENand injects it into the harness environment so the agent can clone, push, and use theghCLI. Runs without a token keep the fully locked-down sandbox unchanged. Stale or orphaned board attachments deny access rather than widening it, and the repo-listing mint is scoped tocontents:readonly.08436aff8622c610e32828bddef478dc4b8e0484b991d08656d11952b4128ca0dbba7d542e59a - Claude Code is now a supported agent harnessThe companion can run
claude -p --output-format stream-jsonas a headless harness alongside Codex. Session resume, OS-level Bash sandbox (network denied by default, scoped togithub.comhosts when a GitHub token is present), provider auth env vars hard-blocked from the allowlist, and a live auth health probe are all included. Credit exhaustion, protocol errors, and transport failures each get their own classified failure codes.fca78cb3302dbcc9fc740d1c14ed48abefd7e711a542bf525d9be2ad124da2470c3aeca91e7079fd6111 - Agent heartbeats now report harness readinessA connected agent that has not authenticated its harness (Codex or Claude Code) now shows an amber "needs-setup" indicator instead of a misleading green dot. The companion reports readiness on every heartbeat, and a busy harness is treated as unknown rather than signed-out so a probe that collides with an active run does not flip the indicator.
d1bbe0597e2d8d004a235641f39e2139bfb - Companion failure digests are forwarded through the diagnostics relayBounded, single-line redacted digests on failure events now flow to the server via the diagnostics relay and into OpenTelemetry, making agent failures visible in server logs without exposing raw stderr.
a4c8bbc - Agent runs post a comment on terminal failureWhen an agent run ends in a terminal failure (including
context_exhausted), a comment is automatically posted to the card so the failure is visible in the thread without requiring a separate notification.db5f80d5b338ed - Active agents can be invited to shared boardsAgents with an active companion connection can now be invited to shared boards directly from the board settings, making it easier to assign agent work across a team.
2afce7c
Improved
- Agents panel rebuilt with harness tiles and cleaner interaction modelThe agents panel now shows harness choices as tiles (Codex, Claude Code, opencode, Pi) with install-status hints. Rows hold a fixed height in every state, rename/delete/connect actions appear on hover, and adding an agent is a quiet row at the end of the list. The suggestion pool grew from 8 to 40 names, and deleting a never-connected agent skips the confirmation dialog.
6d0b8e4727875383d76a77aeb5a2 - Card comments now render markdownComment bodies go through the same markdown renderer used by card descriptions — bold, lists, code blocks, fences, and
@mentionchips all render correctly. Mentions inside backticks or fences stay literal, and a URL'shrefcan no longer have markup spliced inside it. The one-line teaser above the comment footer is flattened to plain prose.c412e7a82f2d361365c97 - Run protocol updated: feasibility check and degraded-approach confirmationThe agent run protocol now performs a feasibility check before attempting degraded approaches and asks for confirmation, reducing silent failures on tasks the harness cannot complete.
220da67121174f
Fixed
- Migration ordering fix restored agent pairing and heartbeating on productionA schema migration for harness-readiness columns ran after the authority-table verification step, causing every existing deployment to fail the check on first boot and disable all twin traffic until a restart. The migration now runs before verification. A regression test reproduces the upgrade path so this ordering cannot regress silently.
62cac98 - Linux companion install guide auto-resolves the current image versionThe install guide previously hard-coded a version number in the
.envsnippet, so publishing a new image silently left documented installs on the previous one. The guide now queries GHCR for the newest stable release tag and writes that into.env— still an explicit immutable tag, notlatest.564f6b9 - Harness login now works correctly from a one-off containerRunning
docker compose execfor interactive harness login shared the task-launcher's process namespace, so the readiness probe killed the login before the browser step could finish. The guide now usesdocker compose run(a one-off container with its own namespace) for both Codex and Claude Code logins.9dcdebfa89a4ba065dd5c - Companion bridge survives the Codex user-namespace launcherThe Linux launcher confines Codex to a user namespace mapping only the Codex identity. The
overdew_agentMCP helper now translates expected owner and peer IDs through/proc/self/{uid,gid}_mapbefore comparing, so bridge sockets are no longer rejected as overflow IDs. MCP startup failures classify ascodex_mcp_startupand the adapter logs a bounded, redacted stderr digest.c767fca - Expired board SSE reconnect loop and session recovery flowA bug caused the SSE connection to loop on an expired board session. The client now detects the expired-session state and shows a recovery flow with a clock indicator so users can re-authenticate without a full page reload.
75a34ee122b22e0966967650f420cc2a68121dfbb5 - Agent stays green while running a cardThe agent presence indicator now stays green for the duration of an active run rather than dropping to an idle state mid-job.
97e2d8d