Agent-Reach absorbed Bilibili's 412s — your agent kept working

Agent-Reach v1.5.0 routes Claude Code to 13 channels — Jina, yt-dlp, gh CLI, feedparser — MIT-licensed, Python 3.10+.

Agent-Reach absorbed Bilibili's 412s — your agent kept working
Share

Bilibili's 412 Incident, Explained: How v1.5.0 Absorbed It

Screenshot of https://aitoolly.com/ai-news/article/2026-06-07-agent-reach-empowering-ai-agents-with-multi-platform-internet-access-via-zero-cost-cli-tool

In June 2026, Bilibili quietly began rejecting yt-dlp with HTTP 412 errors. Agents wired to scrape it broke — except the ones sitting behind Agent-Reach, which rerouted the channel before most developers noticed.

Agent-Reach is a local, MIT-licensed capability layer that gives shell-capable coding agents live internet access by selecting and routing to upstream CLIs rather than proxying data itself . When Bilibili started 412-blocking yt-dlp in June 2026, v1.5.0 rerouted the Bilibili channel to bili-cli with zero user action, while YouTube kept using yt-dlp untouched . The fix landed centrally: the maintainer reordered backends, so no individual builder had to patch a private integration.

Quick Answer: When Bilibili began returning HTTP 412 to yt-dlp in June 2026, Agent-Reach v1.5.0 automatically rerouted its Bilibili channel to bili-cli — agents kept working with no user action. The release passed 32 end-to-end tests across 13 channels and grew its suite from 107 to 162 tests.

The framing shift matters: v1.5.0 describes itself as a capability layer, not a tool collection. Each platform gets an ordered primary-plus-fallback backend list; after setup, your agent calls those CLIs directly and Agent-Reach never sits in the data path . The June 11, 2026 release passed 32 end-to-end tests across 13 channels and grew its test suite from 107 to 162 tests .

PlatformPrimary backendFallback
Web pagesJina Reader
YouTubeyt-dlp
GitHubgh CLI
RSSfeedparser
Bilibilibili-cliOpenCLI (subtitles)
Twitter/Xtwitter-cliOpenCLI
RedditOpenCLIrdt-cli
XiaoHongShuOpenCLIxhs-cli
LinkedInlinkedin-mcpJina Reader
Global searchExa via mcporter
"capability layer: multi-backend routing + real doctor + OpenCLI" — Agent-Reach v1.5.0 release framing (source: Agent-Reach CLAUDE.md).

The behavior is easy to model. The following minimal snippet — which was executed and returns exit 0 — illustrates the "absorb and keep working" contract that centralized rerouting delivers:

class Bilibili412(Exception):
    pass


def bilibili_fetch():
    raise Bilibili412("Bilibili returned HTTP 412")


def agent_reach(task):
    try:
        return task()
    except Bilibili412 as exc:
        return f"absorbed {exc}; agent kept working"


print("Agent-Reach:", agent_reach(bilibili_fetch))
print("next step: summarize cached context")

Minimum Prerequisites Before the Agent-Directed Install

Screenshot of https://github.com/Panniantong/Agent-Reach/blob/main/docs/install.md

Before you hand the install prompt to your agent, three things need to be in place: a real Python interpreter, an isolation mechanism, and — only if you want desktop-session backends — Node.js. Agent-Reach requires Python 3.10 or newer . On Windows, prefer py -3 if python3 resolves to the Microsoft Store stub instead of a real interpreter .

  • Isolation: pipx is the recommended path; a venv under ~/.agent-reach-venv/ is an equivalent fallback that runs the same install command .
  • Node.js 20+: only needed if you plan to activate OpenCLI, which unlocks Reddit, Facebook, Instagram, Bilibili subtitles, and XiaoHongShu desktop access .

One trap to avoid: the name agent-reach on PyPI points to an unrelated v0.1.0 package by a different author (jgalea/agent-reach, uploaded August 2, 2026) . Always install from the GitHub archive URL, never from a blind pip install agent-reach .

How to Install Agent-Reach: pipx, --env=auto, and the Venv Alternative

How to Install Agent-Reach: pipx, --env=auto, and the Venv Alternative

Installation is agent-directed by design: a human pastes an install prompt pointing at the raw GitHub install guide, and the agent runs the commands while keeping files out of your project workspace . Below is the direct copy-paste path for the Panniantong build, version 1.5.0.

Step 1 — pipx (recommended):

pipx install https://github.com/Panniantong/agent-reach/archive/main.zip

Step 2 — provision the capability layer:

agent-reach install --env=auto

The --env=auto flag auto-detects whether you are on a local machine or a server, then sets up core infrastructure: gh CLI, Node.js, mcporter, Exa search, and a yt-dlp config . After this runs, seven zero-config channels work without any login — Web via Jina Reader, YouTube, GitHub, RSS, Exa Search, V2EX, and basic Bilibili .

Step 3 — venv alternative (if you avoid pipx): create an isolated environment, activate it, install the same archive, and run the identical setup command :

python3 -m venv ~/.agent-reach-venv
source ~/.agent-reach-venv/bin/activate
pip install https://github.com/Panniantong/agent-reach/archive/main.zip
agent-reach install --env=auto

On Windows, use py -3 if python3 resolves only to the Microsoft Store alias .

Verify: run agent-reach version to confirm you have the Panniantong build and not the unrelated PyPI package, then run agent-reach doctor --json. The v1.5.0 doctor is a live health check that reports active_backend per channel and isolates failures, so one broken channel does not abort the full report .

Preview first: to see what would be touched outside ~/.agent-reach/ without changing anything, add --dry-run:

agent-reach install --env=auto --dry-run

Reddit Access Restrictions, Expiring Cookies, and Archive-Only Install

Reddit has no zero-config path in Agent-Reach: anonymous API access is blocked, and official API access is approval-based, so the channel is not activated by the base install. It routes through OpenCLI first, then rdt-cli, and the docs flag it as inherently fragile . Expect breakage when Reddit tightens controls, and do not treat access as permanent.

The other login-gated channels — Twitter, XiaoHongShu, Facebook, Instagram, and Xueqiu — need a one-time browser cookie export via the Cookie-Editor extension before they work, and Twitter additionally wants TWITTER_AUTH_TOKEN and TWITTER_CT0 set for direct twitter-cli calls . Cookie-backed access carries account-ban and credential-exposure risk, so the official docs recommend a dedicated secondary "agent" account rather than your primary login.

Two durability notes matter here. First, channel availability is not stable: v1.4.2 deliberately removed the Douyin, Weibo, and WeChat public-account channels the maintainers judged too unreliable to keep — do not expect a dropped channel to reappear. Second, OpenCLI drives your existing logged-in Chrome session and stores credentials only under ~/.agent-reach/config.yaml at owner-only 0600 permissions, never uploaded . The local-first storage limits credential leakage, but the docs are explicit that ToS exposure for cookie-based scraping of walled platforms remains unresolved.

What to Configure Next: Twitter, LinkedIn, and XiaoHongShu

Once the base install is healthy, add login-gated platforms explicitly — they are not part of the zero-config set. One command enables the common trio: agent-reach install --env=auto --channels=twitter,linkedin,xiaohongshu, or use --channels=all to activate every supported channel in a single pass . Each channel then routes through its documented backend.

  • Twitter/X — set TWITTER_AUTH_TOKEN and TWITTER_CT0 via agent-reach configure twitter-cookies before direct twitter-cli calls will succeed; without them, calls fail .
  • LinkedIn — uses linkedin-mcp with Jina Reader as a fallback, so public profile reads work without a cookie export .
  • XiaoHongShu — routes to OpenCLI on desktop, then xiaohongshu-mcp on servers, then xhs-cli .

Stay current with the same archive-based path: run agent-reach check-update, upgrade from the GitHub archive URL, then run agent-reach doctor to confirm each active_backend is healthy after the upgrade . The concrete takeaway: enable only the channels you use, keep cookies on a dedicated agent account, and let doctor — not a broken scrape mid-task — tell you when a backend has moved.

Frequently asked questions

Is Agent-Reach available on PyPI?

No — the official Panniantong project is not distributed through PyPI. The name agent-reach on PyPI belongs to an unrelated package (v0.1.0 by Jean Galea, sourced from jgalea/agent-reach) uploaded on August 2, 2026, so a blind pip install agent-reach would fetch the wrong project. Install from the GitHub archive instead: pipx install https://github.com/Panniantong/agent-reach/archive/main.zip .

Does Agent-Reach send my credentials or browsing data to a remote server?

No. Agent-Reach is a local-only capability layer and is never in the request or response data path — it only selects, health-checks, and routes to upstream CLIs that the agent then calls directly. Credentials and tokens live under ~/.agent-reach/ (config at ~/.agent-reach/config.yaml) with owner-only 0600 permissions and are never uploaded .

What happens when a platform changes its anti-bot rules?

The maintainers reorder or swap the affected backend in the next release, so builders do not patch private integrations. The canonical case: in June 2026 Bilibili began 412-blocking yt-dlp, and Agent-Reach switched the primary Bilibili backend from yt-dlp to bili-cli with zero user action . To pull a fix, run agent-reach check-update and upgrade from the archive URL .

Does Agent-Reach work with Cursor, Windsurf, or Codex — not just Claude Code?

Yes. Any shell-capable coding agent works, including Claude Code, Cursor, Windsurf, Codex, and OpenClaw. Agent-Reach installs a SKILL.md instruction layer that tells the agent which channels are available and healthy; the agent then invokes the upstream CLIs directly rather than through a proprietary API .

Why does Reddit not have a zero-config path?

Anonymous Reddit API access is blocked, and official API access is approval-based, so there is no login-free route. Even with OpenCLI or rdt-cli configured, the channel depends on a personal session and is inherently fragile, which is why the docs treat Reddit as best-effort rather than a reliable channel .

Enjoyed this article? Subscribe to get new stories by email whenever they're published.

Subscribe

AI developer tools and ecosystem news for developers and technical founders

Sign up for insights and ideas

Subscribe for the latest news, stories, tips, and updates.

Subscribe