Docs menuClaude Code & Codex

Docs / Claude Code & Codex

Claude Code & Codex

How Flanner connects to your coding agent, and the MCP tools it exposes.

What init registers, and where

Three agents, three different files. flanner init registers the server in Claude Desktop's config, writes a project-scoped .mcp.json that Claude Code reads, and adds managed blocks to CLAUDE.md and AGENTS.md. Codex registers MCP servers in its own file. When Codex is installed, init appends flanner's entry to ~/.codex/config.toml, checks the file still parses, and leaves everything else in it untouched. Where it cannot do that safely, it prints this for you to add:

[mcp_servers.flanner] command = "flanner-mcp"

flanner status shows one row per agent, each checked where that agent actually looks. Narrow what init registers with --setup codex, or turn it off with --skip-claude. On a team with messages on, init also adds a messages hook to whichever of Claude Code and Codex it sets up, described in Messages.

flanner status # One row per agent, checked where each looks

Manual registration

If needed, you can redo it by hand. flanner setup re-runs the global registration with every agent. It does not rewrite the repository's files; flanner init does that. It does not add the messages hook either; run flanner init for that.

flanner setup # Every agent
flanner register # Claude Desktop only
flanner unregister # Claude Desktop only

Guidance and the guard hook

flanner init sets up two things so your agent uses Flanner without being reminded. The guidance works with Claude Code and Codex; the guard hook is Claude Code only.

Guidance the agent reads

flanner init writes a managed block into CLAUDE.md and AGENTS.md, which Claude Code and Codex read every session, and installs flanner-plan and flanner-memory skills where each agent reads them. Together they tell the agent where it is, to save plans and memory through the MCP tools, and to leave installing skills to you.

A guard hook as backstop

A guard-write PreToolUse hook denies any raw write into the plan directory and points the agent back to create_plan_file_tool. It fails open and never blocks writes elsewhere.

MCP tools the agent calls

project_contextWhere you are: the project, whether review is enforced, and what memory keeps
initialize_project_toolAdopt a repository so its plan documents are tracked
create_project_toolCreate a project with git integration
list_projectsEvery project and its configuration
get_plan_configConfirm the plan directory and header format
configure_project_toolChange a project's settings
delete_project_toolDelete a project and its plan files from the database
create_plan_file_toolCreate a plan file (adds the YAML header, records v1)
update_plan_file_toolRevise a plan and record a new version
get_plan_file_toolRead a plan file
list_plan_files_toolList plan files in a project
get_plan_history_toolGet the full version history of a plan
get_plan_freshness_toolCheck a plan's freshness status and evidence before trusting it
propose_plan_revision_toolOffer a plan version for review
record_plan_review_decision_toolRecord a decision against a proposal
get_plan_workflow_status_toolA plan's open proposals and its accepted baseline
get_plan_assurance_toolWhether a plan is safe to implement, and exactly what it is if not
memory_rememberSave one durable fact for later sessions
memory_recallSearch memory, with the reason each result matched
memory_getRead one memory in full
memory_listBrowse memories in a project
memory_supersedeCorrect a memory by replacing it
memory_tagAdd or remove topic tags on a memory, without a new version
memory_tagsThe tags already in use, so new ones reuse them
memory_forgetStop recalling a memory
memory_considerPropose a memory for the person to approve
memory_pendingSuggestions still waiting on a decision
memory_decideApprove or reject a suggestion the user decided on
memory_policyWhat this project will let be remembered
memory_attachAttach a file to a memory as evidence
memory_detachRemove an attachment
memory_shareShare one memory with the team, when asked to
memory_withdrawAsk peers to stop recalling a shared memory
request_actionBring back a forgotten memory
skills_reportWhich copy of each skill loads, and what is wrong with them
skills_usageWhich skills were used here, and whether anything was watching
skills_submit_evidenceHand over work to learn from, and see what was handed over
skills_proposeDraft, revise and read skill proposals
skills_reviseDraft, revise and read skill proposals
mesh_statusSigned-in identity, workspaces, peers and skill transfers, read offline
messages_inboxUnread messages, or one whole thread
messages_sendMessage teammates or a workspace, after a preview
messages_replyAnswer everyone on a thread, after a preview
messages_muteMute or unmute a teammate on this device
messages_quiet_hoursShow, set or clear quiet hours on this device

Curb has no MCP tools

None of the tools above belongs to Flanner Curb, and that is deliberate. flanner curb map reports which credentials an agent could read and which channels could carry them away. flanner curb sweep reports where secrets were left behind. That is a target list for a prompt-injected agent, so it is not offered as a tool.

Your agent can still run the commands in its shell, where you see and approve each one. It gets back what every caller gets: severities, categories and counts. Never a credential's name, a location or a value.

For names and locations, you run flanner curb show yourself. It opens a window on your screen, and nothing from it comes back to the command. An agent that runs it gets only a notice.

flanner init also installs the agent-blast-radius skill for Claude Code and Codex. It tells the agent which Curb commands to run, to leave the hidden details alone, and to ask you to open flanner curb show when you want them. See the skill.