Witnora can make one narrowly defined read against an official vendor sandbox and retain a redacted assurance report. This is not a general HTTP client and does not permit production access.
Prerequisites:
rk_test_.pi_.Stripe documents restricted key creation and permission choices in its restricted API key guide. The command uses Stripe’s retrieve PaymentIntent API only for the selected observation.
PowerShell:
$env:STRIPE_RESTRICTED_TEST_KEY = "rk_test_..."
npx witnora@latest sandbox stripe-readonly --payment-intent pi_...
Remove-Item Env:STRIPE_RESTRICTED_TEST_KEY
Bash:
STRIPE_RESTRICTED_TEST_KEY="rk_test_..." \
npx witnora@latest sandbox stripe-readonly --payment-intent pi_...
The report is written to
.witnora/sandbox/stripe-readonly-report.json. After witnora connect,
add --push to retain it in the Hosted Sandbox conformance workspace.
npx witnora@latest sandbox stripe-readonly --payment-intent pi_... --push
The Stripe key is accepted only through STRIPE_RESTRICTED_TEST_KEY. There is
no Stripe credential CLI flag. Do not commit the key, put it in a config file,
or paste it into evidence.
The public CLI fixes the effective policy to:
| Control | Value |
|---|---|
| Origin | https://api.stripe.com |
| Method | GET |
| Resources | PaymentIntent retrieve and bounded list |
| Request timeout | 5 seconds |
| Process-local rate cap | 10 requests per minute |
| Redirects | Rejected |
| Response requirement | livemode must be exactly false |
Origin, method, resource ID, and route pattern are checked before fetch is
called. Timeout uses an abort signal plus a deterministic race, so an
unresponsive provider cannot hold the CLI open indefinitely. The rate cap is
process-local and intentionally conservative; it is not a distributed vendor
quota manager.
The v0.4 report records:
id, livemode, amounts, currency,
status, and creation time when present);It never records the Authorization header, API key, raw response body,
client_secret, metadata, customer data, or vendor error body. The report
contract is published as
packages/onegent-runtime/stripe-sandbox-readonly.schema.json.
Key permission review remains a human setup step. Witnora deliberately does not probe unrelated endpoints to infer permissions because that would broaden the boundary it is meant to constrain.
For the protected GitHub environment, independent pre-upload scan, production retention, and historical regression gate, continue with Real Vendor Acceptance v0.5.