chore: apply sweep decisions checkpoint 1
[skip ci]
This commit is contained in:
parent
b5de66e710
commit
5129a623a5
@ -1,7 +1,8 @@
|
||||
[
|
||||
{
|
||||
"number": 1996,
|
||||
"action": "review_comment_synced",
|
||||
"reason": "updated durable Codex review comment"
|
||||
"action": "review_comment_synced"
|
||||
},
|
||||
{
|
||||
"action": "closed"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
---
|
||||
review_comment_synced_at: 2026-05-08T23:39:28.143Z
|
||||
number: 1996
|
||||
repository: openclaw/clawhub
|
||||
type: issue
|
||||
@ -11,7 +10,7 @@ item_updated_at: 2026-05-08T18:49:36Z
|
||||
author: cindulasai
|
||||
author_association: NONE
|
||||
labels: ["r: rescan-guidance"]
|
||||
reviewed_at: 2026-05-08T23:36:51.993Z
|
||||
reviewed_at: 2026-05-08T19:52:08.334Z
|
||||
main_sha: 5b63d5df6071a91cfd3e5e184bc44e212e977cc9
|
||||
pull_head_sha: unknown
|
||||
latest_release: v0.1.0
|
||||
@ -36,29 +35,29 @@ review_static_prompt_chars: 33412
|
||||
review_context_chars: 22964
|
||||
review_schema_chars: 14081
|
||||
review_additional_prompt_chars: 0
|
||||
review_context_elapsed_ms: 2998
|
||||
review_codex_elapsed_ms: 167928
|
||||
review_context_elapsed_ms: 3686
|
||||
review_codex_elapsed_ms: 224196
|
||||
review_mode: propose
|
||||
review_status: complete
|
||||
local_checkout_access: verified
|
||||
item_snapshot_hash: 0bad0d79c38e32fb52c705f17512857f6a22eb18265b79b15328b3929f88dd92
|
||||
close_comment_sha256: none
|
||||
review_comment_sha256: 1820501bb7d85c85f12d16fd083816c943efd351c095ff67a27ec653bf31c889
|
||||
review_comment_id: 4368032619
|
||||
review_comment_url: https://github.com/openclaw/clawhub/issues/1996#issuecomment-4368032619
|
||||
review_comment_sha256: none
|
||||
review_comment_id: unknown
|
||||
review_comment_url: unknown
|
||||
decision: keep_open
|
||||
close_reason: none
|
||||
confidence: high
|
||||
action_taken: kept_open
|
||||
work_candidate: manual_review
|
||||
work_confidence: high
|
||||
work_priority: high
|
||||
work_priority: medium
|
||||
work_status: manual_review
|
||||
work_reason_sha256: 103c6b9c92210bdcb630d4536a629b9293ba5858c480b1e2ff53baf5060867b3
|
||||
work_reason_sha256: cc5d987858af245cae29477cf19d94eacbc80ef7ddc9728e07b580caeb052360
|
||||
work_prompt_sha256: none
|
||||
work_cluster_refs: ["https://github.com/openclaw/clawhub/issues/1996"]
|
||||
work_validation: []
|
||||
work_likely_files: []
|
||||
work_validation: ["Review `nextsteps` latest version 1.0.1 artifacts, scan records, owner-visible state, and any open appeal in ClawHub staff tooling.","Verify `clawshorts` latest version 1.3.2 authoritative moderation state, including owner-visible and staff-only records.","If a false positive is confirmed, resolve the appeal or apply a clean manual override with an audit note; otherwise reject or leave the verdict with a clear reason."]
|
||||
work_likely_files: ["convex/skills.ts","convex/httpApiV1/skillsV1.ts","convex/lib/manualOverrides.ts","convex/model/rescans/policy.ts","scripts/github/clawhub-rescan-auto-response.mjs","docs/security.md","docs/http-api.md"]
|
||||
item_category: security
|
||||
reproduction_status: not_applicable
|
||||
reproduction_confidence: high
|
||||
@ -104,29 +103,29 @@ Action taken: kept_open
|
||||
|
||||
## Summary
|
||||
|
||||
Keep open: this is a live ClawHub moderation appeal, not a source cleanup close. Current main already has owner rescan, formal appeal, and moderator restore/override paths, while the remaining public trust-state decision needs staff artifact review.
|
||||
Keep open: this is a live ClawHub moderation appeal, not a current-main source bug. Current main already provides owner rescan, formal appeal, moderator appeal resolution, and audited manual override paths, but changing the public trust state still requires staff review of the production artifacts and scan records.
|
||||
|
||||
## What This Changes
|
||||
|
||||
The issue asks ClawHub staff to manually review and clear suspected false-positive `suspicious.llm_suspicious` flags on `cindulasai/nextsteps` and `cindulasai/clawshorts`.
|
||||
The issue asks maintainers to manually review and clear `suspicious.llm_suspicious` flags on the published `nextsteps` and `clawshorts` skills.
|
||||
|
||||
## Best Possible Solution
|
||||
|
||||
A moderator should review the current artifacts and scan records for both slugs, then resolve through the skill appeal or audited manual override flow if a false positive is confirmed.
|
||||
A moderator should review the current artifacts and scan records for both slugs, then resolve through the skill appeal or audited manual override flow with a clear note if a verdict is confirmed false positive.
|
||||
|
||||
## Reproduction Assessment
|
||||
|
||||
Not applicable as a current-main source bug. Live public API inspection confirms the current scan/moderation state for both slugs, but whether the remaining NextSteps flag is a false positive requires staff artifact review.
|
||||
No as a current-main source bug; this is a production moderation appeal. Live API checks verify that `nextsteps` is currently suspicious while `clawshorts` is publicly clean, but the false-positive decision depends on staff artifact review.
|
||||
|
||||
## Solution Assessment
|
||||
|
||||
Yes for routing, not for automatic clearance. The existing rescan, appeal, and moderator restore/override flows are the narrow maintainable path; automation should not change production trust signals.
|
||||
Yes for routing, not for automatic clearance. The existing rescan, appeal, and moderator override flows are the narrow maintainable path; automation should not change public trust signals.
|
||||
|
||||
## Review Findings
|
||||
|
||||
Overall correctness: not a patch
|
||||
|
||||
Overall confidence: 0.94
|
||||
Overall confidence: 0.9
|
||||
|
||||
Full review comments:
|
||||
|
||||
@ -136,15 +135,15 @@ Full review comments:
|
||||
|
||||
Status: needs_attention
|
||||
|
||||
Summary: Clearing scanner/moderation flags changes public trust state and requires staff artifact review before any override.
|
||||
Summary: This issue asks maintainers to change public moderation trust signals for published artifacts, so staff artifact review is required before any clearance.
|
||||
|
||||
Concerns:
|
||||
|
||||
- **[medium] Require artifact review before clearing verdicts:**
|
||||
- body: Accepting this appeal or applying a clean override would change public moderation state, so staff should inspect the current published artifacts, scanner evidence, and any appeal record before changing the verdict.
|
||||
- **[medium] Review artifacts before clearing scanner verdicts:**
|
||||
- body: Accepting a false-positive appeal would change public trust state for published artifacts, so staff should inspect the current release files and scan records before applying an appeal decision or manual override.
|
||||
- confidence: 0.97
|
||||
- **[low] Verify per-skill production state first:**
|
||||
- body: The public API still shows `nextsteps` suspicious but `clawshorts` clean, so staff should confirm owner-visible and moderator-visible state before taking action on either slug.
|
||||
- **[low] Verify the per-skill production state first:**
|
||||
- body: Public API state differs across the two reported slugs: `nextsteps` is still suspicious, while `clawshorts` is currently clean. Staff should confirm authoritative owner-visible and moderator-visible state before resolving either part.
|
||||
- confidence: 0.9
|
||||
|
||||
## Real Behavior Proof
|
||||
@ -155,7 +154,7 @@ Evidence kind: not_applicable
|
||||
|
||||
Needs contributor action: false
|
||||
|
||||
Summary: This is a non-PR moderation issue, so the contributor real-behavior proof gate does not apply.
|
||||
Summary: Not applicable for a non-PR issue review.
|
||||
|
||||
## Work Candidate
|
||||
|
||||
@ -163,11 +162,11 @@ Candidate: manual_review
|
||||
|
||||
Confidence: high
|
||||
|
||||
Priority: high
|
||||
Priority: medium
|
||||
|
||||
Status: manual_review
|
||||
|
||||
Reason: Needs human/security moderation review in production tooling; no source patch can safely decide or clear the scanner trust state.
|
||||
Reason: Needs human/security moderation review in production tooling; no source patch can safely decide or clear these trust signals.
|
||||
|
||||
Cluster refs:
|
||||
|
||||
@ -175,68 +174,87 @@ Cluster refs:
|
||||
|
||||
Likely files:
|
||||
|
||||
- none
|
||||
- convex/skills.ts
|
||||
- convex/httpApiV1/skillsV1.ts
|
||||
- convex/lib/manualOverrides.ts
|
||||
- convex/model/rescans/policy.ts
|
||||
- scripts/github/clawhub-rescan-auto-response.mjs
|
||||
- docs/security.md
|
||||
- docs/http-api.md
|
||||
|
||||
Validation:
|
||||
|
||||
- none
|
||||
- Review `nextsteps` latest version 1.0.1 artifacts, scan records, owner-visible state, and any open appeal in ClawHub staff tooling.
|
||||
- Verify `clawshorts` latest version 1.3.2 authoritative moderation state, including owner-visible and staff-only records.
|
||||
- If a false positive is confirmed, resolve the appeal or apply a clean manual override with an audit note; otherwise reject or leave the verdict with a clear reason.
|
||||
|
||||
## Evidence
|
||||
|
||||
- **Reporter already tried the guided path:** The issue comments show the rescan guidance bot directed the owner to use web/CLI rescan, and the reporter replied that they had rescanned and wanted human review.
|
||||
- command: `gh issue view 1996 --repo openclaw/clawhub --comments`
|
||||
- **Issue remains open with only rescan-guidance label:** GitHub currently shows this issue open with label `r: rescan-guidance`; it has no protected close-blocking label, but ClawHub cleanup policy keeps issues open unless a close reason is clearly allowed.
|
||||
- command: `gh issue view 1996 --repo openclaw/clawhub --json number,state,author,labels,updatedAt,title,url`
|
||||
- **Live NextSteps state still has the reported flag:** The public API returns owner `cindulasai`, latest version `1.0.1`, moderation verdict `suspicious`, reasonCodes [`suspicious.llm_suspicious`], and scan status `suspicious`; the LLM result cites passive backlog collection after disable.
|
||||
- command: `curl -fsS https://clawhub.ai/api/v1/skills/nextsteps | jq '{owner: .owner.handle, latestVersion: .latestVersion.version, moderation: .moderation}' && curl -fsS 'https://clawhub.ai/api/v1/skills/nextsteps/scan' | jq '{version, security}'`
|
||||
- **Live ClawShorts state is currently public-clean:** The public API returns latest version `1.3.2` with `moderation: null`; the scan endpoint reports `security.status` clean, so staff should verify whether owner-visible or moderator-visible state still differs.
|
||||
- command: `curl -fsS https://clawhub.ai/api/v1/skills/clawshorts | jq '{owner: .owner.handle, latestVersion: .latestVersion.version, moderation: .moderation}' && curl -fsS 'https://clawhub.ai/api/v1/skills/clawshorts/scan' | jq '{version, security}'`
|
||||
- **Owner rescan path exists on main:** `requestRescan` requires the current user to manage the skill, checks the rescan policy, inserts a request, and schedules scanner dispatch for the latest skill version.
|
||||
- **Reporter used the rescan path and asked for human review:** The issue comments show the guidance bot pointed the owner to Rescan, then the reporter replied that they had already rescanned and wanted manual human review.
|
||||
- command: `gh issue view 1996 --repo openclaw/clawhub --json number,title,author,labels,comments,createdAt,updatedAt,url,state`
|
||||
- **Live NextSteps state remains suspicious:** The public API currently reports `nextsteps` latest version 1.0.1 with moderation verdict `suspicious` and reason code `suspicious.llm_suspicious`; the scan endpoint shows static and VirusTotal clean but an LLM concern about persistent backlog collection after disable.
|
||||
- command: `curl -fsSL 'https://clawhub.ai/api/v1/skills/nextsteps' | jq ...; curl -fsSL 'https://clawhub.ai/api/v1/skills/nextsteps/scan?tag=latest' | jq ...`
|
||||
- **Live ClawShorts public state is currently clean:** The public API currently reports `clawshorts` latest version 1.3.2 with `moderation: null`, and the scan endpoint reports security status `clean`, so staff should verify whether owner-visible or moderator-visible state differs.
|
||||
- command: `curl -fsSL 'https://clawhub.ai/api/v1/skills/clawshorts' | jq ...; curl -fsSL 'https://clawhub.ai/api/v1/skills/clawshorts/scan?tag=latest' | jq ...`
|
||||
- **Owner rescan path exists on current main:** `requestRescan` requires the authenticated owner or platform admin, checks the rescan policy, inserts a request, and schedules the latest skill version for rescan.
|
||||
- file: [convex/skills.ts:5180](https://github.com/openclaw/clawhub/blob/5b63d5df6071a91cfd3e5e184bc44e212e977cc9/convex/skills.ts#L5180)
|
||||
- command: `nl -ba convex/skills.ts | sed -n '5180,5212p'`
|
||||
- command: `nl -ba convex/skills.ts | sed -n '5140,5265p'`
|
||||
- sha: [5b63d5df6071](https://github.com/openclaw/clawhub/commit/5b63d5df6071a91cfd3e5e184bc44e212e977cc9)
|
||||
- **Rescan policy is bounded:** The rescan policy blocks duplicate in-progress rescans and caps owner requests at three per release.
|
||||
- **Rescan policy is bounded:** `assertCanRequestRescan` blocks duplicate in-progress rescans and limits owner requests to three per release.
|
||||
- file: [convex/model/rescans/policy.ts:119](https://github.com/openclaw/clawhub/blob/5b63d5df6071a91cfd3e5e184bc44e212e977cc9/convex/model/rescans/policy.ts#L119)
|
||||
- command: `nl -ba convex/model/rescans/policy.ts | sed -n '119,152p'`
|
||||
- command: `nl -ba convex/model/rescans/policy.ts | sed -n '1,220p'`
|
||||
- sha: [5b63d5df6071](https://github.com/openclaw/clawhub/commit/5b63d5df6071a91cfd3e5e184bc44e212e977cc9)
|
||||
- **Formal skill appeal and moderator restore paths exist:** Suspicious or scanner-flagged skills are appealable, one open appeal is maintained per skill, and moderator resolution can accept/reject/reopen with `finalAction: restore`.
|
||||
- file: [convex/skills.ts:3188](https://github.com/openclaw/clawhub/blob/5b63d5df6071a91cfd3e5e184bc44e212e977cc9/convex/skills.ts#L3188)
|
||||
- command: `nl -ba convex/skills.ts | sed -n '3188,3260p'; nl -ba convex/skills.ts | sed -n '3398,3488p'`
|
||||
- **Formal skill appeal path exists:** Owners can submit an appeal for suspicious, malicious, hidden, removed, or scanner-flagged skill states, and moderators can accept, reject, reopen, and optionally restore through the appeal workflow.
|
||||
- file: [convex/skills.ts:3167](https://github.com/openclaw/clawhub/blob/5b63d5df6071a91cfd3e5e184bc44e212e977cc9/convex/skills.ts#L3167)
|
||||
- command: `nl -ba convex/skills.ts | sed -n '2940,3235p'; nl -ba convex/skills.ts | sed -n '3390,3525p'`
|
||||
- sha: [5b63d5df6071](https://github.com/openclaw/clawhub/commit/5b63d5df6071a91cfd3e5e184bc44e212e977cc9)
|
||||
- **Docs and specs describe the intended moderation route:** Public docs describe rescans and owner appeals for incorrect flags, and the internal spec says moderators can accept appeals and explicitly restore skills with resolution notes.
|
||||
- file: [docs/security.md:87](https://github.com/openclaw/clawhub/blob/5b63d5df6071a91cfd3e5e184bc44e212e977cc9/docs/security.md#L87)
|
||||
- command: `nl -ba docs/security.md | sed -n '85,99p'; nl -ba specs/security-moderation.md | sed -n '55,66p'`
|
||||
- **Audited manual override path exists:** Moderators can apply a clean manual override to suspicious skills, writing `manual.override.clean`, audit metadata, and non-suspicious computed state.
|
||||
- file: [convex/skills.ts:6592](https://github.com/openclaw/clawhub/blob/5b63d5df6071a91cfd3e5e184bc44e212e977cc9/convex/skills.ts#L6592)
|
||||
- command: `nl -ba convex/skills.ts | sed -n '6580,6668p'`
|
||||
- sha: [5b63d5df6071](https://github.com/openclaw/clawhub/commit/5b63d5df6071a91cfd3e5e184bc44e212e977cc9)
|
||||
- **CODEOWNERS routes this area to security and backend moderation owners:** CODEOWNERS assigns Convex moderation, scanner, manual override, rescan model, and rescan guidance paths to `@openclaw/openclaw-secops` and `@Patrick-Erichsen`.
|
||||
- file: [.github/CODEOWNERS:18](https://github.com/openclaw/clawhub/blob/5b63d5df6071a91cfd3e5e184bc44e212e977cc9/.github/CODEOWNERS#L18)
|
||||
- command: `nl -ba .github/CODEOWNERS | sed -n '1,72p'`
|
||||
- **Public docs describe rescan and appeal recovery:** The security docs tell owners to request rescans for incorrect holds or flags and to submit appeals for moderated content; the HTTP API docs describe owner appeal and moderator appeal-resolution endpoints.
|
||||
- file: [docs/security.md:85](https://github.com/openclaw/clawhub/blob/5b63d5df6071a91cfd3e5e184bc44e212e977cc9/docs/security.md#L85)
|
||||
- command: `nl -ba docs/security.md | sed -n '1,130p'; nl -ba docs/http-api.md | sed -n '250,410p'`
|
||||
- sha: [5b63d5df6071](https://github.com/openclaw/clawhub/commit/5b63d5df6071a91cfd3e5e184bc44e212e977cc9)
|
||||
- **Recent history centers on moderation and ownership hardening:** Recent commits touching `convex/skills.ts` include Patrick Erichsen's moderation state work and Momo's adjacent owner/undelete hardening, including merged PR https://github.com/openclaw/clawhub/pull/2078.
|
||||
- file: [convex/skills.ts](https://github.com/openclaw/clawhub/blob/5b63d5df6071a91cfd3e5e184bc44e212e977cc9/convex/skills.ts)
|
||||
- command: `git log --follow --date=iso --format='%h %H %cI %an %s' -- convex/skills.ts | sed -n '1,40p'`
|
||||
- **Rescan guidance intentionally keeps these reports open:** The auto-response tells owners to use web or CLI rescan and explicitly says the issue stays open for latest scan follow-up if the flag remains or the path is blocked.
|
||||
- file: [scripts/github/clawhub-rescan-auto-response.mjs:73](https://github.com/openclaw/clawhub/blob/5b63d5df6071a91cfd3e5e184bc44e212e977cc9/scripts/github/clawhub-rescan-auto-response.mjs#L73)
|
||||
- command: `nl -ba scripts/github/clawhub-rescan-auto-response.mjs | sed -n '1,140p'`
|
||||
- sha: [5b63d5df6071](https://github.com/openclaw/clawhub/commit/5b63d5df6071a91cfd3e5e184bc44e212e977cc9)
|
||||
- **Feature history points to moderation and rescan owners:** GitHub commit and PR metadata tie the rescan flow, artifact moderation cases, scanner appeal auto-response, and manual override tools to the listed routing candidates.
|
||||
- command: `gh pr view 2055 --repo openclaw/clawhub ...; gh api repos/openclaw/clawhub/commits/e6c3d6ff28b10ea6af076afa96717dcbecb87030 ...; gh api repos/openclaw/clawhub/commits/4049a3b58a0ece5ebf097c885911c422aa1a86bd ...`
|
||||
|
||||
## Likely Related People
|
||||
|
||||
- **openclaw/openclaw-secops:** security review owner
|
||||
- reason: CODEOWNERS assigns scanner appeal automation, Convex moderation paths, manual override helpers, and rescan models to this team.
|
||||
- reason: CODEOWNERS assigns the scanner appeal automation, Convex moderation paths, manual override helper, rescan model, and security docs to this team.
|
||||
- confidence: high
|
||||
- files: .github/CODEOWNERS, scripts/github/clawhub-rescan-auto-response.mjs, convex/skills.ts, convex/lib/manualOverrides.ts, convex/model/rescans/policy.ts
|
||||
- files: .github/CODEOWNERS, scripts/github/clawhub-rescan-auto-response.mjs, convex/skills.ts, convex/lib/manualOverrides.ts, convex/model/rescans/policy.ts, docs/security.md, docs/http-api.md
|
||||
- **Patrick-Erichsen:** backend moderation and rescan owner
|
||||
- reason: CODEOWNERS names this handle on affected Convex and CLI paths, and recent history shows moderation state transition and moderation wording work in the central files.
|
||||
- reason: CODEOWNERS names this handle on the affected Convex/API paths, and commit history shows owner rescan requests plus artifact moderation and appeal work.
|
||||
- confidence: high
|
||||
- commits: 4592e66879f97934cbc60c887dfd10d31d8db6cd, cab18339e60d1721d7063a5766e70e5bc4d84f57
|
||||
- files: convex/skills.ts, convex/model/rescans/policy.ts, convex/model/skills/rescans.ts, docs/security.md, docs/http-api.md
|
||||
- commits: e6c3d6ff28b10ea6af076afa96717dcbecb87030, c4d1fcdbc6be9bb70f64ae543c3361845ae89c36, 4592e66879f97934cbc60c887dfd10d31d8db6cd, cab18339e60d1721d7063a5766e70e5bc4d84f57
|
||||
- files: convex/skills.ts, convex/model/rescans/policy.ts, convex/model/skills/rescans.ts, convex/httpApiV1/skillsV1.ts, docs/security.md, docs/http-api.md
|
||||
- **vincentkoc:** scanner appeal automation maintainer
|
||||
- reason: Recent commits specifically updated the GitHub auto-response workflow for suspicious skill rescan and scanner appeal issues.
|
||||
- confidence: high
|
||||
- commits: 97c409d56b223589652034a9a78a5e1f008f9b8a, 063ee210a726546c23cd4b93d431279ad83844cb
|
||||
- files: scripts/github/clawhub-rescan-auto-response.mjs, scripts/github/clawhub-rescan-auto-response.test.mjs
|
||||
- **ngutman:** manual override feature history owner
|
||||
- reason: Commit history shows this handle introduced manual override audit tools and then tightened override safety guards, which are central to any clean false-positive override.
|
||||
- confidence: high
|
||||
- commits: 4049a3b58a0ece5ebf097c885911c422aa1a86bd, e93f9411f39bc70d7ecc97e9f1cb700ade8337f5
|
||||
- files: convex/lib/manualOverrides.ts, convex/lib/manualOverrides.test.ts, convex/skills.ts, convex/skills.manualOverrides.test.ts, src/routes/management.tsx
|
||||
- **momothemage:** recent adjacent maintainer
|
||||
- reason: Recent merged work hardened skill owner/moderation behavior in `convex/skills.ts`, including the related owner undelete trust gap in https://github.com/openclaw/clawhub/pull/2078.
|
||||
- reason: Recent main history includes adjacent moderation and owner-safety hardening in `convex/skills.ts`, including merged work that prevents owners from bypassing moderator-hidden states.
|
||||
- confidence: medium
|
||||
- commits: 38c21345906ab1f107a91b33bb86b63667d96643, 5b63d5df6071a91cfd3e5e184bc44e212e977cc9
|
||||
- files: convex/skills.ts
|
||||
- files: convex/skills.ts, convex/httpApiV1/skillsV1.ts, convex/httpApiV1/shared.ts
|
||||
|
||||
## Risks / Open Questions
|
||||
|
||||
- Staff-only appeal records, owner-visible state, and moderator notes are not exposed by the public API and must be checked in ClawHub production tooling.
|
||||
- Clearing `nextsteps` from issue text alone would override an active public LLM concern on the current scan record without artifact review.
|
||||
- The reporter says both skills remain flagged, while public API currently shows `clawshorts` clean, so the authoritative owner/moderator state should be verified before resolving that part.
|
||||
- Clearing `nextsteps` based only on the issue text would bypass an active public LLM concern on the current scan record.
|
||||
- The reporter says both skills are flagged, but the public API currently shows `clawshorts` as clean; owner-visible or staff-only state may still differ.
|
||||
- Any formal appeal, moderator note, or internal scanner artifact record already in production is outside this read-only checkout and needs staff tooling verification.
|
||||
|
||||
## Close Comment
|
||||
|
||||
@ -257,6 +275,6 @@ _No close comment posted._
|
||||
- context chars: 22964
|
||||
- schema chars: 14081
|
||||
- additional prompt chars: 0
|
||||
- context collection ms: 2998
|
||||
- Codex review ms: 167928
|
||||
- context collection ms: 3686
|
||||
- Codex review ms: 224196
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
---
|
||||
applied_at: 2026-05-08T23:39:51.045Z
|
||||
review_comment_synced_at: 2026-05-08T23:39:48.296Z
|
||||
number: 78405
|
||||
repository: openclaw/openclaw
|
||||
type: issue
|
||||
@ -41,14 +43,14 @@ review_mode: propose
|
||||
review_status: complete
|
||||
local_checkout_access: verified
|
||||
item_snapshot_hash: cd7f6073b2e925f8c527c3750db76aebb1121f216ba2534921e0ae2181b2d23d
|
||||
close_comment_sha256: 0c9a46f58c684407479467501096890447d1595b1536fd7e08965a1c9df75015
|
||||
review_comment_sha256: none
|
||||
review_comment_id: unknown
|
||||
review_comment_url: unknown
|
||||
close_comment_sha256: 9d554f08da4dd7cd9cabd931dae767c730f76e9db9815d480bae175b90089fc7
|
||||
review_comment_sha256: 2519c3cfec8d805a1d43da0baa1f17cfadd89bd5ae9beeecfcadcce8331abbcc
|
||||
review_comment_id: 4386978352
|
||||
review_comment_url: https://github.com/openclaw/openclaw/issues/78405#issuecomment-4386978352
|
||||
decision: close
|
||||
close_reason: duplicate_or_superseded
|
||||
confidence: high
|
||||
action_taken: proposed_close
|
||||
action_taken: closed
|
||||
work_candidate: none
|
||||
work_confidence: low
|
||||
work_priority: low
|
||||
@ -236,11 +238,11 @@ Security review: Non-PR issue review; no patch security or supply-chain review a
|
||||
What I checked:
|
||||
|
||||
- **Canonical related report:** https://github.com/openclaw/openclaw/issues/77320 is open and tracks the same root behavior: group/channel `visibleReplies="message_tool"` turns can finish with assistant text but no visible channel delivery, and the requested fix is a hard diagnostic or fallback policy.
|
||||
- **Current delivery-mode policy:** Group/channel chats resolve to `message_tool_only` unless configured `automatic`, and that mode sets `suppressAutomaticSourceDelivery` and `suppressDelivery`. ([`src/auto-reply/reply/source-reply-delivery-mode.ts:37`](https://github.com/openclaw/openclaw/blob/71816a3fb24660c1c6af09d77485cf52e52607f3/src/auto-reply/reply/source-reply-delivery-mode.ts#L37), [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3))
|
||||
- **Current suppression implementation:** The final-reply loop continues without delivery when `suppressDelivery` is true and the payload is not explicitly marked to bypass source-reply suppression. ([`src/auto-reply/reply/dispatch-from-config.ts:1567`](https://github.com/openclaw/openclaw/blob/71816a3fb24660c1c6af09d77485cf52e52607f3/src/auto-reply/reply/dispatch-from-config.ts#L1567), [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3))
|
||||
- **Regression coverage for this path:** Focused tests assert default group/channel turns use `message_tool_only`, return `queuedFinal: false`, and do not call `sendFinalReply`. ([`src/auto-reply/reply/dispatch-from-config.test.ts:4748`](https://github.com/openclaw/openclaw/blob/71816a3fb24660c1c6af09d77485cf52e52607f3/src/auto-reply/reply/dispatch-from-config.test.ts#L4748), [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3))
|
||||
- **Docs describe the current workaround:** The group docs now say normal final answers stay private in `message_tool` mode, point to `didSendViaMessagingTool: false`, and recommend `messages.groupChat.visibleReplies: "automatic"` to restore automatic visible final replies. Public docs: [`docs/channels/groups.md`](https://docs.openclaw.ai/channels/groups). ([`docs/channels/groups.md:43`](https://docs.openclaw.ai/channels/groups), [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb24660c1c6af09d77485cf52e52607f3))
|
||||
- **Feature history:** Merged https://github.com/openclaw/openclaw/pull/73046 introduced the safer Discord/group visible-reply behavior and touched the central docs, dispatch, config, and tests. ([3c636208b0a0](https://github.com/openclaw/openclaw/commit/3c636208b0a00ff325e4f48d048d1fd9820f3ea0))
|
||||
- **Current delivery-mode policy:** Group/channel chats resolve to `message_tool_only` unless configured `automatic`, and that mode sets `suppressAutomaticSourceDelivery` and `suppressDelivery`. ([`src/auto-reply/reply/source-reply-delivery-mode.ts:37`](https://github.com/openclaw/openclaw/blob/71816a3fb246/src/auto-reply/reply/source-reply-delivery-mode.ts#L37), [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb246))
|
||||
- **Current suppression implementation:** The final-reply loop continues without delivery when `suppressDelivery` is true and the payload is not explicitly marked to bypass source-reply suppression. ([`src/auto-reply/reply/dispatch-from-config.ts:1567`](https://github.com/openclaw/openclaw/blob/71816a3fb246/src/auto-reply/reply/dispatch-from-config.ts#L1567), [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb246))
|
||||
- **Regression coverage for this path:** Focused tests assert default group/channel turns use `message_tool_only`, return `queuedFinal: false`, and do not call `sendFinalReply`. ([`src/auto-reply/reply/dispatch-from-config.test.ts:4748`](https://github.com/openclaw/openclaw/blob/71816a3fb246/src/auto-reply/reply/dispatch-from-config.test.ts#L4748), [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb246))
|
||||
- **Docs describe the current workaround:** The group docs now say normal final answers stay private in `message_tool` mode, point to `didSendViaMessagingTool: false`, and recommend `messages.groupChat.visibleReplies: "automatic"` to restore automatic visible final replies. Public docs: [`docs/channels/groups.md`](https://docs.openclaw.ai/channels/groups). ([`docs/channels/groups.md:43`](https://docs.openclaw.ai/channels/groups), [71816a3fb246](https://github.com/openclaw/openclaw/commit/71816a3fb246))
|
||||
- **Feature history:** Merged https://github.com/openclaw/openclaw/pull/73046 introduced the safer Discord/group visible-reply behavior and touched the central docs, dispatch, config, and tests. ([3c636208b0a0](https://github.com/openclaw/openclaw/commit/3c636208b0a0))
|
||||
|
||||
Likely related people:
|
||||
|
||||
@ -1,272 +0,0 @@
|
||||
---
|
||||
applied_at: 2026-05-08T23:37:48.689Z
|
||||
review_comment_synced_at: 2026-05-08T23:37:46.880Z
|
||||
number: 79559
|
||||
repository: openclaw/openclaw
|
||||
type: issue
|
||||
title: "Optional plugin tools missing from agent runtime inventory despite all static checks passing"
|
||||
url: https://github.com/openclaw/openclaw/issues/79559
|
||||
state_at_review: open
|
||||
item_created_at: 2026-05-08T23:26:00Z
|
||||
item_updated_at: 2026-05-08T23:26:00Z
|
||||
author: solosage1
|
||||
author_association: NONE
|
||||
labels: []
|
||||
reviewed_at: 2026-05-08T23:37:02.785Z
|
||||
main_sha: bb6c9d210d19f124a95a1ec7d31c366460adaa1f
|
||||
pull_head_sha: unknown
|
||||
latest_release: v2026.5.7
|
||||
latest_release_sha: eeef4864494f859838fec1586bedbab1f8fa5702
|
||||
fixed_release: unknown
|
||||
fixed_sha: unknown
|
||||
fixed_at: unknown
|
||||
fixed_pr_url: unknown
|
||||
fixed_pr_number: unknown
|
||||
fixed_pr_title: unknown
|
||||
fixed_pr_merged_at: unknown
|
||||
fixed_pr_sha: unknown
|
||||
fixed_pr_confidence: unknown
|
||||
fixed_pr_source: unknown
|
||||
review_policy: 421d766edf9f773b
|
||||
review_model: gpt-5.5
|
||||
review_reasoning_effort: high
|
||||
review_sandbox: danger-full-access
|
||||
review_service_tier: default
|
||||
review_prompt_chars: 47027
|
||||
review_static_prompt_chars: 33412
|
||||
review_context_chars: 12353
|
||||
review_schema_chars: 14081
|
||||
review_additional_prompt_chars: 0
|
||||
review_context_elapsed_ms: 1466
|
||||
review_codex_elapsed_ms: 469317
|
||||
review_mode: propose
|
||||
review_status: complete
|
||||
local_checkout_access: verified
|
||||
item_snapshot_hash: 3f308c32662def92f580ce24ddb9aa0836d3cca68bd0322af99122cb8ea65aa2
|
||||
close_comment_sha256: d70e067badca6702975bc65a4c99de3964f39eb1d033ae14c8382517317586b0
|
||||
review_comment_sha256: 2e9104c33d1e881d68df4fb47e7299d09c5eeab14972f4657ff4c2c092cb34de
|
||||
review_comment_id: 4410574075
|
||||
review_comment_url: https://github.com/openclaw/openclaw/issues/79559#issuecomment-4410574075
|
||||
decision: close
|
||||
close_reason: duplicate_or_superseded
|
||||
confidence: high
|
||||
action_taken: closed
|
||||
work_candidate: none
|
||||
work_confidence: low
|
||||
work_priority: low
|
||||
work_status: none
|
||||
work_reason_sha256: df3fe8f0aa186b6aef024bc5ef653e7b03063afa4d6a1fcf24fb5a60226373a3
|
||||
work_prompt_sha256: none
|
||||
work_cluster_refs: []
|
||||
work_validation: []
|
||||
work_likely_files: []
|
||||
item_category: bug
|
||||
reproduction_status: source_reproducible
|
||||
reproduction_confidence: medium
|
||||
requires_new_feature: false
|
||||
requires_new_config_option: false
|
||||
requires_product_decision: false
|
||||
real_behavior_proof_status: not_applicable
|
||||
real_behavior_proof_evidence_kind: not_applicable
|
||||
real_behavior_proof_needs_contributor_action: false
|
||||
---
|
||||
|
||||
# [#79559: Optional plugin tools missing from agent runtime inventory despite all static checks passing](https://github.com/openclaw/openclaw/issues/79559)
|
||||
|
||||
Type: issue
|
||||
|
||||
URL: [https://github.com/openclaw/openclaw/issues/79559](https://github.com/openclaw/openclaw/issues/79559)
|
||||
|
||||
Author: solosage1
|
||||
|
||||
Author association: NONE
|
||||
|
||||
Labels: none
|
||||
|
||||
Created at: May 8, 2026, 23:26 UTC
|
||||
|
||||
Updated at: May 8, 2026, 23:26 UTC
|
||||
|
||||
Reviewed against: [bb6c9d210d19](https://github.com/openclaw/openclaw/commit/bb6c9d210d19f124a95a1ec7d31c366460adaa1f)
|
||||
|
||||
Codex review: model gpt-5.5, reasoning high
|
||||
|
||||
Latest release at review time: [v2026.5.7](https://github.com/openclaw/openclaw/releases/tag/v2026.5.7) ([eeef4864494f](https://github.com/openclaw/openclaw/commit/eeef4864494f859838fec1586bedbab1f8fa5702))
|
||||
|
||||
Fixed in: not determined
|
||||
|
||||
## Decision
|
||||
|
||||
Close: duplicate or superseded
|
||||
|
||||
Confidence: high
|
||||
|
||||
Action taken: proposed_close
|
||||
|
||||
## Summary
|
||||
|
||||
Close as a duplicate of https://github.com/openclaw/openclaw/issues/78907: both reports describe OpenClaw 2026.5.6 embedded direct-lane runs failing to materialize allowlisted plugin tools after plugin registration succeeds, and this issue adds useful Telegram/static-inventory evidence without showing a separate source path.
|
||||
|
||||
## What This Changes
|
||||
|
||||
Ensure Telegram-routed OpenClaw agent runs with restrictive per-agent `tools.allow` materialize allowed optional plugin tools and `message` consistently with static inventory.
|
||||
|
||||
## Best Possible Solution
|
||||
|
||||
Keep https://github.com/openclaw/openclaw/issues/78907 as the canonical bug and fold this issue's Telegram, `message`, and static-admin divergence evidence into the same regression fix.
|
||||
|
||||
## Reproduction Assessment
|
||||
|
||||
No live current-main reproduction was run in this read-only review. The issue gives concrete reproduction steps and the same source path as the canonical open report, while https://github.com/openclaw/openclaw/issues/78907 already contains runtime logs for the shared failure class.
|
||||
|
||||
## Solution Assessment
|
||||
|
||||
Yes for triage: using the older open bug as canonical is the narrowest maintainable path because the remaining work is one embedded direct-lane plugin-tool materialization fix plus regression coverage, not separate Feishu and Telegram fixes.
|
||||
|
||||
## Review Findings
|
||||
|
||||
Overall correctness: not a patch
|
||||
|
||||
Overall confidence: 0.23
|
||||
|
||||
Full review comments:
|
||||
|
||||
- none
|
||||
|
||||
## Security Review
|
||||
|
||||
Status: not_applicable
|
||||
|
||||
Summary: This is non-PR issue triage with no proposed patch or security-sensitive report to review.
|
||||
|
||||
Concerns:
|
||||
|
||||
- none
|
||||
|
||||
## Real Behavior Proof
|
||||
|
||||
Status: not_applicable
|
||||
|
||||
Evidence kind: not_applicable
|
||||
|
||||
Needs contributor action: false
|
||||
|
||||
Summary: Real behavior proof is not applicable because this is an issue, not an external PR.
|
||||
|
||||
## Work Candidate
|
||||
|
||||
Candidate: none
|
||||
|
||||
Confidence: low
|
||||
|
||||
Priority: low
|
||||
|
||||
Status: none
|
||||
|
||||
Reason: Closed as a duplicate; route implementation through the canonical open issue instead of creating a second repair lane.
|
||||
|
||||
## Evidence
|
||||
|
||||
- **Canonical open report:** https://github.com/openclaw/openclaw/issues/78907 is open and labeled as a behavior bug for embedded direct-lane runs where an explicitly allowlisted plugin tool is not materialized despite plugin registration completing.
|
||||
- command: `curl -sL https://api.github.com/repos/openclaw/openclaw/issues/78907`
|
||||
- **Same central runtime construction path:** The live embedded run computes a tool construction plan, calls `createOpenClawCodingTools`, and then applies the runtime allowlist before prompt/tool submission, matching the path named in both reports.
|
||||
- file: [src/agents/pi-embedded-runner/run/attempt.ts:833](https://github.com/openclaw/openclaw/blob/bb6c9d210d19f124a95a1ec7d31c366460adaa1f/src/agents/pi-embedded-runner/run/attempt.ts#L833)
|
||||
- command: `nl -ba src/agents/pi-embedded-runner/run/attempt.ts | sed -n '820,930p'`
|
||||
- sha: [bb6c9d210d19](https://github.com/openclaw/openclaw/commit/bb6c9d210d19f124a95a1ec7d31c366460adaa1f)
|
||||
- **Plan can decide plugin/channel tool materialization before final filtering:** The construction-plan helper derives `includePluginTools` and ties `includeChannelTools` to that decision, so the direct-lane allowlist/materialization issue belongs in the same fix area as the canonical report.
|
||||
- file: [src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.ts:112](https://github.com/openclaw/openclaw/blob/bb6c9d210d19f124a95a1ec7d31c366460adaa1f/src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.ts#L112)
|
||||
- command: `nl -ba src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.ts | sed -n '1,180p'`
|
||||
- sha: [bb6c9d210d19](https://github.com/openclaw/openclaw/commit/bb6c9d210d19f124a95a1ec7d31c366460adaa1f)
|
||||
- **Static inventory can differ from live construction:** `resolveEffectiveToolInventory` calls `createOpenClawCodingTools` without the embedded run construction plan/runtime allowlist branch, which matches this issue's static-admin versus live-run divergence.
|
||||
- file: [src/agents/tools-effective-inventory.ts:209](https://github.com/openclaw/openclaw/blob/bb6c9d210d19f124a95a1ec7d31c366460adaa1f/src/agents/tools-effective-inventory.ts#L209)
|
||||
- command: `nl -ba src/agents/tools-effective-inventory.ts | sed -n '180,260p'`
|
||||
- sha: [bb6c9d210d19](https://github.com/openclaw/openclaw/commit/bb6c9d210d19f124a95a1ec7d31c366460adaa1f)
|
||||
- **Documented optional-tool contract:** Plugin docs say optional tools are enabled through `tools.allow` and that adding a plugin id to `tools.allow` enables all tools from that plugin, so the canonical report tracks a real documented behavior gap rather than a new feature request.
|
||||
- file: [docs/plugins/building-plugins.md:275](https://github.com/openclaw/openclaw/blob/bb6c9d210d19f124a95a1ec7d31c366460adaa1f/docs/plugins/building-plugins.md#L275)
|
||||
- command: `nl -ba docs/plugins/building-plugins.md | sed -n '210,295p'`
|
||||
- sha: [bb6c9d210d19](https://github.com/openclaw/openclaw/commit/bb6c9d210d19f124a95a1ec7d31c366460adaa1f)
|
||||
- **Existing regression coverage is adjacent but not the full live case:** Current tests cover plugin-only construction plans and optional plugin tool resolution, but not the mixed Telegram/OpenClaw runtime inventory divergence described here; that gap should be closed on the canonical issue.
|
||||
- file: [src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.test.ts:115](https://github.com/openclaw/openclaw/blob/bb6c9d210d19f124a95a1ec7d31c366460adaa1f/src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.test.ts#L115)
|
||||
- command: `nl -ba src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.test.ts | sed -n '1,236p'`
|
||||
- sha: [bb6c9d210d19](https://github.com/openclaw/openclaw/commit/bb6c9d210d19f124a95a1ec7d31c366460adaa1f)
|
||||
|
||||
## Likely Related People
|
||||
|
||||
- **@steipete:** introduced/current maintainer of embedded runtime allowlist construction
|
||||
- reason: GitHub commit history for `src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.ts` points to `fix: honor embedded runtime tool allowlists`, which introduced the current construction-plan helper and touched the central embedded/tool files.
|
||||
- confidence: high
|
||||
- commits: 25b30c95200d3af384b32878f5c9ed8cbf72fef8, e5ec14a06a670c9ac276f746be6e794748c2cb22
|
||||
- files: src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.ts, src/agents/pi-embedded-runner/run/attempt.ts, src/agents/pi-tools.ts
|
||||
- **@vincentkoc:** recent plugin optional-tool policy maintainer
|
||||
- reason: Recent commits on `src/plugins/tools.ts` and `src/agents/pi-tools.ts` cover optional tool metadata, plugin denylists, and plugin tool discovery, which are adjacent to the reported missing optional plugin tools.
|
||||
- confidence: medium
|
||||
- commits: 09e7eb6687a17d5497df118024892731004795e8, e3cba91ef0597a870ed7e64ec4b90dafbd98cd03, 571d75aab351e8938f6deebbccf94367a44c0e62
|
||||
- files: src/plugins/tools.ts, src/agents/pi-tools.ts, src/plugins/tools.optional.test.ts
|
||||
|
||||
## Risks / Open Questions
|
||||
|
||||
- This issue includes Telegram-specific and static-inventory divergence details that should remain linked from the canonical fix discussion so they are not lost.
|
||||
|
||||
## Close Comment
|
||||
|
||||
Thanks for the context here. I swept through the related work, and this is now duplicate or superseded.
|
||||
|
||||
Close as a duplicate of https://github.com/openclaw/openclaw/issues/78907: both reports describe OpenClaw 2026.5.6 embedded direct-lane runs failing to materialize allowlisted plugin tools after plugin registration succeeds, and this issue adds useful Telegram/static-inventory evidence without showing a separate source path.
|
||||
|
||||
So I’m closing this here and keeping the remaining discussion on the canonical linked item.
|
||||
|
||||
<details>
|
||||
<summary>Review details</summary>
|
||||
|
||||
Best possible solution:
|
||||
|
||||
Keep https://github.com/openclaw/openclaw/issues/78907 as the canonical bug and fold this issue's Telegram, `message`, and static-admin divergence evidence into the same regression fix.
|
||||
|
||||
Do we have a high-confidence way to reproduce the issue?
|
||||
|
||||
No live current-main reproduction was run in this read-only review. The issue gives concrete reproduction steps and the same source path as the canonical open report, while https://github.com/openclaw/openclaw/issues/78907 already contains runtime logs for the shared failure class.
|
||||
|
||||
Is this the best way to solve the issue?
|
||||
|
||||
Yes for triage: using the older open bug as canonical is the narrowest maintainable path because the remaining work is one embedded direct-lane plugin-tool materialization fix plus regression coverage, not separate Feishu and Telegram fixes.
|
||||
|
||||
Security review:
|
||||
|
||||
Security review: This is non-PR issue triage with no proposed patch or security-sensitive report to review.
|
||||
|
||||
What I checked:
|
||||
|
||||
- **Canonical open report:** https://github.com/openclaw/openclaw/issues/78907 is open and labeled as a behavior bug for embedded direct-lane runs where an explicitly allowlisted plugin tool is not materialized despite plugin registration completing.
|
||||
- **Same central runtime construction path:** The live embedded run computes a tool construction plan, calls `createOpenClawCodingTools`, and then applies the runtime allowlist before prompt/tool submission, matching the path named in both reports. ([`src/agents/pi-embedded-runner/run/attempt.ts:833`](https://github.com/openclaw/openclaw/blob/bb6c9d210d19/src/agents/pi-embedded-runner/run/attempt.ts#L833), [bb6c9d210d19](https://github.com/openclaw/openclaw/commit/bb6c9d210d19))
|
||||
- **Plan can decide plugin/channel tool materialization before final filtering:** The construction-plan helper derives `includePluginTools` and ties `includeChannelTools` to that decision, so the direct-lane allowlist/materialization issue belongs in the same fix area as the canonical report. ([`src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.ts:112`](https://github.com/openclaw/openclaw/blob/bb6c9d210d19/src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.ts#L112), [bb6c9d210d19](https://github.com/openclaw/openclaw/commit/bb6c9d210d19))
|
||||
- **Static inventory can differ from live construction:** `resolveEffectiveToolInventory` calls `createOpenClawCodingTools` without the embedded run construction plan/runtime allowlist branch, which matches this issue's static-admin versus live-run divergence. ([`src/agents/tools-effective-inventory.ts:209`](https://github.com/openclaw/openclaw/blob/bb6c9d210d19/src/agents/tools-effective-inventory.ts#L209), [bb6c9d210d19](https://github.com/openclaw/openclaw/commit/bb6c9d210d19))
|
||||
- **Documented optional-tool contract:** Plugin docs say optional tools are enabled through `tools.allow` and that adding a plugin id to `tools.allow` enables all tools from that plugin, so the canonical report tracks a real documented behavior gap rather than a new feature request. Public docs: [`docs/plugins/building-plugins.md`](https://docs.openclaw.ai/plugins/building-plugins). ([`docs/plugins/building-plugins.md:275`](https://docs.openclaw.ai/plugins/building-plugins), [bb6c9d210d19](https://github.com/openclaw/openclaw/commit/bb6c9d210d19))
|
||||
- **Existing regression coverage is adjacent but not the full live case:** Current tests cover plugin-only construction plans and optional plugin tool resolution, but not the mixed Telegram/OpenClaw runtime inventory divergence described here; that gap should be closed on the canonical issue. ([`src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.test.ts:115`](https://github.com/openclaw/openclaw/blob/bb6c9d210d19/src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.test.ts#L115), [bb6c9d210d19](https://github.com/openclaw/openclaw/commit/bb6c9d210d19))
|
||||
|
||||
Likely related people:
|
||||
|
||||
- **@steipete:** GitHub commit history for `src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.ts` points to `fix: honor embedded runtime tool allowlists`, which introduced the current construction-plan helper and touched the central embedded/tool files. (role: introduced/current maintainer of embedded runtime allowlist construction; confidence: high; commits: [25b30c95200d](https://github.com/openclaw/openclaw/commit/25b30c95200d3af384b32878f5c9ed8cbf72fef8), [e5ec14a06a67](https://github.com/openclaw/openclaw/commit/e5ec14a06a670c9ac276f746be6e794748c2cb22); files: `src/agents/pi-embedded-runner/run/attempt-tool-construction-plan.ts`, `src/agents/pi-embedded-runner/run/attempt.ts`, `src/agents/pi-tools.ts`)
|
||||
- **@vincentkoc:** Recent commits on `src/plugins/tools.ts` and `src/agents/pi-tools.ts` cover optional tool metadata, plugin denylists, and plugin tool discovery, which are adjacent to the reported missing optional plugin tools. (role: recent plugin optional-tool policy maintainer; confidence: medium; commits: [09e7eb6687a1](https://github.com/openclaw/openclaw/commit/09e7eb6687a17d5497df118024892731004795e8), [e3cba91ef059](https://github.com/openclaw/openclaw/commit/e3cba91ef0597a870ed7e64ec4b90dafbd98cd03), [571d75aab351](https://github.com/openclaw/openclaw/commit/571d75aab351e8938f6deebbccf94367a44c0e62); files: `src/plugins/tools.ts`, `src/agents/pi-tools.ts`, `src/plugins/tools.optional.test.ts`)
|
||||
|
||||
Codex review notes: model gpt-5.5, reasoning high; reviewed against [bb6c9d210d19](https://github.com/openclaw/openclaw/commit/bb6c9d210d19f124a95a1ec7d31c366460adaa1f).
|
||||
|
||||
</details>
|
||||
|
||||
## GitHub Snapshot
|
||||
|
||||
- comments: 0
|
||||
- timeline events: 0
|
||||
- related items: 0
|
||||
- PR files: 0
|
||||
- PR commits: 0
|
||||
|
||||
## Review Telemetry
|
||||
|
||||
- prompt chars: 47027
|
||||
- static prompt chars: 33412
|
||||
- context chars: 12353
|
||||
- schema chars: 14081
|
||||
- additional prompt chars: 0
|
||||
- context collection ms: 1466
|
||||
- Codex review ms: 469317
|
||||
|
||||
@ -1,43 +0,0 @@
|
||||
---
|
||||
sha: 2848f63e5a9945802e2f250d44c08e1124d05003
|
||||
parent: 32bbd8e423b918e186673eb39031d783a11b5505
|
||||
repository: openclaw/openclaw
|
||||
author: "Peter Steinberger"
|
||||
committer: "Peter Steinberger"
|
||||
github_author: steipete
|
||||
github_committer: steipete
|
||||
co_authors: []
|
||||
commit_authored_at: "2026-05-09T00:31:09+01:00"
|
||||
commit_committed_at: "2026-05-09T00:31:15+01:00"
|
||||
result: nothing_found
|
||||
confidence: high
|
||||
highest_severity: none
|
||||
check_conclusion: success
|
||||
reviewed_at: 2026-05-08T23:36:46+00:00
|
||||
---
|
||||
|
||||
# Commit 2848f63e
|
||||
|
||||
Nothing found.
|
||||
|
||||
## Details
|
||||
|
||||
- Do we have a high-confidence way to reproduce the issue? Not applicable; no actionable issue was found.
|
||||
- Is this the best way to solve the issue? Not applicable; no fix is recommended.
|
||||
|
||||
## Reviewed
|
||||
|
||||
- Diff: `32bbd8e423b918e186673eb39031d783a11b5505..2848f63e5a9945802e2f250d44c08e1124d05003`
|
||||
- Changed files: `src/auto-reply/reply/followup-runner.test.ts`
|
||||
- Code read: full `src/auto-reply/reply/followup-runner.test.ts`; relevant `src/auto-reply/reply/followup-runner.ts`, `src/auto-reply/reply/agent-runner-memory.ts`, `src/auto-reply/reply/post-compaction-context.ts`, `src/auto-reply/reply/agent-runner.ts`
|
||||
- Dependencies/web: no package or external behavior changed; no web lookup needed
|
||||
- Commands: `pnpm docs:list`, `git diff --check`, `gh pr list`, `pnpm install`, `pnpm test src/auto-reply/reply/followup-runner.test.ts`
|
||||
|
||||
## Tests / Live Checks
|
||||
|
||||
- `pnpm test src/auto-reply/reply/followup-runner.test.ts` passed: 1 file, 30 tests.
|
||||
- Initial test attempt failed because `node_modules` was missing; after `pnpm install`, the same targeted test passed.
|
||||
|
||||
## Limitations
|
||||
|
||||
- none
|
||||
@ -1,46 +0,0 @@
|
||||
---
|
||||
sha: 57301d7624a03337d27cdf6e21c6e4bbbe25ebb4
|
||||
parent: 2848f63e5a9945802e2f250d44c08e1124d05003
|
||||
repository: openclaw/openclaw
|
||||
author: "Shakker"
|
||||
committer: "Shakker"
|
||||
github_author: shakkernerd
|
||||
github_committer: shakkernerd
|
||||
co_authors: []
|
||||
commit_authored_at: "2026-05-09T00:31:44+01:00"
|
||||
commit_committed_at: "2026-05-09T00:31:52+01:00"
|
||||
result: nothing_found
|
||||
confidence: high
|
||||
highest_severity: none
|
||||
check_conclusion: success
|
||||
reviewed_at: 2026-05-08T23:37:04+00:00
|
||||
---
|
||||
|
||||
# Commit 57301d7
|
||||
|
||||
Nothing found.
|
||||
|
||||
## Details
|
||||
|
||||
- Do we have a high-confidence way to reproduce the issue? Not applicable; no actionable issue was found.
|
||||
- Is this the best way to solve the issue? Not applicable; no fix is recommended.
|
||||
|
||||
## Reviewed
|
||||
|
||||
- Diff: `2848f63e5a9945802e2f250d44c08e1124d05003..57301d7624a03337d27cdf6e21c6e4bbbe25ebb4`
|
||||
- Changed files: `extensions/zalouser/src/zalo-js.credentials.test.ts`
|
||||
- Code read: `extensions/zalouser/src/zalo-js.credentials.test.ts`, `extensions/zalouser/src/zalo-js.ts`, `extensions/AGENTS.md`, `docs/channels/zalouser.md`
|
||||
- Dependencies/web: no dependency files changed; no web lookup needed
|
||||
- Commands: `pnpm docs:list`; `git diff --check`; `pnpm exec oxfmt --check --threads=1 extensions/zalouser/src/zalo-js.credentials.test.ts`; `pnpm test extensions/zalouser/src/zalo-js.credentials.test.ts`
|
||||
|
||||
## Tests / Live Checks
|
||||
|
||||
- Initial focused test attempt failed because `node_modules` was missing.
|
||||
- Ran `pnpm install` per repo guidance, then retried.
|
||||
- `pnpm test extensions/zalouser/src/zalo-js.credentials.test.ts`: passed, 1 file, 8 tests.
|
||||
- Targeted formatter check passed.
|
||||
- Diff whitespace check passed.
|
||||
|
||||
## Limitations
|
||||
|
||||
- No live Zalo service check was run; the commit only changes a mocked credential persistence test’s mtime handling.
|
||||
@ -1,4 +1,5 @@
|
||||
---
|
||||
review_comment_synced_at: 2026-05-08T22:29:51.477Z
|
||||
number: 18860
|
||||
repository: openclaw/openclaw
|
||||
type: pull_request
|
||||
@ -6,12 +7,12 @@ title: "feat(agents): expose tools and their schemas via new after_tools_resolve
|
||||
url: https://github.com/openclaw/openclaw/pull/18860
|
||||
state_at_review: open
|
||||
item_created_at: 2026-02-17T04:32:32Z
|
||||
item_updated_at: 2026-05-08T22:30:13Z
|
||||
item_updated_at: 2026-05-08T21:26:15Z
|
||||
author: lan17
|
||||
author_association: NONE
|
||||
labels: ["docs","agents","size: M","triage: needs-real-behavior-proof"]
|
||||
reviewed_at: 2026-05-08T23:36:00.639Z
|
||||
main_sha: 57301d7624a03337d27cdf6e21c6e4bbbe25ebb4
|
||||
labels: ["docs","agents","size: M","triage: needs-real-behavior-proof","proof: sufficient"]
|
||||
reviewed_at: 2026-05-08T22:25:25.660Z
|
||||
main_sha: 64e731b5e883e4d44c19844df8f618ea034317ba
|
||||
pull_head_sha: 4531fb1b29c8310a2694b94daac4295009561497
|
||||
latest_release: v2026.5.7
|
||||
latest_release_sha: eeef4864494f859838fec1586bedbab1f8fa5702
|
||||
@ -30,21 +31,21 @@ review_model: gpt-5.5
|
||||
review_reasoning_effort: high
|
||||
review_sandbox: danger-full-access
|
||||
review_service_tier: default
|
||||
review_prompt_chars: 114308
|
||||
review_prompt_chars: 114327
|
||||
review_static_prompt_chars: 33412
|
||||
review_context_chars: 79624
|
||||
review_context_chars: 79643
|
||||
review_schema_chars: 14081
|
||||
review_additional_prompt_chars: 0
|
||||
review_context_elapsed_ms: 4318
|
||||
review_codex_elapsed_ms: 226200
|
||||
review_context_elapsed_ms: 3954
|
||||
review_codex_elapsed_ms: 194971
|
||||
review_mode: propose
|
||||
review_status: complete
|
||||
local_checkout_access: verified
|
||||
item_snapshot_hash: 6065fe5f2ed62550a357c4fa1c86ac39991f4492c03cc9dbe8c4cb4021eaf1b0
|
||||
item_snapshot_hash: 6d9c25e52bfa66e036719b2c696edfe8d482021384421fc0dbf15c90ac125209
|
||||
close_comment_sha256: none
|
||||
review_comment_sha256: none
|
||||
review_comment_id: unknown
|
||||
review_comment_url: unknown
|
||||
review_comment_sha256: a1093d2b6fd67b0f59761fe157fece8be62f68d1e378e486977a362f2b0092f9
|
||||
review_comment_id: 4355405720
|
||||
review_comment_url: https://github.com/openclaw/openclaw/pull/18860#issuecomment-4355405720
|
||||
decision: keep_open
|
||||
close_reason: none
|
||||
confidence: high
|
||||
@ -83,9 +84,9 @@ Labels: docs, agents, size: M, triage: needs-real-behavior-proof
|
||||
|
||||
Created at: Feb 17, 2026, 04:32 UTC
|
||||
|
||||
Updated at: May 8, 2026, 22:30 UTC
|
||||
Updated at: May 8, 2026, 21:26 UTC
|
||||
|
||||
Reviewed against: [57301d7624a0](https://github.com/openclaw/openclaw/commit/57301d7624a03337d27cdf6e21c6e4bbbe25ebb4)
|
||||
Reviewed against: [64e731b5e883](https://github.com/openclaw/openclaw/commit/64e731b5e883e4d44c19844df8f618ea034317ba)
|
||||
|
||||
Codex review: model gpt-5.5, reasoning high
|
||||
|
||||
@ -103,11 +104,11 @@ Action taken: kept_open
|
||||
|
||||
## Summary
|
||||
|
||||
Keep open: current main still lacks a plugin-facing resolved-tools/schema API, and this PR remains the active implementation path. The branch has live log proof and no discrete code-review blocker found, but it adds a new public plugin hook and is currently conflicting, so it needs maintainer API review and rebase before merge.
|
||||
Keep this PR open: current main still lacks an `after_tools_resolved` hook or equivalent resolved-tools API, and the branch addresses the linked feature request, but it is a new public plugin contract on a conflicting branch that needs maintainer API review before merge.
|
||||
|
||||
## What This Changes
|
||||
|
||||
The PR adds an `after_tools_resolved` plugin hook, emits cloned resolved tool metadata from embedded attempts, documents the hook, refreshes SDK baseline hashes, adds tests, and adds a changelog entry.
|
||||
The PR adds an `after_tools_resolved` plugin hook, emits cloned resolved tool metadata from embedded attempts, documents it, updates SDK baseline hashes and changelog, and adds focused tests.
|
||||
|
||||
## Best Possible Solution
|
||||
|
||||
@ -125,7 +126,7 @@ Unclear pending maintainer review. The additive fire-and-forget hook with cloned
|
||||
|
||||
Overall correctness: patch is correct
|
||||
|
||||
Overall confidence: 0.82
|
||||
Overall confidence: 0.78
|
||||
|
||||
Full review comments:
|
||||
|
||||
@ -135,7 +136,7 @@ Full review comments:
|
||||
|
||||
Status: cleared
|
||||
|
||||
Summary: No concrete security or supply-chain regression found; the diff adds a trusted plugin observation hook plus docs, tests, changelog text, and generated baseline hashes without new dependencies, scripts, workflow permissions, secrets handling, or network execution.
|
||||
Summary: No concrete security or supply-chain regression found in the diff; it adds a trusted plugin observation hook plus docs, tests, changelog text, and generated baseline hashes without new dependencies, scripts, workflow permissions, secrets handling, or network execution paths.
|
||||
|
||||
Concerns:
|
||||
|
||||
@ -149,7 +150,7 @@ Evidence kind: logs
|
||||
|
||||
Needs contributor action: false
|
||||
|
||||
Summary: The PR body includes copied live WhatsApp gateway logs showing the hook firing with resolved tools and schemas while the agent continues normally.
|
||||
Summary: The PR body includes copied live WhatsApp gateway logs showing after-fix behavior: the hook fires with resolved tools and schemas while the agent continues normally.
|
||||
|
||||
## Work Candidate
|
||||
|
||||
@ -177,63 +178,60 @@ Validation:
|
||||
|
||||
## Evidence
|
||||
|
||||
- **Current main lacks the hook name:** `PluginHookName` and `PLUGIN_HOOK_NAMES` include tool hooks such as `before_tool_call`, `after_tool_call`, and `tool_result_persist`, but not `after_tools_resolved`.
|
||||
- file: [src/plugins/hook-types.ts:91](https://github.com/openclaw/openclaw/blob/57301d7624a03337d27cdf6e21c6e4bbbe25ebb4/src/plugins/hook-types.ts#L91)
|
||||
- command: `nl -ba src/plugins/hook-types.ts | sed -n '80,140p;440,470p;910,940p'`
|
||||
- sha: [57301d7624a0](https://github.com/openclaw/openclaw/commit/57301d7624a03337d27cdf6e21c6e4bbbe25ebb4)
|
||||
- **Current plugin API lacks a pull equivalent:** `OpenClawPluginApi` exposes registration and typed hook APIs, but source search found no `listTools`, `getTools`, or `getResolvedTools` equivalent for final resolved tool discovery.
|
||||
- file: [src/plugins/types.ts:2419](https://github.com/openclaw/openclaw/blob/57301d7624a03337d27cdf6e21c6e4bbbe25ebb4/src/plugins/types.ts#L2419)
|
||||
- command: `rg -n "after_tools_resolved|afterToolsResolved|resolved tools|getResolvedTools|listTools|getTools|before_tool_call|after_tool_call" src/plugins src/agents docs/plugins CHANGELOG.md`
|
||||
- sha: [57301d7624a0](https://github.com/openclaw/openclaw/commit/57301d7624a03337d27cdf6e21c6e4bbbe25ebb4)
|
||||
- **Current embedded attempts resolve tools without notification:** The embedded runner builds `allCustomTools`, derives `sessionToolAllowlist`, creates the session, and activates the allowlist without emitting a resolved-tools hook.
|
||||
- file: [src/agents/pi-embedded-runner/run/attempt.ts:1652](https://github.com/openclaw/openclaw/blob/57301d7624a03337d27cdf6e21c6e4bbbe25ebb4/src/agents/pi-embedded-runner/run/attempt.ts#L1652)
|
||||
- command: `nl -ba src/agents/pi-embedded-runner/run/attempt.ts | sed -n '1560,1685p;2460,2505p'`
|
||||
- sha: [57301d7624a0](https://github.com/openclaw/openclaw/commit/57301d7624a03337d27cdf6e21c6e4bbbe25ebb4)
|
||||
- **Current main lacks the hook name:** `PluginHookName` and `PLUGIN_HOOK_NAMES` include `before_tool_call`, `after_tool_call`, and `tool_result_persist`, but no `after_tools_resolved`.
|
||||
- file: [src/plugins/hook-types.ts:72](https://github.com/openclaw/openclaw/blob/64e731b5e883e4d44c19844df8f618ea034317ba/src/plugins/hook-types.ts#L72)
|
||||
- command: `nl -ba src/plugins/hook-types.ts | sed -n '70,160p;430,470p;900,945p'`
|
||||
- sha: [64e731b5e883](https://github.com/openclaw/openclaw/commit/64e731b5e883e4d44c19844df8f618ea034317ba)
|
||||
- **Current plugin API lacks a pull equivalent:** `OpenClawPluginApi` exposes `registerTool`, `registerToolMetadata`, and typed `on(...)`, but no `listTools`, `getTools`, or `getResolvedTools` API for resolved tool discovery.
|
||||
- file: [src/plugins/types.ts:2419](https://github.com/openclaw/openclaw/blob/64e731b5e883e4d44c19844df8f618ea034317ba/src/plugins/types.ts#L2419)
|
||||
- command: `nl -ba src/plugins/types.ts | sed -n '2410,2655p'`
|
||||
- sha: [64e731b5e883](https://github.com/openclaw/openclaw/commit/64e731b5e883e4d44c19844df8f618ea034317ba)
|
||||
- **Current embedded attempt resolves tools without notification:** The embedded runner builds `allCustomTools`, derives `sessionToolAllowlist`, creates the session, and calls `session.setActiveToolsByName(sessionToolAllowlist)` without emitting a resolved-tools hook.
|
||||
- file: [src/agents/pi-embedded-runner/run/attempt.ts:1652](https://github.com/openclaw/openclaw/blob/64e731b5e883e4d44c19844df8f618ea034317ba/src/agents/pi-embedded-runner/run/attempt.ts#L1652)
|
||||
- command: `nl -ba src/agents/pi-embedded-runner/run/attempt.ts | sed -n '1535,1695p'`
|
||||
- sha: [64e731b5e883](https://github.com/openclaw/openclaw/commit/64e731b5e883e4d44c19844df8f618ea034317ba)
|
||||
- **PR implements the proposed emission point:** The PR head builds resolved tool metadata after the session allowlist is computed and calls `runAfterToolsResolved` with provider/model and agent context fields.
|
||||
- file: [src/agents/pi-embedded-runner/run/attempt.ts:1668](https://github.com/openclaw/openclaw/blob/4531fb1b29c8310a2694b94daac4295009561497/src/agents/pi-embedded-runner/run/attempt.ts#L1668)
|
||||
- command: `gh api repos/openclaw/openclaw/pulls/18860/files --paginate --jq '.[] | {filename,status,additions,deletions,changes,patch}'`
|
||||
- command: `gh api repos/openclaw/openclaw/pulls/18860/files --paginate --jq '.[] | {filename,status,additions,deletions,patch}'`
|
||||
- sha: [4531fb1b29c8](https://github.com/openclaw/openclaw/commit/4531fb1b29c8310a2694b94daac4295009561497)
|
||||
- **PR includes contract, docs, tests, and changelog coverage:** The diff updates `src/plugins/hook-types.ts`, `src/plugins/hooks.ts`, `docs/plugins/hooks.md`, `CHANGELOG.md`, `docs/.generated/plugin-sdk-api-baseline.sha256`, and focused tests for metadata snapshotting and hook runner registration.
|
||||
- **PR includes public docs, tests, changelog, and SDK baseline hashes:** The diff updates `docs/plugins/hooks.md`, adds `src/plugins/wired-hooks-after-tools-resolved.test.ts`, extends `attempt.test.ts`, updates `CHANGELOG.md`, and refreshes `docs/.generated/plugin-sdk-api-baseline.sha256`.
|
||||
- file: [docs/plugins/hooks.md:201](https://github.com/openclaw/openclaw/blob/4531fb1b29c8310a2694b94daac4295009561497/docs/plugins/hooks.md#L201)
|
||||
- command: `gh api repos/openclaw/openclaw/pulls/18860/files --paginate --jq '.[] | {filename,status,additions,deletions,changes,patch}'`
|
||||
- command: `gh api repos/openclaw/openclaw/pulls/18860/files --paginate --jq '.[] | {filename,status,additions,deletions,patch}'`
|
||||
- sha: [4531fb1b29c8](https://github.com/openclaw/openclaw/commit/4531fb1b29c8310a2694b94daac4295009561497)
|
||||
- **Real behavior proof is present:** The PR body includes copied live WhatsApp gateway logs and a human-verification section showing the hook firing with tool names and schemas while the agent responds normally.
|
||||
- command: `gh pr view 18860 --repo openclaw/openclaw --json body --jq '{hasLiveLog:(.body | contains("Live gateway log output")), hasHumanVerification:(.body | contains("Human Verification")), hasSnapshot:(.body | contains("Hook fires with correct tool metadata"))}'`
|
||||
- **Linked feature issue is already routed here:** The linked feature issue describes the same missing resolved tool/schema discovery capability and was closed as superseded by this still-open PR.
|
||||
- command: `gh issue view 21330 --repo openclaw/openclaw --json number,title,state,url,author,body,comments,labels,closedAt,updatedAt`
|
||||
- **Merge state still blocks normal landing:** GitHub reports `mergeable: false`, `mergeable_state: dirty`, and `rebaseable: false` for the current PR head.
|
||||
- command: `gh api repos/openclaw/openclaw/pulls/18860 --jq '{mergeable, mergeable_state, rebaseable, draft, head:{sha:.head.sha, ref:.head.ref}, base:{sha:.base.sha, ref:.base.ref}, updated_at}'`
|
||||
- sha: [4531fb1b29c8](https://github.com/openclaw/openclaw/commit/4531fb1b29c8310a2694b94daac4295009561497)
|
||||
- **Branch is not landable as-is:** GitHub reports `mergeable: CONFLICTING` and `mergeStateStatus: DIRTY` for the current PR head.
|
||||
- command: `gh pr view 18860 --repo openclaw/openclaw --json number,title,state,isDraft,isCrossRepository,mergeable,mergeStateStatus,reviewDecision,author,headRefName,headRefOid,baseRefOid,labels,files,commits,statusCheckRollup,closingIssuesReferences,latestReviews,maintainerCanModify,url,updatedAt`
|
||||
- sha: [4531fb1b29c8](https://github.com/openclaw/openclaw/commit/4531fb1b29c8310a2694b94daac4295009561497)
|
||||
- **Linked feature issue is already routed here:** https://github.com/openclaw/openclaw/issues/21330 describes the same missing resolved tool/schema discovery capability and was closed as superseded by this still-open PR.
|
||||
- command: `gh issue view 21330 --repo openclaw/openclaw --json number,title,state,url,author,labels,comments,closedAt,body`
|
||||
|
||||
## Likely Related People
|
||||
|
||||
- **100yenadmin:** recent plugin SDK and hook contract maintainer
|
||||
- reason: Recent merged work changed generic plugin host-hook contracts, hook runner behavior, SDK slots, and plugin API surfaces in the same contract boundary this PR extends.
|
||||
- confidence: high
|
||||
- commits: 1adaa28dc86b, 8afc9ef73cb5, cb3853587576
|
||||
- commits: 1adaa28dc86b4eb5805733f558962481159678f3, 8afc9ef73cb5ad1353151d04ef2d6191219c8f53, cb3853587576999f19a943011d59231e8649730f
|
||||
- files: src/plugins/hook-types.ts, src/plugins/hooks.ts, src/plugins/types.ts
|
||||
- **vincentkoc:** adjacent plugin hook and docs maintainer
|
||||
- reason: Recent work added and documented plugin hook surfaces, timeout behavior, and hook type/docs changes near this PR's catalog and docs changes.
|
||||
- reason: Recent merged work added and documented plugin hook surfaces, hook correlation fields, timeout behavior, and hook type splits near the catalog and docs touched by this PR.
|
||||
- confidence: high
|
||||
- commits: f3accc753cf2, 275c128e99bc, 1d34564de9ba, 7d2d8732d0a1
|
||||
- commits: f3accc753cf2417d816be7f0bddbb1bba0466d09, 275c128e99bc8b04a24334103a12f952e79fc704, 3bd2ee78b6acf105c23656bb2d61416d6ccb2fa7, 7f5a5a34dbf878133529a72b2b7cd150f9062dd3
|
||||
- files: src/plugins/hook-types.ts, src/plugins/hooks.ts, docs/plugins/hooks.md
|
||||
- **jesse-merhi:** recent adjacent public hook maintainer
|
||||
- reason: Recently landed the public `before_agent_run` hook with docs, changelog, tests, and embedded-runner integration across the same hook catalog and runner surfaces.
|
||||
- reason: Recently landed a public `before_agent_run` hook with docs, changelog, tests, and embedded-runner integration across the same hook catalog and runner surfaces.
|
||||
- confidence: medium
|
||||
- commits: 1c42c774339c
|
||||
- files: src/plugins/hook-types.ts, src/plugins/hooks.ts, docs/plugins/hooks.md
|
||||
- commits: 1c42c774339c32f138e68e7f4c3e998a30bbb2b2
|
||||
- files: src/plugins/hook-types.ts, src/plugins/hooks.ts, docs/plugins/hooks.md, src/agents/pi-embedded-runner/run/attempt.ts
|
||||
- **steipete:** maintainer reviewer and adjacent embedded tools owner
|
||||
- reason: Provided explicit keep-open direction on this PR and recently changed embedded runtime tool allowlists and hook timeout behavior near the proposed emission point.
|
||||
- reason: Provided explicit keep-open direction on this PR and recently changed embedded runtime tool allowlists and plugin hook timeout behavior near the proposed emission point.
|
||||
- confidence: medium
|
||||
- commits: 25b30c95200d, 4d4c7c8ab3a0, 82c11deaa2cb
|
||||
- commits: 25b30c95200d3af384b32878f5c9ed8cbf72fef8, 4d4c7c8ab3a099eebd5e337ca245cb824fa920b2, 82c11deaa2cbd43e751ece2ae21a1a65a2cf32bd
|
||||
- files: src/agents/pi-embedded-runner/run/attempt.ts, src/plugins/hooks.ts, docs/plugins/hooks.md
|
||||
|
||||
## Risks / Open Questions
|
||||
|
||||
- The branch is conflicting/dirty against current main, so it cannot be merged without a rebase or conflict resolution.
|
||||
- The new hook exposes the full post-policy per-attempt tool list and schemas to loaded plugins; maintainers should confirm that fits the trusted-plugin boundary.
|
||||
- Retry behavior can emit repeated per-attempt observations, so the final public contract should settle dedupe or fingerprint expectations.
|
||||
- The branch is currently conflicting/dirty, so it cannot be landed as-is.
|
||||
- The public hook exposes the full post-policy per-attempt tool list and schemas to loaded plugins; maintainers should confirm that fits the trusted-plugin boundary.
|
||||
- Retry behavior can emit repeated per-attempt observations, so the final contract should document dedupe or fingerprint expectations.
|
||||
|
||||
## Close Comment
|
||||
|
||||
@ -242,18 +240,18 @@ _No close comment posted._
|
||||
## GitHub Snapshot
|
||||
|
||||
- comments: 8
|
||||
- timeline events: 198
|
||||
- timeline events: 196
|
||||
- related items: 2
|
||||
- PR files: 8
|
||||
- PR commits: 31
|
||||
|
||||
## Review Telemetry
|
||||
|
||||
- prompt chars: 114308
|
||||
- prompt chars: 114327
|
||||
- static prompt chars: 33412
|
||||
- context chars: 79624
|
||||
- context chars: 79643
|
||||
- schema chars: 14081
|
||||
- additional prompt chars: 0
|
||||
- context collection ms: 4318
|
||||
- Codex review ms: 226200
|
||||
- context collection ms: 3954
|
||||
- Codex review ms: 194971
|
||||
|
||||
Loading…
Reference in New Issue
Block a user