Claude Output Reader
See what Claude actually wrote before you trust it
- file_contents
- file_list
- metadata
Claude Output Reader is the pack's verification step: it looks inside a run's output folder and shows you what the agent actually produced. Every Claude Code Execute (or Reddit Scraper) run writes its files into a timestamped folder under claude_code_outputs/, and an agent's own summary of what it did is not the same thing as what it did. This node is how you check before you wire the results anywhere else. It's marked as an output node, so it renders its findings in the UI when the queue finishes - the "so what happened?" of the pack.
The inputs
You give it the output_folder (the folder name from a run - the same output_YYYYMMDD_HHMMSS_* string the Execute node returns), plus a file_pattern glob like *.py or README.md, and pick a read_mode:
- list_files (default) - just names and sizes. Fast way to confirm a run actually produced files, and whether it made five or fifty of them.
- read_all - dumps the contents of up to
max_files(default 10, max 100) matching files. - read_specific - reads one named file via
specific_file, no pattern guessing.
Outputs
Outputs: file_contents (the read text or the listing), file_list (a JSON array of {path, size, type} per file), and metadata (the run's _claude_code_metadata.json as a string - execution time, exit code, model, tool list, and the folder's output path).
Installing
Install: ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/christian-byrne/claude-code-comfyui-nodes
and restart. Nothing else - it's pure file reading, no Claude calls, no cost.
Common issues
The main thing to get right is the folder name. It's a name, not a full path - the node joins it onto claude_code_outputs/ itself - and it has to match exactly. If you get "Output folder not found," copy it from the Execute node's response or the output_path field in its metadata JSON rather than guessing. Also note the folder names are timestamped per run, so a Reader pointed at an old folder shows the old run; point it at the current one by feeding it the fresh name. That wiring is manual since the reader takes plain text input, but that's the whole point of a verification node: you decide what you're looking at, and you see the actual bytes before the next stage of your pipeline builds on them.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| output_folder | STRING | The output folder name from a ClaudeCodeCommand node | |
| file_pattern | STRING | * | File pattern to read (e.g., '*.py', 'README.md', '*') |
| read_mode | COMBO | list_files | Mode for reading files |
| specific_fileopt | STRING | Specific file to read (when using read_specific mode) | |
| max_filesopt | INT | 101–100 | Maximum number of files to read |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| file_contents | STRING | — |
| file_list | JSON | — |
| metadata | STRING | — |