rohitg00/agentmemory · warning
${d.id} still failing after fix: ${after.detail ?? ""}
Error message
${d.id} still failing after fix: ${after.detail ?? ""} What it means
Warning printed in the interactive doctor flow when the user selects Fix, `applyFixWithReport` reports ok, but the immediate re-check still fails; it appends the re-check's `detail` explaining why the diagnostic is still unhealthy. Unlike the `--all` variant (index 71) it includes the residual failure detail.
Source
Thrown at src/cli.ts:2699
const r = await applyFixWithReport(d, ctx, false);
if (r.ok) fixed++;
// Re-check only this diagnostic.
const after = await d.check(ctx);
if (!after.ok) p.log.warn(`${d.id} still failing after fix.`);
continue;
}
// Interactive prompt loop — allow [?] More info without leaving the check.
while (true) {
const action = await askFixAction(d);
if (action === "fix") {
const r = await applyFixWithReport(d, ctx, false);
if (r.ok) {
const after = await d.check(ctx);
if (after.ok) {
fixed++;
} else {
p.log.warn(`${d.id} still failing after fix: ${after.detail ?? ""}`);
}
}
break;
}
if (action === "skip") {
skipped++;
break;
}
if (action === "more") {
p.note(d.moreInfo, `[${d.id}] more info`);
continue;
}
if (action === "quit") {
quit = true;
break;
}
}
}View on GitHub (pinned to e04ba88819)
Solutions
- Read the appended detail — it says which condition remains
- Re-run `agentmemory doctor` after restarting the daemon or relevant process
- Use '? More info' for the diagnostic's full remediation notes
- Manually repair the remaining condition indicated by detail
Example fix
// before embedding-key ✗ > Fix embedding-key still failing after fix: OPENAI_API_KEY not set in environment // after export OPENAI_API_KEY=sk-... $ agentmemory doctor embedding-key ✓
Defensive patterns
Strategy: validation
Validate before calling
// verify the underlying condition yourself instead of trusting fix ok
const after = await d.check(ctx);
if (!after.ok) {
console.warn(`${d.id} unresolved: ${after.detail ?? ""}`);
console.log(d.moreInfo);
} Type guard
function fixResolved(after: { ok: boolean; detail?: string }): after is { ok: true; detail?: string } {
return after.ok === true;
} Try / catch
null
Prevention
- Read the appended detail to find the unmet condition
- Restart affected processes (daemon, shell) so config edits take effect
- Use '? More info' before fixing to understand the full check
- Manually verify external dependencies (ports, keys, endpoints) the check tests
When it happens
Trigger: User picks 'F Fix' at the doctor prompt for a diagnostic; the fix routine succeeds but `d.check(ctx)` afterwards still returns `{ ok: false, detail }`.
Common situations: Fix edited a config file but a running daemon still uses the old value; check validates multiple conditions while the fix addresses only one; external dependency (port, endpoint, credentials) still wrong.
Related errors
- ${d.id} still failing after fix.
- ${d.id} ✗ ${status.detail ?? ""}
- POST ${url} failed: ${res.status} ${res.statusText}${suffix}
- agentmemory: could not locate bundled plugin/ directory (sea
- observe failed for ${obs.toolName}: ${res.status} ${res.stat
AI-assisted analysis of rohitg00/agentmemory@e04ba88819 (2026-08-30).
Data as JSON: /api/errors/8e53202d1c974a1d.
Report an issue: GitHub.