Skip to content

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 agent
Agent sees

Charge invoice 2041.

POST api.stripe.com{{secret:stripe}}sk_••••••••masked
Kody host allowlist
api.stripe.com✓api.example.com✓paste.example✕
Approved API host
api.stripe.comAuthorizationReady — waiting for a requestno key attached yet

No 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
Incoming requestPOST /v1/chargesapi.example.com{{secret:stripe}}Host is on the allowlist
Credential accessExample
Allowed hostPassapi.example.com
PackageNot checkedweekly-brief
ExpiryNot checkedChecked before use
Model

Charge invoice 2041.

Sees the reference{{secret:stripe}}sk_••••••••not visible
Your account
Saved secretStripe · live keysk_••••••••Saved in Kody
Request boundaryAttaches the saved keyin · referenceout · key
Approved API
api.stripe.comreceives keyBearer sk_••••4f2a

The 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 provider

Let 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 workflow
Agent

Draft a reply to Morgan about invoice 2041. Do not send it.

drafts-only package
GmailDrafts
Morgan ChenDraftRe: March invoice

Thanks — attaching the receipt for 2041. I'll wait for you.

NorthwindDraftWeekly brief

Orchard update ships Thursday.

SendLocked
You sendin Gmail
Draft ready for your review

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 works
Example connection, fictional data
events?
Kody
2 events
weekly-brief · Read upcoming eventsalex@company.example
GGoogle2 accounts

Requested 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 ↗
Example connection, fictional data
read week
Kody
brief
google-workalex@company.exampleSaved connection
Choose the example package using google-work
Read this week's calendar events

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.

  1. Choose the service.

    Your agent helps find the right authorization setup.

  2. Finish sign-in.

    Use a built-in app when one is available, or register your own provider app.

  3. 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 ↗
Example of a restricted connection
  1. Choose the service.Google
  2. Finish sign-in.alex@company.example
  3. Test a small request.09:00 · Project review
list 1 event
Kody
google-workSpecific packages
mail-sendsendRefused
gmail-draftscreate draftPassed
Allowed packagegmail-drafts
Published behaviorCreate a draft for review

Restrict 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.

Read the credentials guide

Connect your agent