bytedance/deer-flow · error · HTTPException
Failed to delete custom skill: {str(e)}
Error message
Failed to delete custom skill: {str(e)} What it means
Error "Failed to delete custom skill: {str(e)}" thrown in bytedance/deer-flow.
Source
Thrown at backend/app/gateway/routers/skills.py:331
history_meta={
"action": "human_delete",
"author": "human",
"thread_id": None,
"file_path": SKILL_MD_FILE,
"prev_content": None,
"new_content": None,
"scanner": {"decision": "allow", "reason": "Deletion requested."},
},
)
await refresh_user_skills_system_prompt_cache_async(get_effective_user_id())
return {"success": True}
except FileNotFoundError as e:
raise HTTPException(status_code=404, detail=str(e))
except ValueError as e:
raise HTTPException(status_code=400, detail=str(e))
except Exception as e:
logger.error("Failed to delete custom skill %s: %s", skill_name, e, exc_info=True)
raise HTTPException(status_code=500, detail=f"Failed to delete custom skill: {str(e)}")
@router.get("/skills/custom/{skill_name}/history", response_model=CustomSkillHistoryResponse, summary="Get Custom Skill History")
async def get_custom_skill_history(skill_name: str, request: Request, config: AppConfig = Depends(get_config)) -> CustomSkillHistoryResponse:
await require_admin_user(request, detail=_ADMIN_REQUIRED_DETAIL)
try:
skill_name = skill_name.replace("\r\n", "").replace("\n", "")
def _read_history() -> list[dict] | None:
# Worker thread: storage construction, the existence probes, and the
# history-file read are blocking filesystem IO that must stay off the
# event loop. None signals 404 to the caller.
storage = _get_user_skill_storage(config)
if not storage.custom_skill_exists(skill_name) and not storage.get_skill_history_file(skill_name).exists():
return None
return storage.read_history(skill_name)
history = await asyncio.to_thread(_read_history)View on GitHub (pinned to 1dd6ba1acb)
Solutions
- Check the Gateway logs for the underlying delete error.
- Verify the custom skill exists and no process holds locks on its directory, then retry.
When it happens
Trigger: Thrown at backend/app/gateway/routers/skills.py:331 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of bytedance/deer-flow@1dd6ba1acb (2026-08-14).
Data as JSON: /api/errors/137853499e72d471.
Report an issue: GitHub.