Repository navigation
v0.30.5 — Codex roles run on their own models, the Stop reminder reaches Codex, and vault worktrees show on the band
Three fixes. Two were found by checking Codex live on 0.30.4 (codex-cli 0.162.1); the third is issue #87.
Codex roles run on the models configured for Codex
A role started from a Codex skill ($projectstore-critic, $projectstore-planner, …) asks the core which model and effort to pass to spawn_agent. In a Codex session, that question was answered from Claude Code's settings, .projectstore/harness/claude-code.json:
- in a project only Codex uses, nothing was configured there, so the role ran on the parent's model;
- in a project with a
.claude/folder, Codex was handed a Claude model name.
From 0.30.5, a core run from a Codex skill reads .projectstore/harness/codex.json. Codex roles now run on the model and effort you set for Codex:
npx projectstore configure --harness codex
agents show, run from a Codex skill or from npx projectstore-codex, and doctor's overlay checks read the same file.
If you set models for Codex earlier, they take effect from this release.
The Stop reminder reaches Codex
When a session has written to three source files and no story is in progress, projectstore reminds the agent to open one. If the agent's own write did not carry the reminder (it delegated the writing), the reminder rides on the end of the turn. On Codex that output was refused (hook: Stop Failed), and the reminder was spent without reaching anyone.
From 0.30.5, on Codex it arrives as a hook prompt: the TUI shows Blocked by hook with the reminder, and the agent answers it in the same turn. In a headless codex exec, that answer becomes the run's last message. Claude Code's reminder is unchanged.
A session working in a worktree of the vault gets its epic and story on the band
If your vault is edited through git worktrees (a .worktrees/x/ folder inside it, or a checkout elsewhere), a session working there never got its own epic or story on the band and the status line. The band showed the pinned epic, or nothing.
From 0.30.5, any worktree of the vault's repository counts as the vault. The hooks recognise it from git's own files, without running git. The session's pointer remembers which copy its story lives in, so the band draws that epic and story from the worktree until the story is merged and closed in the bound vault. band status names the story and the copy:
session: 358b760d… · epic PS-A · story Subtract joins add · in /path/to/vault-topic
Edits made through the shell are not seen; a Read of the story sets the pointer. A worktree's vault files are never counted as source code, and a story open in the worktree you are working in counts as open.
Upgrading
Nothing to migrate. The agents block stays v5, and the hook commands are unchanged, so Codex does not ask to review its hooks again.
From npm, from a terminal in your project:
npx projectstore@0.30.5 upgrade
Codex's registration is per machine:
npx projectstore@0.30.5 upgrade --harness codex
From the git marketplace, in Claude Code:
/plugin update
Then restart the agent.
Codex stays experimental, as docs/harnesses.md defines it.