Skip to content

Conversation

@wpfleger96
Copy link
Collaborator

@wpfleger96 wpfleger96 commented Aug 25, 2025

This PR enables extension persistence across session resume by storing extension configurations in the ExtensionData field of Session. When users resume previous sessions with --resume, the previous session's dynamic extensions are now automatically reloaded.

Before this change, if a user started an interactive session using a recipe then later resumed it, the original recipe session's extensions were NOT reloaded into the resumed session, creating an inconsistent experience. Extension state is captured and persisted throughout the session, whether extensions are defined via recipe, --with-builtin, --with-extension, --with-remote-extension, or --with-streamable-http-extension.

Implementation details:

  • Extension configurations are stored in ExtensionData using the ExtensionState trait pattern with versioned keys for future compatibility
  • Extension state is saved after every manage_extensions() call to maintain consistency
  • Full ExtensionConfig objects are stored (not just names) to preserve exact session configuration including timeouts, environment variables, and other settings
  • Agent::save_extension_state() is made public and reused in session builder to eliminate code duplication

Fixes #4295

…tensions-on-resume

* upstream/main: (60 commits)
  [cookbook recipe] Update Wording  (block#4438)
  feat: show enabled extensions at top of extensions page (block#4423)
  test recipe (block#4436)
  Extensions loading indicator on desktop launch (block#4412)
  removing trailing slash (block#4433)
  [recipe cookbook] test recipe (block#4431)
  [recipe cookbook] switching to SHA (block#4429)
  [recipe cookbook] Update url build (block#4427)
  [Recipe Cookbook] test recipe flow (block#4426)
  [Recipe cookbook] Addressing GitHub api format issue (block#4424)
  feat: integrate tool call icons with status indicators and daisy chaining (block#4279)
  new recipe to lint-check my code (block#4416)
  removing a leftover syntax error (block#4415)
  Iand/updating recipe validation workflow (block#4413)
  Iand/updating recipe validation workflow (block#4410)
  Fix (Ollama provider): Unsupported operation: streaming not implemented (block#4303)
  change databricks default to claude sonnet 4 (block#4405)
  Iand/updating recipe validation workflow (block#4406)
  Add metrics for recipe metadata in scheduler, UI, and CLI (block#4399)
  Iand/updating recipe validation workflow (block#4403)
  ...
@github-actions
Copy link
Contributor

This pull request has been automatically marked as stale because it has not had recent activity for 23 days.

What happens next?

  • If no further activity occurs, this PR will be automatically closed in 7 days
  • To keep this PR active, simply add a comment, push new commits, or add the keep-open label
  • If you believe this PR was marked as stale in error, please comment and we'll review it

Thank you for your contribution! 🚀

@github-actions github-actions bot added the stale label Sep 26, 2025
@DOsinga
Copy link
Collaborator

DOsinga commented Sep 30, 2025

sorry for letting this slip. can you sync with main?

@wpfleger96
Copy link
Collaborator Author

@DOsinga sure np, for context I got tied up with a few other things and let this go stale to see how @tlongwell-block 's agent unification work would shake out to make sure I didn't muddy the waters there

* main: (206 commits)
  Tiny: fix github casing  (block#4903)
  remove anyOf from create_task tool (block#4897)
  chore(deps): bump tracing-subscriber from 0.3.19 to 0.3.20 (block#4442)
  fix optional recipe schema zod validation (block#4900)
  Added CMD+T keyboard shortcut that takes you to the Home tab (block#4541)
  feat(cli): add `path` & `limit` to `session list` command (block#4878)
  Allow better concurrent access (block#4896)
  fix: Windows prompt cursor positioning issue with ANSI escape sequences (block#4464)
  Fix: LiteLLM API key field not showing in UI configuration (block#4105)
  fix: path is duplicated on tool calls causing them to fail (block#4658) (block#4859)
  add new prompt to get all available tutorials (block#4802)
  Add filtering for agentVisible: false messages on streaming providers (block#4847)
  alexhancock/mcp-crate-cleanup (block#4885)
  docs: rename sub-recipe to subrecipe (block#4886)
  docs: new multi-model section with autopilot topic (block#4864)
  make agent manager singleton (block#4880)
  Cli web auth token (block#4456)
  fix(token_counter): fix panic with GitHub Copilot (block#4632)
  Revert "Internal MCP Crate Cleanup (block#4800)" (block#4883)
  remove 2 redundant comments and one that lies (block#4866)
  ...
@github-actions github-actions bot removed the stale label Oct 1, 2025
* main: (30 commits)
  feat(nightly): build nightlies from main shas (block#4888)
  Add missing library for fedora/rhel/centos docs (block#4819)
  feat(process): Add GOVERNANCE and MAINTAINERS documents (block#4962)
  Pause test finder, have it run cargo fmt (block#4958)
  Disable the issue comment trigger on pr-comment-bundle (block#4961)
  fix(providers): update Claude Sonnet 4 model identifier (block#4884)
  fix redirect to extensions page after deeplink install and show toast with success message (block#4863)
  Remove wait-for-ready log (block#4956)
  docs: add a new goose tip (block#4940)
  Add PR template (block#4934)
  Using --resume with --name should still accept session IDs (block#4937)
  Fix auto scroll to bottom during chat (block#4923)
  Fix Typo, Add Description to Hacktoberfest Content Issue Template (block#4931)
  Don't set agent props twice (block#4872)
  fix: conversation fixer merges assistant text blocks and drops empty text messages (block#4898)
  Batch fetch remaining issues for documentation updates
  fix: session timestamps (block#4913)
  feat: lazy infinite scroller for session history view (block#4922)
  chore: properly identify when to try oauth (block#4918)
  Make token counter safer (block#4924)
  ...
Copy link
Collaborator

@jamadeo jamadeo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @wpfleger96 for the contribution! This will make resuming sessions behave much more predictably.

* main:
  docs: Change community page sections (block#4984)
  docs: remove temporary Hacktoberfest issue templates (block#4982)
  Create multi-channel researcher prompt (block#4947)
  docs: Add Community Content section to Community Page (block#4964)
  Allow empty API Key when registering custom provider (block#4977)
  Feat: Add prompt injection detection settings UI + update logging (block#4651)
  Make create_session work concurrently (block#4954)
  Lifei/create save recipe to file (block#4895)
* main:
  Removed unused libs (block#4932)
  Platform extensions sketch (block#4868)
  Add reply to the routes (block#4963)
  feat(cli): add GOOSE_DEBUG environment variable support (block#4825)
@DOsinga DOsinga merged commit a59fbab into block:main Oct 4, 2025
10 checks passed
zanesq added a commit that referenced this pull request Oct 4, 2025
…-unification

* 'main' of github.com:block/goose:
  feat: set custom models for lead/worker (#4598)
  feat: add grok-code-fast-1 support for xAI provider (#4472)
  Persist dynamic extension config so we can resume recipe sessions w/ extensions (#4331)
  fix: show PowerShell PATH instructions for Windows users (#4989)
  feat: add Smart Task Organizer recipe for Hacktoberfest (#4936)
  Fix extension headers (#5000)
  feat: add advanced software project generator initializer recipe (#4767) (#4949)
lifeizhou-ap added a commit that referenced this pull request Oct 6, 2025
* main: (22 commits)
  fix: Issue #4540: `goose configure` -> Cursor Agent succeeds (#4942)
  feat: Add advanced data analysis pipeline recipe (#4990) (#5005)
  Create / edit recipe form unification and improvements (#4693)
  feat: add Code Review Mentor recipe with Developer and Memory extensions (#4992) (#5014)
  feat: set custom models for lead/worker (#4598)
  feat: add grok-code-fast-1 support for xAI provider (#4472)
  Persist dynamic extension config so we can resume recipe sessions w/ extensions (#4331)
  fix: show PowerShell PATH instructions for Windows users (#4989)
  feat: add Smart Task Organizer recipe for Hacktoberfest (#4936)
  Fix extension headers (#5000)
  feat: add advanced software project generator initializer recipe (#4767) (#4949)
  Removed unused libs (#4932)
  Platform extensions sketch (#4868)
  Add reply to the routes (#4963)
  feat(cli): add GOOSE_DEBUG environment variable support (#4825)
  docs: Change community page sections (#4984)
  docs: remove temporary Hacktoberfest issue templates (#4982)
  Create multi-channel researcher prompt (#4947)
  docs: Add Community Content section to Community Page (#4964)
  Allow empty API Key when registering custom provider (#4977)
  ...
wpfleger96 added a commit to wpfleger96/goose that referenced this pull request Oct 6, 2025
* main: (130 commits)
  Add new subcommand for opening recipes in desktop app (block#4970)
  Update system.md with softer subagent language (block#5023)
  docs: add new goose tip (block#4941)
  Fix nix flake double copy (block#4976)
  Upgrade electron for macOS Tahoe compatibility (block#5015)
  fix: check server is ready so that we can decode the recipe deeplink (block#5021)
  fix: backwards compatible parsing recipe file (block#5020)
  chore: Used common function to list recipes in local machine (block#4974)
  fix: Issue block#4540: `goose configure` -> Cursor Agent succeeds (block#4942)
  feat: Add advanced data analysis pipeline recipe (block#4990) (block#5005)
  Create / edit recipe form unification and improvements (block#4693)
  feat: add Code Review Mentor recipe with Developer and Memory extensions (block#4992) (block#5014)
  feat: set custom models for lead/worker (block#4598)
  feat: add grok-code-fast-1 support for xAI provider (block#4472)
  Persist dynamic extension config so we can resume recipe sessions w/ extensions (block#4331)
  fix: show PowerShell PATH instructions for Windows users (block#4989)
  feat: add Smart Task Organizer recipe for Hacktoberfest (block#4936)
  Fix extension headers (block#5000)
  feat: add advanced software project generator initializer recipe (block#4767) (block#4949)
  Removed unused libs (block#4932)
  ...
Itz-Agasta pushed a commit to Itz-Agasta/goose that referenced this pull request Oct 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Resuming a Recipe Session Should Include Extensions

3 participants