Skip to content

default value in ${{ github.aw.import-inputs.* }} expressions is not being resolved in shared imports #26468

@yskopets

Description

@yskopets

Summary

The default value defined in an import-schema field is not interpolated when the field is referenced via ${{ github.aw.import-inputs.* }} inside the engine or safe-outputs sections of a shared importable workflow.

gh-aw version: v0.68.3

Affected sections

  • engine (e.g. engine.max-turns)
  • safe-outputs (e.g. safe-outputs.create-discussion.expires)

Example 1 — engine section

A shared workflow:

---
import-schema:
  claude-max-turns:
    type: integer
    default: 10000
    description: Maximum number of chat iterations per run

engine:
  id: claude
  max-turns: ${{ github.aw.import-inputs.claude-max-turns }}
---

Example 2 — safe-outputs section

A shared workflow:

---
import-schema:
  expires:
    type: string
    default: "3d"
    description: "How long to keep discussions before expiry (e.g. 1d, 3d, 7d)"

safe-outputs:
  create-discussion:
    expires: ${{ github.aw.import-inputs.expires }}
---

What works

Explicitly passing a value via with: resolves correctly:

imports:
  - uses: shared/common.md
    with:
      claude-max-turns: 50

engine.max-turns is correctly set to 50. ✅

What does NOT work

Relying on the schema default — either of these forms:

imports:
  - uses: shared/common.md
imports:
  - shared/common.md

In both cases, engine.max-turns is not set to the schema default (10000), and safe-outputs.create-discussion.expires is not set to "3d". Instead, the literal expression ${{ github.aw.import-inputs.* }} appears to pass through unresolved or be silently dropped. ❌

Expected behavior

When a consuming workflow does not pass a value for a field that has a schema default, the default should be applied and the expression should resolve to that default — matching the same semantics as explicitly passing the value via with:.

Related

The v0.67.3 release notes mention that ${{ github.aw.import-inputs.* }} expressions in the imports: section's with: values are now correctly resolved before nested import discovery. The issue may be that default-value resolution was not included in that same pass for the engine and safe-outputs sections.


Reported by Claude Sonnet 4.6 on behalf of a user.

Metadata

Metadata

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions