Howto codex

Static reading edition · s01-06

Choose the right control for the task

Commands and your first session14 min estimatedApp / CLI / IDE

Combine natural-language requests, built-in controls and reusable skills without blurring their responsibilities.

Understand the approach

Use ordinary language to define the result, a built-in control to operate the client, and a skill to apply a repeated workflow. These are complementary tools. A request such as “explain this search and run its existing regression checks” defines work. /diff reveals changes. A project skill can provide a familiar review checklist. Stacking commands and skills without a clear outcome only makes the session harder to understand.

A good task names the relevant input, the allowed scope and an observable finish. In the Orbit Notes practice copy, inspect README.md, AGENTS.md and checks.cjs before asking for a search fix. The exercise brief supplies the real check command because the starter README deliberately contains an unsupported npm test instruction. Reproduce the uppercase and padded-query failures, preserve the supplied checks and unrelated files, and require evidence that the same cases pass after the change. Let Codex choose routine implementation details within that contract.

Keep facts and permissions separate. A README may explain how deployment works, but reading it does not authorize deployment. A review tool may return suggestions, but suggestions do not prove the code was changed. A completed test supports a particular behavior under its tested conditions. Finish with the actual changed files, checks performed, remaining gaps and a preview when the result is visual.

A useful task has an acceptance loop

Define the outcome, scope and acceptance before editing. Inspect relevant files, make a focused change, run the checks, and open the output and diff before deciding. Return to inspection for failed or unverified criteria; record success and limits only after the evidence satisfies the brief.

Define the outcome, scope and acceptance before editing. Inspect relevant files, make a focused change, run the checks, and open the output and diff before deciding. Return to inspection for failed or unverified criteria; record success and limits only after the evidence satisfies the brief.

Open the full diagram

Read a real before-and-after result

The unchanged six checks expose two baseline failures: uppercase REVIEW and the padded query. The reference fix computes a trimmed lowercase needle and compares lowercase titles, while filter returns the original objects in their original order. The padded command must print n1: Review launch checklist and n3: Review documentation.

A map-based solution can match the same IDs but copy and lowercase the returned objects. The comparison exercise rejects that candidate through the identity contract. Inspect the implementation and protected files as well as the check summary; correct search IDs alone do not establish preservation.

Recover from an unhelpful answer

First identify the missing input or broken assumption. If the wrong directory was inspected, fix the context. If the expected behavior was unclear, supply an example. If the change is correct but the proof is missing, ask for the relevant check. Starting a new chat can reduce clutter, but it does not repair the working tree or replace an evidence-based diagnosis.

About your environment

Checked 21 October 2026. Feature availability varies by client and host.

Try it step by step

  1. Write the observed problem and a concrete before-and-after example using fictional practice data.
  2. Ask Codex to inspect relevant files and applicable instructions before choosing the smallest useful change.
  3. Use a skill only if its trigger matches; inspect the diff and run the project’s documented relevant check.
  4. Open the actual result, compare it with the requested behavior, and request one specific correction if needed.

A useful starting example

Illustration · adapt before use.

A bounded implementation request text
In this disposable Orbit Notes copy, read README.md, AGENTS.md, notes.cjs and checks.cjs. Run node --test checks.cjs and reproduce node cli.cjs "  REVIEW  ". Fix case-insensitive, trimmed substring search only in notes.cjs, and correct the unsupported README check command. Preserve notes.json, checks.cjs and WORK-NOTE.md. Rerun the same six checks and query, then report actual changed files, results and remaining limits. Do not install packages, publish or contact services.
From input to result

The complete small-task loop

These results come from the executable capstone reference, not from an authenticated Codex run.

Worked input text
Baseline: node --test checks.cjs
Fix: normalize query and comparison in notes.cjs
Verify: node --test checks.cjs
Inspect: README.md and notes.cjs only
Expected result · compare with your run
Baseline: 4 pass, 2 fail.
Reference: 6 pass, 0 fail.
Padded uppercase query: n1, n3.
Protected files: unchanged.

The same behavior contract is tested before and after. Keeping checks.cjs unchanged prevents a superficial pass achieved by weakening the tests.

Hands-on exercise

Your turn

Apply the request to a fresh disposable Orbit Notes copy from the linked lab. Record the expected baseline of four passing and two failing checks. After the focused fix, retain all six checks and the exact two-note query result as evidence; compare your handoff with the supplied reference only after attempting the change.

Try the exercise before opening its reference answer. Use a disposable practice folder.

Run the practice

Orbit Notes project and recovery capstone

Extract into a new practice folder and keep the included labs folder. Run these commands from that extraction root, or from the course folder, using an existing Node.js installation.

  1. Command 1 text
    node labs/project-workflow/create-workspace.cjs

    Check: Returns a new owned temporary path. Open that exact copy in the app; the shipped starter stays broken.

  2. Command 2 text
    node labs/project-workflow/verify-depth.cjs

    Check: Runs two candidate implementations and recovery counterexamples in fresh copies. Reports paths, facts and preservation; live skill/instruction discovery remains a separate observation.

Follow this lesson’s specific walkthrough and compare its result with the answer key. Commands are relative to the course folder. The offline demonstration never claims a live Codex client loaded instructions, selected a skill or retrieved a connected record.

Check your result

  • The task has an observable user outcome and a clear local scope before implementation begins.
  • The reported evidence comes from actual inspected files and executed checks rather than a proposed command.
  • Your final inspection distinguishes created, checked and accepted work, with external publication still outside this exercise.
Reference answer & rubric Try the exercise before opening

A good task preserves the contract, changes the focused implementation and delivers evidence from the actual final files.

  1. Reproduce the two failing starter cases rather than asking for a broad project improvement.
  2. Fix notes.cjs and correct the README command, preserving notes, tests and unrelated work.
  3. Rerun all six checks and the padded uppercase query.
  4. Compare the actual result with the lesson-specific answer key; record unrun client observations separately from executed local checks.
Think it through

Check your understanding

A lint check passes after a filter fix. What remains necessary?

  1. Check the original failing filter example and inspect the delivered change.
  2. Nothing; lint proves the customer’s expected behavior.
  3. Publish immediately before the preview is inspected.
Reveal the answer and explanation

Answer 1: Check the original failing filter example and inspect the delivered change.

Lint is useful but does not necessarily exercise the reported failure or establish acceptance of the result.

Take this quiz in the interactive lesson to save your answer in the browser.

When it does not work

All checks pass after expected IDs were removed.

Likely cause: The tests were weakened instead of the implementation repaired.

What to try: Restore the supplied contract and fix the normalization behavior.

The model reports success but the file did not change.

Likely cause: The response described a proposed edit rather than a saved artifact.

What to try: Open notes.cjs and inspect the actual diff before accepting completion.

Common mistakes

  • Adding repeated instructions to “be perfect” while leaving the expected behavior undefined.
  • Approving a result solely because the agent reports success or because a generic lint command passed.
Source mapping & differences · equivalent

The source’s command-usage habits transfer as a workflow discipline, with Codex-specific controls and an explicit distinction between task intent, verification and permission.

Source topic: Best practices ↗

Go to the source

Official documentation, checked 21 October 2026. Product names, controls and availability may vary with your version, platform or account.

Continue in the interactive lesson →

Completion and quiz progress are saved
only in the interactive course.