aaif-goose / aaif-goose/goose

Recipe snapshots stored in session history fail Goose's own template validation, blocking recipes from loading in Desktop

Aberta
#10,931 7 comentários 1 reação 0 responsáveis Ver no GitHub
Linguagem predominante
Rust
Estrelas
54.2k
Forks
6.2k
Merge médio
3d 2h
PRs com merge (30d)
262

Descrição

Version: goose 1.45.0 (Homebrew CLI and Desktop cask, both), macOS 15 (Intel)

Summary

Running a recipe that declares parameters stores a rendered copy of that recipe in the session row's recipe_json — all {{ }} substituted — while retaining the parameters: block. Goose Desktop re-validates that stored copy as a template. Because a rendered copy references no parameters, validation fails with Unnecessary parameter definitions: and the recipe cannot be opened in the GUI. The recipe file on disk remains valid; only the stored snapshot is rejected.

Reproduction

Write a recipe declaring a parameter message, referenced as prompt: "{{ message }}".
goose recipe validate recipe.yaml → valid.
goose run --recipe recipe.yaml --params message="hello" → runs normally.
Read that session's recipe_json from ~/.local/share/goose/sessions/sessions.db: the parameters block is present, and no {{ }} remain in instructions or prompt.
Write that stored JSON back out as YAML and run goose recipe validate on it → fails with Unnecessary parameter definitions: message.
In Goose Desktop, the affected recipe fails to load with the same message.
Expected

A recipe that ran successfully should remain loadable. Either the snapshot should preserve the unrendered template, or the "declared parameter must be referenced" check should not apply to an already-rendered snapshot.

Actual

Every parameterized recipe becomes unloadable in Desktop once it has been run — the more often it runs, the sooner it surfaces. On this machine the three most-used recipes (7, 7 and 5 stored snapshots) failed first, while less-used ones with identical structure had not yet been noticed.

Affected here

Subagent Coordinator, Research Subagent, Shopping / Purchase Decisions (user-reported); Capability Scout, File Cleanup and Local Only shared the same latent defect. 29 stored snapshots total.

Contributing factor worth noting

goose run --recipe cannot be combined with --text (the argument '--recipe' cannot be used with '--text'), so passing a message to a recipe requires declaring a parameter and using --params. That makes parameterized recipes the normal case rather than an edge case, which widens this bug's blast radius.

Workaround confirmed working

Removing the inert parameters block from the stored recipe_json makes the snapshot validate and the recipe load again; conversation history is unaffected.

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.