> ## Documentation Index
> Fetch the complete documentation index at: https://docs.checkfu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Use Codex as a harness lane

> Qualify a Codex adapter without changing the Agent, Environment, or Session model.

`codex` is a replaceable harness lane inside Checkfu's canonical product
model. It is not another Agent type, deployment object, transcript, or policy
authority.

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
Agent → AgentVersion
+ Environment
→ Session → Run → RunAttempt
```

First complete the [hosted quickstart](/getting-started/quickstart). It teaches
the canonical Agent, Environment, Session, and event path without making a
particular harness a prerequisite.

<Warning>
  This flow runs from a Checkfu source checkout.
  Part of this flow is behind a rollout fence; a deployment that has not enabled it refuses the request rather than running it.
  Confirm [capability status](/getting-started/status) before making availability part of your application's contract.
</Warning>

## Prepare and qualify the lane

Build the reviewed adapter image from the Checkfu source checkout:

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
pnpm --filter @checkfu/harness-managed-adapter image:build --harness codex
```

Keep the immutable image digest printed by the command.

Follow [Bring a custom harness](/guides/bring-a-custom-harness) for the exact
image, protocol, conformance, and evidence workflow. Low-level release and
registration records are execution-lane artifacts only. They never replace the
AgentVersion or Environment frozen by Session admission.

Treat Codex session handles and adapter callbacks as lane-local implementation details. The Checkfu Session event log remains durable execution truth.

## Create the Agent and start a Session

Create or update the Agent through the current Agent operation. A material
change creates the next immutable AgentVersion automatically; there is no
separate Draft, Release, deployment, or publish lifecycle.

Select the Environment separately when starting the Session:

```ts theme={"theme":{"light":"github-light","dark":"github-dark"}}
const session = await checkfu.sessions.create({
  agent: { type: "agent", id: agent.id },
  environment_id: environment.id,
})

await checkfu.sessions.events.send(session.id, {
  type: "user.message",
  payload: {
    content: "Describe the capabilities and limits of this execution lane.",
    caused_by: { kind: "api" },
  },
})
```

Authenticated server context supplies durable actor attribution. Read
settlement from the ordered Session event log rather than process exit, stream
closure, or harness-native narration.

## Support boundary

Qualification applies to one exact immutable tuple. It does not make this lane
a global default or prove every capability, provider, retention posture, or
execution locus. Re-check [capability status](/getting-started/status) before
using it in production.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.