A single malformed line in the inline-comment buffer crashes the entire post step, losing every valid buffered comment

Open Beginner friendly
#1,796 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
78/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
github-actions, typescript
Domain
ci-cd

Research direction

Start in src/entrypoints/post-buffered-inline-comments.ts at the per-line JSON.parse call, then compare its behavior with removeBufferedComment() in src/mcp/inline-comment-buffer.ts. Confirm that malformed lines produce a :⚠️: annotation while valid buffered comments still reach the post step and the command does not fail solely because of one bad line.

Written by the indexing model from the issue text.

Description

bug duplicate p2

A single malformed line in the inline-comment buffer crashes the entire post step, losing every valid buffered comment

Type: bug (error handling)
Severity: medium
Area: src/entrypoints/post-buffered-inline-comments.ts
Effort: trivial

Summary

The post step parses the buffer file with an unguarded JSON.parse per line:

// src/entrypoints/post-buffered-inline-comments.ts (main)
const comments: BufferedComment[] = raw
  .split("\n")
  .filter(Boolean)
  .map((line) => JSON.parse(line));

If any line fails to parse, main() rejects, the catch handler logs
post-buffered-inline-comments failed and exits 1 — and every buffered
comment is lost, including the ones that are perfectly valid.

This contradicts the buffer's own writer. removeBufferedComment()
(src/mcp/inline-comment-buffer.ts) deliberately keeps lines it cannot
parse:

} catch {
  // Keep anything we cannot parse rather than silently dropping it.
  return true;
}

So the codebase already acknowledges that malformed lines can legitimately be
present in the buffer, yet the only reader of the buffer crashes on them.

Failure scenarios

A. Truncated append. The buffer at /tmp/inline-comments-buffer.jsonl is
appended by the MCP server process (appendFileSync). A runner that is
killed mid-write, or two server processes appending large comment bodies
concurrently, can leave a partial final line. The next post step then throws
on that line and posts nothing at all.

B. Any other corrupting event (disk issues, an external process writing
to /tmp) — same outcome: one bad line suppresses all valid review comments,
which is the worst possible failure mode for a replay step whose whole
purpose is not losing the model's comments.

Suggested fix

Skip malformed lines with a ::warning:: annotation and post the remaining
valid entries (mirroring how this file already warns for
confirmed=false / classified-as-probe comments). Happy to open a PR.

Dominant language
TypeScript
Stars
8.9k
Forks
2.2k
Avg merge
3d 6h
Merged PRs (30d)
3

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from anthropics/claude-code-action

All issues in anthropics/claude-code-action

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.