Summary
Pi's exe.dev ChatGPT LLM integration can fail immediately after a tool call with a Responses API 404:
OpenAI API error (404): 404 Item with id 'rs_...' not found. Items are not persisted when `store` is set to false. Try again with `store` set to true, or remove this item from your input.
Repro
On an exe.dev VM with the Pi exe.dev extension installed:
pi -p --mode json --session-dir /tmp/pi-repro-firecrawl \
--model openai/gpt-5.5@chatgpt-llm --thinking off \
'use firecrwal to crawl any page'
The first assistant turn reads the firecrawl-crawl skill, then the next Responses request fails with the 404 above.
Cause
The generic OpenAI Responses provider sends store: false. The exe.dev extension also rewrites ChatGPT-mode payloads with store: false. ChatGPT Responses can still return reasoning output items, which Pi stores in thinkingSignature and replays after a tool call.
Without include: ["reasoning.encrypted_content"], the stored reasoning item only contains an rs_... id. Since store was false, the backend cannot resolve that id on the next request.
Expected fix
For ChatGPT-mode Responses integration models:
- mark the generated model config as reasoning-capable
- request
reasoning.encrypted_content in the ChatGPT payload rewrite while preserving existing include values
This mirrors the Codex Responses provider behavior, which uses store: false and always includes encrypted reasoning for replay.
Summary
Pi's exe.dev ChatGPT LLM integration can fail immediately after a tool call with a Responses API 404:
Repro
On an exe.dev VM with the Pi exe.dev extension installed:
pi -p --mode json --session-dir /tmp/pi-repro-firecrawl \ --model openai/gpt-5.5@chatgpt-llm --thinking off \ 'use firecrwal to crawl any page'The first assistant turn reads the
firecrawl-crawlskill, then the next Responses request fails with the 404 above.Cause
The generic OpenAI Responses provider sends
store: false. The exe.dev extension also rewrites ChatGPT-mode payloads withstore: false. ChatGPT Responses can still returnreasoningoutput items, which Pi stores inthinkingSignatureand replays after a tool call.Without
include: ["reasoning.encrypted_content"], the stored reasoning item only contains anrs_...id. Sincestorewas false, the backend cannot resolve that id on the next request.Expected fix
For ChatGPT-mode Responses integration models:
reasoning.encrypted_contentin the ChatGPT payload rewrite while preserving existingincludevaluesThis mirrors the Codex Responses provider behavior, which uses
store: falseand always includes encrypted reasoning for replay.