figma/use_figma hangs in interactive Codex and cancels in codex exec
Summary
Codex can reach the Figma MCP server well enough for whoami and get_metadata, but use_figma is still broken on the same authenticated file.
There are two observed failure modes:
- nested
codex execreturnsuser cancelled MCP tool call - interactive Codex dispatches
use_figma, then hangs for several minutes and only surfaces the same cancellation after manual interruption
Environment
- Codex CLI: 0.118.0
- Model: gpt-5.4
- OS: Linux x86_64 (WSL2)
- Approval mode: never
- Active Codex MCP config: URL-only OAuth for
https://mcp.figma.com/mcp - Figma seat/plan: Full seat on Pro
Minimal repro
- Confirm Figma MCP is registered and logged in:
codex mcp get figma
- Run the tracked repro helper:
python3 scripts/codex_figma_use_figma_repro.py --mode exec --file-key 5ilg4oRfpF04a2SUZsHXSK
- For the interactive variant, run the same prompt through the TUI:
codex --no-alt-screen -C <repo> "<prompt>"
The repro prompt forces the figma and figma-use skills into scope and asks Codex to make exactly one read-only use_figma call that returns only pageCount and ordered pageNames. It explicitly forbids fallback calls like whoami and get_metadata.
Expecteduse_figma should either:
- return JSON with
pageCountandpageNames, or - fail with a concrete Figma-side error such as auth or file permission
Actual
Nested codex exec
- returns:
user cancelled MCP tool call
Interactive Codex
- dispatches
mcp__figma__use_figma - then emits no completion for about 6 minutes 48 seconds
- after manual interruption, the session records:
mcp_tool_call_end ... result.Err = "user cancelled MCP tool call"function_call_output = [{"type":"text","text":"user cancelled MCP tool call"}]
What is already ruled out
- Figma auth is broadly working enough for other tools
figma/whoamisucceedsfigma/get_metadatasucceeds against the same file key- the failing call includes
skillNames: "figma-use" - prompt complexity is not the issue; the repro is a trivial read-only script against
figma.root.children
Concrete interactive evidence
- Session id:
019d6c41-37ad-7150-9e64-c251f5b6730e - Tool call id:
call_Uxki8nSQa34Gmacq1cG5toVd - Tool dispatch timestamp:
2026-04-08T08:42:35.057Z - Tool end timestamp:
2026-04-08T08:49:23.162Z
Relevant session excerpt
{"timestamp":"2026-04-08T08:42:35.057Z","type":"response_item","payload":{"type":"function_call","name":"mcp__figma__use_figma","call_id":"call_Uxki8nSQa34Gmacq1cG5toVd"}}
{"timestamp":"2026-04-08T08:49:23.162Z","type":"event_msg","payload":{"type":"mcp_tool_call_end","call_id":"call_Uxki8nSQa34Gmacq1cG5toVd","result":{"Err":"user cancelled MCP tool call"}}}
{"timestamp":"2026-04-08T08:49:23.162Z","type":"response_item","payload":{"type":"function_call_output","call_id":"call_Uxki8nSQa34Gmacq1cG5toVd","output":"[{\"type\":\"text\",\"text\":\"user cancelled MCP tool call\"}]"}}
Why this looks like a Codex-side issue
- the same authenticated file works with other Figma MCP tools
use_figmais reached and dispatched, so this is not a simple tool discovery problem- the failure mode differs by Codex surface:
execfast-cancels- interactive TUI stalls, then resolves to the same cancellation only after interruption
If helpful, I can provide the full local JSONL session transcript and the exact repro helper script body.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗