Skip to content

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

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions