Pair Claude Code or Codex
with any goal.
goals. exposes a Model Context Protocol server so Claude Code, Cowork, Codex, or another MCP client can join one of your goals as an AI teammate. Once paired, it reads the goal's open todos, checklist items, repo path, and chat history — then writes results back as the agent. You get an APNs push when the work lands.
What pairing does
Pairing connects one coding-agent session to one (goal, agent) pair. The session can read what the agent can read and write what the agent can write — nothing else in your account. Pairing is session-scoped: idle sessions tear themselves down so you don't accumulate stale connections.
Reads the goal's full state
Open todos, completed todos, sub-todos, the goal's chat history, the team's shared memories, and the effective repo path for that session. The coding agent starts each turn with real context, not a cold prompt.
Acts as the agent
When the paired client calls append_message, complete_sub_todo, or complete_todo, the change shows up in the goal chat or todo list as the agent — same avatar, same name as if you tapped a button in the app.
Pushes when work lands
An APNs push fires the moment the paired session posts a reply or marks a todo done, so you find out from your phone instead of refreshing a tab.
Per-goal isolation
A single client window only ever speaks for one agent on one goal at a time. Want a second agent on a second goal? Open a second Claude Code, Cowork, or Codex session and pair it.
Two ways to set it up
Pick whichever matches how you already work. The OAuth path is the smoother UX — recommended for most people. The PAT path stays available for headless / server / scripted setups where the OAuth dance isn't practical.
OAuth 2.1 connector
- Open claude.ai/settings/connectors and add
https://trygoals.app/mcp. - For Codex, run
codex mcp add goals-app --url https://trygoals.app/functions/v1/mcp, thencodex mcp login goals-app. Forcodex exec, setdefault_tools_approval_mode = "approve"under[mcp_servers.goals-app]in~/.codex/config.toml. - Confirm the consent screen. The client dynamically registers as an OAuth client (DCR); no manual app registration.
- In goals., open the goal you want to pair → Pair Claude. The app shows a six-digit code (5-min TTL).
- Back in your coding client, run the
pair_sessiontool with that code. If the client knows its local checkout root, it can pass that asrepo_path; otherwise goals falls back to the goal's default path.
Personal access token
- In goals., go to Settings → Agents → Add device. The app mints a token and shows you the plaintext exactly once (it's hashed with SHA-256 at rest).
- Copy the generated Claude/Cowork or Codex command and paste it into your terminal.
- From any session pointed at that MCP config, call
pair_sessionwith a six-digit code from the app's pairing sheet — same as the OAuth path. Each session can keep its own local repo path.
What a coding agent can do once paired
The MCP server exposes tools grouped roughly by what an agent on a real team would need. The full list is discoverable from the MCP tools/list endpoint; the highlights:
Read the team's state
get_paired_context · get_goal · list_goals — fetch the live goal, current open todos, recent chat, and shared memories.
Talk in the chat
append_message — post a reply (markdown supported) into the goal's chat thread as the agent.
Mark work done
complete_sub_todo · complete_todo — strike off checklist items as partial work lands, then close the parent todo when it is truly done.
Plan + reshape work
add_sub_todo · schedule_todo · edit_todo · edit_goal — break work down, place it on the calendar, or reshape the goal itself.
Reassign across the team
assign_todo — hand a todo to a teammate (human or another agent). Validated by a Postgres trigger so the assignee actually belongs to the goal.
Build long-term memory
add_memory — propose a fact about the user / project that future Keen and agent prompts will see. The user approves it from a card before it lands.
A typical session
What it looks like when you assign a todo to a paired coding agent on a "Ship the goals-app website refresh" goal.
You
@CodeBot can you tackle the new "Solo on Sunday. A team by Tuesday." section on the marketing site? Three cards, mirror the Four-signals layout. Repo's already on the goal.
CodeBot · paired coding agent
On it. I'll branch off main, add the section between #how and .features-section, ship a 3-up grid that matches .features, and push to a new branch for review.
CodeBot · paired coding agent
Pushed 8756980 to claude/website-collab-section-GIZtt. Section + matching FAQ + JSON-LD all in. Marked the todo done. Want me to keep going on Tier 2 or pause for review?
Included with your subscription.
The MCP coding-agent bridge ships with every goals. account. No separate plan, no extra fee. You bring your own Claude Code, Cowork, or Codex setup; we do the wiring. Want the longer story behind why we built this and how it's wired? Read "We built a Claude Code bridge into our todo app."
Download on the App Store