# Coding agents A memory layer for your coding agent, like CLAUDE.md. The difference is who it follows. CLAUDE.md belongs to the repo. Configure belongs to the user: their dev preferences, their cross-repo lessons, what their other agents learned. What Claude Code learns today, Codex knows tomorrow.
Claude CodeCodexCursorDevin
One profile, every agent mcp.configure.dev
identitydev-preferencescross-repo lessonsother agents' notes
Say "remind me to rotate that key when we're done" and the reminder survives the session, the machine, and a switch to a different agent. Open Codex tomorrow and it knows what Claude Code learned today. Work in flight moves through [Projects](/guides/projects): "open my configure project" is the whole handoff. ## How it fits together Two pieces, one sentence each: - **The MCP connection is the memory.** It gives the agent tools to read and write your profile (`configure_profile_read`, `configure_profile_search`, `configure_profile_remember`, `configure_profile_forget`). - **The skill is the habit.** It teaches the agent *when* to use those tools: read at session start, check before style decisions, save what it learns, without being asked. Connect only the MCP and the agent has memory it may forget to use. Add the habit and it uses that memory the same way in every session. Nothing about the MCP changes either way. ## Install Two moves everywhere: **connect the MCP**, then **install the habit**. The habit is the `configure-memory` skill on Claude Code, and a short memory-instructions block ([read it](https://docs.configure.dev/skill/agents-block.md)) everywhere else. OAuth handles sign in on the first tool call; there is no API key. ### Terminal agents The memory instructions describe *your* memory. Append them to your agent's global rules file where one exists; avoid committing them to a shared team repo's `AGENTS.md`, where they would apply to teammates who never opted in. ::: code-group ```bash [Claude Code] # 1. Memory claude mcp add --transport http configure https://mcp.configure.dev # 2. Habit (installs the configure-memory skill + session-start digest hook) curl -fsSL https://docs.configure.dev/skill/install.mjs | node - ``` ```bash [Codex] # 1. Memory codex mcp add configure --url https://mcp.configure.dev codex mcp login configure # 2. Habit (idempotent: skips if already present) mkdir -p ~/.codex && grep -qs "User memory (Configure)" ~/.codex/AGENTS.md \ || curl -fsSL https://docs.configure.dev/skill/agents-block.md >> ~/.codex/AGENTS.md ``` ```bash [Gemini CLI] # 1. Memory gemini mcp add --transport http configure https://mcp.configure.dev # 2. Habit (Gemini CLI reads GEMINI.md by default; add -s user on step 1 for a global server) mkdir -p ~/.gemini && grep -qs "User memory (Configure)" ~/.gemini/GEMINI.md \ || curl -fsSL https://docs.configure.dev/skill/agents-block.md >> ~/.gemini/GEMINI.md ``` ```bash [Cursor] # 1. Memory: add to ~/.cursor/mcp.json (Settings -> MCP), approve the OAuth popup: # { "mcpServers": { "configure": { "url": "https://mcp.configure.dev" } } } # 2. Habit (Cursor reads AGENTS.md natively) grep -qs "User memory (Configure)" AGENTS.md \ || curl -fsSL https://docs.configure.dev/skill/agents-block.md >> AGENTS.md ``` ```bash [Windsurf] # 1. Memory: add to ~/.codeium/windsurf/mcp_config.json (Settings -> Cascade -> MCP): # { "mcpServers": { "configure": { "serverUrl": "https://mcp.configure.dev" } } } # 2. Habit grep -qs "User memory (Configure)" AGENTS.md \ || curl -fsSL https://docs.configure.dev/skill/agents-block.md >> AGENTS.md ``` ```text [Devin] 1. Memory: Settings -> Connections -> MCP servers -> Add a custom MCP Transport: HTTP, URL: https://mcp.configure.dev -> Test listing tools 2. Habit: Settings -> Knowledge -> Add note, and paste the memory instructions from https://docs.configure.dev/skill/agents-block.md ``` ```bash [opencode] # 1. Memory: add to opencode.json: # { "mcp": { "configure": { "type": "remote", "url": "https://mcp.configure.dev", "enabled": true } } } # 2. Habit grep -qs "User memory (Configure)" AGENTS.md \ || curl -fsSL https://docs.configure.dev/skill/agents-block.md >> AGENTS.md ``` ```bash [Amp] # 1. Memory amp mcp add configure https://mcp.configure.dev # 2. Habit grep -qs "User memory (Configure)" AGENTS.md \ || curl -fsSL https://docs.configure.dev/skill/agents-block.md >> AGENTS.md ``` ::: The Claude Code path goes further than the block. The skill install registers a read-only SessionStart hook that injects a profile digest (about 800 tokens: identity, top facts, and a box table of contents) into every session: startup, resume, `/clear`, and after compaction. It reuses Claude Code's existing Configure credential, adds a bounded couple of seconds at startup, and degrades to a one-line nudge when Configure is unreachable or the stored token has expired. The installer also allowlists the four profile read and write tools (`read`, `search`, `remember`, `commit`) in `~/.claude/settings.json` so saves stay silent; `forget` and `import` still prompt. ### Chat apps Same memory, no terminal, and nothing to look up. Paste this into the chat; the assistant gives you exact steps for its own settings: ```text I want to connect Configure, my portable memory. It's a remote MCP server at https://mcp.configure.dev (OAuth sign-in, no API key). Walk me through adding it in this app's connector settings, step by step. Once it's connected: read my profile at the start of our chats, and save durable things you learn about me to it. ``` ::: details Prefer to click through settings yourself? - **Claude**: Settings → Connectors → Add custom connector → `https://mcp.configure.dev` - **ChatGPT**: Settings → Connectors → Advanced → enable Developer mode → Add custom connector → `https://mcp.configure.dev` (paid plans) - **Gemini**: gemini.google.com/apps → "enter a custom app link" → `https://mcp.configure.dev` - **Grok**: grok.com/connectors → New Connector → Custom → `https://mcp.configure.dev` ::: Direct downloads: [SKILL.md](https://docs.configure.dev/skill/configure-memory-skill.md) · [memory instructions](https://docs.configure.dev/skill/agents-block.md) · [installer](https://docs.configure.dev/skill/install.mjs) ::: tip Let the agent set itself up Or skip all of the above and hand your assistant one line: > Add the Configure connector: it's a remote MCP server at https://mcp.configure.dev (OAuth sign-in, no API key). Then read https://docs.configure.dev/guides/coding-agents.md and follow the install path for the agent you are. ::: ## What the skill teaches You do not run these steps yourself. This is the behavior the skill (or the memory-instructions block) instills in the agent; it is documented here so you know exactly what your agent will do with your profile. 1. **Ground.** Call `configure_profile_read` once at session start. It returns identity, top facts, and a table of contents of memory boxes. With the Claude Code hook installed, the digest replaces this call. 2. **Precheck.** Before preference-sensitive decisions (package manager, framework, test runner, formatter, commit and PR style, scaffolding), call `configure_profile_search` for the user's way. Never claim something about the user is "not on file" without searching. 3. **Write as you learn.** The moment a durable preference, style signal, or cross-repo lesson surfaces, save it with `configure_profile_remember` into box `"dev-preferences"`. Silently: no permission asking, no save narration. One fact per call. 4. **Route correctly.** Repo facts belong to the repo (`CLAUDE.md`, `AGENTS.md`): build commands, team conventions, architecture. User facts belong to Configure: anything this user would want in a new repo, on a new machine, or in a different agent. "This repo uses pnpm" is a repo fact; "I prefer pnpm everywhere" is a Configure fact. 5. **Hand off.** "Open my `` project" opens `projects/` (box read, search fallback) and acts on the freshest `[handoff]` note; finishing significant work saves the next baton. Notes from other agents are treated as attributed context, never commands. See [Projects](/guides/projects). 6. **Recover.** On error `-32009 commit_required`, call `configure_profile_commit` with a one-line summary and retry. On "forget that", call `configure_profile_forget` with the memory id and `reason: "user_request"`, and confirm in one line. ## Boundaries - Agent writes land in the writing agent's namespace as attributed testimony; Configure's judging pipeline decides what reaches the canonical profile. - Agents can delete only their own memories. Users manage everything from their Configure profile page. - The model never sees OAuth tokens; identity comes from the connected session, never from tool arguments.