{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreicga2bjwpaleelivmyp3idbm4dpl4wwjyykwqjm3633wfxpavwbui",
"uri": "at://did:plc:lk3jfj3zq4k4wxnk474axylu/app.bsky.feed.post/3mggh5qwwslm2"
},
"path": "/t/store-false-breaks-multi-turn-computer-use/1375928#post_1",
"publishedAt": "2026-03-06T22:50:04.000Z",
"site": "https://community.openai.com",
"tags": [
"@-"
],
"textContent": "## Summary\n\nWhen using the Responses API with `store: false` and the computer tool, multi-turn conversations fail on the second turn. The API returns output items (reasoning, message, computer_call) with server-generated `id` fields. When those items are sent back as conversation history in the next request, the API tries to resolve those IDs against server-side storage — which doesn’t exist because `store: false` was set.\n\n## Two failure modes\n\n### 1. 404 — reasoning item present\n\nIf the response’s `output` array is passed back verbatim (including the `reasoning` item with its `rs_` prefixed ID), the API returns **404 Not Found**.\n\n### 2. 500 — reasoning item omitted, other IDs remain\n\nThe 404 error message suggests removing the unresolvable item. If you strip the `reasoning` item (which has an empty `summary` and no useful content anyway), the request gets past the 404 — but then the API returns **500 Internal Server Error**.\n\n## Expected behavior\n\nThe API should accept verbatim playback of the output items it returned, or the docs should describe what transformations are needed for `store: false` multi-turn.\n\n## Reproduction\n\nThis attached script exercises both cases with a single minimal request body.\n\n\n set -euo pipefail\n set -a; source .env; set +a\n\n : \"${OPENAI_API_KEY:?Set OPENAI_API_KEY}\"\n\n # 1x1 red PNG as a minimal valid screenshot\n TINY_PNG=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==\"\n\n COMMON=(-s -H \"Authorization: Bearer $OPENAI_API_KEY\" -H \"Content-Type: application/json\")\n\n REASONING_ITEM='{\n \"id\": \"rs_083ff13b99ce487d0169ab5455d3c4819a9e2efe7f45534b3c\",\n \"type\": \"reasoning\",\n \"summary\": []\n },'\n\n send_request() {\n local reasoning_item=\"$1\"\n curl \"${COMMON[@]}\" https://api.openai.com/v1/responses -d @- <<EOF\n {\n \"instructions\": \"You are controlling a browser-based kanban app through the built-in computer tool.\",\n \"input\": [\n {\n \"content\": [\n { \"text\": \"what's on the desktop\", \"type\": \"input_text\" }\n ],\n \"role\": \"user\"\n },\n ${reasoning_item}\n {\n \"id\": \"msg_083ff13b99ce487d0169ab545999d0819aa3edf6123fdab1f9\",\n \"type\": \"message\",\n \"status\": \"completed\",\n \"content\": [\n { \"type\": \"output_text\", \"text\": \"\" }\n ],\n \"role\": \"assistant\"\n },\n {\n \"id\": \"cu_083ff13b99ce487d0169ab5459c7e4819a9f0c36ae97db6e86\",\n \"type\": \"computer_call\",\n \"status\": \"completed\",\n \"actions\": [{ \"type\": \"screenshot\" }],\n \"call_id\": \"call_2dugsE4CytbpbsqMriR5KV5C\"\n },\n {\n \"type\": \"computer_call_output\",\n \"call_id\": \"call_2dugsE4CytbpbsqMriR5KV5C\",\n \"output\": {\n \"type\": \"computer_screenshot\",\n \"image_url\": \"${TINY_PNG}\"\n }\n }\n ],\n \"model\": \"gpt-5.4\",\n \"reasoning\": { \"effort\": \"low\" },\n \"store\": false,\n \"tools\": [{ \"type\": \"computer\" }]\n }\n EOF\n echo \"\"\n }\n\n echo \"--- Test 1: with reasoning item → expect 404 ---\"\n send_request \"$REASONING_ITEM\"\n\n echo \"--- Test 2: reasoning removed → expect 500 ---\"\n send_request \"\"\n\n\n\n### Prerequisites\n\n * `OPENAI_API_KEY` set in the environment (or in a `.env` file in the working directory)\n * `curl` and `bash`\n\n\n\n### Running\n\nThe script runs two requests and prints the API error response for each.\n\n## Environment\n\n * Model: `gpt-5.4`\n * Endpoint: `POST /v1/responses`\n * Tool: `computer`\n * `store: false`\n\n",
"title": "`store: false` breaks multi-turn computer-use"
}