Panniantong/Agent-Reach · error · ValueError

Automatic full-domain extraction is disabled for {spec['name

Error message

Automatic full-domain extraction is disabled for {spec['name']}.

What it means

Raised by extract_all() in agent_reach/cookie_extract.py when the resolved PlatformSpec has cookies=None, meaning the platform's spec deliberately disables whole-domain cookie harvesting. Only platforms with an explicit cookie-name list can be auto-extracted; for others the extraction backend would have to slurp every cookie, which the project forbids.

Source

Thrown at agent_reach/cookie_extract.py:235

    The legacy function name is retained for API compatibility, but an
    all-platform read is intentionally no longer supported.

    Returns:
        {"xueqiu": {"xq_a_token": "xxx"}}
    """
    spec = _platform_spec(platform)
    _require_browser_extractable(spec)
    browser = browser.lower()
    if browser not in SUPPORTED_BROWSERS:
        raise ValueError(
            f"Unsupported browser: {scrub_url_credentials(browser)}. "
            f"Supported: {', '.join(SUPPORTED_BROWSERS)}"
        )
    cookie_file = _profile_cookie_file(browser, profile) if profile else None
    needed_cookies = spec["cookies"]
    if needed_cookies is None:
        raise ValueError(
            f"Automatic full-domain extraction is disabled for {spec['name']}."
        )

    # Try rookiepy first (Rust-based, more stable), fallback to browser_cookie3
    use_rookiepy = False
    if cookie_file is None:
        try:
            import rookiepy
            use_rookiepy = True
        except ImportError:
            pass
    if not use_rookiepy:
        try:
            import browser_cookie3
        except ImportError:
            profile_hint = (
                f" for profile '{scrub_url_credentials(profile)}'"
                if profile is not None

View on GitHub (pinned to 93ae1d18c3)

Solutions

  1. Give the platform spec an explicit tuple of required cookie names so only those are read
  2. Use the manual Cookie-Editor export flow instead of automatic extraction for that platform
  3. Prefer bilibili/xueqiu for automatic extraction — their specs define cookie lists

Example fix

# before (spec definition)
{'config_key': 'foo', 'name': 'Foo', 'domains': ('foo.com',), 'cookies': None}

# after
{'config_key': 'foo', 'name': 'Foo', 'domains': ('foo.com',), 'cookies': ('session', 'token')}
Defensive patterns

Strategy: validation

Validate before calling

spec = _PLATFORM_SPECS_BY_KEY[platform.lower()]
if spec.get('cookies') is None:
    raise ValueError(f'{spec["name"]} cannot be auto-extracted; use Cookie-Editor')

Type guard

def has_cookie_list(spec) -> bool:
    return spec.get('cookies') is not None

Try / catch

try:
    extract_all(browser=b, platform=p)
except ValueError as e:
    if 'full-domain extraction is disabled' in str(e):
        run_cookie_editor_flow(p)
    else:
        raise

Prevention

When it happens

Trigger: A PlatformSpec whose 'cookies' field is None reaching the needed_cookies check — i.e. a platform added to PLATFORM_SPECS without a concrete cookie list (twitter/xhs are additionally blocked earlier by _require_browser_extractable).

Common situations: Extending PLATFORM_SPECS with a new platform and forgetting the 'cookies' tuple; custom forks that loosen the Cookie-Editor-only policy but skip defining which cookies matter.

Related errors


AI-assisted analysis of Panniantong/Agent-Reach@93ae1d18c3 (2026-08-14). Data as JSON: /api/errors/084ec9fa46e33c40. Report an issue: GitHub.