Skip to content

CLI series: review findings we declined or deferred #96

Open

Description

@lydakis

This is a list of the Codex review findings on the CLI feedback PRs (C1 #88, C2 #94, C3 #95, and the PRs after them) that were declined or left for later rather than fixed in their PR. Each entry has a class and a one-line reason, and the linked comment has the full trace. New entries are added as later rounds decline more.

Classes: crash/race needs a crash, a dropped connection or a race at an exact step; load shows up only under a burst or a stalled component; hostile input needs malformed or adversarial input; contract is a choice about which correct answer to give; planned is already scheduled in a later PR of this series.

C1 #88: safe retries

C2 #94: errors as JSON

C3 #95: one turn view

Activity

  1. lydakis commented on Oct 10, 2026

    @lydakis
    OwnerAuthor

    #118 (C6, per-turn token cap): one finding was declined.

    • Reserve the in-flight call before refreshing its cache
      • Class: cap overshoot in an edge case.
      • What happens: a reply that streams longer than the keep-warm interval (240 s) sends refreshes that bill against the cap before the call's own usage is known.
      • Why declined: the overshoot is bounded by those refreshes within one call, and the cap's contract is already that one call may overshoot.
      • Fix if wanted: suppress refreshes while a capped call streams, or reserve an estimate of its usage.

    Generated by Claude Code

  2. lydakis commented on Oct 28, 2026

    @lydakis
    OwnerAuthor

    #241: trigger checked rows, fire handle, --replace


    Generated by Claude Code

  3. lydakis commented on Oct 28, 2026

    @lydakis
    OwnerAuthor

    #241 (continued)

    • A replayed --commit ask settles with the HEAD from before its send. crash/race. It needs a kill or a replacement between the saved request and the settle, plus a later wake in that window. The worst case is one extra turn for a commit that was already delivered. Fix if wanted: save seen with the request, scoped to its repository, and restore it on replay.

    Generated by Claude Code

  4. lydakis commented on Oct 28, 2026

    @lydakis
    OwnerAuthor

    #261 (Sonny: auto-review status, denials, /approve)


    Generated by Claude Code

  5. lydakis commented on Oct 28, 2026

    @lydakis
    OwnerAuthor

    #242 (pictures)


    Generated by Claude Code

  6. lydakis commented on Oct 28, 2026

    @lydakis
    OwnerAuthor

    #245 (Sonny: ask puts a decision with reasons where it was asked)


    Generated by Claude Code

  7. lydakis commented on Oct 28, 2026

    @lydakis
    OwnerAuthor

    #276 (Codex security review): the cap checks the folders in a sandboxed bot's create, fork or submit, and then dispatch resolves those paths a second time. A bot that swaps a link between the two can store a folder outside its own. This is declined as a race. The fix would be to check the folders after dispatch has resolved them: move the session's caller into Service and check there. A link swapped in after the bot is created is already refused, because each confined call checks its roots against their real paths (2b8dae0). Between that check and bubblewrap's mount there is a narrower race, which is declined as well.


    Generated by Claude Code

  8. lydakis commented on Oct 28, 2026

    @lydakis
    OwnerAuthor

    From #254 (apply_patch in the sandbox): the daemon checks a sandboxed bot's patch removals (*** Delete File, and the source of a move) against the bot's roots, but runs them outside the sandbox. A concurrent sandboxed command that swaps an in-root parent directory for a symlink between the check and the remove_file could delete a file outside the roots. The fix would be a removal mode in the sandbox helper, beside --agent-run-as-write, or descriptor-relative removal that rejects symlinks. #254 (comment)


    Generated by Claude Code

  9. lydakis commented on Oct 28, 2026

    @lydakis
    OwnerAuthor

    #291: calls in a row run together


    Generated by Claude Code

  10. lydakis commented on Oct 28, 2026

    @lydakis
    OwnerAuthor

    Generated by Claude Code

  11. lydakis commented on Oct 28, 2026

    @lydakis
    OwnerAuthor

    #296 (custom roles: extends / skills)

    • Index edge, deferred. A workspace X.md with extends: X shadows a home X.md with extends: lead. The Profiles index then still lists X as a peer role, because it only follows extends across files it indexes, and the shadowed home file is skipped. Starting a peer in that role gives it lead text. The index only advertises roles and nothing breaks; the fix means reading shadowed heads for self-extensions. thread

    Generated by Claude Code

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions