From 9e04b890bde600be06cd931c03d4db0cd8ce4ca5 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 08:49:46 +0000 Subject: [PATCH 1/2] Background jobs cannot request a blockchain record, and the docs say so. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_013aDTfwQ3nirTB9pDCaFZmo --- CHANGELOG.md | 1 + mcp/verify.mdx | 2 +- proofs.mdx | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 58141e7..c20cbac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ Product release notes: [docs.proofable.me/changelog](https://docs.proofable.me/c - **Changelog entries for `@proofable/mcp` 0.1.7 and `@proofable/sdk` 0.1.6.** - **Eligibility clause in the Terms of Use.** Section 4 states the minimum age and the capacity to contract. The Terms had no eligibility or age statement before. +- **Background jobs and blockchain records.** [Proofs](/proofs) and [`proofable_verify`](/mcp/verify) say that a background job cannot request a blockchain record; the request is refused with `JOB_ONCHAIN_PUBLISH_DENIED`. ### Changed diff --git a/mcp/verify.mdx b/mcp/verify.mdx index 3db22cf..d27ff82 100644 --- a/mcp/verify.mdx +++ b/mcp/verify.mdx @@ -26,7 +26,7 @@ When signed in, **omit `walletAddress`**. The tool uses your profile account fro | `chain` | No | CAIP-2 chain when needed | | `signedTimestamp` | No | Optional timestamp for direct creation or preparation | | `options.returnUrl` | No | Where to send the user if a hosted step is needed | -| `options.publishToHub` | No | Record the proof on the hub chain. Offchain by default. Does not change who can see the proof. | +| `options.publishToHub` | No | Record the proof on the hub chain. Offchain by default. Does not change who can see the proof. A background job's request is refused with `JOB_ONCHAIN_PUBLISH_DENIED`. | ```json { "verifierIds": ["ownership-basic"], "data": { "content": "Hello Proofable" } } diff --git a/proofs.mdx b/proofs.mdx index 021a581..8c98dc8 100644 --- a/proofs.mdx +++ b/proofs.mdx @@ -45,6 +45,8 @@ Unlisted proofs are public to anyone who has the proof ID. To share a private pr Proofs are stored offchain by default. A blockchain record is optional: request it with `options.publishToHub: true` or `targetChains`. IPFS pinning is optional with `enableIpfs: true`. Neither changes who can read the proof, and neither replaces a status check. +A background job cannot request a blockchain record. Nobody is present to ask, and its prompt or a page it reads can carry injected instructions, so a job's proof write that asks for one is refused with `JOB_ONCHAIN_PUBLISH_DENIED`. Publish from your own signed-in session instead. + ## Reuse Before a protected action, check the current proof instead of repeating the original check. [Reuse verification](/use-cases/reuse-verification) From efa6e46707af4dfeb3edf197e504d6a3a6e4433f Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 19:33:23 +0000 Subject: [PATCH 2/2] Proofs: a background job keeps its proofs private and offchain, with its three refusals in one place Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_013aDTfwQ3nirTB9pDCaFZmo --- CHANGELOG.md | 2 +- mcp/verify.mdx | 2 +- proofs.mdx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c20cbac..caaeaf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ Product release notes: [docs.proofable.me/changelog](https://docs.proofable.me/c - **Changelog entries for `@proofable/mcp` 0.1.7 and `@proofable/sdk` 0.1.6.** - **Eligibility clause in the Terms of Use.** Section 4 states the minimum age and the capacity to contract. The Terms had no eligibility or age statement before. -- **Background jobs and blockchain records.** [Proofs](/proofs) and [`proofable_verify`](/mcp/verify) say that a background job cannot request a blockchain record; the request is refused with `JOB_ONCHAIN_PUBLISH_DENIED`. +- **Background jobs keep proofs private and offchain.** [Proofs](/proofs) says that a background job's request for a blockchain record, a public or link-only proof, or a visibility change is refused with `JOB_ONCHAIN_PUBLISH_DENIED`, `JOB_PUBLIC_PROOF_DENIED` or `JOB_VISIBILITY_CHANGE_DENIED`. ### Changed diff --git a/mcp/verify.mdx b/mcp/verify.mdx index d27ff82..c066ab8 100644 --- a/mcp/verify.mdx +++ b/mcp/verify.mdx @@ -26,7 +26,7 @@ When signed in, **omit `walletAddress`**. The tool uses your profile account fro | `chain` | No | CAIP-2 chain when needed | | `signedTimestamp` | No | Optional timestamp for direct creation or preparation | | `options.returnUrl` | No | Where to send the user if a hosted step is needed | -| `options.publishToHub` | No | Record the proof on the hub chain. Offchain by default. Does not change who can see the proof. A background job's request is refused with `JOB_ONCHAIN_PUBLISH_DENIED`. | +| `options.publishToHub` | No | Record the proof on the hub chain. Offchain by default. Does not change who can see the proof. A background job's request is refused ([Proofs](/proofs)). | ```json { "verifierIds": ["ownership-basic"], "data": { "content": "Hello Proofable" } } diff --git a/proofs.mdx b/proofs.mdx index 8c98dc8..213fbfa 100644 --- a/proofs.mdx +++ b/proofs.mdx @@ -45,7 +45,7 @@ Unlisted proofs are public to anyone who has the proof ID. To share a private pr Proofs are stored offchain by default. A blockchain record is optional: request it with `options.publishToHub: true` or `targetChains`. IPFS pinning is optional with `enableIpfs: true`. Neither changes who can read the proof, and neither replaces a status check. -A background job cannot request a blockchain record. Nobody is present to ask, and its prompt or a page it reads can carry injected instructions, so a job's proof write that asks for one is refused with `JOB_ONCHAIN_PUBLISH_DENIED`. Publish from your own signed-in session instead. +A background job keeps its proofs private and offchain. Nobody is present to ask, and its prompt or a page it reads can carry injected instructions, so a job's request for a blockchain record, a public or link-only proof, or a visibility change is refused (`JOB_ONCHAIN_PUBLISH_DENIED`, `JOB_PUBLIC_PROOF_DENIED`, `JOB_VISIBILITY_CHANGE_DENIED`). Publish from your own signed-in session instead. ## Reuse