OpenClaw
OpenClaw restores GitHub tools to managed Codex sessions
OpenClaw proposes restoring GitHub tools inside managed Codex sessions while two fresh reports expose custody gaps in Discord message edits and timeout replay in the skills curator.
openclaw/openclaw PR #128937 is the inspected primary source: “fix: restore GitHub tools in managed Codex sessions.” The related records below were inspected as supporting context rather than independent confirmation.
The facts
- openclaw/openclaw PR #128937 was created 2026-08-25T00:27:38Z and was open at inspection; its title is “fix: restore GitHub tools in managed Codex sessions.” - openclaw/openclaw issue #128936 was created 2026-08-25T00:26:59Z and was open at inspection; its title is “[Bug]: Discord component message edits bypass the onPlatformSendDispatch custody seam.” - openclaw/openclaw issue #128934 was created 2026-08-25T00:26:51Z and was open at inspection; its title is “[Bug]: Skills curator pin/unpin/restore replay gateway-answered failures against local state after a 1.5s timeout.” - The repository reported 387436 stars, 5911 open issues, default branch main, and last push 2026-08-25T00:34:28Z. - The latest tagged-release baseline checked was v2026.8.1-beta.3 published 2026-08-24T04:40:41Z.
What changed
openclaw/openclaw PR #128937 reports: Related: #128807 What Problem This Solves Fixes an issue where managed Codex sessions with a configured GitHub identity could not use the dedicated GitHub identity or publication tools. The Gateway prepared the session/worktree capability, but the harness attempt received no capability value and hid both tools. Why This Change Was Made The run-to-attempt dispatch now preserves the Gateway-owned tri-state capability exactly. It does not default unavailable state or move credentials into the worker; the existing Gateway publication boundary and downstream Codex registration remain unchanged. User Impact RoboClaw and other managed Codex agents can inspect their effective GitHub identity and publish through the Gateway when their session owns an authorized worktree. Credential-free cloud workers remain credential-free. Evidence Before the fix, a live Team managed-worktree RoboClaw turn reported that the dedicated identity tool was unavailable even though the deployed build included #128807 and the managed OAuth identity was healthy. Local proof: node scripts/run-vitest.mjs src/agents/embedded-agent-runner/run.overflow-compaction.loop.test.ts — 7 passed node scripts/run-vitest.mjs extensions/codex/src/app-server/dynamic-tool-build.test.ts -t 'exposes prepared GitHub tools' — 4 passed, 87 skipped pnpm check:changed — passed pnpm build — passed git diff --check — passed Autoreview — clean, no accepted/actionable findings Production LOC: +2. Test LOC: +12. AI-assisted; the implementation and evidence were reviewed against the full run-to-attempt owner boundary and the upstream Codex dynamic-tool registration contract.
openclaw/openclaw issue #128936 reports: Bug type:** Behavior bug (invariant seam gap) Beta release blocker:** No Summary PR #128357 moved onPlatformSendDispatch inside the create-path retry closure so delivery-custody accounting revalidates per attempt. The component **edit** path was left outside the invariant: editDiscordComponentMessage calls editChannelMessage directly and never invokes opts.onPlatformSendDispatch, even though the option exists on its opts type. Today both callers happen to run after delivery settles, so nothing misbehaves — but it is the one Discord platform-write path where wiring custody in the future would silently skip dispatch accounting, producing wrong retry classification. Steps to reproduce 1. Inspect sendDiscordComponentMessage (create): extensions/discord/src/send.components.ts:328 awaits opts.onPlatformSendDispatch?.() inside the retry closure. 2. Inspect editDiscordComponentMessage: same file, ~:369-431 builds the body and calls editChannelMessage(rest, channelId, messageId, {...}) with no onPlatformSendDispatch invocation anywhere. Expected behavior Every Discord platform-write path either honors the dispatch seam or explicitly refuses custody-carrying callers, so ownership stays enforceable rather than convention. Actual behavior Verified at pinned SHA: Create path: hook awaited inside retry closure (:328) per #128357. Edit path: no invocation; exhaustive caller check shows current users are outbound-adapter.ts AskUserQuestion status finalize (post-delivery, custody-free) and agent-components.plugin-interactive.ts interaction-time edit — neither passes nor needs the hook today. All custody-carrying sites verified inside retry closures elsewhere (send.shared.ts:379/486/534, send.outbound.ts:247/512, voice-message.ts:484, webhook:158), making edits the lone exception. Risk: src/channels/turn/direct-delivery-custody.ts:31-55 state machine expects PlatformMessageNotDispatchedError semantics from un-dispatched writes; a
openclaw/openclaw issue #128934 reports: Bug type:** Behavior bug (owner-boundary violation) Beta release blocker:** No Summary runSkillCuratorMutation (skills CLI pin/unpin/restore) swallows **any** gateway error in non-remote mode and falls back to applying the mutation against local state. This violates the invariant documented in the same file for its sibling mutation: *"Decide offline fallback before dispatching the non-idempotent mutation. Once a Gateway answers, apply failures must never be replayed locally."* With the 1.5s gateway timeout shared by status and mutations, any slow-but-alive gateway (or application error like "Curated skill not found") triggers a blind local replay of a mutation the gateway may have already applied or deliberately rejected — diverging Gateway-owned curation state from local state while reporting success. Steps to reproduce 1. Local-mode gateway running; inject >1.5s latency into skills.curator.pin (or make it return a not-found application error while local workspace state is stale). 2. Run openclaw skills curator pin. Expected behavior Only offline-class failures (transport closed/credentials-required, per the sibling's narrow check) may fall back to local application; everything else must surface the gateway error without replaying. Actual behavior Verified at pinned SHA: src/cli/skills-cli.ts:436-440: catch { if (config.gateway?.mode === "remote") throw err; } — otherwise falls through to pinCuratedSkill/unpinCuratedSkill/restoreCuratedSkill locally. src/cli/skills-cli.ts:458-459: the sibling runSkillProposalApply documents and enforces the opposite rule via narrow offline classification (isGatewayCredentialsRequiredError / transport closed+1006 only,:469-475). Mutation timeout is the
Why it matters
The cluster asks whether a managed session’s declared tool and custody boundaries survive dispatch, retries and platform-specific edits. The operator test is whether the system remains bounded and its receipts still describe the action after failure, retry or restart.
Current
The primary record was open when captured on 2026-08-25. The tagged-release baseline was v2026.8.1-beta.3 published 2026-08-24T04:40:41Z. Repository metadata, full source bodies, current pull requests and issues, releases, Google News, Hacker News, Lobsters, Metamesh and the rendered ClawCharts row were inspected. ClawCharts selected the subject; it did not prove the claim.
Evidence
The primary URL is https://github.com/openclaw/openclaw/pull/128937. Supporting records are https://github.com/openclaw/openclaw/issues/128936 and https://github.com/openclaw/openclaw/issues/128934. Source bodies, timestamps and states are preserved in the daily evidence bundle. Test counts and reproductions remain attributed to their authors unless identified as independently rerun.
Source boundary
Open work is described as open, closed work as closed, and operator reports as reports. A pull request is evidence of proposed or reviewed direction, not proof of a shipped release. Search residue, package mirrors and historically published source spines were excluded.
Operator take
Keep tool availability derived from the managed runtime, route every edit through the same custody seam, and bind curator retries to an idempotent operation receipt. Preserve a before-state receipt, make the smallest reversible change, and verify the original failure independently.
Caveat
Public project records are mutable. Status, scope and evidence can change after publication. This brief records the inspected state and does not authorize changes to a reader’s deployment.
Source inspected; source state, environment and release boundary remain explicit.