Skip to content

Update Google Meet chrome-node invoke policy [AI]#91509

Closed
mmaps wants to merge 10 commits into
openclaw:mainfrom
mmaps:maintenance/update-20260608-210846-a13e19
Closed

Update Google Meet chrome-node invoke policy [AI]#91509
mmaps wants to merge 10 commits into
openclaw:mainfrom
mmaps:maintenance/update-20260608-210846-a13e19

Conversation

@mmaps

@mmaps mmaps commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a Google Meet node-invoke policy for the Chrome-node command path.
  • For action=start, the policy forwards audio helper commands from the Google Meet plugin config rather than per-request command arrays.
  • Marks googlemeet.chrome as an explicit high-impact node-host command while preserving the existing gateway.nodes.allowCommands setup path.
  • Documents that Chrome-node audio helper commands are configured through the Google Meet plugin.

AI-assisted: Yes.

Linked context

No public issue link.

Real behavior proof (required for external PRs)

  • Behavior or issue addressed: Chrome-node start requests now use configured Google Meet audio helper commands when forwarding to the paired node.
  • Real environment tested: Local source checkout exercising the actual Google Meet plugin registration and Gateway node-invoke policy adapter. No live paired macOS Chrome-node was available in this worktree.
  • Exact steps or command run after this patch: node --import tsx --input-type=module with an inline proof script that registered the Google Meet plugin, installed its node-invoke policy into the active plugin registry, called applyPluginNodeInvokePolicy for googlemeet.chrome, and inspected the forwarded node params; node scripts/run-vitest.mjs extensions/google-meet/index.test.ts extensions/google-meet/node-host.test.ts; git diff --check.
  • Evidence after fix (screenshot, recording, terminal capture, console output, redacted runtime log, linked artifact, or copied live output): Product-level proof returned policyResultOk: true, registeredDangerousCommand: true, registeredDangerousPolicy: true, forwarded audio commands set to the configured trusted-* values, forwarded browser profile set to Trusted Profile, and caller override values not forwarded. Vitest reported 2 files passed and 106 tests passed; git diff --check produced no output.
  • Observed result after fix: The registered policy runs before node forwarding and replaces per-request Chrome-node audio helper command fields with Google Meet plugin config values. Existing node-host bridge session coverage still passes.
  • What was not tested: A live Google Meet Chrome-node session on a paired macOS node with Chrome and BlackHole.
  • Proof limitations or environment constraints: This Linux worktree has no working Crabbox binary and no configured paired macOS node, so the proof covers the Gateway policy path and local node-forwarding payload rather than a real browser/audio join.
  • Before evidence (optional but encouraged): Existing code sent Chrome-node audio helper command arrays in the node invoke request payload without a Google Meet node-invoke policy.

Tests and validation

  • node --import tsx --input-type=module product-level policy forwarding proof
  • node scripts/run-vitest.mjs extensions/google-meet/index.test.ts extensions/google-meet/node-host.test.ts
  • git diff --check

Regression coverage was added for googlemeet.chrome node command registration, policy registration, and policy forwarding of config-owned audio helper commands.

Risk checklist

  • User-visible behavior changed: Yes. Direct nodes invoke calls for googlemeet.chrome no longer override Chrome-node audio helper commands per request.
  • Config, environment, or migration behavior changed: No.
  • Tool execution behavior changed: Yes.
  • Highest-risk area: Chrome-node setups that use custom audio helper commands.
  • Risk mitigation: Custom helper commands still work through the existing Google Meet plugin config fields, and focused Google Meet plugin tests cover the policy and node-host bridge behavior.

Current review state

Next action: maintainer review and CI.

Still waiting on: unrelated CI failures on root dependency ownership, plus any maintainer-requested live Chrome-node proof.

Bot or reviewer comments addressed: Added local product-level proof for the Google Meet node-invoke policy path.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation plugin: google-meet size: S proof: supplied External PR includes structured after-fix real behavior proof. labels Jun 8, 2026
@clawsweeper

clawsweeper Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed June 24, 2026, 10:56 AM ET / 14:56 UTC.

Summary
This PR marks googlemeet.chrome dangerous, adds a Google Meet node-invoke policy that sources four executable audio helper command arrays from plugin config, updates focused tests, and documents direct invoke behavior.

PR surface: Source +45, Tests +64, Docs +6. Total +115 across 4 files.

Reproducibility: yes. for the source-level command-execution risk: current main forwards googlemeet.chrome start params to a node host that runs the helper command arrays. The after-fix paired-node runtime path is not yet proven.

Review metrics: 1 noteworthy metric.

  • Config-Owned Executable Params: 4 command arrays changed. These executable helper arrays move from per-request node invoke params to plugin config, which is the main compatibility and security decision before merge.

Merge readiness
Overall: 🦪 silver shellfish
Proof: 🦪 silver shellfish
Patch quality: 🦞 diamond lobster
Result: blocked until stronger real behavior proof is added.

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

Rank-up moves:

  • [P1] Add redacted paired macOS Chrome-node proof that configured helper commands cross the Gateway node boundary and run.
  • Update the PR body with that proof so a fresh ClawSweeper review can clear the contributor proof gate.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: The PR body includes local policy and Vitest output, but not paired macOS Chrome-node proof showing configured helper commands crossing Gateway and running on the node. 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.

Mantis proof suggestion
A real paired-node desktop or terminal proof would materially help validate the Chrome-node command boundary this PR changes. A maintainer can ask Mantis to capture proof by posting this exact PR comment:

@openclaw-mantis visual task: verify a Gateway googlemeet.chrome start uses Google Meet config audio helper commands on a paired macOS node and preserves caller browserProfile.

Risk before merge

  • [P1] Existing direct nodes invoke callers that supplied audio helper command arrays for googlemeet.chrome will have those arrays ignored in favor of Google Meet plugin config after merge.
  • [P1] The changed command-execution trust boundary has local policy proof, but not redacted Gateway-to-paired-macOS Chrome-node proof showing the configured helper commands crossing the node boundary and running.

Maintainer options:

  1. Prove The Narrowed Policy (recommended)
    Require redacted paired macOS Chrome-node proof that a Gateway googlemeet.chrome start uses configured helper commands on the node and keeps caller browserProfile.
  2. Accept Local Proof Only
    Maintainers can intentionally accept the local policy and test proof, while recording that the real paired-node command boundary was not exercised before merge.
  3. Pause Until A Node Is Available
    Pause the PR if neither contributor nor maintainer can produce a paired macOS Chrome-node run for this security-sensitive path.

Next step before merge

  • [P1] Remaining action is maintainer review plus real paired-node proof; automation cannot produce the contributor's missing macOS Chrome-node environment proof.

Security
Cleared: No dependency, workflow, secret, or supply-chain regression was found; the remaining security-sensitive concern is the real proof gap for the changed command boundary.

Review details

Best possible solution:

Merge the narrowed policy after redacted paired macOS Chrome-node proof shows configured helper commands run on the node while caller browserProfile remains preserved.

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

Yes for the source-level command-execution risk: current main forwards googlemeet.chrome start params to a node host that runs the helper command arrays. The after-fix paired-node runtime path is not yet proven.

Is this the best way to solve the issue?

Yes for the code direction after the browserProfile fix: the policy stays in the Google Meet plugin boundary and owns only executable helper arrays. It is not merge-ready until real paired-node proof and maintainer acceptance catch up.

AGENTS.md: found and applied where relevant.

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

Label changes

Label justifications:

  • P2: This is bounded Google Meet security hardening with localized compatibility and proof blockers, not a broad runtime outage.
  • merge-risk: 🚨 compatibility: Direct googlemeet.chrome start requests that previously supplied executable audio helper arrays will now have those arrays replaced from plugin config.
  • merge-risk: 🚨 security-boundary: The PR changes where executable node-host command arrays are trusted and still needs real paired-node proof before maintainers rely on the boundary.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🦞 diamond lobster.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The PR body includes local policy and Vitest output, but not paired macOS Chrome-node proof showing configured helper commands crossing Gateway and running on the node. 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

PR surface:

Source +45, Tests +64, Docs +6. Total +115 across 4 files.

View PR surface stats
Area Files Added Removed Net
Source 2 47 2 +45
Tests 1 66 2 +64
Docs 1 6 0 +6
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 4 119 4 +115

What I checked:

Likely related people:

  • steipete: Recent live GitHub history shows repeated Google Meet runtime, docs, and gateway-adjacent work in the affected plugin and chrome-node boundary. (role: recent area contributor; confidence: high; commits: 96e581242605, 650027106b9a, 569290c36dde; files: extensions/google-meet/index.ts, extensions/google-meet/src/node-host.ts, docs/plugins/google-meet.md)
  • vincentkoc: Current blame and recent live history touch the Google Meet plugin registration and malformed node-host parameter handling in this area. (role: recent adjacent contributor; confidence: medium; commits: d9034da0a606, fced29de177b, 7a65b8a3d53e; files: extensions/google-meet/index.ts, extensions/google-meet/src/node-host.ts)
  • BsnizND: Merged history includes chrome-node bridge cleanup, realtime interruption playback, and gateway-owned tool session fixes in the reviewed node-host path. (role: recent Google Meet chrome-node contributor; confidence: high; commits: f2a17b299119, 2785be2604d9, 916eda16c19f; files: extensions/google-meet/src/node-host.ts, extensions/google-meet/index.test.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. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. status: 🛠️ actively grinding The PR author has acted after the latest ClawSweeper review and work remains. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 8, 2026
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 🛠️ actively grinding The PR author has acted after the latest ClawSweeper review and work remains. labels Jun 9, 2026
@clawsweeper clawsweeper Bot added rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 10, 2026
@mmaps

mmaps commented Jun 10, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. and removed rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. labels Jun 12, 2026
@eleqtrizit
eleqtrizit self-requested a review June 15, 2026 17:31
@eleqtrizit

Copy link
Copy Markdown
Contributor

I would not merge this as-is.

The security direction is right: googlemeet.chrome should be dangerous: true, and the executable audio helper arrays should come from trusted Google Meet config. But the current PR also overwrites caller-supplied browserProfile in extensions/google-meet/index.ts, and the test locks in that broader behavior. That is outside the command-execution sink; browserProfile is only used to choose the Chrome profile in extensions/google-meet/src/node-host.ts.

Required before merge:

  1. Preserve caller-supplied browserProfile.
  2. Keep only audioInputCommand, audioOutputCommand, audioBridgeCommand, and audioBridgeHealthCommand config-owned.
  3. Add real paired-node Gateway-to-macOS Chrome/audio proof showing the configured helpers cross the node boundary and run on the paired macOS node.

So the branch is directionally correct for GHSA-224w-vfr9-h35c, but it should be narrowed and re-reviewed before merge.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. 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. labels Jun 19, 2026
@mmaps

mmaps commented Jun 22, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jun 23, 2026
@joshavant

Copy link
Copy Markdown
Contributor

Superseded by #96908

@joshavant joshavant closed this Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Improvements or additions to documentation merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. P2 Normal backlog priority with limited blast radius. plugin: google-meet proof: supplied External PR includes structured after-fix real behavior proof. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. size: S status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants