Business situation
A software team at ABC Limited releases every week or two. Someone collects the merged pull requests, writes release notes, checks the build, deploys to staging, then — once satisfied — deploys to production. The team wants AI to do the gathering and preparation, and a person to decide when production changes.
Why existing tools alone are insufficient
An AI with a GitHub token scoped to trigger workflows can trigger any of them, including production. Tying approval to a chat message is not enforcement. And an AI that can edit workflow files can change what “deploy to staging” actually does.
Systems involved
- GitHub — pull requests, checks, releases and deployment workflows.
- KroyDB — the release entity and the team’s checklist.
- Kroy Artifacts — the release notes.
Kroy architecture
Claude connects to Kroy. GitHub is connected to Kroy by the team. The Prepare Release Skill may read pull requests and checks and create a draft release. The Deploy Release Skill may dispatch the staging workflow; dispatching the production workflow requires the release manager’s approval. Workflow files are outside both Skills. Kroy holds the GitHub credentials.
Workflow
- A developer asks Claude: “Prepare the next release.”
- Kroy returns the merged pull requests since the last tag with
github.pull_request.read, and the release commit’s check results. - Claude drafts grouped release notes as an Artifact and creates a draft release with
github.release.create. - The developer asks: “Deploy to staging.” Claude requests
github.workflow.dispatchfor the staging workflow. Kroy permits it. - The developer asks: “Staging looks fine — deploy to production.” Kroy refuses the dispatch and raises
approval.requestfor the release manager, with the notes and check results attached. - The developer asks Claude to change the production workflow so it no longer needs approval. Kroy refuses:
github.workflow.updateis outside the Skills. - The release manager reviews and approves. Kroy dispatches the production workflow and, once it succeeds, the release is published.
Agent permissions
Claude acts under the developer’s delegation. It can read, draft and deploy to staging. It can request, but not force, a production deployment.
Human permissions
Developers prepare releases and deploy to staging. The release manager approves production deployments.
State changes
- A release entity is created with its notes and pull request list.
- The draft release is created in GitHub, then published after production deployment.
- The release moves through Draft, Staging, Awaiting approval and Released.
Audit outcome
Kroy records each read, the draft release, the staging deployment, the refused production dispatch, the refused workflow edit, the approval and the production deployment.
Security considerations
- Deployment credentials stay in Kroy; Claude never holds a token.
- Approval is enforced by Kroy before the dispatch is made.
- Kroy’s approval sits alongside any environment protection configured in GitHub.
Setup requirements
- GitHub connected to Kroy.
- Claude connected to Kroy.
- The two Skills enabled, with the release manager’s role and approval policy configured.