ClawSweeper is a conservative OpenClaw maintainer bot. It reviews open issues and PRs in openclaw/openclaw, writes one regenerated markdown record per open item, and closes only when the evidence is strong.
Allowed close reasons:
- already implemented on
main - cannot reproduce on current
main - belongs on ClawHub as a skill/plugin, not in core
- too incoherent to be actionable
- stale issue older than 60 days with insufficient data to verify the bug
Everything else stays open.
Last dashboard update: Apr 25, 2026, 16:33 UTC
Updated: Apr 25, 2026, 16:33 UTC
State: Review in progress
Planned 200 items across 40 shards. Capacity is 200 items. Review shards are starting; publish will merge artifacts when they finish. Run: https://github.com/openclaw/clawsweeper/actions/runs/24935428061
| Metric | Count |
|---|---|
| Open issues in openclaw/openclaw | 6483 |
| Fresh reviewed issues in the last 7 days | 6469 |
| Proposed issue closes | 929 (14.4% of reviewed issues) |
| Open PRs in openclaw/openclaw | 4596 |
| Fresh reviewed PRs in the last 7 days | 4524 |
| Proposed PR closes | 183 (4% of reviewed PRs) |
| Open items total | 11079 |
| Reviewed files | 11000 |
| Unreviewed open items | 79 |
| Archived closed files | 8207 |
| Fresh verified reviews in the last 7 days | 10993 |
| Proposed closes awaiting apply | 1112 (10.1% of fresh reviews) |
| Closed by Codex apply | 6307 |
| Failed or stale reviews | 7 |
| Daily cadence coverage | 7945/8218 current (273 due, 96.7%) |
| Daily PR cadence | 4375/4527 current (152 due, 96.6%) |
| Daily new issue cadence (<30d) | 3570/3691 current (121 due, 96.7%) |
| Weekly older issue cadence | 2782/2782 current (0 due, 100%) |
| Due now by cadence | 352 |
Recently reviewed:
| Item | Title | Outcome | Status | Reviewed |
|---|---|---|---|---|
| #56997 | [Feature] Control UI: Support channel-based session view toggle | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #56876 | [Feature Request] Add file type detection and preprocessing for binary documents | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #56881 | Regression after 2026.3.28: sessionStrategy behavior changed, ws-stream 500 fallback, slower Discord interaction handling | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #57142 | Webchat: autocomplete/suggestions for custom terms in chat input | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #56951 | Slack inline buttons should be enabled by default | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #57141 | [Bug]: Telegram DM topic ACP bind fails on next message with missing ACP metadata | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #56968 | Bug: status shows 'Memory enabled · unavailable' for third-party memory plugins (memory-lancedb-pro) | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #57031 | fix: QueuedFileWriter silently swallows all write errors | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #56973 | refactor: remove normalizeChannelId wrapper collision — use canonical names directly | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #57017 | fix: readCronRunLogEntriesPage reads entire JSONL into memory without size cap | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #57202 | [Feature]: 分布式部署的可能性? | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #57091 | [Feature]: Improve Workspace Skill Loading: Add Frontmatter Parsing Error Visibility and Validation for SKILL.md | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #57110 | Tailscale serve mode lacks optional secondary authentication | keep_open / kept_open | complete | Apr 25, 2026, 16:14 UTC |
| #57225 | [Bug]: Discord multi-segment responses arrive out of order when interleaved with tool calls | keep_open / kept_open | complete | Apr 25, 2026, 16:13 UTC |
| #57019 | fix: session write lock race — async release can delete newly-acquired lock | keep_open / kept_open | complete | Apr 25, 2026, 16:13 UTC |
| #57139 | sessions_history should support reading archived/reset sessions | keep_open / kept_open | complete | Apr 25, 2026, 16:13 UTC |
| #56638 | Agent tool surface missing media/audio delivery tool since 2026.3.x | keep_open / kept_open | complete | Apr 25, 2026, 16:13 UTC |
| #57174 | Feature: Per-agent compaction configuration (thresholds, mode, reserveTokens) | keep_open / kept_open | complete | Apr 25, 2026, 16:13 UTC |
| #56818 | [Bug] Feishu card action callback causes streaming reply to fail with Invalid open_message_id | keep_open / kept_open | complete | Apr 25, 2026, 16:13 UTC |
| #57169 | [Bug]: macOS node advertises screen capability but runtime blocks screen.record via platform allowlist | keep_open / kept_open | complete | Apr 25, 2026, 16:13 UTC |
The normal workflow is proposal-only. It runs configurable parallel shards and never comments or closes unless apply_closures=true is explicitly set for a manual run.
Each review job:
- Checks out this repo.
- Uses a planner job that scans open items, prioritizes due activity, and hands explicit item-number batches to review shards.
- Checks out
openclaw/openclawatmain, with cached git objects for faster startup. - Runs Codex with
gpt-5.4, medium reasoning, fast service tier, and a 10-minute per-item timeout inside the OpenClaw checkout. - Writes
items/<number>.mdwith the decision, proposed close comment, and a GitHub snapshot hash. - Marks high-confidence allowed close decisions as
proposed_close.
Codex runs without GitHub write tokens. The runner checks the OpenClaw checkout before every review, makes the checkout read-only in CI, checks it again after review, and fails the item if Codex leaves any tracked or untracked change behind.
Parallel workflow shards only receive planned item numbers. The planner posts a best-effort workflow status note to this README before shards start, each shard emits [review] progress lines, and the final job merges artifacts and updates the dashboard. Review jobs time out after 75 minutes so one stuck shard cannot hold the review concurrency group indefinitely. If the planner filled the current worker capacity, the publish job dispatches the next proposal-only sweep automatically. Review cadence is daily for items with activity since the last stored snapshot, all PRs, and issues younger than 30 days. Older inactive issues are reviewed weekly. When more items are due than fit in a run, the planner prioritizes active items first, then PRs, then new issues, then older weekly reviews. The dashboard reports local cadence coverage for daily PRs, daily new issues, and weekly older issues; activity-based promotion is applied by the planner while scanning GitHub snapshots.
To close later without rerunning Codex, dispatch the workflow with apply_existing=true. That mode reads existing items/*.md, refetches the issue/PR context, recomputes the snapshot hash, and only comments/closes if nothing changed since the proposal was written. Successfully closed or already-closed items move to closed/<number>.md; items/ stays focused on open items that still need tracking. Folder reconciliation also compares tracked files with the current GitHub open set: externally closed items move from items/ to closed/, and reopened archived items move back to items/ as stale so the planner reviews them again. Apply runs update the dashboard when each checkpoint commits, cap total processed items separately from fresh closes, leave enough scan room to skip changed or already-closed records while still reaching fresh closures, and emit [apply] progress lines during long close batches. Apply mode also posts best-effort start/checkpoint/finish notes to the dashboard. When GitHub secondary throttling triggers a long retry sleep, apply mode posts a best-effort throttle heartbeat to the dashboard with the checkpoint, processed count, and next retry delay. Apply mode defaults to apply_min_age_days=0, apply_kind=issue, a 5-second close delay, 50 fresh closes per checkpoint commit, and long retry backoff for GitHub secondary write throttling, so issue cleanup can apply high-confidence closes regardless of age while PRs remain excluded. If an apply run reaches its requested close limit, it queues another apply run with the same settings.
Maintainer-authored items are never auto-closed. Candidate planning and apply mode both read GitHub's author_association field and exclude OWNER, MEMBER, and COLLABORATOR items from automated close actions.
Requires Node 24.
source ~/.profile
npm install
npm run build
npm run plan -- --batch-size 5 --shard-count 40 --max-pages 250 --codex-model gpt-5.4 --codex-reasoning-effort medium --codex-service-tier fast
npm run review -- --openclaw-dir ../openclaw --batch-size 5 --max-pages 250 --artifact-dir artifacts/reviews --codex-model gpt-5.4 --codex-reasoning-effort medium --codex-service-tier fast --codex-timeout-ms 600000
npm run apply-artifacts -- --artifact-dir artifacts/reviews
npm run reconcile -- --dry-runApply unchanged proposals later:
source ~/.profile
npm run apply-decisions -- --limit 20Manual review runs can set --apply-closures or workflow input apply_closures=true, but the safer path is proposal first, then apply_existing=true.
npm run check
npm run oxformatoxformat is an alias for oxfmt; there is no separate oxformat npm package.
Required secrets:
OPENAI_API_KEY: OpenAI API key used by Codex.CODEX_API_KEY: same API key forcodex execCI auth.OPENCLAW_GH_TOKEN: GitHub token with write access toopenclaw/openclawissues and PRs.
The workflow logs Codex in with OPENAI_API_KEY, passes CODEX_API_KEY to codex exec, and fails the shard instead of writing fallback review markdown if Codex auth/output fails. It uses OPENCLAW_GH_TOKEN for openclaw/openclaw comments/closes. The built-in GITHUB_TOKEN commits review markdown back to this repo.