Relationships
#2491 Foreign CEL like GitHub Actions ${{ github.sha }} in a global argument fails validate and throws when the method reads it
Opened by hammz · 9/24/2026· Shipped 9/24/2026
What happens
A global argument that carries another templating system's ${{ ... }} text, for example GitHub Actions ${{ github.sha }}, cannot be used, even though swamp already decides that such CEL is not its own.
Definition:
globalArguments:
message: deploy ${{ github.sha }}swamp model validatefails in Expression paths: Invalid expression github.sha ... Missing model. prefix and path structure. The error comes fromvalidateExpressionContentinsrc/domain/models/validation_service.ts, which does not consultisSwampExpression.swamp model method runfails when the method reads the field: Unresolved expression in globalArguments.message. The definition pass (definition_expression_pass.ts) leaves non-swamp CEL raw on purpose, but theglobalArgsProxy insrc/domain/models/method_execution_service.ts(around line 245) throws on any leftover${{without asking whether it is swamp's.swamp workflow runfails before the step runs, becauseWorkflowExecutionServicecallsvalidateModeland fails fast.
Expected
Consistent with #2397 (#2598), which added isSwampExpression so that ${{ github.sha }} written for another system passes through as literal text: validate should not flag it, and the method should receive the text unchanged.
Notes
The two halves must move together. Fixing validate alone would turn validate green while the run still throws.
Found during triage of #2424 (scenario I in the repro). Repro: swamp model validate / swamp model method run on a model whose string global argument is deploy ${{ github.sha }}.
Shipped
Click a lifecycle step above to view its details.
Sign in to post a ripple.