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

  1. Read the appended detail — it says which condition remains
  2. Re-run `agentmemory doctor` after restarting the daemon or relevant process
  3. Use '? More info' for the diagnostic's full remediation notes
  4. 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

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


AI-assisted analysis of rohitg00/agentmemory@e04ba88819 (2026-08-30). Data as JSON: /api/errors/8e53202d1c974a1d. Report an issue: GitHub.