Customer separation
Scope credential access to the customer behind each agent.
Integration guidance ↗For teams building AI agents, let the agent use your services without showing it the real API key.
The agent asks your software to act. Your software keeps the real key out of the conversation.
Decoy (a believable fake secret or message) or reference. No live credential.
Check the request. Use the real key only inside software you control.
The service receives the real key. The agent does not.
Keep the model and the live credential on different sides of the same tool call.
The model sees material you are prepared to expose, not the live credential.
Your tool enforces access to the real control file (the file that selects which message opens) and resolves the credential.
The tool uses the real credential without putting it in the model's context.
Protection depends on the agent being restricted to decoy material. Authorised-tool misuse and trusted-runtime compromise are outside this boundary. Full threat model →
Choose the controls your deployment needs. Plan eligibility and limits are listed on the pricing page.
Scope credential access to the customer behind each agent.
Integration guidance ↗Add a deniable layer alongside your existing storage and access controls.
See the fit ↗Create plausible structured decoys for the material your agents handle.
Explore decoys ↗Register a fingerprint, a unique identifier for a decoy. Get alerts when a monitored decryption service observes it.
Detection boundaries ↗Use AWS Key Management Service (KMS) for BYOK (bring your own encryption key) and the operational model for your team.
BYOK walkthrough ↗Send verified event notifications (signed webhooks) to your tools and review the activity log.
Audit guide ↗Software development kits (SDKs) run in your app. Hosted APIs are online services. Model Context Protocol (MCP) connects agents to tools. Choose what may leave your systems.
TypeScript, Python, Go and Rust. Run encryption inside your own application, without sending inputs to us.
Choose your language ↗Patterns for LangChain, CrewAI, OpenAI Agents and the rest of your stack.
Browse integrations ↗Follow the API quickstart and MCP setup guide. Keep live credentials outside model context.
Open developer docs ↗A provider rejecting a fake key is not automatically a deny.sh detection event. Offline decrypts are not hosted observations.
Connect your rotation workflow to respond to an alert. Revocation depends on your integration and credential provider.
Implement tripwires ↗The construction and its limitations should be inspectable before you integrate.
For web and SDK encryption, both passwords are required together. The control file selects the plaintext. Switching control files does not change the password pair.
See the construction ↗Read the source, run the verification tools and review the construction’s status in the limits and scope section.
Review the evidence ↗What resolves the real key, what a decoy can tell you, and where the boundary ends.
Your authorised tool runtime resolves the real credential and uses it for the provider call. The model can receive the result without receiving the credential. This depends on your integration keeping the real control file and passwords outside model-accessible tools, context, logs, and responses. Employees can retain access through your existing permissions.
deny.sh does not classify a prompt as malicious to choose a plaintext. Your runtime enforces access to the real control file. A model restricted to decoy material cannot resolve the real value through that path. An alert means an armed fingerprint was observed at a monitored deny.sh decrypt endpoint, not that malicious intent has been proven. Authorised-tool misuse remains a separate risk.
In your trusted runtime and its access policy, not in the model. For web and core SDK encryption, both passwords are always required together; the control file selects real or decoy plaintext using the same password pair. Keep the real control file protected and expose only the intended decoy or reference. The protect-seed wizard and Telegram bot use a different wrapper, with each control file bound to its own matching password.
A correctly enforced proxy is a sound baseline. Keep it. deny.sh adds a deniable representation and optional monitoring of armed decoy fingerprints. It does not make every proxy failure safe: if a bug exposes the real control file and passwords, or the resolved key, the protection is lost. It is useful only where you can maintain that separate boundary. Compare the layers.
Yes. A provider can reject a fake credential, revealing that it does not work there. That provider request is not automatically a deny.sh tripwire (a monitor for use of an armed decoy) event. Detection requires an armed fingerprint to be observed at a monitored deny.sh decrypt endpoint. Connected alerts and rotation can support a response, but neither is guaranteed to complete before the attacker tests or reads a value.
Honeytokens and canaries are detection techniques; their visibility depends on where and how a token is used. deny.sh also offers a cryptographic representation in which one ciphertext (the encrypted data) can yield a real or chosen decoy plaintext, selected by the control file. Hosted tripwires are a separate monitoring layer. Neither approach makes a fake API key valid or guarantees that external evidence cannot distinguish a decoy. They can be used together.
Review the threat model and cryptographic construction before choosing your deployment.
The construction and verification tools are public. An independent cryptographic audit is planned and is not complete. Cyber Essentials covers organisational controls, not the cryptographic construction.
Tripwires observe registered decoys at monitored deny.sh decrypt endpoints. A provider rejecting a fake key and offline decryption are outside that path.
Keep real credentials inside trusted tools. This boundary does not prevent misuse of an authorised tool or compromise of its runtime.