nektos/act · error

unclosed expression.

Error message

unclosed expression.

What it means

Error "unclosed expression." thrown in nektos/act.

Source

Thrown at pkg/runner/expression.go:456

if exprEnd > -1 {
	formatOut += fmt.Sprintf("{%d}", len(results))
	results = append(results, strings.TrimSpace(in[exprStart:pos+exprEnd]))
	pos += exprEnd + 2
	exprStart = -1
} else if strStart > -1 {
	pos += strStart + 1
} else {
	panic("unclosed expression.")
}

View on GitHub (pinned to 4f41128141)

Solutions

  1. Close the expression with a matching '}}' — every '${{' must be terminated.
  2. Check for stray or nested '${{' inside the string and escape or remove them.
  3. Validate the workflow file syntax near the reported location.

When it happens

Trigger: Thrown at pkg/runner/expression.go:456 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of nektos/act@4f41128141 (2026-08-15). Data as JSON: /api/errors/08f7c92efa58eb4c. Report an issue: GitHub.