Copilot AutoDev is a proof of concept for automating a software development lifecycle through an issue-driven state machine. A deterministic GitHub Actions orchestrator owns workflow state and dispatches a GitHub Agentic Workflow for each AI-assisted state (Research, Design, SecurityReview, Implementation, and CodeReview). Every AI operation runs as an Agentic Workflow, so there is a single execution and safe-output model to learn and secure: the orchestrator only ever launches workflow runs and validates the structured callback each one posts.
See:
- GitHub Actions and Copilot cloud agent must be enabled for the repository.
- Important: Under Settings > Actions > General > Workflow permissions, enable Allow GitHub Actions to create and approve pull requests. The orchestrator's Initialization state uses the workflow
GITHUB_TOKENto open the issue tracking pull request; without this setting, PR creation fails with403 Resource not accessible by integrationeven though the workflow grantspull-requests: write. - The user represented by
AUTODEV_CALLBACK_TOKENmust have write access to the repository. - A repository administrator must configure the Actions secret
AUTODEV_CALLBACK_TOKENand the POC labels before running the POC. No Copilot Agents secrets or repository MCP configuration are required — each Agentic Workflow is self-contained. ghandgh-awv0.82.14 are needed to author or compile the AutoDev Agentic Workflows. The checked-incopilot-setup-steps.ymlinstalls this version in Copilot cloud-agent sessions. A compiled.lock.ymlworkflow does not require the gh-aw CLI at runtime.
The POC uses two credential authorities:
| Credential | Secret location | Purpose | Minimum access |
|---|---|---|---|
Workflow GITHUB_TOKEN |
Created automatically by Actions | Orchestrator state, error, instruction, label, branch, and PR operations; Agentic Workflow repository reads and default safe-output writes | Granted explicitly by each workflow |
AUTODEV_CALLBACK_TOKEN |
Repository Actions secret | Let an Agentic Workflow's add-comment safe output post its autodev-result:v1 callback so the comment triggers the orchestrator's issue_comment handler |
Fine-grained PAT scoped to this repository with Issues: read/write |
The callback PAT has repository-level Issues: write, not a comment-only token scope. It is used only by the safe-output job that posts the callback comment; it is never exposed to the agent, its prompt, or the MCP server. For this POC, the Agentic Workflow safe-output allowlist provides the narrower single-comment boundary.
The orchestrator must use GITHUB_TOKEN for its own comments. Events caused by this token do not recursively start another workflow. Agentic Workflow callbacks use the callback PAT so that their comments do trigger the orchestrator. At startup, the orchestrator calls the authenticated-user endpoint with AUTODEV_CALLBACK_TOKEN and accepts automated result comments only from the returned login.
Every AI-assisted state is a GitHub Agentic Workflow (gh-aw) compiled to a self-contained .lock.yml. Each workflow is dispatched by the orchestrator and needs no separate Copilot MCP or Agents-secret configuration:
- The agent reads the repository through the built-in GitHub MCP server in
gh-proxymode, which uses the workflow's own least-privilegeGITHUB_TOKEN. - The agent never writes directly. It requests changes through safe outputs, which run as separate jobs after the agent finishes. Research pushes its artifact with
push-to-pull-request-branchand posts its callback withadd-comment. - Only the callback
add-commentjob usesAUTODEV_CALLBACK_TOKEN; every other operation usesGITHUB_TOKEN.
This keeps a single execution and security model for all AI work: the agent proposes, safe outputs enforce, and the orchestrator validates every callback before advancing canonical state.
Create the exact POC labels below. autodev is the trigger label. The other three labels identify states requiring human attention. Canonical state remains in orchestrator-authored issue comments.
$labels = @(
'autodev',
'autodev/ready-for-plan-review',
'autodev/ready-for-code-review',
'autodev/blocked'
)
foreach ($label in $labels) {
gh label create $label --color 1f6feb --force
}The AutoDev orchestration modules use Node's built-in test runner and do not require an npm install. From the repository root, use Node.js 20 or later to run the complete suite:
node --test .github/scripts/autodev/test/*.test.mjsTo run one test file while developing:
node --test .github/scripts/autodev/test/task.test.mjs- Confirm the Actions secret
AUTODEV_CALLBACK_TOKENexists. - Confirm the POC labels exist.
- Run
node --test .github/scripts/autodev/test/*.test.mjsand confirm the suite passes. - Run
gh aw --versionand confirm it matches the version pinned incopilot-setup-steps.yml. - Run
gh aw compile --validateand confirm every AutoDev workflow compiles.
- Create a replacement repository-scoped PAT with
Issues: read/write. - Update the
AUTODEV_CALLBACK_TOKENActions secret. - Post a callback comment from a disposable test execution and confirm the orchestrator processes it.
- Revoke the old PAT after the secret has been updated.
Never include tokens in workflow logs, prompts, comments, committed files, or command history.