@@ -184,22 +184,15 @@ def _run_claude_interactive(resolved_org_id: int, no_mcp: bool | None) -> None:
184184 # Initialize log watcher manager
185185 log_watcher_manager = ClaudeLogWatcherManager ()
186186
187- # Resolve Claude CLI path and test accessibility
187+ # Resolve Claude CLI path (we already checked it exists in the main claude() function)
188188 claude_path = resolve_claude_path ()
189189 if not claude_path :
190+ # This should not happen since we check earlier, but handle it just in case
190191 logger .error (
191- "Claude CLI not found" ,
192+ "Claude CLI not found in interactive mode " ,
192193 extra = {"operation" : "claude.interactive" , "org_id" : resolved_org_id , "claude_session_id" : session_id , "error_type" : "claude_cli_not_found" , ** _get_session_context ()},
193194 )
194195 console .print ("❌ Claude Code CLI not found." , style = "red" )
195- console .print (
196- "💡 If you migrated a local install, ensure `~/.claude/local/claude` exists, or add it to PATH." ,
197- style = "dim" ,
198- )
199- console .print (
200- "💡 Otherwise install globally via npm (e.g., `npm i -g claude`) or run `claude /migrate`." ,
201- style = "dim" ,
202- )
203196 update_claude_session_status (session_id , "ERROR" , resolved_org_id )
204197 raise typer .Exit (1 )
205198
@@ -373,6 +366,24 @@ def claude(
373366 },
374367 )
375368
369+ # Check if Claude is installed for interactive mode (not needed for background mode)
370+ if background is None :
371+ claude_path = resolve_claude_path ()
372+ if not claude_path :
373+ logger .error (
374+ "Claude CLI not found" ,
375+ extra = {"operation" : "claude.command" , "error_type" : "claude_cli_not_found" , ** _get_session_context ()},
376+ )
377+ # Use t_console (the visible console) for error messages instead of the quiet console
378+ t_console .print ("\n [red bold]❌ Claude Code Not Installed[/red bold]" )
379+ t_console .print ("\n [yellow]Claude Code CLI is not installed or cannot be found.[/yellow]" )
380+ t_console .print ("\n [bold]To install Claude Code:[/bold]" )
381+ t_console .print (" • Install globally: [cyan]npm install -g @anthropic-ai/claude-code[/cyan]" )
382+ t_console .print (" • Or run: [cyan]claude /migrate-installer[/cyan] for local installation" )
383+ t_console .print ("\n [dim]If you migrated a local install, ensure ~/.claude/local/claude exists[/dim]" )
384+ t_console .print ("[dim]or add it to your PATH.[/dim]" )
385+ raise typer .Exit (1 )
386+
376387 # Resolve org_id early for session management
377388 resolved_org_id = resolve_org_id (org_id )
378389 if resolved_org_id is None :
0 commit comments