Pi on arc-dind: an aliased model reaches pi empty (`Model "aw-gateway/" not found`)

Open Beginner friendly
#72,530 0 comments 1 reaction 2 assignees View on GitHub

Maintainers usually reply within 1 day

@pelikhan is already working on this.

Since Oct 29, 2026.

  • #72937 by @copilot-swe-agent — closed without merging

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
83/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
github-actions, go
Domain
ci-cd, devtools

Research direction

Read pkg/workflow/pi_engine.go to trace how aliased models set the model file path and how the compiled step exports environment variables. Then inspect the compiled step assertion in pkg/workflow/pi_engine_test.go; done means the exported GH_AW_PI_MODEL_FILE matches the path read by the --model substitution.

Written by the indexing model from the issue text.

Description

ai-inspected community
Analysis

With engine: pi, model: opus (or copilot/opus) and runner.topology: arc-dind, the alias resolves correctly, but pi is launched without a model:

[gh-aw/pi-models-json] model resolution: engine=pi role=main configured=opus resolved=claude-opus-5 provider=copilot status=resolved
Error: Model "aw-gateway/" not found. Use --list-models to see available models.

For an alias, pkg/workflow/pi_engine.go builds --model "aw-gateway/$(cat + piResolvedModelFile + )" with piResolvedModelFile = "/tmp/gh-aw/pi-model". In the compiled lock, that path is rewritten to ${RUNNER_TEMP}/gh-aw/pi-model. pi_models_json.cjs writes to process.env.GH_AW_PI_MODEL_FILE || "/tmp/gh-aw/pi-model", and the lock never sets GH_AW_PI_MODEL_FILE, so the file goes to /tmp/gh-aw/pi-model. On arc-dind those are different directories, so pi reads an empty file. pi_runtime.cjs reads the same default.

An exact ID (copilot/claude-opus-5) is compiled straight into --model aw-gateway/claude-opus-5 and works. Seen on v0.93.2. v0.93.5 and v1.0.1 compile the same launch line, with no GH_AW_PI_MODEL_FILE, and main (6cb1976022) has the same code.

Implementation plan
  1. In pkg/workflow/pi_engine.go, when piModelIsAlias, export GH_AW_PI_MODEL_FILE set to the same path the launch line reads, next to GH_AW_PI_MODEL_ID. The compiler's /tmp/gh-aw → ${RUNNER_TEMP}/gh-aw rewrite then applies to the writer, pi_runtime.cjs and the reader alike.
  2. Add a test in pkg/workflow/pi_engine_test.go: for an aliased model, the compiled step sets GH_AW_PI_MODEL_FILE to exactly the path inside the --model "aw-gateway/$(cat …)" substitution.

Acceptance: an arc-dind pi workflow with model: opus launches pi with the resolved model (for example aw-gateway/claude-opus-5).

Dominant language
Go
Stars
5.6k
Forks
615
Avg merge
5h 19m
Merged PRs (30d)
798

Getting set up

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from github/gh-aw

All issues in github/gh-aw

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.