Commit Graph

1653 Commits

Author SHA1 Message Date
Peter Steinberger 0924fd9a0c fix(codex): reclaim binding capacity after session deletion (#128366)
* fix(codex): reclaim binding ownership when sessions are deleted

Prepare harness deletion outside the SQLite writer and compare-delete exact companion ownership at the session removal edge, with compensation before commit and native subscription release afterward. Preserve live siblings and upstream native history. Repair proven orphan bindings through the existing Doctor planner under maintenance ownership.

* fix(codex): reuse prepared auth for resumed thread ownership

* docs(plugins): clarify shared migration and auth contracts

* test(codex): use the canonical config type facade

* fix(codex): preserve native threads during manual resume

Record pending attachment intent and validate the immutable native tool catalog
before applying configuration to the selected thread. Require uninterrupted
physical-client ownership through native unsubscribe, resume, and binding commit.
Keep the thread intact on unsupported policy, competing work, or failed proof.

Reuse canonical retained-owner cleanup and preserve unsafe-client retirement.
Cover the real command producer, cold and loaded resumes, competing leases,
lazy-store commit fencing, and the Gateway competing-owner path.

* test: isolate Codex auth and session completion fixtures
2026-08-26 20:33:53 -07:00
sunlit-deng 943400ea8c fix(codex): decode mixed-case file image URLs (#121611)
Preserve Node file URL conversion and prove both metadata fields through the real pinned Codex app server.
2026-08-26 19:39:59 -07:00
Peter Steinberger 395e5db41b chore(deps): refresh dependencies after seven-day cooldown (#130296)
* chore(deps): refresh cooled npm and plugin dependencies

* chore(deps): refresh cooled build and workflow tooling

* chore(deps): retain formatter compatibility

* chore(deps): retain lint compatibility
2026-08-26 16:13:18 -07:00
pash-openai a021f79bad Keep native completion receipts through child recovery (#130347) 2026-08-26 13:10:14 -07:00
pash-openai 8e9db5e166 Fix missing replies after native Codex subagents finish (#130311)
* Fix missing replies after native Codex subagents finish

* Fence subagent completion during parent startup
2026-08-26 12:45:49 -07:00
Ayaan Zaidi a901d33184 fix(skills): share the foreground prompt prefix with the experience review (#130013)
The detached Skill Workshop experience review rebuilt its system prompt and tool catalog from a different context than the foreground turn, so every review missed the prompt cache. Native harnesses (embedded, Codex, Copilot) now hand the review the same foreground prompt context via buildEmbeddedForegroundPromptContext; the review reuses the foreground prefix and gates execution to skill_workshop while keeping the catalog identical. Reviews without a foreground prompt (CLI hook contexts) are skipped.
2026-08-26 09:39:54 +00:00
Peter Steinberger ea49e77bbc fix(codex): keep progress cards out of chat history (#130022)
* fix(codex): keep progress cards out of chat history

* test(codex): simplify progress card regressions
2026-08-26 02:28:31 -07:00
Peter Steinberger 68f17b01cc fix(gateway): permission modes work on rootless sessions via workspace default root (#129994)
* fix(gateway): permission modes work on rootless sessions via workspace default root

Session permission modes hard-required a recorded sessionRoot, which only the
sessions.create RPC ever records. Channel sessions, pre-#124909 rows, and
exec-node sessions are rootless, so runs failed closed with 'session permission
mode requires a recorded session root' (rows poisoned before the #128149 guards
were permanently bricked) and operators could not set a mode on channel
sessions at all.

The mode semantics are root-free; every containment consumer already falls
back to the workspace, and the remote worker launcher already derives its
containment root from placement.remoteWorkspaceDir. Make that the canonical
rule: a recorded sessionRoot pins worktree/explicit-cwd boundaries, and a
rootless session's boundary is the agent's canonical workspace resolved where
the run is prepared.

- embedded runner + compaction: default policy root to realpath(workspace)
  instead of throwing/dropping the mode; bricked rows self-heal
- gateway: delete the patch/create/reset rejection guards and
  session-permission-policy.ts entirely
- codex plugin: helpers take a required defaultRoot (agent workspace fact,
  never a requested thread cwd); delete the four root throws; sandbox context
  for conversation bindings now derives from the agent workspace
- ui: drop the rootless-rejection surface from the permission picker
- docs: permission-modes boundary contract updated

* fix(agents): split workspace path identity out of the kysely state store

Heals main: #116650 made memory-host-sdk/dreaming.ts import
resolveWorkspaceStateIdentity from workspace-state-store, statically pulling
kysely into the memory-core doctor-contract closure and failing the
doctor-contract-closure-guard lane on origin/main. The identity helpers are
pure path/crypto code; move them to workspace-state-identity.ts and repoint
all importers (dreaming, event-store, onboarding recommendations, workspace
migrations, legacy state).

* fix(ui): drop the unused permission picker sessionRoot prop and dead i18n keys

check-prod-types caught the New Session dialog still passing the removed
sessionRoot picker prop; the prop and the permissionControls.rootLabel /
sessionRoot strings have had no consumers since #124301.

* fix(codex): resolve rootless permission boundaries from agent config, not bind cwd

ClawSweeper P1: /codex bind --cwd stores the requested path as the binding
workspaceDir, which the previous commit then trusted as defaultRoot — letting
a bound thread's requested cwd become (and widen) the rootless permission
boundary. resolveConversationAppServerRuntime now owns the fact: it resolves
the selected agent's canonical workspace from config (falling back to the
plugin's configured default workspace), and the caller-supplied
agentWorkspaceDir parameter chain is deleted so no call site can pass a
tainted value. Recovery of recorded roots is unchanged (pinned roots stay
pinned); the moved-history test now proves the bind-cwd clamp lands on the
agent workspace.
2026-08-26 02:25:57 -07:00
chelsealong 2c9bcf33b5 fix(codex): keep /codex model scoped to the native binding (#128751)
* fix(codex): keep /codex model scoped to the native binding

/codex model wrote the outer OpenClaw session model override (and marked
a pending live model switch) any time a session context was present,
even for a thread bound through /codex bind. In a dual-runtime setup
that let a Codex-scoped model change silently redirect the next turn
to a different configured runtime. The binding store is now the sole
owner of this selection; only /model may change the outer session
override.

* fix(codex): make /codex model status binding-owned

The no-argument /codex model status read still preferred the outer
SessionEntry override over the native binding, so it could report a
stale model that diverged from what /codex model just wrote to the
binding. Read the binding first and fall back to the outer session
model only when no binding exists yet.

* fix(codex): preserve authoritative model selection ownership

Co-authored-by: chelsealong <chelsealong@126.com>

* fix(codex): retain session identity narrowing

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-25 23:26:40 -07:00
Peter Steinberger 0285926bf9 refactor(codex): compact generated protocol JSON (#129524) 2026-08-25 22:26:54 -07:00
Peter Steinberger b1dbdd3803 fix(codex): keep live commentary tables and code blocks readable (#129828)
* fix(codex): preserve markdown in live commentary

* chore: keep release-owned changelog out of bug fix
2026-08-25 21:48:52 -07:00
ClawSweeper ce08e259e9 fix(codex): prevent steered answers from disappearing or crossing threads (#128257)
* fix(codex): isolate steered thread transcripts

* fix(ui): scope terminal queue cleanup

* refactor(codex): split steering snapshot assembly

* fix(codex): suppress silent steering boundaries

* chore(ui): document chat event ownership

* test(ui): await Lobsterdex bootstrap requests

* test(update): isolate managed service selectors

* test(ui): submit queue edits by keyboard

* refactor(ui): tighten chat event ownership

* refactor(ui): narrow terminal chat payloads

Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>

---------

Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-25 21:27:01 -07:00
Peter Steinberger 2f17d11e90 fix(backup): preserve configured agent state roots (#129773)
* fix(backup): honor configured agent state roots

Inventory configured agent directories as durable backup owners regardless of layout. Reuse the owner inventory for archive planning, SQLite snapshotting, verification, restore safety, and Git/SQLite backup selection.

Add manifest-first plugin backup resource declarations so regenerable runtime roots stay plugin-owned without provider IDs in core.

Closes #129730

* fix(backup): preserve canonical ownership checks
2026-08-25 21:13:37 -07:00
Josh Lehman f50e043029 fix(codex): restore Computer Use after marketplace source upgrades (#129551)
* fix(codex): migrate legacy bundled marketplace source

* test(codex): make marketplace migration regression portable

* fix(codex): scope marketplace migration to base user config (#129521)
2026-08-25 16:49:28 -07:00
Peter Steinberger 6ad0f79ae4 fix(codex): suppress under-development features warning in chat (#129493)
Codex 0.149 emits a session-configure warning whenever UnderDevelopment-stage
features are enabled, and OpenClaw always enables features.code_mode and
features.apply_patch_streaming_events for native code mode threads. The
warning relays into chat as a SYSTEM card telling operators to edit the
managed codex-home config.toml they should never touch.

Send suppress_unstable_features_warning: true in the same thread-config
block that enables those features. When native code mode is off, OpenClaw
does not send the flag, so warnings for user-enabled under-development
features still surface. The general warning relay is untouched.

Verified live against the pinned @openai/codex 0.149.1 app-server binary:
thread/start without the flag emits the exact warning; with it, none.
2026-08-25 16:38:48 -07:00
Peter Steinberger 6a1dedb00c refactor(agents): remove redundant heartbeat system prompts (#129642)
* refactor(agents): remove redundant heartbeat system prompts

* test(agents): align heartbeat cleanup checks and prompt snapshots
2026-08-25 16:10:22 -07:00
Peter Steinberger cf753e45f2 test(codex): remove duplicate approval policy assertion (#129586)
Amp-Thread-ID: https://ampcode.com/threads/T-01a037b5-3918-749f-90bd-5c9ac1dced16

Co-authored-by: Amp <amp@ampcode.com>
2026-08-25 13:18:42 -07:00
Peter Steinberger 3254b7f7aa fix(codex): back off between app-server startup retries (#129505)
* fix(codex): back off between app-server startup retries

A transient Codex app-server startup exit could burn all three startup
attempts inside one contention window: codex 0.149.1 hard-fails
StateRuntime::init after its five-second SQLite busy timeout when another
Codex instance (e.g. Codex Desktop) is actively using the same codex home,
and the startup loop restarted immediately, so attempts 1-3 raced the same
held lock roughly six seconds apart and onboarding's Codex candidate died
with 'initialize transport failed after request write'. The same
activation retried later succeeds in one attempt.

Keep the canonical three-attempt owner but wait 1s before attempt 2 and 2s
before attempt 3 (zero for executable-selection changes), abortable via
the existing startup abandonment signal. Non-transport errors still fail
immediately. Production LOC net-neutral.

Upstream contract verified in ../codex at rust-v0.149.1:
app-server/src/lib.rs:613 (fatal init), rollout/src/state_db.rs:45 (CLI
warns instead), state/src/sqlite.rs:285 (5s busy_timeout).

Four hermetic child-process regressions: first-spawn exit recovers;
contention outlasting immediate retries recovers only with backoff (fails
pre-fix); persistent exits stop at three attempts; unsupported version
fails after one.

* chore: drop worker scratch file
2026-08-25 12:20:38 -07:00
Peter Steinberger 4dc7bb7411 chore(deps): refresh dependencies after seven-day cooldown (#129187)
* chore(deps): refresh dependencies after cooldown

* fix(gateway): emit append-only Responses content events

* chore(deps): retain unverified Sherpa runtime
2026-08-25 05:00:46 -07:00
Peter Steinberger 8a1ff3966b feat(workers): run OpenClaw and Codex on the same cloud profile (#127752)
* feat(workers): run both harnesses on one cloud node profile

* docs(workers): explain shared OpenClaw and Codex cloud profiles

* fix(workers): preserve trusted Codex cloud enrollment

* docs(codex): clarify bundled cloud plugin eligibility

* fix(workers): honor Crabbox bootstrap retries

* fix(workers): allow cloud profile setup to finish

* fix(workers): reject unsupported cloud execution modes

* refactor(workers): split cloud placement modules

* fix(workers): preserve completed container results
2026-08-25 00:13:29 -07:00
Josh Avant a833ca972b fix(codex): keep Computer Use working after desktop updates (#127778)
* fix(codex): converge desktop generations after updates

* test(codex): preserve managed binary exports in model mocks

* fix(codex): bind desktop generations to artifact content

* fix(codex): preserve desktop install and cache identity

* fix(codex): bind desktop artifact reconciliation to generation

* test(codex): pin desktop platform fixtures

* fix(codex): track package-first computer use generations

* fix(codex): fence explicit desktop generations

* fix(codex): drain prior generation before artifact refresh

* fix(codex): fence desktop generation transitions

* fix(codex): preserve custom app-server ownership

* fix(codex): restart after readiness generation changes

* fix(codex): fingerprint computer-use plugin bytes
2026-08-24 23:20:18 -07:00
ClawSweeper b68c136609 feat(codex): upgrade main to app-server 0.149.1 (#128370)
* feat(codex): upgrade app-server integration to 0.149.0

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>

* fix(codex): harden full app-server integration and lifecycle

* fix(codex): scope guardian trust and satisfy integration gates

* fix(codex): keep guardian startup and router tests within gates

* chore(codex): tighten guardian assertion safety baseline

* fix(ui): preserve sidebar icon path contracts

* test(codex): align side-question auth fixture

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* style(codex): format transcript mirror imports

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* test(codex): preserve native approval decisions

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* test(codex): isolate app cache and catalog fixtures

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(ui): render guardian review and system notices

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* test(codex): isolate native approval decisions

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(codex): revalidate reviewer config trust

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* chore(codex): update app-server to 0.149.1

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* test(codex): align desktop version warning

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(ui): scope notices to the active run

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* fix(codex): isolate review, hosted app, and auth ownership

Co-authored-by: Vito Cappello <hixvac@gmail.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* chore(codex): keep release notes out of the release-owned changelog

* test(codex): reject reviewer cancellation with its explicit error

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: roboclaw-bot <309084314+roboclaw-bot@users.noreply.github.com>
Co-authored-by: Vito Cappello <hixvac@gmail.com>
2026-08-24 19:50:22 -07:00
Peter Steinberger 56664c5cfb fix(codex): preserve GitHub tool capability (#128807) 2026-08-24 10:12:19 -07:00
Peter Steinberger 234df15a6d chore: refresh dependencies after seven-day cooldown (#128414)
* build(deps): refresh dependencies after cooldown

Apply dependency, toolchain, action, image, and exact tool updates released by the inclusive 2026-08-16 seven-day cutoff. Adapt owner boundaries for the resulting CUA, logging, Teams, Markdown, native, and test-harness contract changes while retaining versions blocked by upstream compatibility constraints.

* fix(ui): align markdown renderer env typing

* fix(deps): align postcss and mistral peer contracts

* fix(deps): repair refreshed dependency contracts

* fix(deps): retain tslog startup budget

* fix(ci): verify Android tools with SHA-256

* fix(ci): fence Android SDK cache version
2026-08-24 03:01:54 -07:00
Peter Steinberger a435cf6840 fix(codex): unify conversation permission policy (#128464)
* fix(codex): unify conversation permission policy

* fix(codex): reject stale conversation sources

* fix(codex): preserve permissions through compaction
2026-08-24 01:48:10 -07:00
zhangyan2026 5021451dc0 fix(agents): report blocked command outcomes (#108060)
Punchcard-Session: amber-lantern-timber-w7

Co-authored-by: zhangyan2026 <zhangyan202613579@outlook.com>
2026-08-23 23:16:24 -07:00
Bek 07a5945e55 Revert "fix(codex): preserve child hooks across turns (#128485)" (#128493)
This reverts commit a5c8e00cb6.
2026-08-24 00:55:28 -04:00
Bek a5c8e00cb6 fix(codex): preserve child hooks across turns (#128485)
* fix(codex): preserve native hook relays across turns

* fix(codex): fail closed on relay renewal loss
2026-08-24 00:31:42 -04:00
Vyctor H. Brzezowski 2a87667bb2 fix(ui): keep one agent run in one transcript response (#126278)
* fix(ui): compose agent run transcript responses

* fix(ui): preserve explicit run transcript boundaries

* fix(ui): preserve run transcript status

* fix(ui): preserve live agent run content

* fix(ui): preserve semantic agent run frames

* fix(ui): complete agent run transcript ownership

* fix(ui): stabilize agent run transcript lifecycle

* fix(ui): complete agent run frame ownership

* fix(ui): close transcript ownership races

* test(gateway-client): drop non-regressing projection case

---------

Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
2026-08-23 00:13:27 -03:00
Vito Cappello 5ddf381eed fix(channels): preserve gateway context for inbound turns (#127962)
* fix(channels): preserve gateway context for inbound turns

* fix(plugin-sdk): type bound channel reply dispatcher

* fix(channels): carry bound reply dispatchers

* fix(channels): keep reply carrier internal

* fix(auto-reply): consolidate dispatcher type imports

* fix(channels): keep reply dispatch typing internal

* fix(channels): derive inbound reply dispatcher types from turn plan

Keep ChannelRuntimeSurface identical to main: adapters read the bound
dispatchReplyFromConfig through the existing PluginRuntime["channel"]
wiring type and derive its type from the public ChannelInboundTurnPlan
contract, so the compatibility surface no longer grows a Gateway-bound
reply member.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(channels): hoist bound channel runtime casts for assertion ratchet

The assertion-safety ratchet collects SAFETY comments with a plain
ts.Scanner pass, which desyncs at the first template literal with a
substitution — comments after that point in a file are invisible, so
deep casts in monitor files cannot be SAFETY-covered. Hoist one shared
cast per call-site scope (absorbing the pre-existing buildContext
casts) and retype Discord's internal channelRuntime chain as
PluginRuntime["channel"] so dispatch reads need no assertion.

Co-authored-by: Cursor <cursoragent@cursor.com>

* test(channels): verify gateway dispatcher ownership

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* test(codex): assert sequenced node process notifications

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* docs(changelog): preserve release-owned root changelog

Channel Gateway tools preserve the owning dispatcher for Telegram, Discord, iMessage, Signal, and WhatsApp so terminal tools remain available. Thanks @VACInc.

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

* test(codex): avoid shadowing process notification bindings

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>

---------

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-22 13:44:47 -07:00
Marvinthebored 80beef6ff7 fix(codex): accept bounded upstream prompt provenance (#127730)
Allow exact upstream prompt provenance to use the existing 512 KiB settled-projection budget while preserving ordinary text bounds and aggregate accounting.

Co-authored-by: Marvinthebored <marvin.assistant@lindsey.jp>
2026-08-22 10:32:48 +05:30
Shakker b28a687830 fix: scope terminal cleanup by run (#127646) 2026-08-22 02:05:56 +01:00
Peter Steinberger 4e7bf407d1 test: remove redundant extension test seams (#127688) 2026-08-21 16:55:33 -07:00
Peter Steinberger 1353ce0995 feat: run Codex sessions on approved paired devices (#127202)
* feat(codex): execute paired-device sessions over node carrier

* fix(node-host): preserve approved invocation session identity

* fix(codex): observe paired-node execution leases before handshake

* fix: fence paired-device placement and Codex execution owners

* fix: satisfy paired-device placement CI ownership guards

* fix(codex): reject credentialed paired-node URL parameters

* fix(codex): fence nested remote HTTP session credentials

* fix(codex): scrub node process URLs and preserve plaintext HTTP

* test(codex): republish node inventory after capability approval
2026-08-21 12:50:26 -07:00
pash-openai 4573635c77 Let Codex use newly available account models before catalog refresh (#127394)
* Let Codex run newly available account models without host credentials

* Keep authored provider routes ahead of native account authentication

* Keep native Codex account discovery consistent with model availability

* Preserve advanced reasoning for newly discovered Codex models
2026-08-21 19:30:54 +00:00
pash-openai 264cc99405 fix(codex): run newly available models through native account auth (#127322) 2026-08-21 10:55:02 -07:00
Josh Lehman 6448550898 fix(codex): preserve project instructions in restricted turns (#126891)
* fix(codex): preserve restricted project instructions

* fix(codex): preserve ring-zero context isolation

* docs(codex): explain restricted turns and ring zero
2026-08-21 10:00:40 -07:00
Shakker f65b7e06ea fix: persist manual Codex compactions (#127230) 2026-08-21 16:24:53 +01:00
Shakker 7b5430a2d3 test: cover durable compaction activity 2026-08-21 16:24:53 +01:00
Shakker a5bac03e51 fix: preserve Codex compaction activity 2026-08-21 16:24:53 +01:00
Yiğit ERDOĞAN ff83e3efe8 test(extensions): close cached agent databases before removing fixture state dirs (#126352)
Doctor migrations and auth-profile writes open per-agent and shared state
databases under the fixture's temporary directory. Clearing the plugin
state store or the runtime auth snapshots does not release those handles,
so Windows fails the directory removal with EBUSY while Linux unlinks the
open files and stays green.

Close the cached databases before each removal, matching the ordering the
zalouser and zalo fixtures already use.
2026-08-21 07:22:57 -07:00
Shakker 69fa1a8eab fix(codex): preserve steering transcript order 2026-08-21 07:45:40 +01:00
Vito Cappello 6d7bc062e3 fix(session-catalog): hide OpenClaw-managed provider sessions (#125424)
* fix(session-catalog): hide OpenClaw-managed upstream sessions

* fix(codex): filter managed paired-node sessions

* fix(codex): classify legacy managed sessions

* fix(session-catalog): classify managed provider sessions

* fix(session-catalog): backfill inter-session ownership

* fix(session-catalog): classify Claude internal prompts

* fix(session-catalog): retain durable provenance

* fix(codex): keep rollout home derivation private

* fix(anthropic): declare catalog schema dependency

* fix(anthropic): avoid catalog schema dependency

* fix(session-catalog): scope managed ownership to Codex

* fix(codex): contain catalog provenance reads

* fix(codex): bind managed threads to catalog home

---------

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: Josh Lehman <550978+jalehman@users.noreply.github.com>
2026-08-20 19:51:55 -07:00
Peter Steinberger 319df0e7a1 test: trim plugin test duplicates (#126917) 2026-08-20 18:07:27 -07:00
Josh Avant a042125170 fix(memory): preserve provenance across dreaming (#126489)
* fix(memory): preserve provenance across dreaming

* fix(build): preserve bundled hook metadata

* refactor(build): remove obsolete directory helper

* test(memory): align provenance fixtures

* test(memory): type consolidation run options

* test(memory): register write provenance siblings

* fix(memory): preserve legacy provenance registration

* fix(memory): make provenance provider-independent

* fix(memory): canonicalize provenance workspace keys

* fix(memory): keep provenance mutation host-private

* fix(build): track runtime postbuild implementations

* fix(build): verify bundled hook metadata outputs
2026-08-20 17:58:31 -07:00
Peter Steinberger 500fd2cac9 refactor(codex): separate exec session transport (#126859) 2026-08-20 17:10:26 -07:00
Peter Steinberger 1362490b80 refactor(sandbox): canonicalize backend ownership (#126828) 2026-08-20 13:52:15 -07:00
Vincent Koc 15f33d9edc fix(qa): preserve Codex auth identity across restarts (#126777) 2026-08-21 03:16:22 +08:00
Peter Steinberger 02c08bba71 fix(codex): unblock Computer Use after plugin install (#126699)
* fix(codex): release config fence before readiness probe

* chore(codex): upgrade managed app-server to 0.148.0
2026-08-20 08:26:41 -07:00
Peter Steinberger 6d70d051a4 fix(gateway): preserve agent owner for live events (#126608)
* fix(gateway): preserve agent owner for live events

* fix(gateway): retain canonical live session owner
2026-08-20 02:50:38 -07:00