A long-lived GitHub token in an environment variable is a multi-day incident waiting to happen. Threshold mints the credential for one operation, hands it to GitHub, and lets it expire. The agent never sees it.
The agent holds a GitHub token in an environment variable. Long-lived. Broad-scoped. Exposed to everything the agent touches, including content from external sources.
The agent holds a capability. Threshold mints the credential for one operation, hands it to GitHub, and lets it expire in fifteen seconds. The agent never sees it.
Your team has been running a coding agent for six months. It reads issues, drafts implementations, opens PRs, runs CI, comments on reviews. Every senior engineer has built a workflow around it.
It lives on a side branch with read-only credentials. It can suggest changes. It can run tests. It cannot merge anything, deploy anything, or push directly to a protected branch. The reason isn't capability. The agent could absolutely merge correctly more than 95% of the time. The reason is that nobody has figured out how to give an agent commit-level credentials without losing sleep.
The standard answer is to give the agent a long-lived GitHub token with broad scope, sitting in an environment variable somewhere, capable of pushing to any branch in any repo. That token lives for weeks. It's exposed to every action the agent takes, including the ones that read content from external sources.
The deeper problem is conflation. The agent that decides what to commit is the same process that holds the credential to commit it. There's no architectural separation between "the agent wants to do X" and "the agent is authorized to do X right now." Once the agent is running, the credential is exposed to everything it touches.
Credential rotation across a working stack is a multi-day incident response. Nobody wants that fire drill.
A short-lived, single-use, scope-restricted permission to ask Threshold to perform one operation on its behalf. The credential is born in the moment of the action and dies the moment it's done.
github.merge(repo=acme/backend, branch=feat-123, target=main).main, but only under conditions encoded in your policy: tests pass, PR has an approving review, the diff doesn't touch protected files, and the action happens during business hours.The standard pattern stores authority in long-lived secrets. Threshold stores authority in short-lived signed capabilities, derived per-request from a delegation chain that traces back to a real human.
The implication for a coding agent is structural. The credential that made your security team nervous never exists. Each operation gets exactly the permission it needs, exactly when it needs it, and the permission disappears the moment the operation completes.
The coding agent leaves the side branch. It opens PRs, merges to main, deploys to staging, runs the small operational tasks that used to live in your senior engineers' tab clutter. Your security team can read the audit trail and see exactly which human's authority each agent action traced back to.
Long-lived tokens in the agent's environment. Every credential is per-call and expires in seconds.
A capability lives for exactly the operation that needed it. Then it disappears.
Every commit, merge, and deploy chains back to a named human in the signed audit log.