The workflow

Watch this workflow run through Kroy.

  1. The request.

    “Record Task Progress”

  2. Who is asking.

    Kroy identifies the person in engineering and Claude Code acting for them, within the delegation they gave it.

  3. Only what the task needs.

    Kroy retrieves task state (goal, decisions, progress, open questions), the linked Jira issue and repository branches and pull requests (GitHub) from GitHub and Jira.

  4. Excluded by design.

    Production secrets and deployment credentials, Repositories outside the team and GitHub tokens never reach Claude Code. That boundary is Kroy’s, not an instruction to the AI.

  5. The proposed action.

    Permitted: read and update task state (state.read, state.update), push to feature branches (github.branch.push) and open a pull request (github.pull_request.create).

  6. What Kroy refuses.

    Refused: merge to main (github.pull_request.merge), read production secrets and push to protected branches.

  7. A person decides.

    A reviewer approves and merges every pull request.

  8. State changes. Everything is recorded.

    The work is updated in Kroy, and every request — allowed or refused — is written to the audit trail.

Claude Code
Engineering
Kroy
GitHub
Jira
Read and update task state
Merge to main
! Approval
AUDIT · STATE

Retrieved

  • Task state (goal, decisions, progress,…
  • The linked Jira issue
  • Repository branches and pull requests (…

Excluded

  • Production secrets and deployment crede…
  • Repositories outside the team
  • GitHub tokens
Claude Code
Engineering
Kroy
GitHub
Jira
Read and update task state
Merge to main
! Approval
AUDIT · STATE

Retrieved

  • Task state (goal, decisions, progress,…
  • The linked Jira issue
  • Repository branches and pull requests (…

Excluded

  • Production secrets and deployment crede…
  • Repositories outside the team
  • GitHub tokens
Claude Code and Codex working from shared state: the workflow through Kroy. The request.. Who is asking.. Only what the task needs.. Excluded by design.. The proposed action.. What Kroy refuses.. A person decides.. State changes. Everything is recorded..

What the AI can and cannot do

Data accessed

  • Task state (goal, decisions, progress, open questions)
  • The linked Jira issue
  • Repository branches and pull requests (GitHub)

Data excluded

  • Production secrets and deployment credentials
  • Repositories outside the team
  • GitHub tokens

Actions permitted

  • Read and update task state (state.read, state.update)
  • Push to feature branches (github.branch.push)
  • Open a pull request (github.pull_request.create)
  • Comment on the Jira issue (jira.issue.comment)

Actions refused

  • Merge to main (github.pull_request.merge)
  • Read production secrets
  • Push to protected branches

Human approval required

  • A reviewer approves and merges every pull request

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

  1. 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.
  2. Claude Code works on a feature branch, pushing with github.branch.push, and records decisions with state.update — the export format chosen, and one library ruled out and why.
  3. At the end of the day, Claude Code records progress and the remaining steps.
  4. 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.
  5. Codex asks for the production database credentials to test against live data. Kroy refuses: production secrets are outside both Skills.
  6. Codex opens a pull request with github.pull_request.create and comments on the Jira issue with jira.issue.comment.
  7. The developer asks Codex to merge. Kroy refuses: github.pull_request.merge to 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.

Try this with your own systems.

Try Kroy with GitHub