Breaking changes and migrations
- Control-plane commands are renamed without compatibility aliases.
auth useis nowauth switch,repo getisrepo view,repo visibility setisrepo edit --visibility,repo list <project>takes--project,repo mirror create|usebecomerepo mirror addandrepo remote use, andrepo mirror collaborators listbecomesrepo access list; positional cluster arguments become--cluster.entire grant <noun> <verb>becomesentire <noun> grant <verb>. Update scripts using the old spellings (#2502, #2490) entire logoutprocesses every saved login and revokes CLI sessions on other machines too. Older servers fall back to revoking only the current session. Browser and web sessions remain active unless--everywhereis passed.--all-contextsis removed, explicit--contextis rejected, and Ctrl-C stops the sweep (#2510, #2539)entire enableinitializes repositories locally without creating or pushing a GitHub remote.--repo-name,--repo-owner,--repo-visibility,--no-githuband--pushare removed; publish separately. Git initialization, identity setup and the optional initial commit are unchanged (#2485)- Mirror creation always uses the asynchronous workflow. Remove the retired
async_mirror_requestskey from settings files; strict decoding rejects it (#2267) entire investigatemoves to the entire-investigate plugin. Install withentire plugin install investigateor accept the install prompt; existing flags are unchanged. Copy the oldinvestigatesettings object into.entire/investigate.local.json; legacy settings blocks are ignored (#2515)
Added
- Native repository references (
/et/<project>/<repo>) are supported byrepo view,delete,visibility,protection,grantandcheckpoint explain --repo. Ambiguous bareowner/reporeferences are rejected with forge-qualified suggestions.entire dispatch --reposalso accepts native repos and sends forge-qualified slugs (#2387, #2247, #2396, #2553) entire repo mirrorsupports native repositories.repo cloneandrepo remote urloffer an interactive choice of the home cluster and ready native mirrors. Non-interactive runs use the primary cluster unless--cluster <host>is supplied; GitHub mirrors use the same selection flow (#2516, #2529, #2546)entire cluster listshows regions, cluster slugs and validated hosts for use with commands such asorg create --regionandrepo clone --cluster(#2480)entire repo remote url <repo>prints a repository's git remote URL and nothing else, so an existing local checkout can be connected withgit remote add entire "$(entire repo remote url /et/project/repo)". It works outside a git checkout and keeps placement prompts on stderr (#2492)entire repo protection list|add|removemanages branch protection rules. Empty results distinguish unprotected native repositories from GitHub mirrors whose rules are managed upstream (#2344)entire auth switchwithout an argument offers a saved-context picker. It andauth contextsconsistently mark the active context (#2326, #2347)- Subagent tracking for Codex and Copilot CLI. Codex reports child token totals only with exact coverage. Copilot supports modern agent IDs and unambiguous name matching on 1.0.63; task records explain when child transcripts are unavailable (#2209, #2341)
entire enableasks which git remote should receive checkpoints, and--checkpoint-push-remote <name>selects one non-interactively. The override is written to.entire/settings.local.jsononly, leaving automatic election in place when you keep the current destination (#2345)entire configure --checkpoint-remoteacceptsgitlab:<owner>/<repo>. Mirror push-through, the trails API, issue linking and entire.io checkpoint discovery remain GitHub-only (#2528)- OpenCode can generate summaries and tailor runners:
entire configure --summarize-provider opencodeworks forcheckpoint explain --generateandrunner setup. The adapter runs in a temporary directory with a dedicated tool-denying agent and sharing disabled (#2361) entire graphoffers to install the Graph plugin on demand, with confirmation and progress on stderr. Non-interactive runs print anentire plugin install graphhint; stdout remains reserved for plugin output (#2324)entire repo createwaits up to 10 minutes for provisioning by default.--no-waitskips waiting;--wait-timeoutchanges the limit. If readiness cannot be confirmed, the command prints the created repository and recovery instructions and exits nonzero.repo viewreads registry details by default; pass--authoritativeto check provisioning status (#2483)entire enablefills missing repo-local git identity fields from the verified Entire profile without overwriting configured values. It signs in when needed, or providesENTIRE_TOKENguidance in detected automation (#2415)entire loginautomatically uses device-code authentication on Linux and BSD without a graphical display, including headless sessions not detected as SSH. WSL and an explicitBROWSERare excluded (#2504)- Nightly smoke tests install published artifacts on Linux, macOS and Windows and verify agent checkpointing. A stable-install job also tests the documented Homebrew command (#2159, #2409)
- A control-plane E2E suite covers device-flow login and organization, project and repository lifecycle operations without a coding agent, using isolated credentials and automatic resource cleanup (#2411)
Changed
- Data-API commands and links follow
ENTIRE_TOKENor the selected login's environment rather than defaulting to production.entire api --to celland-j <jurisdiction>use that login's cluster catalog. Commands acting as a saved login announce the context on stderr when multiple logins exist (#2509, #2414, #2538) entire --context Xpropagates to child processes throughENTIRE_CONTEXT, fixing inconsistent login selection inrepo clone,resume,explainandtrail create. Unknown context names are rejected before spawning children (#2413)entire status --jsonreports one entry per session, withsession_id,worktree_pathandbranch, instead of collapsing sessions for the same agent (#2363)- The hidden
entire checkpoint policycommand and its enforcement are removed. Its policy ref used a server-reserved namespace and could block repository mirroring (#2508) - Redaction and transcript reads use less memory and avoid repeated searches for duplicate findings. Redaction output and fingerprints are unchanged (#2291)
- Agents no longer display a Preview suffix during setup.
Agent.IsPreviewand the external-agentinfofieldis_previeware removed; external agents still emitting the field remain compatible (#2554) - Removed an unreachable wrong-cluster hint from
git-remote-entireand outdated semantic-search rollout wording (#2384, #2366)
Fixed
- Imported checkpoints, including onboarding imports, carry a validated anchor commit to prevent hydration failures. The anchor must be a full hex commit ID; validation also applies to
--dry-run. Existing imports are not repaired (#2491) - Fixed missing
factoryai-droidcheckpoints on Windows by installing nativecmd.exehook wrappers, including on hosts with Git Bash (#2349) - Managed plugin executables work on Windows without symlinks. Fixed the hardlink fallback on all platforms (#2371)
- Interactive prompts use native Windows console handles. Plugin confirmations no longer require an extra keypress to close the prompt (#2333, #2481)
- Commands run through Cursor's or OpenCode's shell tools no longer show unattended interactive prompts (#2317)
- Already-committed files are no longer checkpointed again at turn-end. Comparisons against HEAD respect
autocrlf,.gitattributesand Git LFS without refreshing the index (#2482, #2336, #2372) entire doctorrespects a valid checkpoint push remote, andstatuscorrectly reports disabled session pushing. Checkpoint fetches retain the selected read remote, fixing missing metadata and transcripts in clones with inherited checkpoint-remote settings (#2329, #2337, #2342)- Rejected checkpoint pushes preserve the remote's explanation, including secret-scanning and repository-rule failures. Confirmed policy and hook rejections no longer trigger speculative fetch/replay or get mislabeled as divergence (#2488, #2514)
entire session currentuses agent session IDs and process ancestry instead of selecting the most recently active session, avoiding misidentification across worktrees and nested agents. Ambiguous matches are reported explicitly.session adoptdoes not yet enforce caller identification (#2322)entire statusno longer deletes stale records or finalizes exited sessions while reading them. Cleanup remains withdoctorand the session sweeper (#2363)- Mid-turn commits record subagent tokens even when no shadow branch is resolved. Totals remain checkpoint-scoped rather than repeating cumulative usage (#2334)
- Checkpoints remain visible in
checkpoint listandexplainwhen a case-insensitive filesystem changes the casing of a shard directory (#2403) - Native repositories shared by a direct pull grant resolve by
/et/path without requiring project-level access. This fixes cloning and name resolution for repository management and cell-routing commands; each operation still requires its own permissions (#2543) - Unsupported summary providers produce an actionable error listing supported agents.
entire doctoralso detects invalid provider settings (#2359) entire logoutandauth statusno longer countnullor nameless entries incontexts.jsonas saved logins (#2511)- Shell completion installation and E2E transcript writes report file-close errors instead of silently accepting potentially incomplete writes (#2357)
- Optimized the duplicate-key scan added in #2321 for large JSON objects while preserving unconditional detection (#2348)
Security
- Restored the cross-host redirect guard on cross-jurisdiction token exchanges after a regression between #2224 and #2235. This prevents redirects from forwarding login tokens to another host or accepting substituted tokens. Exchange URL validation remains in place (#2261)
- Git hook installation uses confined filesystem operations, rejects symlinked hook directories and preserves foreign symlinked hooks.
doctorreports unsafe hook directories. External summary-provider discovery requires theexternal_agentsgrant, and branch-name validation is strengthened (#2315) - JSONL redaction verifies replacements even when strings use alternate JSON encodings, falling back to structural rewriting or failing closed. Custom investigate and review prompts also require trusted settings before being passed to agents with approvals disabled (#2321)
- GitHub Actions jobs declare explicit least-privilege token permissions. CodeQL scanning is limited to languages used in this repository (#2354, #2355)
Housekeeping
- Repository instructions are split into a compact
CLAUDE.mdand task-specific development references, with tests enforcing the root-file size budget and local documentation links.AGENTS.mdremains a symlink (#2506) - Homebrew installation uses a single fully qualified cask command compatible with Homebrew 6's tap trust. The copyable command no longer includes a comment that fails in default interactive zsh. Requires Homebrew 6.0.10+ (#2409, #2505)
- Updated Go from 1.26.6 to 1.27.1 and golangci-lint from 2.11.3 to 2.13.2, resolving findings from the updated linters (#2356)
- Dependency bumps:
gofrs/flock,mattn/go-runewidth,posthog/posthog-go,golang.org/x/crypto,golang.org/x/mod,golang.org/x/sync,golang.org/x/sys, andaws-actions/configure-aws-credentials(#2314, #2325, #2530) - All E2E agent runners honor
E2E_TIMEOUTand per-test prompt timeouts. Malformed timeout values produce an error (#2113) - Consolidated E2E workflows with agent and test-regex selection. Nightly smoke failures now mark the individual agent's step as failed (#2353, #2377)
- Codex E2E tests no longer use the retired
gpt-5.4-mini. Multi-session prompts allow hook-added checkpoint trailers (#2525, #2527) - Fixed a terminal-test race, macOS path comparisons and
ENTIRE_TOKENtest isolation. Redaction fixtures no longer embed a complete AWS-key-shaped value that triggers push protection (#2526, #2339, #2489, #2544, #2542, #2389) - Removed
.opencode/package-lock.jsonfrom version control and tracked.opencode/.gitignoreso fresh clones inherit its rules. Removed the repo-localtrail-summaryrunner to prevent self-triggered trail-body updates (#1980, #2407)
Thanks
Thanks to @KC1706 for fixing checkpoints silently disappearing from list and explain when a case-insensitive filesystem folds a shard directory's case (#2403)!