Getting started¶
Requirements¶
- Codex with Plugin support
- Git
- CPython 3.11, 3.12, 3.13, or 3.14
- access to each repository and external system placed in scope
- the recommended GitHub Plugin, or an authenticated
ghfallback for supported operations
Plugin installation bundles its Python modules and uses only the CPython standard
library; it does not install Python packages on first use. python3 and git are
required. Authenticated gh is checked only when a selected GitHub operation needs
the CLI fallback. Control and the GitHub Plugin are optional integrations, while a
project's build and test dependencies remain project-owned readiness concerns. Run
python3 <plugin-root>/skills/plugin-diagnostics/scripts/runtime_audit.py for a
credential-safe dependency readback; it never installs or authenticates anything.
Runtime assurance¶
AI Teams defaults to Codex workspace-write with never approvals. If you
intentionally run Codex with danger-full-access or unrestricted, opt in once
for your OS account at ~/.codex/ai-teams/execution-policy.json:
{
"schema": "ai-teams-user-execution-policy/v1",
"mode": "trusted-full-access",
"provider": "codex",
"responsible_owner": "local-user",
"external_containment": "dedicated OS account"
}
The account must own that file and its .codex and ai-teams parent
directories; none may be a symlink or group/world writable. Trusted full access
keeps Issue, branch, registered external worktree, runtime cwd, pull request,
and validation checks, but reports filesystem isolation as unverified. Remove
the file to restore strict mode immediately. A repository may require strict
mode, but repository content cannot enable trusted full access for a user.
Execution environment¶
AI Teams separates delivery policy from the runtime that performs Git, tests,
and GitHub operations. Source work starts only after workspace readiness returns
status: ready for the exact repository, Issue, branch, revision, and selected
runtime. Creating a worktree alone is not readiness evidence.
Use a dedicated OS account or disposable machine/container for Codex. Keep the primary checkout as a read-only coordination surface and edit only the registered Issue worktree. Give the runtime the minimum credentials needed for an authorized operation; keep unrelated host files and ambient credentials outside it.
The supported flow resolves the repository-owned worktree and readiness
contracts, verifies one explicitly selected local or container provider, and
claims the exact Issue execution context. Focused checks and local pre-push
verification run there. GitHub still owns push, pull request, hosted
validate, merge, and remote-branch deletion evidence. A ready result grants
none of those effects and grants no release, deployment, settings, secret, or
destructive authority.
| Responsibility | Owner |
|---|---|
| Goal, Issue, delivery, and acceptance semantics | AI Teams |
| Worktree and runtime process effects | Selected local host or container runtime |
| Runtime and worktree state | OS account and Git repositories |
| Credentials | User and selected provider |
| GitHub reads and writes | GitHub Plugin or authenticated gh fallback |
| Existing authority | Issue, worktree, verification, PR, and release contracts |
| New runner or installer lifecycle | A separately registered component; not the core Skill |
Current readiness support is deliberately narrower than a complete runner:
| Path | Current support | Boundary |
|---|---|---|
| Local provider | Linux-native user-state filesystem | Uses one supplied Python executable; installs nothing |
| Container provider | Already-present immutable image ID | No pull, network, credentials, or implicit fallback during readiness |
| AI Teams development image | Reproducible linux/amd64 local build |
Readiness image only; not a durable runner or hosted-CI image |
| Managed consumer | Current repository-owned managed-project manifest | Consumer owns all five readiness commands |
| Native package installer | Fedora 42/RHEL 9 noarch RPM source plus manual transaction | No package repository or implicit privileged install |
| Reference delivery runner | Optional immutable-image launcher | Provider operations and hosted acceptance remain independent |
After completing the repository's locked setup, run the packaged preparation command with fresh host-capability evidence and its worktree policy:
python3 <ai-teams-skill-dir>/scripts/prepare_workspace.py \
--root <repository-root> --repo <owner/repository> --issue <number> \
--policy <repository-worktree-policy.json> \
--host-capability-evidence <fresh-host-evidence.json> \
--python <absolute-python-executable>
For the explicit container path, provision an approved image first. The source repository supplies a bounded local build:
python3 scripts/build_workspace_readiness_image.py \
--root <absolute-repository-root> --runtime <absolute-container-runtime>
Pass the returned immutable image_id with --provider container, the absolute
container runtime, and the Python path inside the image. Use --preflight ci
only when the repository contract selects it; it never replaces exact-head
hosted validate.
Treat blocked as an actionable handoff, not permission to switch providers or
install dependencies implicitly. Correct the declared runtime, manifest,
identity, or freshness problem and obtain new readiness. Do not reuse evidence
after five minutes or a revision change. Missing images cause no pull/build,
failed probes start no candidate edit, and uncertain GitHub effects receive
exact readback without blind retry.
Optional reference runner and native package¶
When an existing isolated Codex host is unavailable, build the optional image
from packaging/reference-runner/Dockerfile, inspect its immutable image ID,
and install the launcher from the same accepted source commit:
python3 scripts/reference_runner.py install \
--source-root <accepted-clean-source-root> \
--prefix <absolute-install-prefix>
python3 <absolute-install-prefix>/bin/ai-teams-reference-runner verify \
--prefix <absolute-install-prefix>
Fedora 42 and RHEL 9 are the first native-package targets. Build the noarch RPM
from packaging/reference-runner/ai-teams-reference-runner.spec; install only
the RPM and checksum/SBOM set from the same accepted commit. This project does
not configure a package repository.
Provision a dedicated Docker network separately, make the Issue worktree ready,
then invoke one immutable image. Optional private, user-owned credential
directories are mounted read-only in argument order below
/run/ai-teams/credentials/:
ai-teams-reference-runner run \
--runtime /usr/bin/docker \
--repository owner/repository --issue 123 \
--worktree /absolute/registered/123-delivery \
--image sha256:<64-hex-image-id> \
--network ai-teams-delivery-123 \
--credential-dir /private/codex-home \
--credential-dir /private/gh-config \
-- env CODEX_HOME=/run/ai-teams/credentials/0 \
GH_CONFIG_DIR=/run/ai-teams/credentials/1 \
codex exec '<bounded delivery request>'
The launcher starts at most one container. It never creates or pulls an image, creates a network, obtains credentials, retries a failed command, or claims hosted acceptance. Only the exact worktree and its Git common directory are writable; the Docker socket, host home, and other repositories are absent.
Upgrade by running install from newly accepted source and verify afterward.
A failed transaction restores the previous exact files. uninstall refuses
changed artifacts and removes only its three digest-matching files:
ai-teams-reference-runner uninstall --prefix <absolute-install-prefix>
Repositories, credentials, images, networks, and unrelated prefix files remain. Unsupported transitions are an operator handoff, not recursive-delete authority.
Install¶
The recommended reviewed prerelease is
v0.30.0-rc.1,
published from exact commit a6a2eca2a6819ed29d1105ac7f23cb0faa27d5e4.
Review the linked Release and commit, then install that immutable 40-character
commit:
AI_TEAMS_COMMIT=a6a2eca2a6819ed29d1105ac7f23cb0faa27d5e4
codex plugin marketplace add Qoo257/ai-teams --ref "$AI_TEAMS_COMMIT"
codex plugin add ai-teams@ai-teams
Do not replace the exact commit with main or another moving ref. A later
release should be installed only after reviewing its own immutable tag and
40-character commit.
Enable AI Teams only for selected projects¶
Codex owns the Plugin switch. After installation, edit its existing table in
~/.codex/config.toml so the default is disabled:
[plugins."ai-teams@ai-teams"]
enabled = false
Add the following to .codex/config.toml at the root of each project you
explicitly choose to enable:
[plugins."ai-teams@ai-teams"]
enabled = true
Preserve other settings and avoid duplicate tables. Codex must also trust the project before it reads that override. Leave unselected projects without an enabling override; keep this setting out of a shared parent workspace. A tracked override follows that repository's worktrees, subject to their host trust checks. Installation, project enablement, management/readiness, feature opt-ins and permission for external effects remain separate.
Finish or cancel active work and start a fresh Codex session after changing
these values. To disable a project, set its override to false and restart;
removal alone works only when the effective default remains false. Do not
resume old AI Teams instructions or invoke cached scripts as a workaround.
Verify the effective cwd configuration and Skill/MCP/Hook inventories; a global
installed/enabled listing does not prove a project's effective state. Recheck
after installation or update because host-managed activation can change.
The canonical native activation contract
owns setup, migration and the bounded installed-host smoke. The Plugin introduces
no duplicate activation flag in .ai-teams/managed-project.json or settings.json.
Review project setup¶
Start a fresh session in the enabled project. Use $ai-teams setup
to review a minimal Project profile, proposed file diffs, readiness command
candidates and missing capabilities. It preserves existing Issue templates and
offers an optional feature, bug and decision starter review. The proposal changes no files and runs no
repository commands. Review each stage before using its existing adoption or
delivery-readiness apply owner; re-plan after each applied stage.
Plugin installation and Project readiness are reported separately. A workflow file or configuration is not proof of successful CI, an authenticated provider, deployment or measured outcome. Optional integration onboarding retains the provider-owned authentication and installation approval flows.
For the same read-only proposal from the installed CLI:
python3 <ai-teams-skill-dir>/scripts/project_setup.py \
--root <repository-root> --repo <owner/repository>
Use a clean committed repository. --expect-revision can reject a stale commit;
--readiness-contract and --equivalents reuse existing owner schemas. Supply
tracked relative --evidence-source or --deployment-request documents to
check their configuration without connecting or dispatching. Missing runtime
checks or integrations remain degraded/unknown, with the next owner action
shown in the proposal.
Optional Issue forms¶
For a repository without suitable forms, the starter includes portable metadata,
outcome, evidence, scope, stable acceptance IDs and verification prompts. Choose
the optional step after reviewing local instructions, existing templates, tracker,
language and labels. Declining changes no files. The issue_starters part of the
setup result contains a complete review_input; save and complete that object
as a temporary review file. It is not another project configuration.
python3 <ai-teams-skill-dir>/scripts/issue_starters.py plan \
--root <repository-root> --repo <owner/repository> --review <review.json>
Review the exact diffs, then use apply with the same arguments and
--accept-digest <digest> in the adoption Issue worktree. Re-plan after other
adoption stages change the repository. At most three forms and one missing
chooser configuration are created. Existing or modified files are preserved;
unknown policy or overlapping forms stop the write. Identical repeats change
nothing. A partial failure reports the created paths and retains them for exact
repository-owned reconciliation, without automatic deletion or retry.
The repository owns the accepted files in .github/ISSUE_TEMPLATE. Customize
the reviewed form text and existing labels, including required local fields;
configured companion summaries are included once for browser and CLI creation.
Later Plugin versions do not overwrite local changes. Remove or revert the
forms through normal repository review. The baseline records the GitHub schema
sources and its review date; setup never downloads mutable standards. See the
starter contract
for the supported form subset, evidence inputs and recovery boundary.
Update an exact-ref installation¶
Codex's generic marketplace refresh does not advance a marketplace pinned to an
immutable commit. Keep the pin: detect an available release with the packaged
plugin-diagnostics/scripts/update_check.py, review that Release and its exact
40-character commit, and then run the packaged updater from a stable directory
outside the marketplace checkout:
python3.11 <plugin-diagnostics-skill-dir>/scripts/update_check.py
python3.11 <plugin-diagnostics-skill-dir>/scripts/marketplace_update.py \
--target-revision <40-character-reviewed-commit> \
--target-version <manifest-version> \
--target-release <vMAJOR.MINOR.PATCH-or-RC> \
--preflight-only
The preflight validates current and target version, release, ref, and provenance
without changing the marketplace or Plugin. After granting separate authority
for that exact update, rerun the same command without --preflight-only. The
bounded updater replaces the pinned marketplace, reinstalls
ai-teams@ai-teams, reads the result back, and reports updated, rolled-back,
rejected, or unresolved. Do not retry an unresolved result.
Confirm status: updated and that active_revision, active_version, and
active_release match the reviewed target. Then start a new
Codex session and use the installed plugin-diagnostics Skill to run the
explicit update diagnostic and a representative repository inspection. Codex's
supported Plugin surfaces and new-session behavior are described in the
official Plugin documentation; AI
Teams' exact-ref safety and updater behavior are defined by the packaged
update contract.
To roll back, review the previous immutable Release and run the same updater
with its exact commit, manifest version, and Release tag. Verify the restored
identity and start another new session. Never move or reuse a published tag,
switch the marketplace to main, hand-edit Codex configuration, or edit the
installed cache.
Use¶
Ask Codex to use AI Teams for product direction, discovery, planning, Issue delivery, repository adoption, status, semantic review, or recovery. The Plugin chooses the smallest applicable workflow and keeps material state in the project system of record.
Plugin installation alone does not start a service, deploy anything, alter a marketplace, or grant access to external systems.
Local GitHub CLI help can use the exact command gh pr merge --help or the
existing gh help pr merge form. The AI Teams Hook still checks the current
Issue execution context; refresh workspace readiness if that context is missing
or expired. Extra arguments or shell combinations receive no new help exemption.
Older installed versions may reject the first form; use gh help pr merge until
a corrected Plugin is explicitly installed. Source PR acceptance alone does not
activate a new installed Hook.