From 63b98491beac5b32c2bc7a112b6de3d3477db004 Mon Sep 17 00:00:00 2001 From: phernandez Date: Wed, 24 Dec 2025 11:42:25 -0600 Subject: [PATCH] fix: prevent DEBUG logs from appearing on CLI stdout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove loguru's default handler at the very start of cli/app.py, before any other imports. This prevents module-level code (like TemplateLoader.__init__) from logging to stdout during import. The import chain cli/commands/project.py -> mcp/async_client.py -> api/app.py -> api/routers/prompt_router.py -> api/template_loader.py triggers TemplateLoader() instantiation at DEBUG level before init_cli_logging() can remove the default handler. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 Signed-off-by: phernandez --- src/basic_memory/cli/app.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/basic_memory/cli/app.py b/src/basic_memory/cli/app.py index 33bafcd9..c9c894bf 100644 --- a/src/basic_memory/cli/app.py +++ b/src/basic_memory/cli/app.py @@ -1,8 +1,15 @@ -from typing import Optional +# Remove loguru's default handler IMMEDIATELY, before any other imports. +# This prevents DEBUG logs from appearing on stdout during module-level +# initialization (e.g., template_loader.TemplateLoader() logs at DEBUG level). +from loguru import logger -import typer +logger.remove() -from basic_memory.config import ConfigManager, init_cli_logging +from typing import Optional # noqa: E402 + +import typer # noqa: E402 + +from basic_memory.config import ConfigManager, init_cli_logging # noqa: E402 def version_callback(value: bool) -> None: