What Is the `auto-memory scope` Boundary and How It Differs from In-Scope Content Files in santifer/career-ops

The auto-memory scope is a persistent store for behavioral steering data (preferences, rules, operational state) that never contains factual claims, while in-scope content files are the authoritative sources for all user-facing output like CVs and cover letters.

The auto-memory scope boundary is a fundamental architectural principle in santifer/career-ops that separates how an AI agent remembers how to behave from where it finds what to say. Understanding this distinction is critical for anyone customizing the system or debugging unexpected outputs.

Why the Boundary Exists

Career-ops serves two distinct needs: consistent personality across sessions and verifiable accuracy in generated content. Without this separation, an agent might hallucinate achievements into a CV or apply outdated tone preferences to critical application materials.

The boundary enforces that:

  • Auto-memory influences style and process
  • In-scope files provide substance and facts

Auto-Memory Scope: Behavioral Steering Only

The auto-memory scope stores persistent data used exclusively to steer agent behavior. According to the source code in AGENTS.md lines 35-38, this includes:

  • Style and tone preferences (cadence, formality level)
  • Process rules (workflow preferences, automation triggers)
  • Operational state (active relationships, learned outcomes from past interactions)
  • External references (contacts, company-specific context)

Critically, auto-memory never holds factual claims about your work history, achievements, or authorship. It lives in:

// Fetching persisted auto-memory (read-only behavioral data)
import fetch from 'node-fetch';

const resp = await fetch('http://localhost:3000/api/memory');
const { memory } = await resp.json();

console.log('Current auto-memory →', memory.trim());

As implemented in web/src/lib/run-prompts.mjs lines 54-55, the prompt builder conditionally injects this memory with explicit labeling: "Durable notes about the user (from their profile)." This demarcation prevents confusion with authoritative content.

In-Scope Content Files: The Single Source of Truth

In-scope content files are the exclusive sources for all user-facing prose generation. The system reads these files on every run and never falls back to auto-memory for factual content.

Per AGENTS.md lines 27-30, these include:

File Purpose
cv.md Canonical CV with all position descriptions, metrics, and outcomes
article-digest.md Published writing samples and thought leadership
config/profile.yml Personal profile, targeting preferences, compensation data
modes/_profile.md Career archetypes, narrative framing, negotiation scripts
modes/_custom.md Procedural rules specific to your workflow
voice-dna.md Writing style samples for voice matching
interview-prep/story-bank.md Behavioral interview stories with STAR format
interview-prep/<company>.md Company-specific interview preparation
// Reading an in-scope content file (authoritative source)
import { readFileSync } from 'fs';

const cv = readFileSync('cv.md', 'utf8');
console.log('CV content length:', cv.length);

How the Boundary Enforces Source-of-Truth

The separation operates through three mechanisms in the santifer/career-ops codebase:

1. Prompt Construction Excludes Auto-Memory for Facts

When a mode (e.g., evaluate, pdf, cover) builds its prompt, it explicitly injects in-scope file contents while excluding auto-memory from factual grounding. This guarantees every claim about your experience originates from a file you control and version.

2. Conditional Memory Injection with Clear Labeling

In run-prompts.mjs, the memory string is only added when non-empty, and even then carries explicit framing that distinguishes it from authoritative sources. The /api/memory endpoint returns raw memory content, but the prompt builder governs how (and whether) it influences generation.

3. Safety Guarantees Against Fabrication

Because auto-memory cannot hold CV or achievement data, the system prevents accidental hallucination. Any generation request lacking supporting content in the in-scope files triggers either rejection or a placeholder prompting you to add the missing information.

Practical: Modifying Behavior vs. Modifying Content

The boundary creates two distinct customization paths:

Goal Action Where It Writes Effect
Change facts, achievements, or narrative Edit cv.md, modes/_profile.md, or config/profile.yml In-scope files Immediate impact on all generated output
Adjust tone, add rules, or remember preferences Use the remember command Auto-memory Persistent across sessions, never appears in output
// Adding a behavioral rule to auto-memory via CLI
await fetch('http://localhost:3000/api/assistant', {
  method: 'POST',
  body: JSON.stringify({
    kind: 'remember',
    input: 'Prefer remote-first roles; avoid onsite interviews',
  }),
});
// Updating the tracker (in-scope operation, never touches auto-memory)
import { execSync } from 'child_process';

execSync('node set-status.mjs 123 Applied --note "Sent application"');

Summary

  • Auto-memory scope stores behavioral steering data—preferences, rules, and operational state—in ~/.claude/projects/.../memory/ or .career-ops-web/memory.md, and never contains factual claims about your work.
  • In-scope content files like cv.md, config/profile.yml, and modes/_profile.md are the sole source of truth for all generated CVs, cover letters, and application materials.
  • The AGENTS.md specification in santifer/career-ops enforces this boundary through explicit prompt construction that excludes auto-memory from factual grounding.
  • Use the remember command to modify behavior; edit in-scope files to modify content.

Frequently Asked Questions

What happens if I put CV content into auto-memory?

The system will ignore it for factual claims. Even if present, auto-memory is explicitly excluded from the source-of-truth pipeline that generates CVs and cover letters. You must place factual content in cv.md or other in-scope files.

Why does the web UI have a separate memory file at .career-ops-web/memory.md?

This provides web-only persistence for users running career-ops without local file system access. It functions identically to the CLI auto-memory: behavioral steering only, no factual content, governed by the same boundary rules in AGENTS.md.

How do I verify which files are currently in-scope for a generation request?

Check AGENTS.md lines 27-30 for the authoritative list. The prompt builder in each mode explicitly loads these files; no others are consulted for factual content.

Can I disable auto-memory entirely?

Yes—an empty or missing memory file simply results in no behavioral steering data being injected. The prompt builder in web/src/lib/run-prompts.mjs conditionally adds memory only when the string is non-empty, so absence has no functional impact beyond losing preference persistence.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →