
Your agent can use the key.
It can't read it.
API keys, OAuth connections, and MCP servers live in Kody. Kody adds the value to the outgoing request, only for hosts you approve. Agents, packages, and logs never see it.
Connect your agentCharge invoice 2041.
POST api.stripe.com{{secret:stripe}}sk_••••••••maskedno key attached yetNo response yet
Ready to send an example request.
Illustration only. The approved API receives the credential. The agent does not.
Approve the destination.
Control the package.
Host approval decides where a credential may be sent. Package access decides which saved packages can use it.
Packages you write and forks you adopt after reviewing the source get use automatically. Other packages need your approval.
An approved destination can receive the credential. An empty host allowlist blocks requests that use secret references.
How credentials stay safe{{secret:stripe}}Host is on the allowlistapi.example.comweekly-briefChecked before useCharge invoice 2041.
Sees the reference{{secret:stripe}}sk_••••••••not visiblesk_••••••••Saved in KodyBearer sk_••••4f2aThe agent uses a reference. Kody adds the credential to the outbound request.
The key can stay
in your vault.
Bind a custom secret provider to use vault items through the same request boundary. The agent works with a reference, and the model never sees the value.
A 1Password provider is one documented example. It needs a configured package and an owner-created binding.
Set up a secret providerLet it draft. Keep send out of reach.
Gmail's draft permission can also send. A drafts-only package, a publish lock, and an integration usage lock let your agent prepare replies through that package while you review and send in Gmail. The token's Google permissions stay the same.
Build the drafts-only workflowDraft a reply to Morgan about invoice 2041. Do not send it.
drafts-only packageThanks — attaching the receipt for 2041. I'll wait for you.
Orchard update ships Thursday.
If it speaks OAuth,
it works with Kody.
Gmail, Slack, GitHub, or the internal tool your team runs. Any service with an OAuth sign-in can connect, through a built-in app or one you register.
Kody keeps the tokens and refreshes them on its side, so the connection stays out of every chat and keeps working.
See how OAuth setup worksRequested upcoming events from google-work through Kody. weekly-brief received 09:00 · Project review and 14:00 · Client check-in for alex@company.example.
Sign in once.
Put the connection to work.
Your connection supplies the account and its permissions. A package supplies the action. Reuse the same saved connection in the tools you build.
Connecting a service does not install its tools.
Explore packages ↗Your week, ready to review.
Monday's project review and Thursday's client check-in, collected in one brief.
Connect it.
Check it.
Choose what uses it.
- Choose the service.
Your agent helps find the right authorization setup.
- Finish sign-in.
Use a built-in app when one is available, or register your own provider app.
- Test a small request.
Check the connection before building a workflow around it.
What does registering an app involve?
Create an OAuth app with the provider, add Kody’s redirect URL, and enter the client details in Kody. The provider and permissions determine the setup.
Read the OAuth setup guide ↗- Choose the service.Google
- Finish sign-in.alex@company.example
- Test a small request.09:00 · Project review
gmail-draftsRestrict a connection to specific packages. Lock the published package too when its behavior needs to stay fixed.
A drafts-only package can leave out a send action. Google’s token still has the permissions Google issued.
See the complete Gmail draft setup ↗Give your agents access without handing over the keys.
Store a key or connect an account, approve where it may go, and choose which packages can use it.