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

> Source: <https://dev.to/creeta/agent-reach-absorbed-bilibilis-412s-your-agent-kept-working-14ej>
> Published: 2026-08-04 09:49:53+00:00

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 .

| Platform | Primary backend | Fallback |
|---|---|---|
| Web pages | Jina Reader | — |
| YouTube | yt-dlp | — |
| GitHub | gh CLI | — |
| RSS | feedparser | — |
| Bilibili | bili-cli | OpenCLI (subtitles) |
| Twitter/X | twitter-cli | OpenCLI |
| OpenCLI | rdt-cli | |
| XiaoHongShu | OpenCLI | xhs-cli |
| linkedin-mcp | Jina Reader | |
| Global search | Exa 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:

``` python
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")
```

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 .

`~/.agent-reach-venv/`

is an equivalent fallback that runs the same install command .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`

.

Installation is agent-directed by design: a human pastes an install prompt pointing at the raw GitHub [install guide](https://github.com/DontFretBrett/Agent-Reach-English), 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 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.

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_AUTH_TOKEN`

and `TWITTER_CT0`

via `agent-reach configure twitter-cookies`

before direct twitter-cli calls will succeed; without them, calls fail .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.

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`

.

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 .

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 .

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 .

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 .
