Open in Claude Code, Open in Codex and Open in Cursor on a ticket hand the task to the coding app on your machine (see Tickets and pull requests). The app works through the Gleap MCP server and reports back to a coding session on the ticket, the same session view Kai Code's own runs use: the live plan, screenshots and pages the agent shares, the pull request, and a next-step card at the end of each turn.
Set up
The Gleap plugin is the recommended setup. It adds the Gleap MCP server, the fix-ticket and answer-ticket skills, and hooks that keep the session's plan and recap in sync:
claude plugin marketplace add GleapSDK/gleap-claude-plugin
claude plugin install gleap@gleapWorkspaces hosted in the US install gleap-us@gleap instead. Install one of the two, not both. On Claude Code 2.1.275 or later, /plugin install gleap --marketplace GleapSDK/gleap-claude-plugin inside a session does both steps.
Start a new session, open /mcp, select the gleap server and choose Authenticate to sign in with Gleap and pick your projects (see Choose your projects).
The same plugin works in Codex:
codex plugin marketplace add GleapSDK/gleap-claude-plugin
codex plugin add gleap@gleapUS workspaces add gleap-us@gleap. In the ChatGPT desktop app, the link codex://plugins/install/gleap?marketplace=gleap opens the install once the marketplace is added. Start a new session, then run /hooks and trust the three Gleap hooks: Codex runs plugin hooks only after you trust them. Run codex mcp login gleap if Codex doesn't ask you to sign in.
Without the plugin, add the Gleap MCP server for your region and sign in with Gleap (OAuth):
Data region | MCP server URL |
|---|---|
EU (default) |
|
US |
|
claude mcp add --scope user --transport http gleap https://mcp.gleap.ai/mcp
codex mcp add gleap --url https://mcp.gleap.ai/mcpEverything below works the same; only the plan mirroring and the automatic recap need the plugin's hooks.
The workflow the agent follows also covers setup: when the Gleap tools are missing, the agent installs the plugin (or adds the MCP server) itself and tells you which command restarts the session.
Start a ticket
From Gleap: Open in … on the ticket. The kickoff names the ticket, the repository and the session ("tracked as Gleap coding session …").
From the agent: ask for it ("fix Gleap ticket #1234"), run the plugin skill (
/gleap:fix-ticket 1234,/gleap:answer-ticket 1234; with the US plugin/gleap-us:fix-ticket 1234,/gleap-us:answer-ticket 1234), or use the MCP prompts below. Without a session id the agent passesticketIdand Gleap continues the ticket's open session or starts one for you.
Either way, the first call is report_progress with phase investigating, then get_agent_workflow for the instructions: how to investigate, branch, open the pull request and write the customer messages under this project's rules.
MCP prompts
Prompt | Argument | What it does |
|---|---|---|
|
| Starts the fix workflow (the feature workflow for a feature request) with a summary of the ticket. |
|
| Starts the investigate-and-answer workflow: no code changes, the reply is drafted in the ticket composer. |
Most MCP clients list prompts as slash commands; type / and search for fix_ticket.
Session tools
These Gleap MCP tools address the session the same way as report_progress: sessionId from the kickoff or a previous result, or ticketId when there is none. Each result names the session id to use next.
Tool | What it does |
|---|---|
| Phase changes: |
| The workflow as Markdown for |
| The whole plan in order, |
| Posts a screenshot into the session with a one-line |
| Publishes one self-contained HTML page (at most 1 MB) into the session: reports, root-cause write-ups, mockups. Returns the dashboard link; pass the |
| The next-step card at the end of a turn: a |
| The screenshot the Gleap SDK captured with the ticket, as an image (up to 2 MB). |
Wrap-up actions
Each action has a label (1 to 3 words) and an action:
| Available when | In Gleap |
|---|---|---|
| the session has an open pull request | Opens it. |
| the session has an open pull request | Opens the changes. |
| a GitHub pull request, the project's Merge from Gleap switch is on, and the pull request is mergeable with no failing checks | Merges it; only the session owner or a project admin. Pull requests on other providers are merged there. |
| a preview is running | Opens the preview. |
| the session is linked to a ticket; pass the draft as | Puts the draft in the ticket composer. Gleap never sends it on its own. |
A local agent can't receive a button click as a message, so its actions always name an action. Anything else you answer in the agent's chat.
What report_progress returns
Besides the confirmation, the project's customer-message rules and the session id, every result carries two fields for the agent:
Field | Meaning |
|---|---|
|
|
|
|
get_agent_workflow returns the same hook block, and the other session tools return stop and hook when they apply.
Blocked means waiting on you
When the agent reports blocked, it needs something from you: a decision, an account detail, an access it lacks. The session shows as Waiting on you in Claude Code (or the app's name) with the agent's question. It stays that way and does not expire like a session that went silent; answer in the agent's chat, and its next report (investigating, fixing and so on) picks the session back up.
What the plugin's hooks send
The hooks run only in a folder that has a .gleap/session.json, which the agent writes for sessions started from or reported to Gleap. Then:
When | Sent to Gleap |
|---|---|
The agent updates its own plan (Claude Code's task or todo tool, Codex's plan tool) | The plan items: text and status. |
A turn ends | The agent's last message, at most 4,000 characters. Gleap uses it as the turn's recap when the agent didn't call |
A session starts or resumes | Only that the agent is still there. |
Nothing else leaves your machine through the hooks: no code, files, tool output or transcript. The hook script sends only to Gleap hosts, gives up after 2 seconds, and never blocks or fails the agent. Delete .gleap/ in a repository to stop the hooks there; uninstall the plugin (claude plugin uninstall gleap@gleap, codex plugin remove gleap@gleap) to stop them everywhere.

