bytedance/deer-flow · error · HTTPException

Failed to get skill: {str(e)}

Error message

Failed to get skill: {str(e)}

What it means

Error "Failed to get skill: {str(e)}" thrown in bytedance/deer-flow.

Source

Thrown at backend/app/gateway/routers/skills.py:429

    response_model=SkillResponse,
    summary="Get Skill Details",
    description="Retrieve detailed information about a specific skill by its name.",
)
async def get_skill(skill_name: str, config: AppConfig = Depends(get_config)) -> SkillResponse:
    try:
        skill_name = skill_name.replace("\r\n", "").replace("\n", "")
        skills = _get_user_skill_storage(config).load_skills(enabled_only=False)
        skill = next((s for s in skills if s.name == skill_name), None)

        if skill is None:
            raise HTTPException(status_code=404, detail=f"Skill '{skill_name}' not found")

        return _skill_to_response(skill)
    except HTTPException:
        raise
    except Exception as e:
        logger.error(f"Failed to get skill {skill_name}: {e}", exc_info=True)
        raise HTTPException(status_code=500, detail=f"Failed to get skill: {str(e)}")


def _write_extensions_skill_state(
    storage: SkillStorage,
    skill_name: str,
    enabled: bool,
    *,
    rebuild_public_projection: bool,
) -> None:
    """Read-modify-write a skill's enabled state in the shared extensions_config.json.

    Blocking filesystem IO: always call this via ``asyncio.to_thread``. It takes
    the public projection lock before ``extensions_config_write_lock``. The first
    keeps the enabled-only view synchronized across workers; the second prevents
    this router and the MCP router from interleaving writes to the shared file.
    Both locks are held by the worker, so request cancellation cannot release
    either lock while the write or projection rebuild is still running.
    """

View on GitHub (pinned to 1dd6ba1acb)

Solutions

  1. Check the Gateway logs for the underlying read error.
  2. Verify the skill files on disk are readable and not corrupted.

When it happens

Trigger: Thrown at backend/app/gateway/routers/skills.py:429 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/3bc4afb6e1fb9e5a. Report an issue: GitHub.