From c0662f13c0a71c584f71aee9bdbe8a63f6dca457 Mon Sep 17 00:00:00 2001 From: Kujtim Hoxha Date: Sun, 18 Jan 2026 10:19:37 +0100 Subject: [PATCH] fix: do not wait for MCP on interactive mode --- internal/agent/coordinator.go | 6 ------ internal/app/app.go | 9 +++++++++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/internal/agent/coordinator.go b/internal/agent/coordinator.go index 985445e1dc0e0263b6faba388888bf30ec3bfb92..943c3efc41b33ea9f261b4ffc7256b6f544beff9 100644 --- a/internal/agent/coordinator.go +++ b/internal/agent/coordinator.go @@ -20,7 +20,6 @@ import ( "github.com/charmbracelet/crush/internal/agent/hyper" "github.com/charmbracelet/crush/internal/agent/prompt" "github.com/charmbracelet/crush/internal/agent/tools" - "github.com/charmbracelet/crush/internal/agent/tools/mcp" "github.com/charmbracelet/crush/internal/config" "github.com/charmbracelet/crush/internal/csync" "github.com/charmbracelet/crush/internal/history" @@ -412,11 +411,6 @@ func (c *coordinator) buildTools(ctx context.Context, agent config.Agent) ([]fan } } - // Wait for MCP initialization to complete before reading MCP tools. - if err := mcp.WaitForInit(ctx); err != nil { - return nil, fmt.Errorf("failed to wait for MCP initialization: %w", err) - } - for _, tool := range tools.GetMCPTools(c.permissions, c.cfg.WorkingDir()) { if agent.AllowedMCP == nil { // No MCP restrictions diff --git a/internal/app/app.go b/internal/app/app.go index 08762f863a7d9cf77751d0c2c4095591f002eab0..0f98a8383124274d8aaae12b40146411ed969c8d 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -173,6 +173,15 @@ func (app *App) RunNonInteractive(ctx context.Context, output io.Writer, prompt spinner = nil } } + + // Wait for MCP initialization to complete before reading MCP tools. + if err := mcp.WaitForInit(ctx); err != nil { + return fmt.Errorf("failed to wait for MCP initialization: %w", err) + } + + // force update of agent models before running so mcp tools are loaded + app.AgentCoordinator.UpdateModels(ctx) + defer stopSpinner() const maxPromptLengthForTitle = 100