harnessweaver-anthropic
A first-party HarnessWeaver plugin for Claude models. It is built on the same plugin contract any third-party plugin uses: one hw.Plugin object, published through the harnessweaver.plugins entry point under the namespace anthropic (see DESIGNS.md No. 13).
uv add harnessweaver-anthropic # or: uv add "harnessweaver[anthropic]"
anthropic.messages: a model provider
models:
provider: anthropic.messages
default: strong
aliases: { strong: claude-opus-5-5, fast: claude-haiku-5-5 }
effort: high
| Setting | Default | Meaning |
|---|---|---|
model |
claude-opus-5-5 |
When a request names no model |
max_tokens / stream_max_tokens |
16000 / 64000 |
When a request sets none |
thinking |
adaptive |
Or none to omit the parameter |
effort |
the model's default | low, medium, high, xhigh, max |
fallbacks |
default |
Server-side refusal fallbacks (beta server-side-fallback-2026-07-01); none turns them off |
structured_outputs |
false |
Send output schemas as output_config.format (they must meet its rules); otherwise the schema goes in the system prompt |
sampling |
false |
Forward temperature (older models only); current models reject sampling parameters |
timeout |
600s |
Per request |
max_retries |
2 |
SDK retries; set 0 behind a gateway, which then owns retries (R5) |
cost_header |
x-litellm-response-cost |
A gateway's reported cost, used before models.prices |
base_url, api_key_env |
SDK defaults | Client settings. Credentials follow the SDK's own resolution unless api_key_env names a variable |
hold_stream |
false |
Deliver a streamed answer's chunks only once it has finished, so nothing from a declined answer reaches the app. Output is no longer live |
Server-side fallbacks are on by default: a request a model declines for policy reasons is re-run on Anthropic's recommended fallback model, and on a model without fallbacks the request simply runs alone. A request that is still declined ends the run blocked with code model_refusal, and its tokens still count.
Each answer's own content blocks, thinking included, are replayed unchanged on the next request of a tool loop, so the model's reasoning carries over (ADR-0022). An answer the harness changed (a redaction) is replayed without its thinking, consistently, so the history stays append-only.
harness.instrument(client)
client = harness.instrument(AsyncAnthropic())
message = await client.messages.create(model="claude-opus-5-5", max_tokens=1024, messages=[...])
messages.create calls are governed: traced, budgeted and guarded (input.before on the system prompt and message text, output.before on the answer), with redactions written back. Everything else, including client.beta.messages, passes through. Streaming through an instrumented client is planned and raises for now.
Conformance
From this package's directory (at the repository root, make conformance checks every first-party plugin):
uv run pytest --harnessweaver-conformance=anthropic
Metadata
Release files for harnessweaver-anthropic 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| harnessweaver_anthropic-0.2.0.tar.gz | 19.2 kB | Without provenance | Details for harnessweaver_anthropic-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| harnessweaver_anthropic-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for harnessweaver_anthropic-0.2.0-py3-none-any.whl |
Total release size: 36.2 kB
Release files / harnessweaver_anthropic-0.2.0.tar.gz
| Download URL | harnessweaver_anthropic-0.2.0.tar.gz |
|---|---|
| Size | 19.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
148ef2d51a65a423cd87fea36c2e2a99bfb9364db3ee9123ed26aa549625c8f8
|
|
BLAKE2b-256 checksum How to use checksums |
eb3d18fd1ecf9aff442607c43240bc8bd8f0ced8933888e67f1ba85446410a01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / harnessweaver_anthropic-0.2.0-py3-none-any.whl
| Download URL | harnessweaver_anthropic-0.2.0-py3-none-any.whl |
|---|---|
| Size | 17.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6883bc15b657efd96c773d1de05a62f45e8b3d6edd79e3ef68dd970586df2f5f
|
|
BLAKE2b-256 checksum How to use checksums |
6a5bbdfd888aade7d05ab1d3d91ca450822b5af0c8d1cd514e8801ccd14e2185
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for harnessweaver-anthropic 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.