Skip to content

Expose plugin approval action metadata#82431

Merged
kevinslin merged 1 commit into
openclaw:mainfrom
Guardiola31337:agentkit/minimal-approval-actions
May 27, 2026
Merged

Expose plugin approval action metadata#82431
kevinslin merged 1 commit into
openclaw:mainfrom
Guardiola31337:agentkit/minimal-approval-actions

Conversation

@Guardiola31337

@Guardiola31337 Guardiola31337 commented May 16, 2026

Copy link
Copy Markdown
Contributor

Review context

Concrete plugin: Guardiola31337/openclaw-agentkit. The intent is to keep World ID / AgentKit out of OpenClaw core while letting external HITL plugins use the existing approval flow end-to-end.

This PR's role: approval action metadata and no-route pending surface; it does not resolve verified approvals by itself.

Bundle:

  • #82431 exposes approval action metadata/UI rendering.
  • #82434 adds verified approval resolution with plugin ownership checks.
  • #82471 adds chat/status metadata and idempotency for durable approval updates.
sequenceDiagram
  participant Agent
  participant Gateway
  participant Plugin as HITL plugin
  participant UI as TUI/Web UI
  participant Verifier as External verifier

  Agent->>Gateway: protected tool call
  Gateway->>Plugin: approval hook/request
  Gateway->>UI: approval card + plugin actions
  UI->>Plugin: user chooses verify once / trust session / deny
  Plugin->>Verifier: external proof flow
  Verifier-->>Plugin: verified result
  Plugin->>Gateway: resolve verified approval
  Gateway->>Agent: allow/deny blocked tool
  Plugin->>UI: status/update messages with idempotency
Loading
flowchart LR
  A["Approval action surface<br/>#82431"] --> B["Verified resolver<br/>#82434"]
  B --> C["Status/chat idempotency<br/>#82471"]
  C --> D["Usable external HITL plugin flow"]
Loading

Trust boundary to review: should a plugin that already owns a pending approval be allowed to complete that specific approval after external verification, through a typed SDK/Gateway path with admin scope and ownership checks?

Summary:

  • Add plugin approval action templates to the before_tool_call approval result and plugin.approval.request schema.
  • Expand templates with the server-generated approval id, store the resulting action commands, and carry them through reply payloads and approval view models.
  • Add keepPendingWithoutRoute so external HITL plugins can keep plugin approvals pending when no core approval route/client is active.
  • Keep native decision-button channel adapters compatible with command-only approval actions.
  • Update the generated Swift protocol model and plugin SDK API baseline for the intentional additive surface change.

Verification:

  • pnpm protocol:check
  • pnpm plugin-sdk:api:check
  • pnpm tsgo:extensions
  • pnpm build:plugin-sdk:strict-smoke
  • node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.extensions.json extensions/discord/src/approval-handler.runtime.ts extensions/matrix/src/approval-handler.runtime.ts extensions/qqbot/src/bridge/approval/handler-runtime.ts extensions/telegram/src/approval-handler.runtime.ts
  • node scripts/run-vitest.mjs src/gateway/server-methods/plugin-approval.test.ts src/infra/approval-view-model.test.ts src/infra/exec-approval-reply.test.ts src/plugin-sdk/approval-renderers.test.ts extensions/discord/src/approval-handler.runtime.test.ts extensions/matrix/src/approval-handler.runtime.test.ts extensions/qqbot/src/bridge/approval/handler-runtime.test.ts extensions/qqbot/src/engine/approval/index.test.ts src/agents/pi-tools.before-tool-call.e2e.test.ts src/plugins/hooks.before-tool-call.test.ts
  • node scripts/run-vitest.mjs src/plugins/contracts/host-hooks.contract.test.ts
  • git diff --check origin/main...HEAD

Real behavior proof

Behavior addressed: external plugins can attach approval-specific command actions to plugin approval requests and keep those requests pending while their own HITL command flow is responsible for resolution.

Real environment tested: local OpenClaw checkout on macOS, rebased onto current origin/main on May 16, 2026.

Exact steps or command run after this patch: ran the protocol generator/check, plugin SDK API baseline check, extension typecheck, plugin SDK strict declaration smoke, targeted extension oxlint, focused approval/gateway/plugin Vitest coverage, the host hook contract test, and whitespace diff check.

Evidence after fix:

$ pnpm protocol:check
wrote dist/protocol.schema.json
wrote apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift

$ pnpm plugin-sdk:api:check
OK docs/.generated/plugin-sdk-api-baseline.sha256

$ pnpm tsgo:extensions
(exit 0)

$ pnpm build:plugin-sdk:strict-smoke
(exit 0)

$ node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.extensions.json extensions/discord/src/approval-handler.runtime.ts extensions/matrix/src/approval-handler.runtime.ts extensions/qqbot/src/bridge/approval/handler-runtime.ts extensions/telegram/src/approval-handler.runtime.ts
Found 0 warnings and 0 errors.

$ node scripts/run-vitest.mjs src/gateway/server-methods/plugin-approval.test.ts src/infra/approval-view-model.test.ts src/infra/exec-approval-reply.test.ts src/plugin-sdk/approval-renderers.test.ts extensions/discord/src/approval-handler.runtime.test.ts extensions/matrix/src/approval-handler.runtime.test.ts extensions/qqbot/src/bridge/approval/handler-runtime.test.ts extensions/qqbot/src/engine/approval/index.test.ts src/agents/pi-tools.before-tool-call.e2e.test.ts src/plugins/hooks.before-tool-call.test.ts
Test Files  10 passed (10)
Tests  122 passed (122)

$ node scripts/run-vitest.mjs src/plugins/contracts/host-hooks.contract.test.ts
Test Files  1 passed (1)
Tests  50 passed (50)

$ git diff --check origin/main...HEAD
(no output)

Observed result after fix: the protocol and SDK baselines reflect the new additive action metadata, representative adapters preserve command actions, approval view/reply rendering carries those commands, and the before_tool_call host hook contract remains compatible.

What was not tested: full release suite, live World ID callback flow, and the follow-up verified plugin-owned resolution API that is split into #82434.

Refs #82336

External plugin integration proof

Behavior addressed: the external ClawHub AgentKit plugin can consume the combined temporary OpenClaw host API branch that includes this PR's approval actions and no-route pending behavior.

Real environment tested: GitHub Actions in Guardiola31337/openclaw-agentkit on May 16, 2026, checking out Guardiola31337/openclaw@agentkit/external-plugin-host-apis and linking it into the external plugin package.

Exact steps or command run after this patch: the remote workflow checked out the temporary OpenClaw host branch, installed with frozen lockfiles, ran pnpm build gatewayWatch, ran pnpm build:plugin-sdk:strict-smoke, linked the host checkout into the AgentKit plugin, then ran pnpm test:hitl and pnpm pack:check.

Evidence after fix:

$ gh run watch 25972624778 --repo Guardiola31337/openclaw-agentkit --exit-status
✓ main CI · 25972624778
✓ build in 1m46s
  ✓ Run pnpm build gatewayWatch
  ✓ Run pnpm build:plugin-sdk:strict-smoke
  ✓ Run pnpm dev:link-openclaw .openclaw-source
  ✓ Run pnpm test:hitl
  ✓ Run pnpm pack:check

Observed result after fix: the external plugin builds against the split OpenClaw host APIs, the plugin SDK declarations expose the needed approval/action surface, the AgentKit HITL proof passes, and the package dry-run includes the expected ClawHub plugin artifact.

What was not tested: production World ID credential verification. This remote proof exercises the integrated temporary host branch because the external plugin requires this PR together with #82434 and #82471 for the full HITL path.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation app: web-ui App: web-ui gateway Gateway runtime agents Agent runtime and tooling size: L triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 16, 2026
@clawsweeper

clawsweeper Bot commented May 16, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed May 27, 2026, 1:37 AM ET / 05:37 UTC.

Summary
The branch adds plugin approval action templates and keepPendingWithoutRoute through the before-tool-call hook, Gateway protocol, plugin approval storage/view models, channel/UI rendering, generated protocol/API baselines, and docs.

PR surface: Source +834, Tests +857, Docs +100, Generated 0, Other +8. Total +1799 across 43 files.

Reproducibility: not applicable. this is a feature/API PR rather than a reported current-main bug. The review is based on the diff, current-main source comparison, PR discussion, and supplied validation logs.

Review metrics: 1 noteworthy metric.

  • Public approval request fields: 2 added. actions and keepPendingWithoutRoute change the plugin/Gateway approval contract and generated protocol/API baselines.

Merge readiness
Overall: 🦪 silver shellfish
Proof: 🦪 silver shellfish
Patch quality: 🐚 platinum hermit
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:

  • Add real behavior proof showing plugin command actions and decision actions in the Control UI or a live/native approval channel.
  • Add the AgentKit use-case docs requested by the maintainer so the API shape can be judged against concrete workflows.

Proof guidance:
Needs real behavior proof before merge: The PR supplies useful local test output and external plugin CI output, but not after-fix real UI/live-channel proof of the changed approval action behavior; screenshots, recordings, terminal/live output, linked artifacts, or redacted logs should be added with private data redacted, then updating the PR body should trigger re-review or a maintainer can request @clawsweeper re-review. 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 short Telegram Desktop recording would materially prove the visible command-text versus decision-button behavior that unit tests cannot show. A maintainer can ask Mantis to capture proof by posting a new PR comment that starts with the OpenClaw Mantis account mention, followed by:

telegram desktop proof: verify plugin approval command actions render as visible command text while decision actions use canonical /approve callbacks.

Risk before merge

  • This adds two public approval API/protocol fields, so maintainers need to accept the API shape and upgrade contract before it becomes a plugin SDK surface.
  • Approval action rendering now crosses Control UI and several native channel approval clients; green unit tests do not prove visible chat/UI behavior or callback routing in a real transport.
  • keepPendingWithoutRoute intentionally keeps plugin approvals pending without an active route, which depends on the broader linked resolver/status PRs and could otherwise leave users waiting until timeout.

Maintainer options:

  1. Hold for API decision and real proof (recommended)
    Require maintainer approval of the new plugin approval contract plus a screenshot, recording, terminal/live output, or redacted logs showing the changed approval action flow before merge.
  2. Land as an accepted host API expansion
    Maintainers may accept the protocol and approval-boundary risk based on the current tests and PR proof if they explicitly decide this is the right generic OpenClaw seam.
  3. Pause until the API bundle is reviewed together
    If the three linked AgentKit host API PRs need one coherent design review, pause this PR until the resolver and durable status surfaces are accepted or reshaped together.

Next step before merge
This needs maintainer API/security-boundary review and contributor-supplied real behavior proof, not an automated repair PR.

Security
Cleared: No concrete supply-chain, dependency, secret-handling, or obvious approval bypass defect was found in the diff; the approval trust-boundary expansion remains a maintainer merge-risk decision.

Review details

Best possible solution:

Land only after maintainers accept the plugin approval API/security boundary, the PR documents the concrete AgentKit use cases, and real proof shows command actions and decision actions behaving correctly in at least the Control UI or a live/native approval channel.

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

Not applicable; this is a feature/API PR rather than a reported current-main bug. The review is based on the diff, current-main source comparison, PR discussion, and supplied validation logs.

Is this the best way to solve the issue?

Unclear. The split is narrower than bundling AgentKit into core and matches the plugin-boundary direction, but the API/security boundary and use-case documentation still need maintainer acceptance before this is clearly the best permanent solution.

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 95c8fc967876.

Label changes

Label justifications:

  • P2: This is a normal-priority plugin/Gateway API feature with broad but bounded approval-surface impact.
  • merge-risk: 🚨 compatibility: The PR changes public plugin hook, Gateway protocol, Swift model, docs, and plugin SDK baseline surfaces that external plugins may consume.
  • merge-risk: 🚨 message-delivery: The PR changes how approval actions render and route across Control UI and multiple native channel approval clients.
  • merge-risk: 🚨 security-boundary: The change affects the human approval flow and allows plugin-owned command actions plus no-route pending behavior in a sensitive approval path.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🐚 platinum hermit.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: The PR supplies useful local test output and external plugin CI output, but not after-fix real UI/live-channel proof of the changed approval action behavior; screenshots, recordings, terminal/live output, linked artifacts, or redacted logs should be added with private data redacted, then updating the PR body should trigger re-review or a maintainer can request @clawsweeper re-review. 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: telegram-visible-proof: Mantis should capture Telegram visible proof. The PR changes visible Telegram approval behavior by keeping plugin command actions as text while decision actions use canonical approval callbacks.
Evidence reviewed

PR surface:

Source +834, Tests +857, Docs +100, Generated 0, Other +8. Total +1799 across 43 files.

View PR surface stats
Area Files Added Removed Net
Source 21 950 116 +834
Tests 18 861 4 +857
Docs 2 106 6 +100
Config 0 0 0 0
Generated 1 2 2 0
Other 1 9 1 +8
Total 43 1928 129 +1799

What I checked:

  • Repository policy applied: Root and scoped AGENTS.md files identify plugin SDK, Gateway protocol, approval routing, and Telegram approval behavior as compatibility/proof-sensitive review surfaces. (AGENTS.md:23, 95c8fc967876)
  • Public approval API expansion: The PR adds actions and keepPendingWithoutRoute to the Gateway plugin approval request schema, making this a public protocol/plugin API change rather than local-only implementation work. (src/gateway/protocol/schema/plugin-approvals.ts:40, f09bc5a65652)
  • Action validation and expansion: The PR introduces typed decision/command approval action templates, bounded label/template sizes, validation that command actions do not carry decisions, and server-side expansion of {id} into the generated approval id. (src/infra/plugin-approvals.ts:65, f09bc5a65652)
  • No-route pending behavior: The Gateway handler now skips immediate no-approval-route expiration when keepPendingWithoutRoute is true, so existing no-route failure behavior changes for plugins that opt into this new mode. (src/gateway/server-methods/approval-shared.ts:325, f09bc5a65652)
  • Control UI rendering path: The Control UI now renders plugin command actions as command rows while preserving decision buttons for Gateway-resolvable approval decisions. (ui/src/ui/views/exec-approval.ts:160, f09bc5a65652)
  • Current main check: Current origin/main does not contain keepPendingWithoutRoute or the new plugin approval action template types, so the central behavior is not already implemented on main. (95c8fc967876)

Likely related people:

  • steipete: Current-main blame for the plugin approval request payload and Gateway handler points to recent approval/Gateway work in commit d2711c9. (role: recent area contributor; confidence: high; commits: d2711c900d7b; files: src/infra/plugin-approvals.ts, src/gateway/server-methods/plugin-approval.ts, src/infra/exec-approval-forwarder.ts)
  • joshavant: The async before_tool_call approval path that this PR extends was added in commit 6ade9c4. (role: introduced related hook behavior; confidence: medium; commits: 6ade9c474cf1; files: src/agents/pi-tools.before-tool-call.ts, src/plugins/hook-types.ts)
  • vincentkoc: Commit 0e47ce5 restored approval queue targeting and plugin id prefixes in the same Gateway plugin approval area. (role: recent approval routing contributor; confidence: medium; commits: 0e47ce58bc1b; files: src/gateway/server-methods/plugin-approval.ts)
  • gumadeiras: Commit 6484b41 added pending approval replay behavior in the Gateway plugin approval path. (role: adjacent approval lifecycle contributor; confidence: medium; commits: 6484b41eb9e4; files: src/gateway/server-methods/plugin-approval.ts)
  • kevinslin: The live discussion includes a maintainer request for AgentKit use-case docs, and the latest PR head commit was committed by Kevin Lin. (role: reviewer and recent PR committer; confidence: medium; commits: f09bc5a65652; files: docs/plugins/building-plugins.md, docs/plugins/hooks.md)
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 the mantis: telegram-visible-proof Mantis should capture Telegram visible proof. label May 16, 2026
@Guardiola31337
Guardiola31337 force-pushed the agentkit/minimal-approval-actions branch from 5bf5b5a to 084316e Compare May 16, 2026 04:29
@openclaw-barnacle openclaw-barnacle Bot added channel: discord Channel integration: discord channel: matrix Channel integration: matrix channel: telegram Channel integration: telegram channel: qqbot proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 16, 2026
@Guardiola31337
Guardiola31337 force-pushed the agentkit/minimal-approval-actions branch from 084316e to b41a29c Compare May 16, 2026 04:43
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 16, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 16, 2026
@Guardiola31337
Guardiola31337 force-pushed the agentkit/minimal-approval-actions branch from 9aa6d85 to b1e22ba Compare May 16, 2026 05:08
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 16, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 16, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 16, 2026
@Guardiola31337
Guardiola31337 force-pushed the agentkit/minimal-approval-actions branch from 5477cff to 478115b Compare May 16, 2026 05:53
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 16, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 16, 2026
@Guardiola31337
Guardiola31337 force-pushed the agentkit/minimal-approval-actions branch from 478115b to 2c35aad Compare May 16, 2026 06:09
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 16, 2026
@Guardiola31337
Guardiola31337 force-pushed the agentkit/minimal-approval-actions branch 2 times, most recently from cd3909a to de97b65 Compare May 16, 2026 06:17
@openclaw-barnacle openclaw-barnacle Bot added size: XL and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. labels May 17, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. impact:security Security boundary, credential, authz, sandbox, or sensitive-data risk. impact:session-state Session, memory, transcript, context, or agent state can drift or corrupt. labels May 17, 2026
@Guardiola31337
Guardiola31337 force-pushed the agentkit/minimal-approval-actions branch from e42afcb to 4f315fc Compare May 17, 2026 20:53
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 17, 2026
@Guardiola31337

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 17, 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.

Re-review progress:

@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 17, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 17, 2026
@Guardiola31337

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

I pushed e2b15b4606 to address the Web UI action rendering finding. The Web UI parser now preserves plugin approval actions and allowedDecisions, renders plugin command actions as command rows, and only renders decision buttons for decisions the Gateway can resolve.

Local proof after the patch:

$ node scripts/run-vitest.mjs ui/src/ui/controllers/exec-approval.test.ts ui/src/ui/views/exec-approval.test.ts ui/src/ui/app-gateway.node.test.ts src/gateway/server-methods/plugin-approval.test.ts src/infra/approval-view-model.test.ts src/plugin-sdk/approval-renderers.test.ts
Test Files  7 passed (7)
Tests  142 passed (142)

$ pnpm protocol:check
(exit 0)

$ pnpm plugin-sdk:api:check
OK docs/.generated/plugin-sdk-api-baseline.sha256

$ git diff --check
(no output)

@clawsweeper

clawsweeper Bot commented May 17, 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.

Re-review progress:

@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 17, 2026
@Guardiola31337
Guardiola31337 force-pushed the agentkit/minimal-approval-actions branch from e2b15b4 to 1d71293 Compare May 18, 2026 12:09
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 18, 2026
@Guardiola31337
Guardiola31337 force-pushed the agentkit/minimal-approval-actions branch from 1d71293 to 67ca0a8 Compare May 18, 2026 12:12
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 18, 2026
@clawsweeper

clawsweeper Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

🎁 Pass real behavior proof to wake the egg and unlock a hatchable treat.

Where did the egg go?
  • The egg game starts only after the PR passes the real-behavior proof check.
  • Before that, no creature or rarity is rolled. The treat waits for real proof.
  • This is still just collectible flavor: proof affects review readiness, not creature quality.

@Guardiola31337

Copy link
Copy Markdown
Contributor Author

@clawsweeper hatch

@clawsweeper

clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper PR egg hatch requested.

I queued a comment sync for this PR. If the egg is hatchable, ClawSweeper will generate the image once and update the existing review comment.
Action: PR egg hatch queued (workflow sweep.yml, event repository_dispatch).
The ASCII egg stays as the fallback.

@Guardiola31337

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

I pushed 22bc3fa246 to address the native approval callback finding. Slack and Telegram now render plugin command actions as visible command text, while decision actions use canonical OpenClaw /approve <id> <decision> callback payloads for native buttons, independent of plugin-provided command templates.

Proof:

node scripts/run-vitest.mjs extensions/telegram/src/approval-handler.runtime.test.ts extensions/slack/src/approval-handler.runtime.test.ts src/infra/approval-view-model.test.ts src/plugin-sdk/approval-renderers.test.ts
node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.extensions.json extensions/telegram/src/approval-handler.runtime.ts extensions/telegram/src/approval-handler.runtime.test.ts extensions/slack/src/approval-handler.runtime.ts extensions/slack/src/approval-handler.runtime.test.ts
node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.core.test.json --incremental --tsBuildInfoFile /tmp/openclaw-82431-core-test-canonical-4.tsbuildinfo
node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.extensions.test.json --incremental --tsBuildInfoFile /tmp/openclaw-82431-extensions-test-canonical-4.tsbuildinfo
pnpm plugin-sdk:api:check
git diff --check

@clawsweeper

clawsweeper Bot commented May 24, 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.

Re-review progress:

@kevinslin

Copy link
Copy Markdown
Contributor

this is a big change to our approval/plugin surface area. do you have some docs to go over the specific usecases in agentkit that you'd want to enable with this?

@Guardiola31337

Copy link
Copy Markdown
Contributor Author

Thank you so much for the review @kevinslin, and for landing the PR! 😊

Yep, I added the use-case context + diagrams to the PR descriptions, but they may be buried under the verification details.

Short version: this is for the external AgentKit ClawHub plugin, not bundled core code:

Flow: protected tool -> OpenClaw plugin approval -> AgentKit renders World verification -> proof succeeds -> plugin resolves only its own pending approval -> agent continues.

The remaining PRs are the generic host seams for that:

Happy to pull the PR-body diagrams into a shorter standalone doc if that would make review easier.

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: web-ui App: web-ui channel: discord Channel integration: discord channel: imessage Channel integration: imessage channel: matrix Channel integration: matrix channel: qqbot channel: slack Channel integration: slack channel: telegram Channel integration: telegram channel: whatsapp-web Channel integration: whatsapp-web docs Improvements or additions to documentation gateway Gateway runtime mantis: telegram-visible-proof Mantis should capture Telegram visible proof. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. P2 Normal backlog priority with limited blast radius. 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: XL 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