Skip to content

fix: decode CLIXML stderr at the WinRM executor - #113

Merged
jonchun merged 1 commit into
mainfrom
fix/clixml-stderr-decode
Aug 21, 2026
Merged

jonchun merged 1 commit into
mainfrom
fix/clixml-stderr-decode

Conversation

@jonchun

@jonchun jonchun commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Exit-0 commands over WinRM frequently return stderr containing only a CLIXML
progress blob ("Preparing modules for first use"), which reads as failure to
agents and shows up as raw XML in the fawdy UI. fawdy's bridge-side regex
strip was also being bypassed because Go's json.Marshal HTML-escapes angle
brackets (fixed separately in fawdy).

This decodes CLIXML in winrmClient.Execute so every consumer gets plain
text: progress and debug records are dropped, error/warning/verbose string
records are decoded (including _xHHHH_ escapes), plain stderr passes
through untouched, and malformed blobs are preserved verbatim rather than
swallowed. Fixtures in the tests are captured from a real 3DEXPERIENCE host.

🤖 Generated with Claude Code

PowerShell remoting serializes progress/verbose/error streams as CLIXML on
stderr. Undecoded, an exit-0 command whose only stderr is a 'Preparing
modules for first use' progress record looks like a failure to agents and
tests, and real errors arrive as unreadable XML. Decode at the source:
progress/debug records are dropped, error/warning/verbose records become
plain text, non-CLIXML stderr and malformed blobs pass through verbatim.
Blob fixtures captured from a real 3DEXPERIENCE host on 2026-08-21.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jonchun
jonchun merged commit fbb6c95 into main Aug 21, 2026
2 checks passed
@jonchun
jonchun deleted the fix/clixml-stderr-decode branch August 21, 2026 18:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant