diff --git a/internal/agent/coordinator.go b/internal/agent/coordinator.go index 60f65c8d4514f1a69e99a8466b920d7021d164af..bdb01e9e2bc233e636b99277bdea20e6b3644cc7 100644 --- a/internal/agent/coordinator.go +++ b/internal/agent/coordinator.go @@ -1051,7 +1051,12 @@ func (c *coordinator) updateParentSessionCost(ctx context.Context, childSessionI parentSession.Cost += childSession.Cost - if _, err := c.sessions.SaveWithModels(ctx, parentSession, c.cfg.Config().Models); err != nil { + models := maps.Clone(c.cfg.Config().Models) + for name, model := range models { + model.ProviderOptions = maps.Clone(model.ProviderOptions) + models[name] = model + } + if _, err := c.sessions.SaveWithModels(ctx, parentSession, models); err != nil { return fmt.Errorf("save parent session: %w", err) } diff --git a/internal/agent/tools/todos.go b/internal/agent/tools/todos.go index ea6dca52d54814a6e0e83b71f6c7d77b8c5502db..b7d0c8b65eab73b906fc61dc5b77694be2598668 100644 --- a/internal/agent/tools/todos.go +++ b/internal/agent/tools/todos.go @@ -4,6 +4,7 @@ import ( "context" _ "embed" "fmt" + "maps" "charm.land/fantasy" "github.com/charmbracelet/crush/internal/config" @@ -97,7 +98,12 @@ func NewTodosTool(sessions session.Service, cfg *config.ConfigStore) fantasy.Age } currentSession.Todos = todos - _, err = sessions.SaveWithModels(ctx, currentSession, cfg.Config().Models) + models := maps.Clone(cfg.Config().Models) + for name, model := range models { + model.ProviderOptions = maps.Clone(model.ProviderOptions) + models[name] = model + } + _, err = sessions.SaveWithModels(ctx, currentSession, models) if err != nil { return fantasy.ToolResponse{}, fmt.Errorf("failed to save todos: %w", err) }