Skip to content

fix(gateway): preserve device identity for local backend calls with auth mode none#98648

Closed
chenyangjun-xy wants to merge 633 commits into
openclaw:mainfrom
chenyangjun-xy:fix/issue-98614-sessions-spawn-scope
Closed

fix(gateway): preserve device identity for local backend calls with auth mode none#98648
chenyangjun-xy wants to merge 633 commits into
openclaw:mainfrom
chenyangjun-xy:fix/issue-98614-sessions-spawn-scope

Conversation

@chenyangjun-xy

@chenyangjun-xy chenyangjun-xy commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

What This Problem Solves

Fixes #98614: sessions_spawn fails with missing scope: operator.write when auth mode is "none" (e.g., Google Chat loopback deployments).

Root Cause

Commit 65b460f234 added allowAuthNone to shouldOmitDeviceIdentityForGatewayCall, conflating two separate concerns:

  1. Shared-auth check: whether the caller satisfies requireLocalBackendSharedAuth
  2. Device identity omission: whether to strip device identity for the server-side self-pairing bypass

Both were gated on omitDeviceIdentity, so changing one implicitly affected the other.

Fix

Separate the two concerns cleanly:

  • hasLocalBackendSharedAuth: auth mode "none" satisfies the shared-auth requirement independently — no error thrown
  • allowAuthNone in shouldOmitDeviceIdentityForGatewayCall: auth-none triggers device-identity omission — deviceIdentity = null — so the server-side shouldSkipLocalBackendSelfPairing bypass preserves requested scopes

Changes

  • src/gateway/call.ts: Keep allowAuthNone parameter in shouldOmitDeviceIdentityForGatewayCall; introduce separate hasLocalBackendSharedAuth check decoupled from device identity omission
  • src/gateway/call.test.ts: Update auth-none test to expect device-less behavior (deviceIdentity.toBeNull())

Evidence

Verification environment

  • OS: Windows 10 Pro 22H2 (build 19045)
  • Node.js: v22.x
  • Test runner: Vitest v4.1.8
image

Before fix (original PR commit 04a1fcd)

auth mode "none" + requireLocalBackendSharedAuth=true
→ allowAuthNone removed from shouldOmitDeviceIdentityForGatewayCall
→ omitDeviceIdentity = false (auth-none no longer triggers omission)
→ deviceIdentity = LOADED (identity-bearing)
→ Test: expect(deviceIdentity).not.toBeNull() ✓

Problem: identity-bearing auth-none can trigger paired-device scope checks
on the server side, bypassing shouldSkipLocalBackendSelfPairing.

After fix (codex-reviewed commit a2a98ac)

auth mode "none" + requireLocalBackendSharedAuth=true
→ allowAuthNone = true
→ hasLocalBackendSharedAuth = true (auth check passes)
→ omitDeviceIdentity = true (device identity omitted)
→ deviceIdentity = null (device-less)
→ Test: expect(deviceIdentity).toBeNull() ✓

server-side shouldSkipLocalBackendSelfPairing → clearUnboundScopes skipped
→ scopes survive handshake → operator.write preserved

Test results

Before fix: Test Files 3 passed | Tests 342 passed
After fix: Test Files 3 passed | Tests 342 passed

Behavioral comparison

Concern Before fix (original PR) After fix (codex-reviewed)
allowAuthNone param Removed Preserved
Auth check Coupled to omitDeviceIdentity Separate hasLocalBackendSharedAuth
auth-none deviceIdentity not.toBeNull() (identity-bearing) toBeNull() (device-less)
Server bypass contract Broken (paired-device checks) Preserved

User Impact

  • Google Chat and similar loopback + auth-none channel deployments regain working sessions_spawn multi-agent delegation
  • No config changes required — upgrade-only fix

@openclaw-barnacle openclaw-barnacle Bot added gateway Gateway runtime size: XS labels Jul 1, 2026
@clawsweeper

clawsweeper Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed July 1, 2026, 12:24 PM ET / 16:24 UTC.

Summary
The branch changes Gateway local-backend auth handling by separating auth-none shared-auth acceptance from device-identity omission, updates the related Gateway test, and currently carries broad conflicting branch state across workflows, apps, docs, plugins, and generated files.

Reproducibility: yes. at source level for the review blocker: the linked report is a token-auth sessions_spawn regression, while this PR's focused test is auth-none. I did not run a live Google Chat/Gateway reproduction in this read-only review.

Review metrics: 3 noteworthy metrics.

  • Current-main tree drift: 124 files differ, 8 deleted. The head tree is much broader than the two-file Gateway commit and cannot be treated as a narrow auth fix until rebased or recreated.
  • Dependency graph guard: 1 blocking guard comment. GitHub reported blocked dependency graph changes, which must be scrubbed or explicitly authorized before supply-chain review can clear.
  • Gateway auth guard: 1 shared-auth guard changed. The changed decision controls whether local backend Gateway calls proceed and what identity/scopes they carry.

Stored data model
Persistent data-model change detected: durable storage schema: ui/src/ui/storage.node.test.ts, durable storage schema: ui/src/ui/storage.ts, migration/backfill/repair: .agents/skills/openclaw-landable-bug-sweep/SKILL.md, migration/backfill/repair: .github/workflows/docker-release.yml, persistent cache schema: appcast.xml, serialized state: ui/src/ui/chat/code-block-copy-payload.ts, and 3 more. Confirm migration or upgrade compatibility proof before merge.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🧂 unranked krab
Patch quality: 🧂 unranked krab
Result: blocked until real behavior proof from a real setup is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Recreate or rebase the branch onto current main so only the intended Gateway files remain changed.
  • [P1] Add focused token-auth sessions_spawn regression coverage for the linked issue.
  • [P1] Add redacted live terminal/log proof for the after-fix Google Chat or equivalent local-backend flow.

Proof guidance:

  • [P1] Needs real behavior proof before merge: The PR body reports Vitest results and a narrative before/after trace, but it does not include redacted live sessions_spawn output, terminal logs, or a linked artifact from the reported Google Chat/local Gateway flow. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Risk before merge

  • [P1] The current head is conflicting and differs from current main across 124 files, including deleted workflow/tests, so accepting the branch tree during conflict resolution could roll back unrelated current-main behavior.
  • [P1] The linked regression is a token-auth Google Chat sessions_spawn failure, while the focused Gateway change and test exercise auth-none shared-auth behavior.
  • [P1] The changed guard is on the Gateway auth/device-identity boundary, so token-auth and auth-none upgrade behavior need focused coverage before maintainers can treat this as safe.
  • [P1] The PR has dependency-graph guard comments for broad lockfile/shrinkwrap changes; those must be scrubbed by rebase or explicitly authorized before supply-chain review can clear.

Maintainer options:

  1. Recreate From Current Main (recommended)
    Replace the branch with a current-main-based diff that only touches the Gateway fix and focused tests, then re-run review on the clean head.
  2. Retarget The Token-Auth Regression
    Add a token-auth sessions_spawn or server-level regression test for the linked Google Chat failure and prove the fix with redacted live output or logs.
  3. Keep As Auth-None Cleanup Only
    Maintainers could narrow and review the auth-none cleanup separately, but the closing relationship to the token-auth issue should be removed so the regression remains tracked.

Next step before merge

  • [P1] Human review is required because the PR has a protected security label, a dirty/conflicting broad branch, blocked dependency graph comments, and an unresolved best-fix question for the token-auth regression.

Security
Needs attention: The security pass cannot clear while the PR carries blocked dependency graph changes and broad workflow/automation drift unrelated to the Gateway fix.

Review findings

  • [P1] Rebase away the unrelated current-main rollback — .github/workflows/native-app-locale-refresh.yml:1
  • [P1] Retarget this fix to the token-auth sessions_spawn path — src/gateway/call.ts:1164-1173
  • [P1] Keep dependency graph changes out of this Gateway fix — pnpm-lock.yaml:513
Review details

Best possible solution:

Recreate or rebase this as a narrow current-main Gateway PR, add token-auth sessions_spawn regression coverage plus redacted real behavior proof, and remove the unrelated branch, workflow, and dependency graph drift before review continues.

Do we have a high-confidence way to reproduce the issue?

Yes at source level for the review blocker: the linked report is a token-auth sessions_spawn regression, while this PR's focused test is auth-none. I did not run a live Google Chat/Gateway reproduction in this read-only review.

Is this the best way to solve the issue?

No. The auth-none guard split may be plausible cleanup, but the best fix needs a clean current-main branch and coverage/proof for the token-auth subagent path described by the linked issue.

Full review comments:

  • [P1] Rebase away the unrelated current-main rollback — .github/workflows/native-app-locale-refresh.yml:1
    The current PR head is dirty/conflicting and its tree differs from current main in 124 files, including deleting workflow/test files unrelated to this Gateway auth fix. Please recreate or rebase the branch so the PR contains only the intended Gateway change before it can be reviewed or merged.
    Confidence: 0.91
  • [P1] Retarget this fix to the token-auth sessions_spawn path — src/gateway/call.ts:1164-1173
    The linked report is a token-auth Google Chat sessions_spawn regression, but this change only separates the auth-none shared-auth guard and updates auth-none expectations. Add focused token-auth sessions_spawn or server-level coverage that fails on current main and passes with the fix, or stop closing the linked issue from this PR.
    Confidence: 0.86
  • [P1] Keep dependency graph changes out of this Gateway fix — pnpm-lock.yaml:513
    GitHub's dependency-graph guard says this PR changes root/plugin lockfiles and pnpm-workspace.yaml, which is unrelated to the Gateway auth fix and blocked for external PRs without repository admin or security authorization. Rebase or scrub those changes before review can clear the supply-chain surface.
    Confidence: 0.82

Overall correctness: patch is incorrect
Overall confidence: 0.88

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against a5e11c0083c5.

Label changes

Label changes:

  • add merge-risk: 🚨 automation: The branch changes workflow surfaces and currently deletes a current-main workflow in the head-vs-main tree comparison.

Label justifications:

  • P1: The PR targets a real sessions_spawn regression affecting channel-triggered delegation and changes Gateway auth behavior, but it is currently unsafe to merge.
  • merge-risk: 🚨 compatibility: The branch is conflicting and carries broad current-main drift that could roll back tests/workflows or alter upgrade behavior if resolved incorrectly.
  • merge-risk: 🚨 auth-provider: The focused change sits on Gateway credential/device-identity handling and can affect token/auth-none scope behavior.
  • merge-risk: 🚨 automation: The branch changes workflow surfaces and currently deletes a current-main workflow in the head-vs-main tree comparison.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🧂 unranked krab and patch quality is 🧂 unranked krab.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: The PR body reports Vitest results and a narrative before/after trace, but it does not include redacted live sessions_spawn output, terminal logs, or a linked artifact from the reported Google Chat/local Gateway flow. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed

Security concerns:

  • [medium] Blocked dependency graph changes — pnpm-lock.yaml:513
    The dependency-graph guard reports root and extension lockfile/shrinkwrap changes on this external PR; OpenClaw requires admin or security authorization for that resolved-graph surface.
    Confidence: 0.82
  • [medium] Unrelated workflow drift — .github/workflows/native-app-locale-refresh.yml:1
    The head-vs-current-main tree comparison deletes a workflow and changes other automation surfaces unrelated to the Gateway auth fix, so automation/security review needs a clean rebased branch before clearance.
    Confidence: 0.78

What I checked:

  • Repository policy read: Root policy was read fully; it makes Gateway auth, provider routing, config/defaults, and compatibility paths merge-sensitive and requires scoped policy before review. (AGENTS.md:1, a5e11c0083c5)
  • Scoped Gateway policy read: Gateway scoped guidance was read; Gateway hot paths should avoid broad runtime churn and require focused verification around auth/startup behavior. (src/gateway/AGENTS.md:1, a5e11c0083c5)
  • Live PR state: GitHub reports the PR head b8ee16a as CONFLICTING/DIRTY, with the protected security label and existing P1/merge-risk labels. (b8ee16a07969)
  • Current-head tree drift from main: Comparing the PR head tree to current main shows 124 files differ, 8 files are deleted, and the net diff removes 4,570 lines, far beyond the two-file Gateway fix commit. (b8ee16a07969)
  • Top commit scope: The current top commit itself is narrow, touching only src/gateway/call.ts and src/gateway/call.test.ts, so the broad tree drift appears to be stale/diverged branch state that must be removed before review can clear. (src/gateway/call.ts:1156, b8ee16a07969)
  • PR head auth change: The PR head adds hasLocalBackendSharedAuth so auth-none can satisfy the shared-auth guard independently of device-identity omission, while still omitting device identity for auth-none loopback backend calls. (src/gateway/call.ts:1164, b8ee16a07969)

Likely related people:

  • fuller-stack-dev: GitHub path history shows commit 65b460f recently touched src/gateway/call.ts for node/auth diagnostics and is the commit identified by the linked issue as adding the allowAuthNone path. (role: introduced adjacent auth behavior; confidence: medium; commits: 65b460f2345a; files: src/gateway/call.ts, src/gateway/call.test.ts)
  • vincentkoc: Line blame and recent file history show substantial recent ownership of src/gateway/call.ts, including the current helper snapshot used by the release regression surface. (role: recent area contributor; confidence: medium; commits: f588a49a3677, 9594300f8c92, 720c0ab372f3; files: src/gateway/call.ts, src/gateway/call.test.ts)
  • lanzhi-lee: Commit 58bab0c owns the recent in-process subagent dispatch path adjacent to the sessions_spawn Gateway boundary involved here. (role: adjacent subagent/Gateway contributor; confidence: high; commits: 58bab0c2761e; files: src/agents/subagent-spawn.ts, src/gateway/server-plugins.ts)
  • steipete: Recent history shows broad Gateway client/protocol refactors and subagent-adjacent coauthorship that are relevant to choosing the right owner boundary for this auth/device-identity fix. (role: adjacent gateway architecture contributor; confidence: medium; commits: b1117d98622f, 3fc0df953cf1, 00d8d7ead059; files: src/gateway/call.ts, packages/gateway-client/src/client.ts, src/agents/subagent-spawn.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P1 High-priority user-facing bug, regression, or broken workflow. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. labels Jul 1, 2026
@openclaw-barnacle openclaw-barnacle Bot added the triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence. label Jul 1, 2026
vincentkoc and others added 21 commits July 2, 2026 00:13
…96502)

* fix(moonshot): bound video description JSON response reads

The Moonshot video description endpoint used an unbounded await res.json()
to parse the media understanding response. Route through
readProviderJsonResponse (16 MiB cap) to match the bound already in
place for other media understanding providers (xai, openrouter).

AI-assisted.

Co-authored-by: Cursor <[email protected]>

* test(moonshot): add bounds and malformed-JSON coverage for video description

---------

Co-authored-by: Cursor <[email protected]>
…rd (completes openclaw#93767) (openclaw#93820)

* fix(imessage): detect MiniMax mm: namespaced reasoning tags in reflection guard

The iMessage reflection guard's THINKING_TAG_RE only matched bare
`<think>/<thought>` tags, so MiniMax's `<mm:think>` namespaced reasoning
tags (and Anthropic's `antml:` prefix) were not recognized as reflected
assistant content. When such reasoning leaked back inbound, the guard
treated it as a normal user message instead of dropping it, allowing
recursive echo amplification.

Accept the known reasoning-tag namespace prefixes `(?:antml:|mm:)?` on
the think/thought alternatives, mirroring the shared reasoning-tag
contract in src/shared/text/reasoning-tags.ts (PR openclaw#93767). This is the
remaining channel-monitor complement of openclaw#93767 for the iMessage path;
the optional prefix is a pure recognition enhancement with no change to
the bare-tag, code-region exemption, or other reflection patterns.

Verified by driving the real detectReflectedContent export:
  <mm:think>secret</mm:think>visible  -> isReflection=true (was false)
  <think>...</think>       -> isReflection=true
  <think>secret</think>                -> isReflection=true (no regression)
  "thinking about minimax algorithms"  -> isReflection=false (no false-positive)
  `<mm:think>x</mm:think>` in code     -> isReflection=false (code exemption kept)

* chore: retrigger CI for real behavior proof check

* refactor(imessage): tighten reflection guard coverage

---------

Co-authored-by: Peter Steinberger <[email protected]>
… sessions.usage (openclaw#94096)

* fix(usage): reject inverted startDate-endDate range

* chore: retrigger CI for real behavior proof check

* refactor(usage): resolve validated date ranges once

---------

Co-authored-by: Peter Steinberger <[email protected]>
Expose `core/doctor/auth-profiles` as a default-disabled structured Doctor lint check.

This maps the existing auth-profile health diagnostics into structured findings while preserving legacy Doctor repair behavior. The check remains opt-in through `--only core/doctor/auth-profiles` or `--all`; default `doctor --lint` behavior is unchanged.

Validation:
- focused auth-profile/hints/contribution Vitest passed
- changed-file oxfmt and oxlint passed
- core tsgo passed
- git diff --check passed
- exact-head hosted CI/Testbox gates passed

Co-authored-by: giodl73-repo <[email protected]>
* fix(mcp): require owner for Claude permission replies

* fix(mcp): prove owner-gated permission replies
…law#98142)

When no chat DM pairing channels are configured, `openclaw pairing list`
(no channel argument) threw `Channel required ... (expected one of: )`
with an empty enum that reads like a bug. Users who hit this are usually
trying to approve a TUI/device or scope-upgrade request, which lives under
`openclaw devices`, not `openclaw pairing` (which only handles chat DM
pairing).

- Guard the channel hint in help text and errors so an empty channel list
  no longer renders a bare `()` / `(expected one of: )`.
- When no pairing channels exist, redirect to `openclaw devices list` /
  `openclaw devices approve` instead of failing opaquely.

AI-assisted (Claude Code).
* fix(exec): bind windows allowlist execution path

* fix(exec): add windows shadow execution proof

* fix(exec): preserve wildcard allowlist behavior

* fix(exec): correct blocked plan test fixture
Backport of openclaw#97118 to release/2026.6.11.

(cherry picked from commit 8346e87)
…ies (openclaw#97168)

* fix(slack): prefer current thread session for inherited outbound replies to avoid delivery-mirror session sprawl

* fix(slack): require explicit replyToIsExplicit===false for current-session precedence

* fix(slack): canonicalize inherited thread replies

---------

Co-authored-by: Peter Steinberger <[email protected]>
…call_end events (openclaw#97769)

* fix(plugins): apply output text transforms to toolcall_delta and toolcall_end events

toolcall_delta and toolcall_end events bypassed the output replacement
pipeline, leaking masked tokens (e.g. PII placeholders) into tool call
arguments and external systems.

Closes openclaw#97761

* fix(plugins): transform nested tool call arguments in output replacements

Add recursive transformToolCallArgumentText to handle strings, arrays,
and nested objects in tool call arguments, not just the name field.

* fix(plugins): keep tool names unchanged and cover result path

- Remove toolCall.name transformation to prevent breaking tool routing
- Add arguments transform to stream.result()/done.message via
  transformContentText for tool-call content blocks

* fix(plugins): narrow argument transform to toolCall content blocks only

Only transform arguments on content blocks with type=toolCall to avoid
touching non-tool-call blocks that happen to have an arguments field.

* test(plugins): assert stream.result() tool-call content block is transformed

* test(plugins): fix result-path fixture to actually contain toolCall block

The previous fixture used makeAssistantMessage('final') which produces
a plain text content block, not a toolCall block. The stream.result()
assertion was vacuously passing.

* style(plugins): fix type cast in result-path test assertion

* fix(agents): preserve tool argument transforms after repair

* refactor(agents): keep tool transform boundary narrow

---------

Co-authored-by: Peter Steinberger <[email protected]>
@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Dependency Guard

This PR changes dependency-related files. Maintainers should confirm these changes are intentional.

Changed files:

  • extensions/acpx/npm-shrinkwrap.json
  • extensions/amazon-bedrock-mantle/npm-shrinkwrap.json
  • extensions/amazon-bedrock/npm-shrinkwrap.json
  • extensions/anthropic-vertex/npm-shrinkwrap.json
  • extensions/arcee/npm-shrinkwrap.json
  • extensions/brave/npm-shrinkwrap.json
  • extensions/cerebras/npm-shrinkwrap.json
  • extensions/chutes/npm-shrinkwrap.json
  • extensions/clickclack/npm-shrinkwrap.json
  • extensions/cloudflare-ai-gateway/npm-shrinkwrap.json
  • extensions/codex/npm-shrinkwrap.json
  • extensions/cohere/npm-shrinkwrap.json
  • extensions/copilot/npm-shrinkwrap.json
  • extensions/deepinfra/npm-shrinkwrap.json
  • extensions/deepseek/npm-shrinkwrap.json
  • extensions/diagnostics-otel/npm-shrinkwrap.json
  • extensions/diagnostics-prometheus/npm-shrinkwrap.json
  • extensions/diffs-language-pack/npm-shrinkwrap.json
  • extensions/diffs/npm-shrinkwrap.json
  • extensions/discord/npm-shrinkwrap.json
  • extensions/exa/npm-shrinkwrap.json
  • extensions/feishu/npm-shrinkwrap.json
  • extensions/firecrawl/npm-shrinkwrap.json
  • extensions/fireworks/npm-shrinkwrap.json
  • extensions/gmi/npm-shrinkwrap.json
  • 47 additional dependency-related files not shown

Maintainer follow-up:

  • Review whether the dependency changes are intentional.
  • Inspect resolved package deltas when lockfile, shrinkwrap, or workspace dependency policy changes are present.
  • Treat package-lock.json and npm-shrinkwrap.json diffs as security-review surfaces.
  • Run pnpm deps:changes:report -- --base-ref origin/main --markdown /tmp/dependency-changes.md --json /tmp/dependency-changes.json locally for detailed release-style evidence.

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Dependency graph changes are blocked

OpenClaw does not accept dependency graph changes through PRs unless a repository admin or security explicitly authorizes the current head SHA. Dependency updates are generated internally by maintainers so external PRs cannot change the resolved graph.

Detected dependency graph changes:

  • extensions/acpx/npm-shrinkwrap.json changed.
  • extensions/amazon-bedrock-mantle/npm-shrinkwrap.json changed.
  • extensions/amazon-bedrock/npm-shrinkwrap.json changed.
  • extensions/anthropic-vertex/npm-shrinkwrap.json changed.
  • extensions/arcee/npm-shrinkwrap.json changed.
  • extensions/brave/npm-shrinkwrap.json changed.
  • extensions/cerebras/npm-shrinkwrap.json changed.
  • extensions/chutes/npm-shrinkwrap.json changed.
  • extensions/clickclack/npm-shrinkwrap.json changed.
  • extensions/cloudflare-ai-gateway/npm-shrinkwrap.json changed.
  • extensions/codex/npm-shrinkwrap.json changed.
  • extensions/cohere/npm-shrinkwrap.json changed.
  • extensions/copilot/npm-shrinkwrap.json changed.
  • extensions/deepinfra/npm-shrinkwrap.json changed.
  • extensions/deepseek/npm-shrinkwrap.json changed.
  • extensions/diagnostics-otel/npm-shrinkwrap.json changed.
  • extensions/diagnostics-prometheus/npm-shrinkwrap.json changed.
  • extensions/diffs-language-pack/npm-shrinkwrap.json changed.
  • extensions/diffs/npm-shrinkwrap.json changed.
  • extensions/discord/npm-shrinkwrap.json changed.
  • extensions/exa/npm-shrinkwrap.json changed.
  • extensions/feishu/npm-shrinkwrap.json changed.
  • extensions/firecrawl/npm-shrinkwrap.json changed.
  • extensions/fireworks/npm-shrinkwrap.json changed.
  • extensions/gmi/npm-shrinkwrap.json changed.
  • extensions/google-meet/npm-shrinkwrap.json changed.
  • extensions/googlechat/npm-shrinkwrap.json changed.
  • extensions/gradium/npm-shrinkwrap.json changed.
  • extensions/groq/npm-shrinkwrap.json changed.
  • extensions/inworld/npm-shrinkwrap.json changed.
  • extensions/irc/npm-shrinkwrap.json changed.
  • extensions/kilocode/npm-shrinkwrap.json changed.
  • extensions/kimi-coding/npm-shrinkwrap.json changed.
  • extensions/line/npm-shrinkwrap.json changed.
  • extensions/llama-cpp/npm-shrinkwrap.json changed.
  • extensions/lobster/npm-shrinkwrap.json changed.
  • extensions/matrix/npm-shrinkwrap.json changed.
  • extensions/mattermost/npm-shrinkwrap.json changed.
  • extensions/memory-lancedb/npm-shrinkwrap.json changed.
  • extensions/moonshot/npm-shrinkwrap.json changed.
  • extensions/msteams/npm-shrinkwrap.json changed.
  • extensions/nextcloud-talk/npm-shrinkwrap.json changed.
  • extensions/nostr/npm-shrinkwrap.json changed.
  • extensions/openshell/npm-shrinkwrap.json changed.
  • extensions/parallel/npm-shrinkwrap.json changed.
  • extensions/perplexity/npm-shrinkwrap.json changed.
  • extensions/pixverse/npm-shrinkwrap.json changed.
  • extensions/qianfan/npm-shrinkwrap.json changed.
  • extensions/qqbot/npm-shrinkwrap.json changed.
  • extensions/qwen/npm-shrinkwrap.json changed.
  • extensions/raft/npm-shrinkwrap.json changed.
  • extensions/searxng/npm-shrinkwrap.json changed.
  • extensions/signal/npm-shrinkwrap.json changed.
  • extensions/slack/npm-shrinkwrap.json changed.
  • extensions/sms/npm-shrinkwrap.json changed.
  • extensions/stepfun/npm-shrinkwrap.json changed.
  • extensions/synology-chat/npm-shrinkwrap.json changed.
  • extensions/tavily/npm-shrinkwrap.json changed.
  • extensions/tencent/npm-shrinkwrap.json changed.
  • extensions/tlon/npm-shrinkwrap.json changed.
  • extensions/tokenjuice/npm-shrinkwrap.json changed.
  • extensions/twitch/npm-shrinkwrap.json changed.
  • extensions/venice/npm-shrinkwrap.json changed.
  • extensions/vercel-ai-gateway/npm-shrinkwrap.json changed.
  • extensions/voice-call/npm-shrinkwrap.json changed.
  • extensions/whatsapp/npm-shrinkwrap.json changed.
  • extensions/zai/npm-shrinkwrap.json changed.
  • extensions/zalo/npm-shrinkwrap.json changed.
  • extensions/zalouser/npm-shrinkwrap.json changed.
  • npm-shrinkwrap.json changed.
  • pnpm-lock.yaml changed.

Auto-scrub was not attempted because this PR also changes dependency-related files that are not package lockfiles:

  • pnpm-workspace.yaml

Please remove lockfile changes manually if they are not needed.

To remove lockfile changes, restore them from the target branch:

git fetch origin
git checkout 'origin/main' -- 'extensions/acpx/npm-shrinkwrap.json' 'extensions/amazon-bedrock-mantle/npm-shrinkwrap.json' 'extensions/amazon-bedrock/npm-shrinkwrap.json' 'extensions/anthropic-vertex/npm-shrinkwrap.json' 'extensions/arcee/npm-shrinkwrap.json' 'extensions/brave/npm-shrinkwrap.json' 'extensions/cerebras/npm-shrinkwrap.json' 'extensions/chutes/npm-shrinkwrap.json' 'extensions/clickclack/npm-shrinkwrap.json' 'extensions/cloudflare-ai-gateway/npm-shrinkwrap.json' 'extensions/codex/npm-shrinkwrap.json' 'extensions/cohere/npm-shrinkwrap.json' 'extensions/copilot/npm-shrinkwrap.json' 'extensions/deepinfra/npm-shrinkwrap.json' 'extensions/deepseek/npm-shrinkwrap.json' 'extensions/diagnostics-otel/npm-shrinkwrap.json' 'extensions/diagnostics-prometheus/npm-shrinkwrap.json' 'extensions/diffs-language-pack/npm-shrinkwrap.json' 'extensions/diffs/npm-shrinkwrap.json' 'extensions/discord/npm-shrinkwrap.json' 'extensions/exa/npm-shrinkwrap.json' 'extensions/feishu/npm-shrinkwrap.json' 'extensions/firecrawl/npm-shrinkwrap.json' 'extensions/fireworks/npm-shrinkwrap.json' 'extensions/gmi/npm-shrinkwrap.json' 'extensions/google-meet/npm-shrinkwrap.json' 'extensions/googlechat/npm-shrinkwrap.json' 'extensions/gradium/npm-shrinkwrap.json' 'extensions/groq/npm-shrinkwrap.json' 'extensions/inworld/npm-shrinkwrap.json' 'extensions/irc/npm-shrinkwrap.json' 'extensions/kilocode/npm-shrinkwrap.json' 'extensions/kimi-coding/npm-shrinkwrap.json' 'extensions/line/npm-shrinkwrap.json' 'extensions/llama-cpp/npm-shrinkwrap.json' 'extensions/lobster/npm-shrinkwrap.json' 'extensions/matrix/npm-shrinkwrap.json' 'extensions/mattermost/npm-shrinkwrap.json' 'extensions/memory-lancedb/npm-shrinkwrap.json' 'extensions/moonshot/npm-shrinkwrap.json' 'extensions/msteams/npm-shrinkwrap.json' 'extensions/nextcloud-talk/npm-shrinkwrap.json' 'extensions/nostr/npm-shrinkwrap.json' 'extensions/openshell/npm-shrinkwrap.json' 'extensions/parallel/npm-shrinkwrap.json' 'extensions/perplexity/npm-shrinkwrap.json' 'extensions/pixverse/npm-shrinkwrap.json' 'extensions/qianfan/npm-shrinkwrap.json' 'extensions/qqbot/npm-shrinkwrap.json' 'extensions/qwen/npm-shrinkwrap.json' 'extensions/raft/npm-shrinkwrap.json' 'extensions/searxng/npm-shrinkwrap.json' 'extensions/signal/npm-shrinkwrap.json' 'extensions/slack/npm-shrinkwrap.json' 'extensions/sms/npm-shrinkwrap.json' 'extensions/stepfun/npm-shrinkwrap.json' 'extensions/synology-chat/npm-shrinkwrap.json' 'extensions/tavily/npm-shrinkwrap.json' 'extensions/tencent/npm-shrinkwrap.json' 'extensions/tlon/npm-shrinkwrap.json' 'extensions/tokenjuice/npm-shrinkwrap.json' 'extensions/twitch/npm-shrinkwrap.json' 'extensions/venice/npm-shrinkwrap.json' 'extensions/vercel-ai-gateway/npm-shrinkwrap.json' 'extensions/voice-call/npm-shrinkwrap.json' 'extensions/whatsapp/npm-shrinkwrap.json' 'extensions/zai/npm-shrinkwrap.json' 'extensions/zalo/npm-shrinkwrap.json' 'extensions/zalouser/npm-shrinkwrap.json' 'npm-shrinkwrap.json' 'pnpm-lock.yaml'
git commit -m 'chore: remove dependency lockfile change'
git push

If this PR intentionally needs a dependency graph change, ask a repository admin or member of @openclaw/openclaw-secops to comment:

/allow-dependencies-change

The action will approve the current head SHA (b8ee16a07969e3df6e27d5d9cf736b223b80c83e) when it reruns. A later push requires a fresh approval.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling app: android App: android app: ios App: ios app: macos App: macos app: web-ui App: web-ui channel: discord Channel integration: discord channel: feishu Channel integration: feishu channel: googlechat Channel integration: googlechat channel: imessage Channel integration: imessage channel: irc channel: line Channel integration: line channel: matrix Channel integration: matrix channel: mattermost Channel integration: mattermost channel: msteams Channel integration: msteams channel: nextcloud-talk Channel integration: nextcloud-talk channel: nostr Channel integration: nostr channel: qa-channel Channel integration: qa-channel channel: qqbot channel: raft Channel integration: Raft channel: signal Channel integration: signal channel: slack Channel integration: slack channel: sms Channel integration: sms channel: synology-chat channel: telegram Channel integration: telegram channel: tlon Channel integration: tlon channel: twitch Channel integration: twitch channel: voice-call Channel integration: voice-call channel: whatsapp-web Channel integration: whatsapp-web channel: zalo Channel integration: zalo channel: zalouser Channel integration: zalouser cli CLI command changes commands Command implementations docker Docker and sandbox tooling docs Improvements or additions to documentation extensions: acpx extensions: admin-http-rpc extensions: anthropic extensions: arcee extensions: byteplus extensions: cerebras extensions: cloudflare-ai-gateway extensions: codex extensions: codex-supervisor Extension: codex-supervisor extensions: copilot extensions: copilot-proxy Extension: copilot-proxy extensions: deepinfra extensions: deepseek extensions: device-pair extensions: diagnostics-otel Extension: diagnostics-otel extensions: diagnostics-prometheus extensions: duckduckgo extensions: gmi extensions: huggingface extensions: inworld Extension: inworld extensions: kilocode extensions: kimi-coding extensions: litellm extensions: llama-cpp extensions: llm-task Extension: llm-task extensions: lmstudio extensions: lobster Extension: lobster extensions: memory-core Extension: memory-core extensions: memory-lancedb Extension: memory-lancedb extensions: memory-wiki extensions: minimax extensions: moonshot extensions: novita extensions: nvidia extensions: oc-path extensions: open-prose Extension: open-prose extensions: openai extensions: policy extensions: qa-lab extensions: qianfan extensions: senseaudio extensions: stepfun extensions: synthetic extensions: talk-voice extensions: tavily extensions: tencent extensions: tokenjuice Changes to the bundled tokenjuice extension extensions: webhooks gateway Gateway runtime merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P1 High-priority user-facing bug, regression, or broken workflow. plugin: azure-speech Azure Speech plugin plugin: bonjour Plugin integration: bonjour plugin: file-transfer plugin: google-meet plugin: migrate-claude plugin: migrate-hermes plugin: pixverse plugin: workboard rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. scripts Repository scripts security Security documentation size: XL status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Regression]: sessions_spawn missing scope operator.write — introduced between v2026.6.1 and v2026.6.11