pi-sub-anthropic
Anthropic provider extension for pi, ported from omp (oh-my-pi). Registers a separate `pi-sub-anthropic` provider; pi's built-in anthropic provider is untouched.
Package details
Install pi-sub-anthropic from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-sub-anthropic- Package
pi-sub-anthropic- Version
0.1.4- Published
- Aug 23, 2026
- Downloads
- not available
- Author
- spksoft
- License
- MIT
- Types
- extension
- Size
- 62.1 KB
- Dependencies
- 0 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-sub-anthropic
A pi extension that registers a second
Anthropic provider, pi-sub-anthropic, which authenticates with a Claude
Pro/Max subscription instead of API credits. Ported from
omp v17.4.2.
⚠️ Warning — read this first
This project is not official. It is not affiliated with, endorsed by, or supported by either Anthropic or the pi project. Nobody upstream has reviewed, blessed, or agreed to maintain it.
Using it may get your Anthropic account restricted or banned. To make a subscription credential work outside Claude Code, this extension reproduces Claude Code's wire fingerprint byte-for-byte: its user-agent, beta headers, system-block layout, token clamp, tool naming, and a billing attestation hash. That is, by construction, presenting a third-party client as a first-party one.
Understand what that means before you install:
- It may violate Anthropic's Terms of Service / Usage Policies. Read them and decide for yourself. This project takes no position and offers no defence.
- Detection is trivial for Anthropic and entirely within their control. They can identify, rate-limit, suspend, or terminate accounts at any time, without notice, and this extension can do nothing about it.
- The account at risk is your Claude subscription account — the same one you use in Claude.ai and Claude Code. There is no sandbox and no way to limit the blast radius.
- The fingerprint is pinned and does not self-update. If Anthropic changes anything server-side, requests start failing — possibly conspicuously.
- No warranty, no support, no liability. You run this entirely at your own
risk. If you are not prepared to lose the account, use an API key instead
(
PI_SUB_ANTHROPIC_API_KEY) or pi's built-inanthropicprovider.
If any of that is unacceptable to you, stop here.
Install
Needs Node >= 22.6, pi >= 0.83.0, and a Claude Pro or Max
subscription for the OAuth path. pi loads the extension with the Node that runs
pi — not necessarily the node first on your PATH — and that interpreter must
be >= 22.6 or type stripping fails at load.
pi install npm:pi-sub-anthropic # tracks latest
pi install npm:pi-sub-anthropic@0.1.4 # pinned; pinned specs are skipped by pi update
Published from CI with npm provenance, so the tarball is attestably built from this repository. Straight from git works too, if you would rather track the default branch:
pi install git:github.com/spksoft/pi-sub-anthropic
Or by hand, adding the absolute path to a local copy in
~/.pi/agent/settings.json:
{
"extensions": ["/absolute/path/to/pi-sub-anthropic"]
}
No runtime npm dependencies and no build step: the Messages API is spoken
directly over fetch, from TypeScript sources pi type-strips at load.
Working on the code instead? See CONTRIBUTING.md.
Use
/login pi-sub-anthropic # OAuth against your Claude subscription
/model pi-sub-anthropic/claude-opus-5
Non-interactively:
pi --provider pi-sub-anthropic --model claude-opus-5
To make it the default, in ~/.pi/agent/settings.json:
{
"defaultProvider": "pi-sub-anthropic",
"defaultModel": "claude-opus-5"
}
Nine models are registered, mirroring pi's own Anthropic catalog: Opus 5 / 4.8 / 4.7 / 4.6 / 4.5, Sonnet 5 / 4.6 / 4.5, Haiku 4.5.
Two credentials, two behaviours
/login pi-sub-anthropic (OAuth) |
PI_SUB_ANTHROPIC_API_KEY |
|
|---|---|---|
| Credential | sk-ant-oat… subscription token |
sk-ant-api… key |
| Billed to | your Claude Pro/Max plan quota | per-token API credits |
| Auth header | Authorization: Bearer … |
X-Api-Key |
| Identity sent | full Claude Code fingerprint | plain API request |
max_tokens |
clamped to 64k | full model ceiling |
| Tool names | prefixed _ |
unchanged |
| System prompt | relocated to a user turn | left in system |
Both paths work; they differ in what pays for the tokens. Why the OAuth column looks like that is documented in docs/internals.md.
Environment variables
| var | effect |
|---|---|
PI_SUB_ANTHROPIC_API_KEY |
use an API key instead of OAuth (billed as API credits) |
PI_SUB_ANTHROPIC_DEBUG=1 |
print resolved URL / headers / max_tokens to stderr (auth redacted) |
PI_SUB_ANTHROPIC_EXTRA_BETAS |
comma-separated extra anthropic-beta values |
PI_SUB_ANTHROPIC_DUMP_BODY |
path to write the outgoing request body to |
Troubleshooting
Is it installed? pi --list-models pi-sub-anthropic lists 9 models, and a
real round-trip is pi -p --provider pi-sub-anthropic --model claude-sonnet-5 "hi".
pi auth check --provider pi-sub-anthropic says provider_not_found.
Expected, and not a fault: those subcommands resolve providers without loading
extensions. Look for a pi-sub-anthropic key in ~/.pi/agent/auth.json
instead.
A 1M-context model 429s with "Usage credits are required for long context
requests". Subscription credentials carry no long-context credit, so 1M betas
are never advertised on OAuth. Natively-1M models such as claude-sonnet-5
still serve their full window; use an API key if you need a beta-gated 1M model.
Requests started failing after working before. The fingerprint is pinned and
does not self-update. Check PI_SUB_ANTHROPIC_DEBUG=1 output, then the
upstream constants.
Rate limits. Plan limits are Anthropic's, not this extension's. Hitting your Pro/Max ceiling throttles exactly as it would in Claude Code.
Uninstall
pi remove npm:pi-sub-anthropic # or the git:/path source you installed
Or delete the extensions[] line. Nothing else in pi is touched; the stored
credential lives under its own id in ~/.pi/agent/auth.json.
More
| How it works, and what was measured | docs/internals.md |
| Development, tests, releases | CONTRIBUTING.md |
| Package on npm | https://www.npmjs.com/package/pi-sub-anthropic |
| Listing in the pi gallery | https://pi.dev/packages/pi-sub-anthropic |
Attribution and license
The Anthropic provider logic here — the OAuth flow, wire fingerprint, beta
profile, token clamp, tool naming, billing header and cch attestation — is
derived from omp
(@oh-my-pi/pi-coding-agent / @oh-my-pi/pi-ai), pinned to v17.4.2. Credit
for the behaviour this extension reproduces belongs upstream; this repository
contributes a Node-compatible translation, tests and documentation — not the
discovery.
omp is MIT licensed:
Copyright (c) 2025 Mario Zechner
Copyright (c) 2025-2026 Can Bölük
Copyright (c) 2026 Stencil Labs, Inc.
This port is MIT licensed too — see LICENSE, which carries both omp's notice above and the port's own copyright line.
| omp (upstream source of the logic) | https://github.com/can1357/oh-my-pi |
| pi (the host agent) | https://github.com/badlogic/pi-mono |
| Anthropic Messages API | https://docs.anthropic.com/en/api/messages |
| Anthropic Usage Policy | https://www.anthropic.com/legal/aup |
| Anthropic Consumer Terms | https://www.anthropic.com/legal/consumer-terms |
Not an official Anthropic or pi project. Use at your own risk.