Skip to content

Release 5.13.59 - #292

Merged
alexgreensh merged 110 commits into
mainfrom
integ/5.13.59
Oct 28, 2026
Merged

alexgreensh merged 110 commits into
mainfrom
integ/5.13.59

Conversation

@alexgreensh

Copy link
Copy Markdown
Owner

Release 5.13.59.

  • Hermes gets the full Token Optimizer feature set: 17 hooks (was 4), terminal compression, read cache, checkpoints and restore, continuity, credential masking. Plugin 0.2.0.
  • Windows: Codex hooks run in PowerShell and cmd.exe for every path, Copilot CLI hooks fire, Claude Code plugin hooks survive updates, plus more Windows fixes, each with a regression guard.
  • Advisor sessions: correct context fill, advisor tokens billed at the advisor model.
  • Checkpoints and topics keep the real task, in any language.
  • Copilot matcher and sessionEnd fixes, fewer skipped-hook notices on managed machines, cleanup leaves nothing behind.

Includes #279, #280, #282, #285, #286, #289, #290. Fixes #278, #281, #284, #287, #288.

dajiaohuang and others added 30 commits October 24, 2026 01:28
…point keeps its session (#278)

Codex runs command hooks in the session shell (PowerShell, -NoProfile
-Command), with cmd.exe /C only as a fallback. The 5.13.57 command
(set "X=1" && "python" ... >NUL 2>&1) only parses in cmd.exe, so every hook
still exited 1 under PowerShell.

- Generate a shell-neutral command: bare interpreter token, double-quoted
  arguments, no set/&&/>NUL. Quiet hooks use a launcher env pair instead of a
  redirect. A path neither shell can take literally keeps the cmd-only form
  and the doctor flags it.
- Any Token Optimizer run rewrites existing commands of the exact generated
  shape into the new form.
- codex-doctor warns when a hook command is cmd.exe-only and shows which
  fields the Stop hook received (names only).
- The Stop runner passes the session id and transcript path to the deferred
  checkpoint worker, and no anonymous "unknown" checkpoint is written when the
  host sent no session id.
… guarded (#278)

The #276 heal test expected the cmd-only set prefix. The exact generated shape is now rewritten shell-neutral, so that test checks the new form and a new test keeps the cmd-only fallback (no neutral spelling) covered. The planted-bug list points at both.
…r, and explain the managed-machine notice (#281)

A policy guard that Claude Code seats ahead of installed plugins on managed machines skips every classic.* event for them and notes each skipped event once per session. classic.UserPromptSubmit and classic.Stop only noted the transcript path, which classic.SessionStart already carries for every session, so they are removed. classic.SessionStart (/clear handling) and classic.PermissionRequest stay because nothing else carries those signals. Adds a source guard test and a docs section.
…lot-doctor catch skipped hooks

Copilot CLI reads hook matchers as regex strings and skips any entry whose
matcher is not a string. The installer wrote an object for preToolUse, so
bash output compression never ran, while copilot-doctor still reported the
hook config as OK.

- Write matcher "bash" (anchored by Copilot as ^(?:bash)$).
- copilot-doctor fails when any hook entry has a non-string matcher and
  points at copilot-install to rewrite it.
- Add tests for the generated matcher, the installed file and the doctor
  check. Refresh the plugin mirror.
…pilot lacks

copilot-install registered the rollup, dashboard refresh and in-flight tally
cleanup under a lowercase `stop` event. Copilot has no such event, so none of
it ran. Register the bridge under sessionEnd, keep `stop` as a legacy handler
name, and have copilot-doctor warn when an old file still uses `stop`. The
doctor also fails cleanly, instead of crashing, on a hook file that is not a
JSON object.
- Pin CLAUDE_CONFIG_DIR and USERPROFILE and create the .claude dir for the
  subprocess runs, as the host-safety guard requires.
- Skip the hook-executing tests when no working bash is available, using a
  capability probe instead of a platform check.
- Drop modules first imported under a test's temporary HOME when the test
  ends, including when the test body or an import fails.
- Restore the plugin_env state that test_orphan_plugin_identities changes, so
  tests that run after it see the real environment.
Use a continuity-only view of user text so metadata, local command output,
and notifications cannot replace the real task. Keep genuine slash-command
arguments without changing quality scoring or skill invocation accounting.

Fixes #288
Exercise complete duplicate name, message and args wrappers through task,
checkpoint and topic consumers. Removing only the duplicate-field guard
now fails all nine cases. Pin multi-block followups and windowed topics.
# Conflicts:
#	CHANGELOG.md
# Conflicts:
#	CHANGELOG.md
…ode; copilot-doctor flags matchers Copilot skips

- Topic-word floor uses fixed code-point ranges shared by all three runtimes, so fullwidth
  Latin (API) classifies the same everywhere. Alphabetic non-Latin scripts keep 3+ letter
  words, dropping 2-letter function words (на, في, של) that caused false matches.
  Combining marks no longer count toward length.
- copilot-doctor fails empty, invalid, lookaround and backreference matchers.
- copilot-install removes its temp file when the locator write fails.
… text

- Advisor iterations are billed at their own model (executor model when
  unpriced), added on top of the executor sum so no tokens are dropped.
- Keep-warm replay and the cache-rewrite detector use executor occupancy.
- Interrupt markers, cut-off notices, bare local slash commands and leading
  system-reminder blocks no longer become the Active Task.
- Costly prompts reuse the task text filter; meta records are not counted
  as human messages; session baselines use context size.
…ick or !; Stop never writes an empty checkpoint (#278)

Paths holding a character PowerShell or cmd.exe expands now go through the
8.3 short name of their folder or a plain python -c bootstrap that reads the
folder from the environment, instead of the cmd-only form. The doctor names
the exact fix when no PowerShell-safe form exists. On Codex, a Stop with no
readable transcript records why and writes no placeholder checkpoint.

Adds shell models of cmd.exe, Windows PowerShell 5.1 and PowerShell 7 and a
path matrix test, plus an end-to-end Codex Stop test.
The checkout now writes the same shell-neutral launcher command as a
marketplace install, pinned to the checkout so a version folder beside it is
never picked instead.
- Codex: AGENTS.md, environment context and turn markers never become the
  topic or Active Task; the user_message event wins over its duplicate.
- VS Code companion: fill uses the final executor iteration (#287).
- OpenClaw: legacy Claude Code logs skip harness records for the topic.
- Notes on the billing-ratio statusline and compact-advice share.
…mon files, wins the settings lease, and a guard counts what is left (#106)
@alexgreensh
alexgreensh merged commit b71f2e8 into main Oct 28, 2026
45 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 28, 2026
@alexgreensh
alexgreensh deleted the integ/5.13.59 branch October 28, 2026 10:15
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Windows Codex 5.13.57 follow-up: generated hooks fail in PowerShell; automatic Stop creates unknown/no-transcript checkpoint

3 participants