Business situation
A software team at ABC Limited uses two coding agents. One developer works with Claude Code; another prefers Codex. A feature started by one often needs finishing by the other — across time zones, or when someone is off. The team also wants both agents to follow the same rules about what they may do in the repository.
Why existing tools alone are insufficient
Each coding agent keeps its own session context. When work changes hands, the reasoning behind it — why an approach was chosen, what was tried and failed — is lost or retyped into a pull request description. Each agent also holds its own GitHub token with whatever scope the developer granted, so the team’s rules differ from machine to machine.
Systems involved
- Kroy State — the task’s goal, decisions, progress and open questions.
- GitHub — the repository, branches and pull requests.
- Jira — the issue the task belongs to.
Kroy architecture
Claude Code and Codex both connect to Kroy, each as its developer’s agent. GitHub and Jira are connected to Kroy once, by the team. The Record Task Progress Skill reads and updates task State. The Open Pull Request Skill may push to feature branches and open pull requests. Kroy holds the GitHub credentials; neither agent receives a token.
Workflow
- The first developer asks Claude Code: “Start on the invoice export feature from the Jira issue.” Kroy returns the issue and creates task State linked to it.
- Claude Code works on a feature branch, pushing with
github.branch.push, and records decisions withstate.update— the export format chosen, and one library ruled out and why. - At the end of the day, Claude Code records progress and the remaining steps.
- The second developer asks Codex: “Pick up the invoice export task.” Kroy returns the same State with
state.read. Codex continues from the recorded decisions. - Codex asks for the production database credentials to test against live data. Kroy refuses: production secrets are outside both Skills.
- Codex opens a pull request with
github.pull_request.createand comments on the Jira issue withjira.issue.comment. - The developer asks Codex to merge. Kroy refuses:
github.pull_request.mergeto main requires a reviewer. A reviewer approves and merges it.
Agent permissions
Each agent acts under its own developer’s delegation, with the same Skills and the same rules. Both can read and update task State, push feature branches and open pull requests. Neither can merge to main or reach secrets.
Human permissions
Developers direct their agents. Reviewers approve and merge. The team lead manages which repositories the Skills cover.
State changes
- Task State is created and linked to the Jira issue.
- Decisions and progress are recorded by each agent, with its identity.
- The task moves to In review when the pull request opens, and Done on merge.
Audit outcome
Kroy records each state change and GitHub action with the developer and the agent that made it, plus the refused secret request and the refused merge.
Security considerations
- GitHub credentials stay in Kroy; revoking an agent removes its repository access immediately.
- The same policy applies to both agents, wherever they run.
- Kroy’s rules sit alongside GitHub’s branch protection, not in place of it.
Setup requirements
- GitHub and Jira connected to Kroy.
- Claude Code and Codex connected to Kroy as each developer’s agent.
- The two Skills enabled for the team’s repositories.