bytedance/deer-flow · error

Failed to load features: ${res.statusText}

Error message

Failed to load features: ${res.statusText}

What it means

Raised when timeout_seconds is not finite (NaN/inf) or is <= 0. The value feeds the HTTP client's per-request timeout; non-positive or non-finite values would either be rejected by the HTTP layer or disable timeouts entirely, so config validation rejects them up front.

Source

Thrown at frontend/src/core/features/api.ts:12

import { fetch } from "@/core/api/fetcher";
import { getBackendBaseURL } from "@/core/config";

export interface FeaturesResponse {
  agents_api: { enabled: boolean };
  browser_control?: { enabled: boolean };
}

export async function fetchFeatures(): Promise<FeaturesResponse> {
  const res = await fetch(`${getBackendBaseURL()}/api/features`);
  if (!res.ok) {
    throw new Error(`Failed to load features: ${res.statusText}`);
  }
  return (await res.json()) as FeaturesResponse;
}

export async function fetchAgentsApiEnabled(): Promise<boolean> {
  return (await fetchFeatures()).agents_api.enabled;
}

export async function fetchBrowserControlEnabled(): Promise<boolean> {
  return (await fetchFeatures()).browser_control?.enabled ?? false;
}

View on GitHub (pinned to 1dd6ba1acb)

Solutions

  1. Set a sane positive finite timeout, e.g. timeout_seconds: 30 (the default).
  2. Make templating fail when the value is unset instead of emitting nan/inf.
  3. For slow servers raise it moderately (60-120) rather than trying to disable it.

Example fix

# before
backend_config:
  timeout_seconds: 0  # or .nan

# after
backend_config:
  timeout_seconds: 30
Defensive patterns

Strategy: validation

Validate before calling

from math import isfinite


def check_timeout(value: float) -> None:
    assert isfinite(value) and value > 0, 'timeout_seconds must be finite and > 0'

Prevention

When it happens

Trigger: Setting timeout_seconds: 0 or a negative number, or a templated value that expands to .nan/.inf in YAML. int()/float() coercion of malformed values also lands here. Validation runs during _validate.

Common situations: Templated YAML expanding to .nan; setting 0 to mean 'no timeout'; huge values overflowing to inf; template leaving the value unset and a placeholder string failing coercion.

Related errors


AI-assisted analysis of bytedance/deer-flow@1dd6ba1acb (2026-08-14). Data as JSON: /api/errors/b51605a0de8c88df. Report an issue: GitHub.