Haiku 5.5
Native agent · Checked operation passedChecked operation <guest-path> -m mcp_server · local stdio MCP start + initialize + tools/list
Agent-reported scope: Install MemTether from PyPI, initialize a memory DB, write and search a memory through the CLI and the MCP stdio server, and verify the tamper-evident audit chain
MCP server returned: memory-hub · version 1.0.0.
MCP tools returned: add_memories, search_memory, list_memories, correct_memory, retire_memory, pin_memory, as_of_query, timeline, profile, feedback. Tool listing does not establish authenticated tool-call success.
Run details
- run
- MemTether--MemTether-claude-haiku-5-5-1792968826528443705
- date
- Oct 25, 2026
- time to working
- 189.5s
- product hosting / execution
- Local stdio MCP server in the guest
- recorded operation scope
- product operation
- model
- claude-haiku-5-5
- agent / version
- claude-code / 2.1.310 (Claude Code)
- platform
- linux
- reported cost
- $0.023787
- Recorded source
- https://github.com/MemTether/MemTether
- Backend
- hyperv
- Tool transport
- mcp-assigned-vm
- Requested source pin (not an observed revision)
- {"commit": "9b46b31ecdb799402983e1c5598bcf21ac9c144b", "url": "https://github.com/MemTether/MemTether"}
- Test version
- readme-ca496ea10bb07418d1d8f1c256c2433a55547acc0fb62d8b6d86ae33c976fbfa
- revision
- 9b46b31ecdb799402983e1c5598bcf21ac9c144b
Safety: No problems traced to this repository code in these checks.
No problems traced to this repository code in these checks.
Reviewed as expected for a test run: attempted writes that failed, so nothing was written.
OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.
A short run cannot establish that code is safe.
Connections show IP addresses; proxies can hide the final hostname.
Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.
Answers recorded for this run
- CLI remember writes a memory with source attribution: Real input produced the expected result: 'ok': True
Source: memtether remember "User prefers dark theme" --source claude-code
Input: User prefers dark theme
Expected: write reports ok True
Command: <guest-path> remember 'User prefers dark theme' --source claude-code
Observed: 'ok': True, 'uid': 'fact-20261025225523-410b07f7ab79', 'op': 'noop_dup'}
- MCP clients can govern memory via the MCP server: Real input produced the expected result: User prefers dark theme
Source: The same operations work via **MCP** — your AI agent can govern memory directly:
Input: {"tool": "search_memory", "arguments": {"query": "theme", "limit": 5}}
Expected: search_memory returns the stored dark theme memory
Command: <guest-path> -m mcp_server tools/call {"tool": "search_memory", "arguments": {"query": "theme", "limit": 5}}
Observed: User prefers dark theme\"\n }\n ]\n}"}], "isError": false}
- audit chain demo detects tampering: Real input produced the expected result: verify_chain: FAIL
Source: run `python examples/audit_chain_demo.py` to see it turn red.
Input: demo script
Expected: after direct edit verify_chain reports FAIL
Command: <guest-path> examples/audit_chain_demo.py
Observed: verify_chain: FAIL {'anchor_id': 1, 'reason': 'chain hash mismatch — audit rows edited after anchoring', 'expected': '28db4a5632bf7efca259dc68b5bab6cc9b66ac953af273bca5d2c831158063b3', 'recomputed': '9af598c2a90cb88d704ae61e534e44d8814755e9c1d7ed8f828052399989b41b'} ✅ 哈希链成功检测到篡改!这就是 MemTether 的核心防御能力。
Examples
- basic remember, search, supersede and retire operations work end to end: command completed successfully
Source: examples/basic_usage.py (docstring: Run: python examples/basic_usage.py)
Input: no arguments; uses temp DB
Expected: prints write/search/supersede/retire lines and Done
Command: <guest-path> examples/basic_usage.py
Observed: [write] uid=fact-20261025225717-... ok=True [search] found 1 results - User prefers dark theme and uses Vim keybindings [supersede] old=fact-2026102522... -> new=fact-2026102522... [search after supersede] found 1 results [retire] ok=True Done! All operations completed successfully. [warn] 向量检索失败(将降级为纯关键词,召回会明显变差): No module named 'chromadb' [warn] 正确解释器: <guest-path>
Local or hosted: local
What the agent did
Install MemTether from PyPI, initialize a memory DB, write and search a memory through the CLI and the MCP stdio server, and verify the tamper-evident audit chain
cd <guest-path> && pwd && ls -la && id -u && python3 --version && cat README.md | head -c 6000
ls <guest-path> ; ls /inputs 2>/dev/null; echo "CDP=$CDP_URL"; curl -s -m 10 -i $CDP_URL/json/version; echo; echo exit=$?
cd <guest-path> && grep -n "^#" README.md | head -80; grep -n -i "pip install\|python3\|requires\|Python 3\|npx\|uv \|curl" README.md | head -40
cd <guest-path> && sed -n 147,188p README.md; sed -n 292,308p README.md; sed -n 309,336p README.md
cd <guest-path> && grep -n "requires-python\|^name\|^version" pyproject.toml; python3 -m venv --help >/dev/null 2>&1 && echo venv_ok || echo no_venv; mkdir -p <guest-path> && python3 -m venv <guest-path> 2>&1 | tail -3; ls <guest-path> 2>/dev/null | head
cd /tmp && <guest-path> install -q memtether -i https://pypi.org/simple/ 2>&1 | tail -15; echo exit=${PIPESTATUS[0]}; <guest-path> show memtether 2>/dev/null | head -3
cd /tmp && <guest-path> --help 2>&1 | head -60; echo; <guest-path> init --help 2>&1 | head -30
cd <guest-path> && sed -n 1,80p memtether_paths.py | grep -n "environ\|home\|def \|DB" | head -40; grep -n "environ" memtether.py | head -20
mkdir -p <guest-path> && cd /tmp && export MEMTETHER_HOME=<guest-path> MEM_DB=<guest-path> && timeout 300 <guest-path> init 2>&1 | tail -40; echo exit=${PIPESTATUS[0]}; ls -la <guest-path>
cd /tmp && export MEMTETHER_HOME=<guest-path> MEM_DB=<guest-path> && <guest-path> remember "User prefers dark theme" --source claude-code 2>&1 | tail -5; echo exit=$?; <guest-path> search "theme" 2>&1 | tail -8; echo ---; cat <guest-path> | head -60
cd <guest-path> && grep -n "mcp_server\|memtether-mcp\|MCP server\|stdio" README.md | head; grep -n -A4 "\[project.scripts\]" pyproject.toml; cd /tmp && <guest-path> -c "import mcp" 2>&1; <guest-path> show mcp 2>/dev/null | head -2
cd <guest-path> && grep -n "search_memory\|add_memories\|audit_chain_demo\|mem0_migration" README.md | head; grep -n -i "cron\|schedul\|--once\|--now\|webhook\|loop" README.md | head; ls examples | head -30; sed -n 352,360p README.md
cd <guest-path> && head -40 examples/mcp_client.py; echo ----; head -25 examples/audit_chain_demo.py; echo ----; grep -n "^import\|^from\|sys.path\|environ" examples/audit_chain_demo.py | head
cd <guest-path> && <guest-path> examples/audit_chain_demo.py 2>&1 | tail -20; echo exit=${PIPESTATUS[0]}; git -C <guest-path> status 2>/dev/null | head -2; ls <guest-path> 2>/dev/null
cd <guest-path> && grep -n "^import\|^from" mcp_server.py | head -20; grep -n -A12 "^dependencies" pyproject.toml | head -30
cd <guest-path> && export MEM_DB=<guest-path> MEM_SKIP_VECTOR=1 && printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_memory","arguments":{"query":"theme","limit":5}}}' | timeout 60 <guest-path> -m mcp_server 2><guest-path> | head -c 1500; echo; echo exit=$?; head -c 500 <guest-path>
cd <guest-path> && grep -l -i "while True\|sched\|cron\|apscheduler\|--once" *.py 2>/dev/null; grep -n -i "while True\|--once\|schedule" memtether.py api_server.py mcp_server.py consolidation.py 2>/dev/null | head -10; echo ----; head -30 examples/basic_usage.py | grep -v "^$" | head -30; echo; grep -n "__main__" examples/basic_remember.py examples/basic_usage.py
cd <guest-path> && grep -n -i "while True\|--once\|cron\|schedul" gateway.py hubguard.py | head -8
cd <guest-path> && sed -n 1968,1980p gateway.py; echo ----; sed -n 260,270p hubguard.py
cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'
{"kind":"mcp","argv":["<guest-path>","-m","mcp_server"],"cwd":"<guest-path>","env":{"MEM_DB":"<guest-path>","MEMTETHER_HOME":"<guest-path>"},"tool":"search_memory","arguments":{"query":"theme","limit":5},"expected_text":"User prefers dark theme"}
EOF
python3 -I -c "import json;print(json.load(open('.coldpass/probe.json'))['tool'])"
cd <guest-path> && cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"CLI remember writes a memory with source attribution","source":"memtether remember \"User prefers dark theme\" --source claude-code","input":"User prefers dark theme","expected":"write reports ok True","probe_kind":"cli","argv":["<guest-path>","remember","User prefers dark theme","--source","claude-code"],"env":{"MEM_DB":"<guest-path>","MEMTETHER_HOME":"<guest-path>"},"expected_text":"'ok': True","cwd":"<guest-path>"},
{"kind":"claim","claim":"MCP clients can govern memory via the MCP server","source":"The same operations work via **MCP** — your AI agent can govern memory directly:","input":"query theme","expected":"search_memory returns the stored dark theme memory","probe_kind":"mcp","argv":["<guest-path>","-m","mcp_server"],"tool":"search_memory","arguments":{"query":"theme","limit":5},"env":{"MEM_DB":"<guest-path>","MEMTETHER_HOME":"<guest-path>"},"expected_text":"User prefers dark theme","cwd":"<guest-path>"},
{"kind":"claim","claim":"audit chain demo detects tampering","source":"run `python examples/audit_chain_demo.py` to see it turn red.","input":"demo script","expected":"after direct edit verify_chain reports FAIL","probe_kind":"cli","argv":["<guest-path>","examples/audit_chain_demo.py"],"expected_text":"verify_chain: FAIL","cwd":"<guest-path>"}]
EOF
python3 -I -c "import json;print(len(json.load(open('.coldpass/claims.json'))))"
cd <guest-path> && <guest-path> examples/basic_usage.py 2>&1 | tail -12; echo exit=${PIPESTATUS[0]}
cd <guest-path> && cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"basic remember, search, supersede and retire operations work end to end","source":"examples/basic_usage.py (docstring: Run: python examples/basic_usage.py)","input":"no arguments; uses temp DB","expected":"prints write/search/supersede/retire lines and Done","argv":["<guest-path>","examples/basic_usage.py"],"cwd":"<guest-path>","env":{},"expected_text":"Done! All operations completed successfully."}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"Inspected README.md, pyproject.toml entry points (memtether, memtether-connect), mcp_server.py, api_server.py and gateway.py/hubguard.py. README names no cron, scheduler, --once/--now, loop or webhook feature; the only while-True loops are a ranking loop in gateway.py and a file-lock retry loop in hubguard.py, which are not product cycles. Product runs on demand per CLI/MCP call.","checks":[]}
EOF
python3 -I -c "import json;[json.load(open('.coldpass/'+f)) for f in ['examples.json','cycles.json','claims.json','probe.json']];print('ok')"
pgrep -af "mcp_server|api_server|uvicorn|memtether" | grep -v pgrep || echo "no servers running"; cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -60
cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Install MemTether from PyPI, initialize a memory DB, write and search a memory through the CLI and the MCP stdio server, and verify the tamper-evident audit chain","operation_scope":"Linux Ubuntu guest, Python 3.12.3 (README requires >=3.10), venv at <guest-path>, local SQLite DB at <guest-path>, keyword search only (no chromadb/onnxruntime, no vector models), no AI clients detected in the guest so no client configs were written","steps":["pip install memtether -i https://pypi.org/simple/ (installed 0.1.0a83 into <guest-path>)","memtether init (created DB; 0 clients connected because none detected)","memtether remember \"User prefers dark theme\" --source claude-code","memtether search \"theme\" (returned the stored memory via keyword fallback)","python -m mcp_server with MCP tools/call search_memory (returned 'User prefers dark theme')","python examples/audit_chain_demo.py (tamper detected: verify_chain: FAIL)","python examples/basic_usage.py (Done! All operations completed successfully.)"],"deviations":["Used absolute venv interpreter path <guest-path> in place of bare python/memtether on PATH; both are the venv's own tools.","Semantic/vector search not set up (chromadb and onnxruntime not installed, models not downloaded); search fell back to keyword/BM25 as the README documents.","CDP endpoint http://<internal-ip>:9226/json/version returned HTTP 200 (Chrome/155.0.8059.84) but no browser operation is part of this product, so it was not used.","Replay of the MCP probe and CLI claims relies on the DB at <guest-path>, which is populated by the remember step; a fresh VM must run the remember claim first.","The remember claim on replay reported op noop_dup (existing memory deduplicated) but still returned ok True.","Ran memtether init with HOME-based detection; it skipped all 23 clients because none are installed, so no MCP configs were written.","Checker path used: <guest-path> (the /inputs/coldpass-preflight.py path was not present)."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":null}
EOF
python3 -I -c "import json;d=json.load(open('.coldpass/report.json'));print(d['outcome'], d['fault_owner'])"; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | head -c 300run JSON · checker evidence · agent report + check · transcript excerpt · error excerpt unavailable