{"record":{"id":"0398a4b8d0cebd4c","repo":"bytedance/deer-flow","slug":"edited-message-is-unchanged","errorCode":null,"errorMessage":"Edited message is unchanged","messagePattern":"Edited message is unchanged","errorType":"http","errorClass":"HTTPException","httpStatus":409,"severity":"error","filePath":"backend/app/gateway/routers/thread_runs.py","lineNumber":740,"sourceCode":"\n    accessor, latest_config = await build_thread_checkpoint_state_accessor(request, thread_id=thread_id)\n    try:\n        latest_checkpoint = await accessor.aget(latest_config)\n    except Exception as exc:\n        logger.exception(\"Failed to read latest checkpoint for edit replay thread %s\", thread_id)\n        raise HTTPException(status_code=500, detail=\"Failed to read latest checkpoint\") from exc\n    latest_checkpoint_id = _checkpoint_configurable(latest_checkpoint).get(\"checkpoint_id\")\n    if not latest_checkpoint_id:\n        raise HTTPException(status_code=404, detail=f\"Thread {thread_id} has no checkpoint\")\n\n    messages = _checkpoint_messages(latest_checkpoint)\n    if _has_active_goal(latest_checkpoint):\n        raise HTTPException(status_code=409, detail=\"Cannot edit while a goal is active\")\n\n    _, source_human, _, source_ai, source_message_ids = _latest_editable_turn(messages, human_message_id)\n    source_text = get_original_user_content_text(_message_content(source_human), _message_additional_kwargs(source_human)).strip()\n    if normalized_text == source_text:\n        raise HTTPException(status_code=409, detail=\"Edited message is unchanged\")\n\n    source_human_id = _message_id(source_human)\n    source_ai_id = _message_id(source_ai)\n    if not source_human_id:\n        raise HTTPException(status_code=409, detail=\"The source user message is missing an id\")\n    if not source_ai_id:\n        raise HTTPException(status_code=409, detail=\"The source assistant message is missing an id\")\n\n    base_checkpoint_tuple = await _find_base_checkpoint_before_human(\n        thread_id,\n        source_human_id,\n        request,\n        head_checkpoint=latest_checkpoint,\n    )\n    target_run_id = await _find_target_run_id(thread_id, source_ai_id, source_ai, source_human, request)\n    source_record = await _require_successful_source_run(thread_id, target_run_id, request)\n    checkpoint = _checkpoint_response(base_checkpoint_tuple)\n    replacement_human_message_id = str(uuid.uuid4())","sourceCodeStart":722,"sourceCodeEnd":758,"githubUrl":"https://github.com/bytedance/deer-flow/blob/1dd6ba1acb03700589994b0366c5d1c7d05e2eff/backend/app/gateway/routers/thread_runs.py#L722-L758","documentation":"Error \"Edited message is unchanged\" thrown in bytedance/deer-flow.","triggerScenarios":"Thrown at backend/app/gateway/routers/thread_runs.py:740 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Change the message text before submitting; identical content is rejected.","Cancel the edit if no change is intended."],"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"}