feat: add sanitized diagnostics log bundle#562
Conversation
- Add diagnostics export redactor for tokens, IDs, paths, cookies, webhooks, and provider secrets - Include sanitized tray, JSONL, crash, setup, and connection event log tails in diagnostics bundles - Replace diagnostics save with native Win32 save dialog for self-hosted WinUI - Add regression tests for redaction and bundle safety Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Codex review: needs maintainer review before merge. Reviewed May 27, 2026, 4:29 PM ET / 20:29 UTC. Summary Reproducibility: not applicable. this is a feature PR rather than a bug report. Source inspection and screenshots verify the current branch's preview/save/direct-copy wiring, but no failing current-main bug path exists. Review metrics: 3 noteworthy metrics.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge Security Review detailsBest possible solution: Land the diagnostics bundle only after maintainers accept the preview-gated log-tail privacy boundary and CI/build validation passes; keep direct copy and deep-link paths summary-only. Do we have a high-confidence way to reproduce the issue? Not applicable; this is a feature PR rather than a bug report. Source inspection and screenshots verify the current branch's preview/save/direct-copy wiring, but no failing current-main bug path exists. Is this the best way to solve the issue? Yes, with maintainer acceptance. The current head is a maintainable direction because rich log tails are preview-gated while direct copy remains summary-only; the remaining decision is whether the redaction boundary is acceptable. AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against bf21e7b216aa. Label changesLabel changes:
Label justifications:
Evidence reviewedSecurity concerns:
What I checked:
Likely related people:
What the crustacean ranks mean
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 PR egg 🔥 Warming up: real-behavior proof passed; findings, security review, or rank-up moves are still in progress. Hatch commandComment Hatchability rules:
What is this egg doing here?
|
- Restore direct debug-bundle copy/deep-link path to generated summaries only - Update Diagnostics page copy to clarify summary-only clipboard behavior - Add contract tests preventing log-tail bundles from bypassing preview Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR adds a sanitized “diagnostics bundle” export flow for the WinUI tray app, including robust redaction of secrets/identifiers and expanded bundle contents (log tails + structured diagnostics + crash/setup tails + connection timeline), along with new regression tests and a Win32-native “Save as” dialog for self-hosted WinUI.
Changes:
- Introduce
DiagnosticsExportRedactorand apply it to bundle generation and log tail reading (including final “whole-bundle” sanitization). - Add
DiagnosticsBundleBuilder+DiagnosticsLogTailReaderand update the debug/diagnostics UI to preview/copy/save the sanitized bundle. - Add new Shared/Tray tests covering redaction shapes, split-line secrets, missing files behavior, and bundle safety guarantees.
Show a summary per file
| File | Description |
|---|---|
| tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj | Links new WinUI diagnostics services/helpers into Tray test project. |
| tests/OpenClaw.Tray.Tests/DiagnosticsPageContractTests.cs | Adds contract tests to enforce “summary-only vs full bundle” UX boundaries. |
| tests/OpenClaw.Tray.Tests/DiagnosticsBundleBuilderTests.cs | Adds tests for bundle contents, missing-file behavior, and split-line redaction. |
| tests/OpenClaw.Shared.Tests/DiagnosticsExportRedactorTests.cs | Adds broad regression coverage for redaction patterns and context preservation. |
| src/OpenClaw.Tray.WinUI/Windows/DiagnosticsBundleDialog.xaml.cs | Reworks Save flow to use Win32 picker + deferral so errors surface in UI. |
| src/OpenClaw.Tray.WinUI/Windows/DiagnosticsBundleDialog.xaml | Replaces InfoBar with a custom “review before sharing” card-style header. |
| src/OpenClaw.Tray.WinUI/Strings/en-us/Resources.resw | Updates strings for “summary debug bundle” and new dialog header UIDs. |
| src/OpenClaw.Tray.WinUI/Strings/fr-fr/Resources.resw | Same localization updates as en-us. |
| src/OpenClaw.Tray.WinUI/Strings/nl-nl/Resources.resw | Same localization updates as en-us. |
| src/OpenClaw.Tray.WinUI/Strings/zh-cn/Resources.resw | Same localization updates as en-us. |
| src/OpenClaw.Tray.WinUI/Strings/zh-tw/Resources.resw | Same localization updates as en-us. |
| src/OpenClaw.Tray.WinUI/Services/DiagnosticsLogTailReader.cs | Adds sanitized + truncated log tail reader for bundle sections. |
| src/OpenClaw.Tray.WinUI/Services/DiagnosticsClipboardService.cs | Renames “debug bundle” copy label to “summary debug bundle”. |
| src/OpenClaw.Tray.WinUI/Services/DiagnosticsBundleBuilder.cs | Adds full bundle builder composing summaries, timeline, and sanitized tails. |
| src/OpenClaw.Tray.WinUI/Pages/DebugPage.xaml.cs | Wires diagnostics bundle preview flow and copy actions. |
| src/OpenClaw.Tray.WinUI/Pages/DebugPage.xaml | Updates UX copy to “Copy summary debug bundle” with exclusions noted. |
| src/OpenClaw.Tray.WinUI/Helpers/Win32FilePickerHelper.cs | Adds Win32 Save dialog via COM IFileSaveDialog on STA thread. |
| src/OpenClaw.Tray.WinUI/App.xaml.cs | Exposes recent connection diagnostic events for bundling. |
| src/OpenClaw.Shared/DiagnosticsExportRedactor.cs | Adds centralized regex-based redaction for bundles/log exports. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 19/19 changed files
- Comments generated: 9
- Keep Diagnostics page summary-copy action summary-only - Strengthen contract tests for the preview-only log-tail boundary - Destroy native save-dialog filter spec before freeing unmanaged memory - Remove unused diagnostics InfoBar localization resources - Update no-HWND save diagnostic message to match Desktop fallback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
This direction makes sense for a shareable diagnostics bundle, but the redactor is carrying a lot of regex responsibility in one place. I would not block solely because it uses regex — conservative over-redaction is probably right here — but I think it needs a maintainability/perf pass before merge: group the rules by threat class, consider source-generated regexes or clearly named rule objects, and add a worst-case/perf regression test so a long log line or malformed URL/token cannot cause pathological backtracking. The current test coverage for common secret shapes is good; my concern is mostly long-term maintainability and worst-case behavior. |
|
I took a closer pass on the redaction implementation. The feature is valuable and regex is not inherently the wrong tool for free-form diagnostics, but I think this needs a small reliability/perf cleanup before merge. Concrete concerns:
Longer-term, because this is |



Summary
Validation