Skip to content

Discard credential-bearing Codex app-server error text #329

Closed

Description

@HemSoft

Description

Main 66764b6f65964d1422e63aa5c575333b5bafb0e0 copies arbitrary Codex JSON-RPC error.message and failed account/login/completed.params.error strings into AppServerError::Refused. Truncating to 200 characters preserves short credentials. The sign-in handler displays to_string().

The mock-transport tests cli_request_errors_discard_credential_bearing_messages and cli_login_failures_discard_credential_bearing_messages both fail on that main revision. They inject only Bearer SYNTHETIC_CREDENTIAL_7DA8 or code=SYNTHETIC_CREDENTIAL_7DA8 through an in-memory channel. No actual CLI, auth files or provider calls.

Closed #72 / PR #112 fixed retired C# paths. This Rust path is distinct; PR #313/#321 are excluded.

Why

Credential-bearing CLI failure text can reach the sign-in diagnostic. Truncation is not redaction.

Goal

Discard arbitrary CLI error text at the Rust error boundary while keeping useful fixed diagnostics.

Acceptance Criteria

  • Request errors and failed login notifications omit synthetic tokens, authorization codes and cookies in Display and Debug.
  • Short, multiline and oversized messages obey the guarantee.
  • Successful, cancelled, timed-out and signed-out behavior remains covered.

Definition of Done

  • Bounded Rust fix with mock-transport regression coverage.
  • Four Rust gates, required hosted checks and clean current-head independent review.
  • Guarded merge and verified clean-main sync; no application launch or deployment.

Validation

  • cargo test -p codexbar-providers --test codex_error_privacy --locked: before the fix 0 passed, 2 failed with synthetic credential leak assertions; after the fix all pass.
  • Run the format, Clippy, production binary and workspace test gates from AGENTS.md on Laptop headlessly.

Source: Chief7da8 bounded synthetic error-redaction assignment. This is source-security work without layout or interaction changes.

Activity

  1. HemSoft commented on Nov 11, 2026

    @HemSoft
    CollaboratorAuthor

    Source fix delivered by the Chief7da8 Laptop repository owner in PR #330, guarded squash merge 899bf3fe7c589ce45ca7ca96c9684d43e1f956d1. Exact reviewed head b4641be8189acbfef409342a3e305fa7783ef2a7 has all seven required checks green and authenticated SFL Round 2 PASS, with no unresolved review threads. All four local Rust gates pass.

    Two mock-transport regressions failed before the source fix. Three now pass, covering request errors, failed login notifications and malformed login-start responses using only invented credentials. Raw CLI error text is discarded before diagnostics are built. No live provider/authentication or desktop execution was used, and no installed product was changed.

    Mini clean main and the clean detached Laptop task checkout are at the merge SHA; their source trees match the reviewed head. Home sync was safely skipped because its retained checkout is on fix/300-checked-durations; Laptop primary sync was skipped because of its pre-existing untracked audit/. These are explicit sync limits, not permission to remove or switch retained work. Owned remote and Mini staging branches and the task branch were removed. The active T3-managed worktree remains clean and detached. PR watch stopped. This closes the bounded source-security task without claiming a full audit or rendered/live-provider qualification.

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

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions