Repository navigation
feat: give plugin scanner commands a 30-minute budget - #151
Conversation
A plugin target is audited as one whole artifact, and aig-mcp's agent loop over compiled output and embedded skills can exceed the 20-minute per-scanner budget. Scanner commands run against plugin targets now get 30 minutes; skill, file and URL targets keep 20 minutes, and the judge and overview budgets are unchanged. Cancellation still flows through the same context deadline in both the host and Docker paths.
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs maintainer review before merge. What this changesGive scanner commands for OpenClaw plugin targets 30 minutes while retaining 20 minutes for other targets. Example: A plugin audit needs 25 minutes and has no shorter caller deadline.
Review scores
ProductKind: Feature · Worth it: Yes · Fix scope: Complete Merge readiness✅ Ready for maintainer review Keep open: this maintainer-authored PR supplies a useful target-specific budget change that main does not contain; no actionable correctness or security defect was found. Priority: P2 Before mergeNone. FindingsNone. Tests
Agent review detailsHow this fits togetherThe runner resolves a CLI target, selects its scanner adapters, and passes command budgets through the host or Docker runner before recording raw scanner evidence. flowchart LR
A[CLI target] --> B[Resolve target kind]
B --> C[Select scanner budget]
C --> D[Scanner adapter]
D --> E[Host or Docker command runner]
E --> F[Raw scanner artifact]
Technical reviewBest possible solution: Land the target-kind budget selection through the existing runner while preserving caller deadlines and scanner failure handling. Do we have a high-confidence way to reproduce the issue? Main source demonstrably supplies a 20-minute plugin command budget; the PR reports failing base tests for that value, but no long-running audit was executed during this review. Is this the best way to solve the issue? The change belongs in the shared runner because a worker cannot extend its hard-coded child-command budget, and target-kind selection preserves the profile-independent contract without introducing another setting. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against e2d64e17e641. Provenance checked
TestingProof path: in-process harness. SecurityNone. EvidenceWhat I checked:
Preflight sourceSource unknown. Source comparison at the observed PR snapshot only. Completion is self-reported; body, policy, tests, execution, and report bytes are not verified. LabelsLabel changes:
Label justifications:
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment Reviewed November 5, 2026, 8:56 PM ET / November 6, 2026, 01:56 UTC. |
Why
A plugin target is audited as one whole artifact: compiled output, embedded skills and hooks. The
aig-mcpagent loop on a large plugin can exceed the 20-minute per-scanner budget. ClawHub's approved plugin rollout uses a 30-minute plugin scanner budget. The runner hard-coded 20 minutes for every scanner, and the CLI exposes no timeout flag, so a worker-side change alone could not raise it.What changes
aig-mcp's own fallback budget is 30 minutes, since it only scans plugins.ddfec1285eaf19beb3043e9e5ad043a0d274cb53), so the production contract binding still applies.Consumers need outer headroom for the worst case: 30 (scanner) + 20 (judge) + 5 (overview) minutes. The whole pipeline is not bounded at 30 minutes.
Before / after
maine2d64e1TestPluginScannersGetThirtyMinutesAndSkillScannersKeepTwentyplugin aig-mcp-scan timeout = 20m0s, want 30m0saig-skill-scan20mTestProfilePluginSelectionUsesPluginBudget(clawhub shape: skill scanners pluspluginScanners: [aig-mcp])plugin run timeouts = map[aig-mcp-scan:20m0s]aig-mcp-scanat 30m; skill run onlyaig-skill-scanat 20mTestScannerTimeoutDependsOnlyOnTargetKindaig-mcpdefault 30mTestDockerSandboxPassesPluginBudgetToTheHostgo vet ./...,go test -count=1 ./...andmake docs-sitepass.