Lesstep
GitHub Actions · GITHUB_OUTPUT · Checked November 3, 2026

GitHub Actions: "Unable to process file command 'output' successfully"

Everything in the step ran. When it ended, the runner read the file at $GITHUB_OUTPUT (or $GITHUB_ENV), met a line it could not parse, and marked the step failed. The second error line quotes that line, which usually tells you what wrote it.

What it looks like

Error: Unable to process file command 'output' successfully.
Error: Invalid format '  "name": "web",'

What the runner accepts

In the runner's FileCommandManager.cs, every non-empty line must be one of two things:

Any other line gives "Invalid format". A stray line that happens to contain = does not fail: it quietly sets an output named after whatever is in front of the =.

1. A value with more than one line

The second line of the value has no =. Typical sources are jq printing pretty JSON (hypershift #9879, dotfiles #32) and a commit message with a body, which broke nhost-actions/deploy only on commits that had one (#2).

- id: notes
  env:
    COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
  run: |
    delim="EOF_$(openssl rand -hex 8)"
    {
      echo "message<<$delim"
      printf '%s\n' "$COMMIT_MESSAGE"
      echo "$delim"
    } >> "$GITHUB_OUTPUT"

GitHub's documentation says to make sure the delimiter "won't occur on a line of its own within the value", and its PowerShell example builds one with New-Guid. A fixed EOF breaks the day the text contains a line EOF.

2. Log lines went into the file

script.sh | tee -a "$GITHUB_OUTPUT" or tool >> "$GITHUB_OUTPUT" sends everything the tool prints. graphty-monorepo failed on "Invalid format 'Installing dependencies...'" from a dependency install inside its script (#5636), and jmzTab-m-webapp on the Maven wrapper's output (#76). Send progress to stderr (>&2), or capture the value first and write one line:

version=$(./mvnw -q help:evaluate -Dexpression=project.version -DforceStdout)
echo "version=$version" >> "$GITHUB_OUTPUT"

3. Two values where you expected one

A fallback can add a second line. Under set -o pipefail, ... | jq -sc . || printf '[]' printed [] twice when the list was empty, and the second one was "Invalid format '[]'" (ai-dev-framework-template #1881). Test the empty case of anything that builds a value.

4. "Matching delimiter not found"

Error: Unable to process file command 'output' successfully.
Error: Invalid value. Matching delimiter not found 'EOF'

The runner reached the end of the file without seeing the delimiter alone on a line. Usually the value did not end with a newline, so echo EOF was glued to its last line. octane-actions failed or passed on the same commit depending only on whether a generated file ended with a newline (#72). printf '%s\n' for the value, as above, prevents it. "Invalid value. EOF marker missing new line." is the same problem at the very end of the file.

Telling it apart

See failed jobs from IntelliJ IDEA

Pipeline Inbox for GitHub Actions Workflows, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, lists the runs of all your repositories in an IDE tool window, with their jobs and steps, and your current branch's runs are in the status bar. Reading is free; re-running failed jobs, cancelling, running workflows and reviewing deployments are Pro (US$1.50 a month, with a 30-day trial).

GitHub and GitHub Actions are trademarks of GitHub, Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with, sponsored or endorsed by GitHub, Inc. or JetBrains.

More: "Invalid workflow file" · "Input required and not supplied" · "detected dubious ownership" · GitHub Actions plugins for IntelliJ IDEA compared · 日本語