Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
e4657fc
docs: add complete Freshcodex implementation plan
danshapiro Oct 25, 2026
cad139b
docs: correct Freshcodex native semantics and release gates
danshapiro Oct 25, 2026
7a47a9b
feat(codex): verify native artifacts and enforce sandbox ownership
danshapiro Oct 25, 2026
41fb6d8
test(codex): capture native approvals, races and persistence limits
danshapiro Oct 25, 2026
3751991
feat(codex): preserve approval intent through prepared launches
danshapiro Oct 25, 2026
89e4628
test(clock): account for wall time during live advance
danshapiro Oct 25, 2026
d309e45
feat(codex): qualify the installed 0.164 managed runtime
danshapiro Oct 25, 2026
c85f182
fix(codex): refuse unsupported role approval policies
danshapiro Oct 25, 2026
9083ea9
feat(codex): project native live transcript and usage
danshapiro Oct 25, 2026
5e46b98
fix(codex): recognize captured MCP truncation markers
danshapiro Oct 25, 2026
8326525
feat(codex): preserve native tool and child activity
danshapiro Oct 26, 2026
7cd28e1
fix(codex): label observed native history previews
danshapiro Oct 26, 2026
d15783e
fix(codex): preserve observed native MCP outcomes
danshapiro Oct 26, 2026
ec0ab3f
test: bound browser discovery and budget full roster scans
danshapiro Oct 26, 2026
fa5ff93
test: await Claude MCP turn drain before capture closes
danshapiro Oct 26, 2026
132d67b
test: join native Codex stdio during owned process cleanup
danshapiro Oct 26, 2026
ffe42da
test: await the observed Claude boot assistant in saved history
danshapiro Oct 26, 2026
b7fa290
test(codex): expose stop acknowledgement and delivery races
danshapiro Oct 26, 2026
edd4eb3
fix(codex): preserve turn ownership across send and stop races
danshapiro Oct 26, 2026
8cbe542
fix(codex): publish stop refusal under its ownership guard
danshapiro Oct 26, 2026
88763a5
fix(codex): keep stop intent and send bookkeeping owned
danshapiro Oct 26, 2026
f015166
test(codex): prove terminal consumption under dispatch serialization
danshapiro Oct 26, 2026
0758e19
feat(codex): honor native controls and MCP elicitation
danshapiro Oct 26, 2026
6ec398b
fix(codex): retain child controls across display eviction
danshapiro Oct 26, 2026
f1398b1
fix(codex): refresh delivered elicitation controls
danshapiro Oct 26, 2026
b63014a
fix(codex): restore drafts after native session binding
danshapiro Oct 26, 2026
cfc54c8
test(claude): await the persisted compact rollback point
danshapiro Oct 26, 2026
b5c709c
test(codex): cover native approval refusal and details
danshapiro Oct 26, 2026
71d9c48
test: settle successful Claude captures before closing
danshapiro Oct 26, 2026
47b8bda
fix(codex): recover retained state after hosted event loss
danshapiro Oct 26, 2026
c0ba437
fix(codex): preserve gap coverage until recovery snapshot
danshapiro Oct 26, 2026
0a60988
test(codex): diagnose native snapshot recovery at actor and browser b…
danshapiro Oct 26, 2026
ca2d133
fix(codex): hydrate lifecycle-only turns from full native history
danshapiro Oct 26, 2026
4bb2e1a
fix(codex): preserve receipts and scope retained recovery
danshapiro Oct 26, 2026
1b61e21
test(codex): wait for recovery fixture boundaries
danshapiro Oct 26, 2026
d6c0e7e
test(codex): define native catalog and exact selection contracts
danshapiro Oct 27, 2026
8cd7b8c
feat(codex): use native model and reasoning capabilities
danshapiro Oct 27, 2026
c16b744
test(codex): capture pending catalog fixture source transitions
danshapiro Oct 27, 2026
73b0a3b
fix(codex): keep catalog binding stable through creation
danshapiro Oct 27, 2026
9a15d86
test(freshcodex): preserve picker effort intent
danshapiro Oct 27, 2026
d3eb5e1
Merge upstream naming reliability into Freshcodex
danshapiro Oct 27, 2026
2257bb8
Fix Claude candidate preparation CPU budget
danshapiro Oct 28, 2026
f68271b
Pin test build compilers and report prepared build provenance
danshapiro Oct 28, 2026
a2c28ee
test: join Claude fixture processes before removing HOME
danshapiro Oct 28, 2026
c9f5834
test(codex): expose missing file access and plan browser behavior
danshapiro Oct 28, 2026
0b4a863
feat(codex): expose faithful settings and native plan mode
danshapiro Oct 28, 2026
9441ee4
test(codex): expose pre-ack and exact effort settings loss
danshapiro Oct 28, 2026
5f3d622
test(codex): target the visible terminal during create interleaving
danshapiro Oct 28, 2026
d0a125d
fix(codex): preserve settings chosen before create acknowledgement
danshapiro Oct 28, 2026
9fd2c77
test(codex): align browser fixtures with native settings contracts
danshapiro Oct 28, 2026
cfbe3f4
test(codex): join native compaction before the next idle send
danshapiro Oct 28, 2026
53f4d09
feat(codex): support REST CLI and MCP pane automation
danshapiro Oct 28, 2026
d6559c6
test(codex): verify automation naming with native metadata ordering
danshapiro Oct 28, 2026
57b62d9
fix(testing): join guards that exit during procfs reads
danshapiro Oct 29, 2026
d9614a8
fix(freshcodex): synchronize hosted native conversation names
danshapiro Oct 29, 2026
5a878ef
fix(runtime): answer retained controls before delayed admission
danshapiro Oct 29, 2026
ec2c891
fix(runtime): verify saved Codex state after host restart
danshapiro Oct 29, 2026
cba75d7
fix(codex): recognize native missing rollout on resume
danshapiro Oct 29, 2026
cab6d07
fix(runtime): retain managed references across Codex recovery
danshapiro Oct 29, 2026
b3f678d
fix(codex): admit verified hosted recovery names on current source
danshapiro Oct 29, 2026
e2693a0
fix(codex): confirm owned provider exit before recovery
danshapiro Oct 29, 2026
27242b6
test(codex): complete integrated native and browser journeys
danshapiro Oct 29, 2026
0422f60
test(codex): locate settings in the owning pane header
danshapiro Oct 29, 2026
78f3537
test(codex): observe the selected catalog pair across browsers
danshapiro Oct 29, 2026
f2e15be
test(codex): distinguish catalog and recent model rows
danshapiro Oct 29, 2026
79d0f9d
fix(codex): resolve model names from the bound runtime
danshapiro Oct 29, 2026
4b099e3
fix(codex): retain canonical name when REST adopts a conversation
danshapiro Oct 29, 2026
63c1411
docs: reconcile completed Freshcodex implementation steps
danshapiro Oct 29, 2026
0e66cc2
refactor(codex): box app-server RPC errors
danshapiro Oct 29, 2026
fe1ed66
refactor(freshagent): keep REST error metadata out of the result stack
danshapiro Oct 29, 2026
32287ff
test(supervisor): scope catalog assertions before awaiting registry
danshapiro Oct 29, 2026
230a49b
test(codex): simplify final recovery assertions for pinned Clippy
danshapiro Oct 29, 2026
5b50688
test(codex): simplify managed exec boundary checks
danshapiro Oct 29, 2026
d3c78c0
fix(codex): box managed native naming RPC errors
danshapiro Oct 29, 2026
4d40f25
test(runtime): cover the complete prepared artifact bundle
danshapiro Oct 29, 2026
e3334b9
test(codex): discover server binary in ordinary Cargo runs
danshapiro Oct 29, 2026
a921559
test(codex): support ordinary Cargo fixture temp roots
danshapiro Oct 29, 2026
77444e9
test(fixtures): separate writer release from native exit
danshapiro Oct 29, 2026
7949e56
test(claude): finish fixture persistence before legacy upgrade
danshapiro Oct 30, 2026
1336562
fix(claude): retain and join native child during sidecar shutdown
danshapiro Oct 30, 2026
1c5d6a8
Merge main and preserve Claude fixture ownership and cleanup retries
danshapiro Oct 30, 2026
1d3eda1
Merge main browser discovery timeout headroom
danshapiro Oct 30, 2026
3e232e7
Merge main sandbox target cache isolation into Freshcodex
danshapiro Oct 30, 2026
ab559d4
Align native Codex verification with per-worktree sandbox cache
danshapiro Oct 30, 2026
ca20277
Fix managed Codex proof sandbox cache binding
danshapiro Oct 30, 2026
eada70d
test(claude): order result and queued death attention checks
danshapiro Oct 30, 2026
e2b06ec
test: await Claude rejected-send stderr delivery
danshapiro Oct 30, 2026
657152b
test: audit Codex fork sidecar launch ownership
danshapiro Oct 30, 2026
6e7c264
test(freshcodex): require owned teardown proof before recovery
danshapiro Oct 30, 2026
052fbc9
Preserve full Codex cleanup records and diagnose capture failures
danshapiro Oct 30, 2026
c051f98
fix(freshcodex): retain managed cleanup descendants
danshapiro Oct 31, 2026
9bbc322
Make native Codex recovery fixtures wait for original capture
danshapiro Oct 31, 2026
39c0f67
test(freshagent): serialize provider exec parent fixtures
danshapiro Oct 31, 2026
f923f7d
fix: retain positive linked membership for opaque descendants
danshapiro Oct 31, 2026
bddfdeb
test(ws): scope Claude turn readiness before Stop
danshapiro Oct 31, 2026
10b19fa
test: align contextual Codex recovery cwd fixture
danshapiro Oct 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -332,4 +332,6 @@ All components **must** be accessible for browser-use automation and WCAG compli

Managed provider environment and recovery repair: [implementation plan](docs/plans/2026-10-05-managed-provider-environment.md).

Freshcodex completion: [implementation plan](docs/plans/2026-10-25-freshcodex-complete.md). Managed native runtime: [qualification and ownership](docs/development/codex-native-runtime.md).

When idle-waiting on subagents, always call `wait_agent` with `timeout_ms=3600000` (the 1-hour maximum). `wait_agent` wakes immediately on any subagent message or completion, so long timeouts add no latency — but every wait return (including a no-op timeout) costs a full model turn that re-sends the entire context. Never poll on shorter timeouts. Have workers `send_message` to `/root` at milestones so the parent wakes exactly when there is news.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 18 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,11 +123,19 @@ The service is standalone and independent of Electron.

### Fresh agents

Freshclaude, Freshcodex, and Freshopencode share a chat interface with tool output, questions, and approval controls. Use `/model` or click the model name to choose a model and thinking level. Changes apply to your next message; the picker remembers recent choices for each project.
Freshclaude, Freshcodex, and Freshopencode share a chat interface with live tool output, attachments, questions, and approval controls. Use `/model` or click the model name to choose a model and thinking level. Freshcodex lists models offered by its running Codex installation and also accepts an exact custom model ID. Changes apply to your next message; the picker remembers recent choices for each project. **Default** removes Freshell’s thinking-level override; Codex may still use its own configuration or a choice retained from earlier turns.

In Freshclaude, “Allow and don't ask again” saves the rule Claude suggests, listed on the card before you click (project rules go to `.claude/settings.local.json` in the project), and when Claude finishes planning it shows the plan with choices to approve it, approve and auto-accept edits, approve and stop asking for permission, or keep planning. In Freshcodex, “Always allow” lasts until the pane reloads.
In Freshclaude, “Allow and don't ask again” saves the rule Claude suggests, listed on the card before you click (project rules go to `.claude/settings.local.json` in the project), and when Claude finishes planning it shows the plan with choices to approve it, approve and auto-accept edits, approve and stop asking for permission, or keep planning. Freshcodex shows the decisions offered by Codex for each request, including “Allow for this session” when available.

You can queue follow-up messages while an agent works. They run one at a time, and the queue stays available if the session disconnects or ends. Expand the queue to read or cancel individual messages. Codex permission settings control when it asks for approval; “Never ask” does not change the session’s file or network access limits.
Freshcodex settings separate **Build or Plan**, **File access**, and approval policy. “Never ask” does not expand file or network access. Incompatible model, effort, or provider settings produce a diagnostic instead of silently broadening access.

Questions that await an answer pause the requested work. Async questions let Codex continue; replying sends an ordinary contextual message, and its status confirms delivery rather than completion of the requested work. MCP prompts offer explicit accept, decline, and cancel actions. Opening a linked page does not accept its prompt. Secret answers stay masked.

You can queue follow-up messages while an agent works. They run one at a time, and the queue stays available if the session disconnects or ends. Expand the queue to read or cancel individual messages.

Codex child conversations open read-only inside their parent. Available history can include live or saved output; ephemeral child history can be unavailable. Output labels distinguish retained, saved, interrupted, and truncated content, so a reload does not imply that every streamed byte was saved.

Use `/undo` to roll back Codex conversation turns without changing files; Codex has no `/redo`. **Rewind code to here** restores a message’s code checkpoint separately. `!command` runs a shell command in the conversation’s working directory and sends its output to the agent.

### Session switching and recovery

Expand Down Expand Up @@ -269,12 +277,13 @@ turning it off removes the server from Freshclaude and Kilroy agents started or
resumed after the change, with no restart. Terminal panes do not follow the
switch yet.

With fresh agents enabled, the CLI and MCP client can create Freshclaude or
Kilroy tabs, split them into panes, send prompts, and capture their conversation
as plain text. These operations also work without an open browser. Use
`agent: "claude"` or `agent: "kilroy"` with MCP `new-tab` and `split-pane`, or
`--agent claude` / `--agent kilroy` with the CLI. Both support resuming a saved
Claude conversation through `resume`.
With fresh agents enabled, the CLI and MCP client can create Freshclaude,
Kilroy, or Freshcodex tabs, split them into panes, send prompts, capture their
conversation as plain text, and wait for an output pattern. These operations
also work without an open browser. Use `agent: "claude"`, `agent: "kilroy"`, or
`agent: "codex"` with MCP `new-tab` and `split-pane`, or `--agent claude`,
`--agent kilroy`, or `--agent codex` with the CLI. Both support resuming a saved
conversation through `resume`; Freshcodex uses its canonical Codex session ID.

### Rust server scope

Expand Down
1 change: 1 addition & 0 deletions crates/freshell-agent-runtime/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ serde_json = { workspace = true }
rusqlite = { version = "0.31", features = ["bundled"] }
thiserror = "2"
async-trait = "0.1"
tracing = "0.1"
sha2 = "0.10"
tokio = { version = "1", features = ["rt", "sync"] }

Expand Down
Loading
Loading