Skip to content

mnemon_recall crashes with NoneType.strip on Windows #77

Description

@axbhub

Title: mnemon_recall crashes with NoneType.strip on Windows — stdout decoded as cp1252 instead of UTF-8

Summary
On Windows, mnemon_recall (and other CLI-backed calls) crash with:

Memory tool 'mnemon_recall' failed: 'NoneType' object has no attribute 'strip'
…whenever the recalled content contains non-cp1252 bytes (curly quotes ’, em-dashes —, etc. — very common in stored LLM output). It is not an input/argument problem; the query is a valid string.

Root cause
_run_mnemon invokes the mnemon CLI via subprocess.run(..., text=True) without specifying an encoding. On Windows, text=True decodes the child process's stdout using the locale default codec (cp1252), not UTF-8. mnemon emits UTF-8, so when the output contains a byte cp1252 can't map (e.g. 0x9d), the decode raises UnicodeDecodeError in the subprocess reader thread. As a result stdout comes back as None, and the downstream JSON parsing then calls .strip() on that None, producing the crash above.

This reproduces reliably under a cp1252 locale and never reproduces on Linux/macOS or in a UTF-8 shell — which is why it presents as Windows-only.

Impact
Any recall whose stored content includes typographic/Unicode characters (smart quotes, em-dashes, accented text) fails outright, so memory recall is effectively broken on default Windows setups once such content exists in the store.

Environment
OS: Windows 11, running via the Hermes desktop app (Python 3.11)
Plugin: hermes-plugin-mnemon 0.1.0, mnemon CLI 0.1.16
Trigger: recalled insights containing smart quotes / em-dashes

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions