Skip to content

docs(openclaw): purge stale XPR_PRIVATE_KEY from npm README + A2A example#19

Merged
paulgnz merged 1 commit into
mainfrom
fix/openclaw-npm-readme-xpr-key
May 13, 2026
Merged

docs(openclaw): purge stale XPR_PRIVATE_KEY from npm README + A2A example#19
paulgnz merged 1 commit into
mainfrom
fix/openclaw-npm-readme-xpr-key

Conversation

@paulgnz
Copy link
Copy Markdown
Collaborator

@paulgnz paulgnz commented May 13, 2026

The published @xpr-agents/openclaw README on npm still shows the legacy XPR_PRIVATE_KEY=PVT_K1_... block in its Configuration section. An operator reading the package page would have followed that example and immediately hit the agent runner's hard refusal:

[FATAL] XPR_PRIVATE_KEY is set but is no longer supported.

Changes

  • openclaw/README.md (the npm package README):
    • Replaced the env block with the proton CLI keychain setup (npm i -g @proton/cli, chain:set, key:add, plus the echo "no" | ... hosted-console form for Pinata)
    • Added the A2A_SIGNING_KEY note (separate key, custom permission, limited blast radius)
    • Added an explicit "no XPR_PRIVATE_KEY env var" callout referencing the charliebot incident
  • openclaw/package.json — bump to 0.3.2 so the corrected README actually ships to npm
  • docs/A2A.md — SDK example switched XPR_PRIVATE_KEYA2A_SIGNING_KEY (proton CLI can't sign arbitrary digests, so A2A always needed a separate in-process key; the example was just reusing the old name)
  • docs/infrastructure.md — added a legacy banner to the CF Gateway Worker section noting that the XPR_PRIVATE_KEY shown there only exists in the deprecated CF sandbox path and is rejected on the standalone scaffold and Pinata harness paths

Why a separate PR?

I was mid-flight on Tier C (moving the 12 domain skills into the npm tarball, bumping to 0.4.0) when this surfaced via an operator's agent reading the live npm page. Shipping a narrow patch release first gets the corrected docs onto npmjs.com immediately; the Tier C work follows on a separate branch.

No code changes — paperwork that should have shipped with #7.

…mple

The npm-package README that ships to npmjs.com still showed the legacy
`XPR_PRIVATE_KEY=PVT_K1_...` config block. An operator's agent reading
the package page would have followed that example and immediately
booted into the agent runner's hard refusal:

    [FATAL] XPR_PRIVATE_KEY is set but is no longer supported.

This commit replaces the env block with the proton CLI keychain setup
(install, `chain:set`, `key:add`, with the `echo "no" | …` hosted-
console form) and adds an `A2A_SIGNING_KEY` note for the separate
limited-blast-radius A2A key. Bumps `@xpr-agents/openclaw` to 0.3.2 so
the corrected README ships to npm.

Two other docs also pointed operators at the wrong env var:
- `docs/A2A.md` SDK example: switched `XPR_PRIVATE_KEY` →
  `A2A_SIGNING_KEY` (proton CLI can't sign arbitrary digests, so A2A
  always needed a separate in-process key — the example was just
  reusing the old name)
- `docs/infrastructure.md` CF Gateway Worker section: added a legacy
  banner noting that `XPR_PRIVATE_KEY` only exists in the deprecated
  CF sandbox path and is **rejected** on the standalone scaffold and
  Pinata harness paths

No code changes — paperwork that should have shipped with #7.
@paulgnz paulgnz merged commit 3eced34 into main May 13, 2026
6 checks passed
@paulgnz paulgnz deleted the fix/openclaw-npm-readme-xpr-key branch May 13, 2026 22:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant