Skip to content

Campaign: support isolated Codex authentication on headless Linux #983

Description

@jeffhuber

Part of roadmap #900. Follow-up from the owner-supplied v1.4.0 hosted Ubuntu adoption report; planned after v1.4.1 stabilization/Graphify and before final v1.5.0 qualification. This does not add a dependency to stabilization epic #979 or delay #915.

Problem and verified scope

The released isolated Codex campaign home uses keyring-only credentials. A headless host can have working ordinary Codex/Claude authentication while the isolated Codex release-campaign lane remains unavailable. Merged #953/#966 fixes unrelated campaign-auth owner actions when no campaign is intended; it does not implement non-keyring campaign authentication. Preserve that distinction and the existing credential-isolation contract.

Outcome / PR mapping

One bounded OSS PR provides an explicitly selected, supported isolated authentication path for Codex campaigns on headless Linux, with the same readiness rule used by the adapter and doctor. Planned Code Mower Codex builder and independent eligible Code Mower Claude review. Coordinate campaign authentication sources with #976 release reporting; this is separate from #962 runner/Git handoff capability and from hosted Devin role qualification.

Acceptance criteria

  • Verify the supported Codex CLI credential mechanisms against the maintained CLI/official contract before choosing an implementation; do not assume file or environment inheritance is safe or supported.
  • Explicit opt-in bootstrap uses a protected credential boundary scoped to the campaign adapter. Preserve restricted provider configuration, workspace containment, and existing keyring mode; no silent ambient-home/token fallback, credential copies into the model-readable workspace, or broad credential inheritance.
  • Adapter execution and doctor probe use the same selected isolated authentication source. Ordinary adoption with no campaign intent remains free of campaign-auth owner actions.
  • Headless cold-start, authenticated, logged-out, missing/unavailable credential source, restart, and revoked-auth cases produce bounded actionable diagnostics. An unsupported mode never becomes a readiness pass.
  • Tests prove secrets do not enter argv, prompts, transcripts, reports, public JSON, generated setup, or model-readable artifacts; review isolation/permission behavior and backwards compatibility.
  • Document the supported headless setup and its remaining operator actions. Normal CLI login, transport installation, and campaign readiness remain separate.
  • Obtain an independent exact-head Code Mower audit, resolve P0/P1/P2, and pass focused/relevant checks, normal CI and authoritative gate before merge. Bind inclusion to the published package before marking shipped.

If no supported mechanism meets the isolation boundary, record the evidence and propose an explicit scope revision before calling this item complete. Do not weaken isolation to satisfy the adoption report. No new paid canary, hosted-Devin create, recovery allowance, credential purchase, or owner token provisioning is authorized by this issue.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    builder:claudeCode Mower generated labeldispatched:claudeCode Mower generated labeltier:RCode Mower generated label

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions