I use models from four labs every week, and every one of them wanted my accounts connected inside its own app, with its own idea of what was allowed. I couldn't see what any of them did with that access, and there was no single switch to stop them.

So I put one layer in the middle that I control. This post walks through how it works, in case you want to build the same thing. I also built one you can use, called Kin.

Connect everything to the layer once

The layer holds every connection, whether that's an MCP server by its address, an API from its OpenAPI document, or the tools and commands on your own machine. You sign in once, in one place, and the AI apps never hold your tokens. They talk to the layer and it makes the call.

This also keeps the model's context small. If every MCP server you add puts its tools in front of the model, ten servers can mean hundreds of tool definitions and a model that picks the wrong one. Giving the AI a few fixed tools works better. It searches for the action it needs, gets back that one schema, and calls it, so adding more connections doesn't add to the context.

Give every action one setting

Each action gets one of three settings. It runs on its own, it waits for you to approve that exact request, or it can't run at all. Actions that can't run are hidden from the AI, so it doesn't keep trying them.

OAuth scopes tend to bundle read and delete together, and permission grids with dozens of options don't get filled in. One setting per action is quick to set and still makes sense a month later.

Setting actions one at a time gets old fast, so each account starts from a preset like read only, ask before any change, or ask only before something goes out to other people. Under every preset, anything that deletes asks first or is blocked.

Let approvals wait instead of fail

When an action needs your approval, the tool call stays open while the request goes to your phone. You see the app, the account, the action and the exact details it wants to send. You approve or deny it, and the original call gets the result.

Clients give up eventually, some after about 45 seconds, so the wait needs a limit. If it runs out, nothing is approved, and the agent picks up your answer the next time it checks. An approval runs that one request once, and if the agent retries with the same request key it gets the first result back, so nothing runs twice.

Check the rule on the server every time

If the rules live in each AI app's settings, every app has its own version of them. Checking on the layer's server at call time means one set of rules holds everywhere, and a change applies to the next call. It's worth checking again right before the action runs too, in case the rule changed while a request was waiting.

Log everything and keep a stop switch

Every request goes in one log with what ran, what waited, what was approved and what was blocked. Kin let me see that my ChatGPT account tried to pull data the day after I canceled it. Yikes. You also want one switch that pauses every agent at once.

Switching AI apps

Since the connections, rules and history live in the layer, you can swap the AI app out. When a better model ships you add it and it follows the rules you already have, and removing an app ends its access right away. Work carries over too. When one agent hits its usage limit, another can pick up its notes and next step.

Trying it with Kin

Kin is one remote MCP server, so any AI app that can add one can use it. In Claude Code it's two commands.

claude mcp add --transport http kin https://app.kinlab.ai/mcp claude mcp login kin 

Then connect what you already use, either an MCP server by its address or a service from the catalog, pick a preset, and change the few actions you care about.

What it doesn't cover

The layer only governs what goes through it. If an account is also connected directly inside an AI app, or a coding agent has your shell and credentials, that path follows the app's own controls. A few MCP servers also only accept clients they already know. To keep an account under your rules, connect it only through the layer.

Kin has a free plan, and rules and approvals are on it. https://kinlab.ai/?utm_source=devto&utm_medium=community&utm_campaign=community-1102

I'd like to hear where this breaks down for how you work!