Haiku 5.5
Native agent · Hosted MCP connection/tools-list passedChecked operation Remote hosted MCP connection · initialize + tools/list · http://127.0.0.1:49374/mcp
Tested against the hosted endpoint only. Local install is untested.
Agent-reported scope: Install ai-memory with the README installer, run setup, start the local HTTP/MCP server, and store then search/read a wiki page through the MCP tool memory_query and the CLI.
MCP server returned: ai-memory · version 3.2.2.
MCP tools returned: memory_auto_improve, memory_briefing, memory_consolidate, memory_delete_page, memory_explore, memory_feedback, memory_forget_sweep, memory_handoff_accept, memory_handoff_begin, memory_handoff_cancel, memory_handoff_list, memory_install_self_routing, memory_lint, memory_message_cancel, memory_message_list, memory_message_pop, memory_message_send, memory_query, memory_read_page, memory_read_session_observations, memory_recent, memory_restore_page, memory_status, memory_write_page. Tool listing does not establish authenticated tool-call success.
Run details
- run
- akitaonrails--ai-memory-claude-haiku-5-5-1792883077122192526
- date
- Oct 24, 2026
- time to working
- 183.9s
- product hosting / execution
- Remote hosted MCP endpoint
- recorded operation scope
- remote hosted MCP initialize + tools/list
- model
- claude-haiku-5-5
- agent / version
- claude-code / 2.1.300 (Claude Code)
- platform
- linux
- reported cost
- $0.030366
- Recorded source
- https://github.com/akitaonrails/ai-memory
- Backend
- hyperv
- Tool transport
- mcp-assigned-vm
- Requested source pin (not an observed revision)
- {"commit": "1bd866375b01031d63db54862a133376598d3701", "url": "https://github.com/akitaonrails/ai-memory"}
- Test version
- readme-c934555f51e3c2082ecd575e014a061355a62257bc1c10cc514c27dbff1bec7d
- revision
- 1bd866375b01031d63db54862a133376598d3701
Double-checks failed run: akitaonrails--ai-memory-claude-haiku-5-5-1792763525685070213.
Safety: Review signals: 4 download and execute, 13 hardcoded secret, 11 known vulnerability. 6 static matches retained as context.
Review signals: 4 download and execute, 13 hardcoded secret, 11 known vulnerability. 6 static matches retained as context.
Source contains download and execute; review its purpose. 2 distinct locations. 4 findings.
Gitleaks found a possible hardcoded secret; value withheld. 3 distinct locations. 13 findings.
OSV reports a known vulnerability in this dependency version. 5 distinct locations. 10 findings.
6 hardcoded secret matches retained as context; full list in the evidence.
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
- Wiki search answers a query over stored pages: Real input produced the expected result: zebra-lantern
Source: Ask "have we discussed X?" or "search memory for Y" to query the wiki.
Input: {"tool": "memory_query", "arguments": {"query": "zebra-lantern", "workspace": "coldpass", "project": "ailab"}}
Expected: the stored page is returned
Command: <guest-path> serve --transport http tools/call {"tool": "memory_query", "arguments": {"query": "zebra-lantern", "workspace": "coldpass", "project": "ailab"}}
Observed: zebra-lantern</mark> deployment uses port 7341.\",\n \"rank\": -0.036065573770491806\n }\n ]\n}"}], "isError": false}
Examples
- CLI full-text search finds the stored page: command completed successfully
Source: README.md (Everyday use)
Input: search zebra-lantern
Expected: hit notes/coldpass-check.md
Command: bash <guest-path> <guest-path> search zebra-lantern --workspace coldpass --project ailab
Observed: 1 result(s) for "zebra-lantern": notes/coldpass-check.md rank=-0.0000 coldpass-check Coldpass probe: the <mark>zebra-lantern</mark> deployment uses port 7341. [2m2026-10-24T23:08:24.183649Z[0m [32m INFO[0m [2mai_memory_cli[0m[2m:[0m ai-memory starting [3mversion[0m[2m=[0m"3.2.2" [3mserver_url[0m[2m=[0mhttp://127.0.0.1:49374 [3mdata_dir[0m[2m=[0m<guest-path> [3mbind[0m[2m=[0m127.0.0.1:49374
- CLI reads back a stored wiki page: command completed successfully
Source: README.md (Everyday use)
Input: read-page notes/coldpass-check.md
Expected: page body printed
Command: bash <guest-path> <guest-path> read-page --path notes/coldpass-check.md --workspace coldpass --project ailab
Observed: path: notes/coldpass-check.md Coldpass probe: the zebra-lantern deployment uses port 7341. [2m2026-10-24T23:08:25.639743Z[0m [32m INFO[0m [2mai_memory_cli[0m[2m:[0m ai-memory starting [3mversion[0m[2m=[0m"3.2.2" [3mserver_url[0m[2m=[0mhttp://127.0.0.1:49374 [3mdata_dir[0m[2m=[0m<guest-path> [3mbind[0m[2m=[0m127.0.0.1:49374
Cycles
- Scheduled maintenance runs periodic jobs on the server: Triggered one cycle by hand (run-once: start the real server, run the documented forget-sweep job once by hand, stop server; normal trigger: server-side scheduled maintenance tick): {
"dry_run": false,
"candidates_evaluated": 1,
"evicted": [],
"compacted": [],
"merged": [],
"expired": [],
"hard_deleted": 0,
"observations_prunable": 0,
"observations_pruned": 0,
"observation_prune_sessions": 0,
"observation_prune_batches": 0,
"ledgers_prunable": 0,
"ledger_bytes_prunable": 0,
"ledgers_pruned": 0,
"ledger_bytes_pruned": 0,
"ledgers_undeleted": 0,
"ledger_page_rows_left": 0
}
[2m2026-10-24T23:08:22.713852Z[0m [32m INFO[0m [2mai_memory_cli[0m[2m:[0m ai-memory starting [3mversion[0m[2m=[0m"3.2.2" [3mserver_url[0m[2m=[0mhttp://127.0.0.1:49374 [3mdata_dir[0m[2m=[0m<guest-path> [3mbind[0m[2m=[0m127.0.0.1:49374
Source: crates/ai-memory-cli/src/commands/serve.rs
Input: forget-sweep --workspace coldpass --project ailab
Expected: sweep report printed with ledgers_pruned counter
Command: bash <guest-path> <guest-path> forget-sweep --workspace coldpass --project ailab
Observed: { "dry_run": false, "candidates_evaluated": 1, "evicted": [], "compacted": [], "merged": [], "expired": [], "hard_deleted": 0, "observations_prunable": 0, "observations_pruned": 0, "observation_prune_sessions": 0, "observation_prune_batches": 0, "ledgers_prunable": 0, "ledger_bytes_prunable": 0, "ledgers_pruned": 0, "ledger_bytes_pruned": 0, "ledgers_undeleted": 0, "ledger_page_rows_left": 0 } [2m2026-10-24T23:08:22.713852Z[0m [32m INFO[0m [2mai_memory_cli[0m[2m:[0m ai-memory starting [3mversion[0m[2m=[0m"3.2.2" [3mserver_url[0m[2m=[0mhttp://127.0.0.1:49374 [3mdata_dir[0m[2m=[0m<guest-path> [3mbind[0m[2m=[0m127.0.0.1:49374
Local or hosted: local
What the agent did
Install ai-memory with the README installer, run setup, start the local HTTP/MCP server, and store then search/read a wiki page through the MCP tool memory_query and the CLI.
cd <guest-path> && ls -la && cat README.md 2>/dev/null | head -c 7000; echo; python3 --version; id -u; ls /inputs 2>/dev/null
cd <guest-path> && grep -n '^#' README.md | head -80; ls .git 2>/dev/null | head -2; cat rust-toolchain.toml
cd <guest-path> && sed -n 217,255p README.md; sed -n 596,634p README.md
cd <guest-path> && sed -n 749,766p README.md; which cargo rustc rustup; cargo --version 2>&1; grep -n -i 'cargo build\|cargo install' README.md docs/install.md CONTRIBUTING.md | head -20
cd /tmp && timeout 120 curl -fsSL https://github.com/akitaonrails/ai-memory/releases/latest/download/install.sh -o /tmp/ai-install.sh; echo "rc=$?"; ls -la /tmp/ai-install.sh 2>/dev/null; head -c 600 /tmp/ai-install.sh 2>/dev/null
cd /tmp && curl -fsSL https://github.com/akitaonrails/ai-memory/releases/latest/download/install.sh | sh; echo "rc=$?"; ls -la ~/.local/bin/ai-memory 2>&1; ~/.local/bin/ai-memory --version 2>&1
export PATH="$HOME/.local/bin:$PATH"; echo HOME=$HOME; ai-memory setup --plan 2>&1 | head -c 4000; echo "rc=${PIPESTATUS[0]}"
export PATH="$HOME/.local/bin:$PATH"; ai-memory setup --yes 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | head -c 5000; echo "rc=${PIPESTATUS[0]}"
export PATH="$HOME/.local/bin:$PATH"; ai-memory setup --yes --no-service 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | tail -n 15; echo "rc=${PIPESTATUS[0]}"; ai-memory serve --help 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | head -40
export PATH="$HOME/.local/bin:$PATH"; nohup ai-memory serve --transport http --enable-web > <guest-path> 2>&1 &
echo $! > <guest-path>; sleep 6; curl -s -i http://127.0.0.1:49374/healthz; echo; tail -c 1500 <guest-path> | sed 's/\x1b\[[0-9;]*m//g'
cd <guest-path> && grep -n -i 'api key\|aim_\|mcp-bridge\|memory_store\|memory_search\|mcp_http\|\bkeys\b' README.md | head -30; grep -n 'Bearer\|authorization' -i docs/usage.md | head -10
TOK=$(cat <guest-path>); H=(-H "Authorization: <secret>" -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream"); curl -s -D <guest-path> "${H[@]}" -X POST http://127.0.0.1:49374/mcp -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}' | head -c 800; echo; curl -s "${H[@]}" -X POST http://127.0.0.1:49374/mcp -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | grep -o '"name":"[^"]*"' | sort -u | head -60
TOK=$(cat <guest-path>); curl -s -H "Authorization: <secret>" -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -X POST http://127.0.0.1:49374/mcp -d '{"jsonrpc":"2.0","id":3,"method":"tools/list"}' > <guest-path>; python3 -I -c "
import json,sys
d=json.load(open('<guest-path>'))
for t in d['result']['tools']:
if t['name'] in ('memory_write_page','memory_read_page','memory_query','memory_status'):
print(t['name'], json.dumps(t['inputSchema'])[:900]); print()
" 2>&1 || head -c 3000 <guest-path>
TOK=$(cat <guest-path>); call(){ curl -s -H "Authorization: <secret>" -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -X POST http://127.0.0.1:49374/mcp -d "$1"; echo; }; call '{"jsonrpc":"2.0","id":10,"method":"tools/call","params":{"name":"memory_write_page","arguments":{"path":"notes/coldpass-check.md","body":"Coldpass probe: the zebra-lantern deployment uses port 7341.","workspace":"coldpass","project":"ailab"}}}' | head -c 2000
TOK=$(cat <guest-path>); call(){ curl -s -H "Authorization: <secret>" -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -X POST http://127.0.0.1:49374/mcp -d "$1"; echo; }; call '{"jsonrpc":"2.0","id":11,"method":"tools/call","params":{"name":"memory_read_page","arguments":{"path":"notes/coldpass-check.md","workspace":"coldpass","project":"ailab"}}}' | head -c 1500; echo ---; call '{"jsonrpc":"2.0","id":12,"method":"tools/call","params":{"name":"memory_query","arguments":{"query":"zebra-lantern","workspace":"coldpass","project":"ailab"}}}' | head -c 1500
cd <guest-path> && grep -n -F 'to query the wiki.' README.md; grep -n -F 'ai-memory recent' README.md | head -3; grep -n -F -- '--once' README.md docs/*.md | head; grep -n -F -- '--now' README.md | head -3; export PATH="$HOME/.local/bin:$PATH"; ai-memory --help 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | sed -n '1,60p'
cd <guest-path> && grep -rn 'scheduled maintenance started' crates | head -3; export PATH="$HOME/.local/bin:$PATH"; ai-memory search zebra-lantern 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | tail -8; echo "rc=$?"; ai-memory read-page --path notes/coldpass-check.md 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | tail -8
cd <guest-path> && export PATH="$HOME/.local/bin:$PATH"; ai-memory search --help 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | grep -E '^\s+(-|--)' | head -12; sed -n 2600,2640p crates/ai-memory-cli/src/commands/serve.rs
cd <guest-path> && export PATH="$HOME/.local/bin:$PATH"; ai-memory search zebra-lantern --workspace coldpass --project ailab 2>/dev/null | tail -8; echo "rc=$?"; ai-memory read-page --path notes/coldpass-check.md --workspace coldpass --project ailab 2>/dev/null | tail -8; echo ---; timeout 120 ai-memory forget-sweep --workspace coldpass --project ailab 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | tail -8; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && kill $(cat <guest-path>) 2>/dev/null; sleep 3; pgrep -af 'ai-memory serve' ; export PATH="$HOME/.local/bin:$PATH"; ai-memory search zebra-lantern --workspace coldpass --project ailab 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | tail -4; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && export PATH="$HOME/.local/bin:$PATH"; timeout 60 ai-memory forget-sweep --workspace coldpass --project ailab 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | tail -3; echo "rc=${PIPESTATUS[0]}"; grep -n 'fn.*forget\|forget_sweep' crates/ai-memory-cli/src/commands/*.rs | head -5
mkdir -p <guest-path> && cat > <guest-path> <<'EOF'
#!/usr/bin/env bash
# Start the documented local server, run one documented client command, then stop the server.
set -u
export HOME=<guest-path>
SERVE=<guest-path>
LOG=<guest-path>
"$SERVE" serve --transport http --enable-web >"$LOG" 2>&1 &
PID=$!
for i in $(seq 1 60); do
if curl -fs http://127.0.0.1:49374/healthz >/dev/null 2>&1; then break; fi
sleep 1
done
"$@"
RC=$?
kill "$PID" 2>/dev/null
wait "$PID" 2>/dev/null
rm -f "$LOG"
exit "$RC"
EOF
chmod +x <guest-path> && cd <guest-path> && timeout 200 bash <guest-path> <guest-path> search zebra-lantern --workspace coldpass --project ailab 2>/dev/null; echo "rc=$?"; sleep 2; curl -s -m 3 http://127.0.0.1:49374/healthz; echo " health-after rc=$?"
mkdir -p <guest-path> && cat > <guest-path> <<'EOF'
import json, pathlib
WS = pathlib.Path("<guest-path>")
TOK = pathlib.Path("<guest-path>").read_text().strip()
BIN = "<guest-path>"
SRV = [BIN, "serve", "--transport", "http"]
URL = "http://127.0.0.1:49374/mcp"
HDR = {"Authorization": "<secret>" + TOK}
ARGS = {"query": "zebra-lantern", "workspace": "coldpass", "project": "ailab"}
WRAP = ["bash", "<guest-path>"]
probe = {"kind": "mcp_http", "argv": SRV, "cwd": str(WS), "url": URL, "headers": HDR,
"tool": "memory_query", "arguments": ARGS, "expected_text": "zebra-lantern"}
quote = 'Ask "have we discussed X?" or "search memory for Y" to query the wiki.'
claims = [{"kind": "claim", "claim": "Wiki search answers a query over stored pages",
"source": quote, "input": "zebra-lantern", "expected": "the stored page is returned",
"probe_kind": "mcp_http", "argv": SRV, "url": URL, "headers": HDR, "tool": "memory_query",
"arguments": ARGS, "expected_text": "zebra-lantern", "cwd": str(WS)}]
examples = [
{"kind": "example", "claim": "CLI full-text search finds the stored page", "source": "README.md (Everyday use)",
"input": "search zebra-lantern", "expected": "hit notes/coldpass-check.md",
"argv": WRAP + [BIN, "search", "zebra-lantern", "--workspace", "coldpass", "--project", "ailab"],
"cwd": str(WS), "expected_text": "notes/coldpass-check.md"},
{"kind": "example", "claim": "CLI reads back a stored wiki page", "source": "README.md (Everyday use)",
"input": "read-page notes/coldpass-check.md", "expected": "page body printed",
"argv": WRAP + [BIN, "read-page", "--path", "notes/coldpass-check.md", "--workspace", "coldpass", "--project", "ailab"],
"cwd": str(WS), "expected_text": "zebra-lantern deployment uses port 7341"}]
cycles = {"detected": True, "checks": [{
"claim": "Scheduled maintenance runs periodic jobs on the server",
"source": "crates/ai-memory-cli/src/commands/serve.rs",
"quote": 'info!(jobs = tasks.len(), "scheduled maintenance started");',
"schedule": "server-side scheduled maintenance tick",
"method": "run-once: start the real server, run the documented forget-sweep job once by hand, stop server",
"input": "forget-sweep --workspace coldpass --project ailab",
"expected": "sweep report printed with ledgers_pruned counter",
"kind": "cli", "argv": WRAP + [BIN, "forget-sweep", "--workspace", "coldpass", "--project", "ailab"],
"cwd": str(WS), "expected_text": "ledgers_pruned"}]}
(WS/".coldpass/probe.json").write_text(json.dumps(probe, indent=2) + "\n")
(WS/".coldpass/claims.json").write_text(json.dumps(claims, indent=2) + "\n")
(WS/".coldpass/examples.json").write_text(json.dumps(examples, indent=2) + "\n")
(WS/".coldpass/cycles.json").write_text(json.dumps(cycles, indent=2) + "\n")
print("written")
EOF
python3 -I <guest-path> && ls -la <guest-path>
ls -la <guest-path> 2>&1; ls -la /inputs/coldpass-preflight.py 2>&1; cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -c 5000; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo "rc=$?"; python3 -I -c "
import json,sys
t=open('<guest-path>').read()
i=t.find('{')
d=json.loads(t[i:])
print({k:(v if not isinstance(v,(list,dict)) else type(v).__name__) for k,v in d.items()})
for k in ('problems','errors','problem'):
if k in d: print(k, json.dumps(d[k])[:1500])
" 2>&1 | head -c 3000; echo; head -c 300 <guest-path>
pgrep -af 'ai-memory serve' | grep -v pgrep | grep -v 'coldpass-safety' ; echo "serve-procs-checked"; cat > <guest-path> <<'EOF'
{
"outcome": "working",
"fault_owner": null,
"operation": "Install ai-memory with the README installer, run setup, start the local HTTP/MCP server, and store then search/read a wiki page through the MCP tool memory_query and the CLI.",
"operation_scope": "Linux x86_64 guest (Ubuntu, Python 3.12.3), local loopback server 127.0.0.1:49374, zero-LLM mode, no agent wired, no systemd user bus. Product installed from the latest GitHub release (ai-memory 3.2.2), not built from the pinned commit 1bd866375b01031d63db54862a133376598d3701.",
"steps": [
"curl -fsSL https://github.com/akitaonrails/ai-memory/releases/latest/download/install.sh | sh",
"ai-memory setup --plan",
"ai-memory setup --yes (failed on systemd user service: no bus)",
"ai-memory setup --yes --no-service",
"ai-memory serve --transport http --enable-web (started by hand, healthz returned {\"status\":\"ok\"})",
"MCP tools/call memory_write_page path=notes/coldpass-check.md, then memory_read_page and memory_query for zebra-lantern (returned the stored body and snippet)",
"ai-memory search zebra-lantern --workspace coldpass --project ailab",
"ai-memory read-page --path notes/coldpass-check.md --workspace coldpass --project ailab",
"ai-memory forget-sweep --workspace coldpass --project ailab (one manual cycle)",
"<env-var>=<guest-path> python3 -I <guest-path> --validate --replay (valid: true, problems: [], replay PASS)"
],
"deviations": [
"Cargo/Rust was not installed; the README's contributor build was not used. The README quick-start release installer was run instead, which installs the latest release, not the pinned commit. No git metadata was fetched, so the pinned commit was not verified against the installed binary.",
"ai-memory setup --yes failed with 'Failed to connect to bus: No medium found' (no systemd user session in this VM). Re-ran with --no-service, as the README's own error message suggests, and started the server manually with serve --transport http.",
"setup's self-check reported the server down before it was started; this is expected because the server was not yet running.",
"The CLI read commands (search, read-page, forget-sweep) call the running server and fail with connection refused when it is stopped. The example and cycle checks therefore run through <guest-path>, a wrapper outside the checkout that starts the real ai-memory serve, runs the documented command, and stops the server.",
"The MCP probe uses the root bearer token generated by setup at ~/.local/share/ai-memory/auth-tokens/default, not a separately created guest key. It is local to this disposable guest.",
"The forget-sweep cycle is a manual run-once of a documented maintenance job. The server's scheduler was not triggered by a real clock; the scheduler tick itself was not observed firing. It returned no candidates (ledgers_pruned 0), so it shows the job runs, not that it removed data."
],
"stuck_step": null,
"main_blocker": null,
"plain_failure": null,
"suggested_fix": "None needed for the operation. For a headless VM, setup should degrade cleanly when no systemd user bus is present, or say so up front instead of failing after writing the config. The README should note that the CLI commands require a running server."
}
EOF
python3 -I -c "import json;d=json.load(open('<guest-path>'));print('report ok', d['outcome'])"
cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo "rc=$?"; python3 -I -c "
import json
t=open('<guest-path>').read(); d=json.loads(t[t.find('{'):])
print('valid', d['valid'], 'problems', d['problems'], 'replay', d['replay']['status'])"; ls -la <guest-path>; ls <guest-path> 2>&1 | tail -1run JSON · checker evidence · agent report + check · transcript excerpt unavailable · error excerpt unavailable