{"record":{"id":"8bc3050cf715f3cb","repo":"bytedance/deer-flow","slug":"unknown-thread-state-field-s-join-unknown","errorCode":null,"errorMessage":"Unknown thread-state field(s): {', '.join(unknown_fields)}","messagePattern":"Unknown thread-state field\\(s\\): (.+?)","errorType":"http","errorClass":"HTTPException","httpStatus":422,"severity":"error","filePath":"backend/app/gateway/routers/threads.py","lineNumber":1273,"sourceCode":"            raise HTTPException(status_code=500, detail=\"Failed to get thread state\")\n        if checkpoint_tuple is None:\n            raise HTTPException(status_code=404, detail=f\"Checkpoint {body.checkpoint_id} not found\")\n\n    mutation_node = body.as_node or \"manual_state_update\"\n    # Resolve through the shared boundary (thread metadata -> assistant_id ->\n    # effective schema) so extension middleware channels stay writable.\n    accessor, read_config = await build_thread_checkpoint_state_mutation_accessor(\n        request,\n        thread_id=thread_id,\n        as_node=mutation_node,\n        checkpoint_id=body.checkpoint_id,\n    )\n    values = dict(body.values or {})\n    writable_channels = graph_writable_channels(getattr(accessor, \"graph\", None))\n    if writable_channels is not None:\n        unknown_fields = sorted(set(values) - writable_channels)\n        if unknown_fields:\n            raise HTTPException(\n                status_code=422,\n                detail=f\"Unknown thread-state field(s): {', '.join(unknown_fields)}\",\n            )\n    reducer_fields = graph_reducer_channels(getattr(accessor, \"graph\", None))\n    if reducer_fields is None:\n        reducer_fields = THREAD_STATE_REDUCER_FIELDS\n    updates = {key: Overwrite(value) if key in reducer_fields else value for key, value in values.items()}\n    try:\n        async with reserve_checkpoint_write(request, thread_id, user_id=get_effective_user_id()):\n            updated_config = await accessor.aupdate(\n                read_config,\n                updates,\n                as_node=mutation_node,\n            )\n            snapshot = await accessor.aget(updated_config)\n    except ConflictError:\n        raise HTTPException(status_code=409, detail=\"Thread has a run in flight. Update state after the run finishes.\") from None\n    except _CHECKPOINT_MODE_ERRORS as exc:","sourceCodeStart":1255,"sourceCodeEnd":1291,"githubUrl":"https://github.com/bytedance/deer-flow/blob/1dd6ba1acb03700589994b0366c5d1c7d05e2eff/backend/app/gateway/routers/threads.py#L1255-L1291","documentation":"Error \"Unknown thread-state field(s): {', '.join(unknown_fields)}\" thrown in bytedance/deer-flow.","triggerScenarios":"Thrown at backend/app/gateway/routers/threads.py:1273 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove the unknown fields listed in the error from the state update payload.","Check the thread-state API schema for the allowed field names."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"1dd6ba1acb03700589994b0366c5d1c7d05e2eff","analyzedAt":"2026-08-14T21:20:34.804Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}