Data Minimization
VCP is designed to transmit the minimum needed. Private details become
boolean flags — platforms see budget_limited: true, not
your financial situation.
VCP is designed around explicit privacy boundaries. This page explains the current controls, their evidence limits, and the responsibilities of each receiving implementation.
VCP is designed to transmit the minimum needed. Private details become
boolean flags — platforms see budget_limited: true, not
your financial situation.
You decide what's shared with whom. Consent is explicit and revocable. Compatible flows require permission before sensitive data is shared.
Sharing events are designed to be logged so you can see what was shared, when, and with which platform.
Every piece of context in VCP has a privacy level that determines how it can be shared.
Information you're comfortable sharing with any platform. Examples: learning goals, experience level, general preferences.
goal: "learn_guitar" experience: "beginner"Sensitive context that influences your experience while compatible flows share derived flags instead of raw details.
health_details: [LOCAL ONLY] → constraint_flag: "energy_variable"The core innovation: your private circumstances become simple boolean flags.
noise_restricted: true No context, no details, just the flagThe platform knows to recommend quiet practice methods. It has no idea why you need them, and it doesn't need to know.
Different stakeholders get different views of your context.
Context is encoded into CSM-1 (Compact State Message) tokens. Private fields are stripped before outbound VCP payloads by default.
VCP is designed so private context can stay on your devices unless a separate integration explicitly documents storage or sync. We can't leak what we don't have.
The VCP protocol is open for inspection. You can review the specified privacy rules and test an implementation, while still evaluating the deployed code, configuration, operators, storage, and downstream services you trust.
VCP/T defines how constitution bundles are signed and verified. A conforming application must enforce a verify-then-inject boundary so rejected or unsigned bundle content cannot reach the model through that path.
Every schema-conforming constitution bundle carries a supported digital signature. The manifest's key claim is untrusted input until it matches an independently configured, valid issuer trust anchor and the signature verifies.
Content is hashed with SHA-256. The hash is embedded in the signed manifest, binding the signature to the exact bytes. Any tampering invalidates the hash.
Signature verification must pass before content reaches the LLM. If verification fails, the bundle is rejected and the request fails closed -- no fallback to unsigned content.
Manifests carry iat, nbf, exp,
and jti fields. Expired or replayed bundles are rejected, preventing
replay attacks.
The orchestrator acts as a gatekeeper: nothing reaches the LLM without passing cryptographic verification first.
VCP/T is designed to mitigate specific, enumerated threats. Each attack vector has a concrete defense.
Attacker modifies constitution content to inject malicious instructions.
Attacker re-submits a previously valid but now-stale bundle.
iat/nbf/exp)
plus unique jti tracking reject duplicates.Oversized constitution monopolizes the LLM's context window.
Author's signing key is stolen or leaked.
Attacker substitutes an older, weaker version of a constitution.
Verification error silently allows unsigned content through.
Layer 3 (the R-line) carries real-time personal state -- cognitive load, emotional tone, energy level. These dimensions require the strongest protections.
The Demo Site keeps sensitive state in session storage and its sharing helpers omit private fields unless a scoped consent path allows them. Other implementations must enforce an equivalent boundary.
The privacy filter can derive coarse boolean flags such as energy_variable: true while withholding the underlying condition.
Applications must use the filtered projection rather than serialising the
full source object.
Personal state carries a TTL (time-to-live). Stale dimensions automatically decay, ensuring outdated state is not retained or acted upon.
Sharing personal state with any platform requires explicit, revocable consent. Each dimension can be consented to individually -- granular, not all-or-nothing.
Do not open a public issue for a suspected vulnerability. The Demo repository is private, so its GitHub advisory form is not an external reporting channel. Email security@creedspace.com. Include safe reproduction steps, the affected route or component, and the candidate or deployed build identity. Do not send live credentials, personal data, or third-party secrets.
The current contact, policy, and expiry are also published in security.txt.
Watch how different stakeholders see different views of the same context.