Skip to content

[Cross-machine spend 7/7] CLI: configure SSH cost hosts - #4876

Open
salmonumbrella wants to merge 25 commits into
steipete:mainfrom
salmonumbrella:feat/xms-cli-hosts
Open

salmonumbrella wants to merge 25 commits into
steipete:mainfrom
salmonumbrella:feat/xms-cli-hosts

Conversation

@salmonumbrella

@salmonumbrella salmonumbrella commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

What changed

  • Adds codexbar config hosts list|add|remove to manage the app's manual SSH host list. --cost adds or removes only a host's spend tracking.
  • add and remove are idempotent and report changed. add uses the app's host validation, so an invalid host fails with a nonzero exit and nothing is written. remove accepts a stored token, so invalid stored entries can still be removed.
  • --check runs the same one-shot, noninteractive SSH probe that cost --remote uses. Each result is {"ok", "error"}. If a check fails, the command exits nonzero and the host stays configured.
  • Writes update the same two machine-local host settings as Settings, under one shared per-user transaction. The accompanying app rereads them on notification, at launch, and before a manual machine refresh. Older apps read their supported host settings at next launch. Host changes stay out of the portable preferences queue. config preferences export leaves the host keys out, and a transferred file containing them is refused.
  • Right before each remote SSH launch, Settings reads the canonical host preferences under the shared host lock. It updates its manual, selectable and spend host fields from them, then decides whether to launch. A missing or unavailable lock, a missing owner, cancellation or a revoked host denies the launch and cancels the whole machine collection, even when no notification arrived. No reports and no SSH error row are published. Real launch errors still surface.
  • No new settings. The Agent Sessions remote polling opt-in stays under Settings, and on-demand spend reads the selected hosts on its own.
  • All three host subcommands are macOS-only. On Linux they fail with a clear error.
  • CLIHelp, docs/cli.md (including a "Set up hosts from an agent" example), and the CHANGELOG cover the new commands.

Why

Setting up cross-machine spend currently means clicking through Settings on every Mac. An agent setting up a new machine has no way to add a devbox or include it in spend from a script.

CLI-configure-SSH-cost-hosts.mp4

Usage

codexbar config hosts add devbox --cost --check --format json
codexbar config hosts list --check --format json --pretty
codexbar config hosts remove devbox --cost   # stop counting spend, keep the host
codexbar config hosts remove devbox
{"host":"devbox","changed":true,"costUsage":true,"check":{"ok":true,"error":null}}

Validation at bcf1a8e9a:

  • Projection regression: it drives the real spend controller and local subprocess runner through a control run, a full removal and a cost-only removal. On removal the spawn is denied, CancellationError is thrown, no reports or error row are published, and all three host fields update. Five authority and error cases are tested separately. 3 XCTest methods and 27 Swift Testing methods in 6 suites (42 cases) pass. These tests bypass the production UsageStore wiring and real SSH.
  • make check reports 0 violations across 3168 files. The normal debug package build and signature check pass. No app was launched.
  • Linux: the source-only build, 17 tests in 3 suites and 72 documented-invocation cases pass. list, add, and remove each exit 1 with the macOS-only error.
  • All 31 packaged CLI operations pass against a scratch defaults domain and the synthetic OrbStack Ubuntu fixture. They include two real SSH checks, six concurrent adds and five preexisting-key operations. These CLI runs do not exercise the app's launch guard at runtime or an upgrade.

Validation at 1867a6944:

  • Launch-ordering regression: it runs a local shell fixture through the shared subprocess runner after the early consent read. It failed before the fix and now passes for both the allowed case and the removal case. A missing lock URL also failed before the fix and now cancels. 34 affected tests in 7 suites pass. These tests bypass the production UsageStore wiring and real SSH.
  • make check reports 0 violations across 3168 files. The normal debug package build and deep strict codesign verification pass. No app was launched.
  • Linux: the source-only build and 72 documented-invocation cases pass. list, add, and remove each exit 1 with the macOS-only error.
  • All 31 packaged CLI operations pass again with the new bundled CLI, against a scratch defaults domain and the synthetic OrbStack Ubuntu fixture. That is the 26 mutation, concurrency and SSH check operations plus the five preexisting-key operations. These CLI runs do not exercise the app's launch guard at runtime or an upgrade.

Validation at 47a21c470:

  • The revocation regression failed before the fix and now passes. It pauses one host and revokes the second without a notification while Settings is stale. On resume, the second host never reaches the injected transport and no row is published. An allowed control fetches both. Read-failure and released-owner denial are covered too. 22 focused tests in 3 suites pass. The factory regression injects its transport and bypasses the production UsageStore wiring, so it exercises neither that wiring nor real SSH.
  • make check reports 0 violations across 3168 files. The normal debug package build and deep strict codesign verification pass. The bundled CLI binary is byte-identical to the one used for the 138d94324 CLI runs below. No app was launched.

Older validation at 138d94324 (CLI and Core inputs unchanged through 47a21c470; shared Core changed at 1867a6944; the package, Linux and CLI checks were rerun there, as listed above):

  • 24 affected tests in 3 suites pass. They cover CLI mutation, Settings projection, startup, and rereading hosts before collection with injected stores and stubs.

  • make check reports 0 violations across 3168 files. The normal macOS package build and signature check pass.

  • Linux: the source-only build and 72 documented-invocation cases pass. list, add, and remove each exit 1 with the macOS-only error.

  • All 26 packaged CLI operations pass against a scratch defaults domain and a synthetic OrbStack Ubuntu fixture. This includes six concurrent adds, cost-only and full removal, invalid-input rejection, and retaining a host after a failed check. The original remote CLI link was restored and the fixture homes and defaults were removed. No real app defaults were touched.

  • Five additional packaged CLI operations with preexisting host keys preserve their selections, an unrelated preference, and queued portable-import bytes. This uses synthetic saved preferences, not an app upgrade run.

Actual CLI transcript below: devbox is the synthetic VM alias, and $SCRATCH_DOMAIN replaces the private fixture domain. Commands exit 0 unless marked otherwise.

$ codexbar config hosts add devbox --cost --check --defaults-domain "$SCRATCH_DOMAIN" --format json
{"changed":true,"check":{"error":null,"ok":true},"host":"devbox","costUsage":true}
$ codexbar config hosts list --check --defaults-domain "$SCRATCH_DOMAIN" --format json
{"hosts":[{"host":"devbox","costUsage":true,"check":{"error":null,"ok":true},"valid":true}]}
$ codexbar config hosts add devbox --cost --defaults-domain "$SCRATCH_DOMAIN" --format json
{"host":"devbox","changed":false,"costUsage":true}
$ codexbar config hosts remove devbox --cost --defaults-domain "$SCRATCH_DOMAIN" --format json
{"host":"devbox","changed":true,"costUsage":false}
$ codexbar config hosts remove devbox --defaults-domain "$SCRATCH_DOMAIN" --format json
{"changed":true,"host":"devbox","costUsage":false}
$ codexbar config hosts remove devbox --defaults-domain "$SCRATCH_DOMAIN" --format json
{"host":"devbox","changed":false,"costUsage":false}
$ codexbar config hosts list --defaults-domain "$SCRATCH_DOMAIN" --format json
{"hosts":[]}
$ codexbar config hosts add 'a;b' --cost --defaults-domain "$SCRATCH_DOMAIN" --format json
[{"error":{"code":1,"message":"Enter one SSH host alias or user@host.","kind":"config"},"source":"cli","provider":"cli"}]
# exit 1
$ codexbar config hosts list --defaults-domain "$SCRATCH_DOMAIN" --format json
{"hosts":[]}
$ codexbar config hosts add ghost.invalid --cost --check --defaults-domain "$SCRATCH_DOMAIN" --format json
{"changed":true,"check":{"ok":false,"error":"Could not check the host over SSH. Verify noninteractive SSH access and a trusted host key, and that the host's CodexBar CLI supports --identified-only."},"costUsage":true,"host":"ghost.invalid"}
# exit 1
$ codexbar config hosts list --defaults-domain "$SCRATCH_DOMAIN" --format json
{"hosts":[{"costUsage":true,"valid":true,"host":"ghost.invalid"}]}
$ codexbar config hosts remove ghost.invalid --defaults-domain "$SCRATCH_DOMAIN" --format json
{"host":"ghost.invalid","changed":true,"costUsage":false}

App runtime proof remains open: the scratch-domain CLI does not post the real app notification. Running-app pickup, restarted-app pickup, and actual notification delivery remain unverified. The launch check does not depend on notification delivery. Settings holds the per-user host lock only for the synchronous process launch, then releases it before waiting on SSH. That serializes a removal with the launch itself. It does not make the whole remote fetch atomic: a process that launched before the removal can keep running until the notification or normal cancellation stops it. The owner-level tests above do not establish the app runtime chain. At 47a21c470, CI passed on every job, all 236 macOS test groups passed on the first attempt, and Codex review reported no major issues. ClawSweeper confirmed the earlier P1 and the UsageStore wiring were addressed, and flagged the gap between the consent read and the SSH launch as a medium security and merge risk. The launch lock above is the repair for that gap. At 1867a6944, Codex review reports no major issues. ClawSweeper reports no findings and confirms that the source closes the consent-to-launch race. It keeps five holds before merge: running-app and restarted-app pickup with allowed and revoked real SSH, final-effect security proof, merge-risk proof, a v0.83.0 upgrade that preserves settings and queued imports, and a maintainer decision. CI passed at 1867a6944: lint, all Linux builds and the macOS tests succeed, with all 236 macOS test groups (1812 selections) passing on the first attempt and no retries or timeouts. At bcf1a8e9a, ClawSweeper finds no definite code defect. It still lists one medium security concern: revocation has not been shown at the real SSH effect through the production UsageStore path. It keeps the same five holds before merge. CI passes on every job, with all 236 macOS test groups (1812 selections) passing on the first attempt and no retries or timeouts. Codex review reports no major issues. Runtime proof, an app-upgrade run, and a maintainer decision remain required.

Refs #4833, slice 7 (CLI host setup)
Stacks on #4841

Commit shared host edits on submit, focus loss, or exit so intermediate
keystrokes do not revoke retained machine-spend consent. Request source
subtotals only for app consumers and compare compact JSON semantically.
Keep the shared host editor available with monitoring off and show existing
validator guidance for invalid committed aliases. Trim duplicate test
coverage, exercise the real input path, and add the PR changelog credit.
Consolidate source-resolution cases and keep layer-specific assertions.
Wait for cancelled controller tasks to finish before checking late results.
Render the collector's sanitized error in each source row's existing caption.
Keep unavailable costs and partial totals while showing the next action.
Keep host changes, preference imports, and app consumption under one lock.
Validate adopted host spelling and expose invalid stored tokens for removal.
Stop global help/version handling at the option terminator and permit
removal of listed tokens containing control characters. Trim redundant
host tests and keep validation coverage at the SSH fetch boundary.
@clawsweeper

clawsweeper Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-02T15:02:30.927439Z bcf1a8e Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@salmonumbrella

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Something went wrong. Try again later by commenting “@codex review”.

An unknown error occurred
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@clawsweeper clawsweeper Bot added the clawsweeper:intake:feature Preliminary submission classification; full source review pending. label Oct 31, 2026
@salmonumbrella

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Something went wrong. Try again later by commenting “@codex review”.

An unknown error occurred
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@clawsweeper

clawsweeper Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Codex review: needs real behavior proof before merge.

What this changes

Adds macOS CLI commands to configure shared SSH hosts and spend selection, alongside on-demand machine spend collection.

Example: Run codexbar config hosts add devbox --cost --check --format json.

  • Before: Configuring devbox for app spend collection requires Settings.
  • After: The CLI persists devbox and its spend selection, checks SSH, and reports changed and check results as JSON.

Review scores

Measure Result What it means
Overall readiness 🦪 silver shellfish (2/6) The implementation is coherent and prior source defects are addressed, but incomplete production authority and upgrade evidence, together with unresolved CLI direction, prevent readiness.
Proof confidence 🦪 silver shellfish (2/6) Real behavior proof is necessary before merge. See Before merge.
Patch quality 🦐 gold shrimp (3/6) Security review found an item that needs attention.

Product

Kind: Feature · Worth it: Needs a maintainer decision · Fix scope: Complete
User problem: An agent setting up a Mac cannot configure the app's SSH spend hosts through the supported CLI.
Reason: The commands address a concrete setup workflow, but approving the parent app detail does not settle this additional persistent CLI configuration surface.

Merge readiness

⛔ Blocked before merge - 5 items remain

Keep open: this PR adds a distinct CLI configuration capability absent from main, and the latest consent repair introduces no definite code defect found in this review.

Priority: P2
Reviewed head: bcf1a8e9a7a52bc24804d2b617c7ae43c9f43c67
Owner decision: Required. See Decision needed.

Decision needed

  • Question: Should the app expose persistent SSH host and spend-consent configuration through these macOS CLI commands?
  • Recommendation: Approve the bounded CLI feature: Allow list/add/remove and explicit checks using machine-local preferences, retaining Settings ownership of automatic remote polling.
  • Why: The recorded approval authorizes the parent on-demand app detail, while this PR adds a separate public configuration surface without a recorded owner decision.

Before merge

  • Add real behavior proof - Authority-chain proof required: the packaged CLI transcript demonstrates synthetic-domain mutations and real SSH checks, but not running-app notification pickup, restarted-app pickup, or the production UsageStore-to-SSH launch guard. Provide redacted traces showing an allowed host reaches real SSH and full or cost-only removal committed before launch prevents SSH I/O and result publication despite delayed notification. Also provide a v0.83.0 upgrade run preserving existing host settings, unrelated preferences, and queued portable imports; synthetic preexisting-key operations are supporting coverage. Redact IPs, API keys, phone numbers, and non-public endpoints. After adding proof, update the PR body, then request a new review with @clawsweeper re-review. The PR author or someone with repository write access can request it.
  • Resolve security concern: Verify revocation at the real SSH effect - The new regression drives the real controller and subprocess runner but replaces SSH with a local shell and bypasses UsageStore; it supports the implementation without establishing the complete production authorization chain.
  • Resolve merge risk - The contributor must establish that the production app rejects a revoked host before real SSH I/O when notification delivery is delayed.
  • Resolve maintainer decision - Resolve the maintainer decision shown above before merge.
  • Add data-model compatibility proof - The review found that existing stored data may not work after upgrade. Show that existing data still loads and works with this change.

Findings

  • [medium] Verify revocation at the real SSH effect — Sources/CodexBar/UsageStore/UsageStore+SpendDashboardPublication.swift:29

Tests

  • Missing end-to-end proof: Missing current packaged-app evidence for running and restarted pickup, allowed real SSH, and revocation before launch with delayed notification, plus a v0.83.0 upgrade preserving settings and queued imports.
Agent review details

How this fits together

CLI commands and Settings share machine-local host preferences; the spend controller reads selected hosts and launches bounded SSH accounting requests through a locked consent check.

flowchart TD
CLI[Host configuration CLI] --> Preferences[Canonical host preferences]
Settings[Settings editor] --> Preferences
Preferences --> Consent[Locked launch consent]
Controller[Machine spend controller] --> Consent
Consent --> SSH[System SSH process]
SSH --> Reports[Identified usage reports]
Loading

Technical review

Best possible solution:

Land an approved CLI configuration surface using the shared preferences transaction and existing SSH owner, with app-boundary and upgrade evidence.

Do we have a high-confidence way to reproduce the issue?

This is a feature request: main supports explicit cost collection over SSH but lacks these host-configuration subcommands and the stacked machine-detail UI.

Is this the best way to solve the issue?

Sharing canonical preferences and reusing the existing collector and SSH transport is a sound design; the latest projection repair preserves cancellation and real launch errors without a competing host store.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against 897bff31731b.

Merge-risk options

Maintainer options:

  1. Verify the production launch boundary (recommended)
    The contributor should demonstrate allowed SSH and denial after committed revocation through the packaged app's UsageStore wiring.

Provenance checked

  • On-demand machine detail and host-editor behavior changes intended behavior with a stated reason ([Cross-machine spend 5/6] Collect By machine detail on demand #4841: The maintainer requested a manual detail without a background lifecycle and fresh selection after removing and re-adding a host; the older editor work deliberately deferred structured management.)
  • Identified collection moved from CLI to Core keeps the original intent (d3724b2: Identify and deduplicate copied native requests while preserving available sources and cancellation; subsequent multi-host work added ordered source provenance.)
  • SSH launch and signal cleanup keeps the original intent (a9e37df: Use bounded, noninteractive SSH with trusted keys, restricted environment, and local helper cleanup; this PR reuses that boundary and adds a consent callback immediately around launch.)
  • Shared host identity keeps the original intent (b88c787: Preserve case-sensitive SSH usernames while deduplicating hostname case; extraction retains that rule.)
  • Managed account lock reuse keeps the original intent (4e71c35: Serialize credential transactions with an owner-only process lock and prompt failure for competing account writers; existing account callers retain nonblocking behavior.)
  • Machine-local preferences and portable imports keeps the original intent (26dcc07: Portable preferences use an explicit allowlist independent of defaults search domains; host keys remain outside that format and queue.)

Testing

Proof path: shipped entry point.

Security

Needs attention: Source enforces consent at process launch, but production app authority-chain validation remains incomplete.

Evidence

Security concerns:

  • [medium] Verify revocation at the real SSH effect — Sources/CodexBar/UsageStore/UsageStore+SpendDashboardPublication.swift:29
    The new regression drives the real controller and subprocess runner but replaces SSH with a local shell and bypasses UsageStore; it supports the implementation without establishing the complete production authorization chain.
    Confidence: 0.96

What I checked:

  • Reviewed introduction and main: The pinned introduced diff adds the host CLI, canonical preferences owner, and machine detail; those files are absent from fetched main. Base movement changes only release files and changelog. (Sources/CodexBarCLI/CLIConfigHosts.swift:36, bcf1a8e9a7a5)
  • Consent checked at process launch: Settings projects canonical host values and checks selection and cancellation while holding the same lock used by mutations, then synchronously invokes process launch; denied authority propagates as cancellation. (Sources/CodexBar/Settings/SettingsStore+HostPreferences.swift:24, bcf1a8e9a7a5)
  • Production wiring: UsageStore supplies Settings.spendHostLaunch to the shared controller, whose SSH fetcher passes it through RemoteCodexCostFetcher to SubprocessRunner immediately around Process.run. (Sources/CodexBar/UsageStore/UsageStore+SpendDashboardPublication.swift:29, bcf1a8e9a7a5)
  • Scoped maintainer direction: In [Cross-machine spend 5/6] Collect By machine detail on demand #4841, steipete approves an on-demand app detail and fresh consent after remove/re-add; that discussion does not approve the added CLI configuration feature.
  • Supplied behavior evidence: The full PR body provides packaged CLI mutation and real SSH-check transcripts, while explicitly distinguishing synthetic preexisting-key checks from an upgrade and local-shell regressions from production app wiring. (bcf1a8e9a7a5)
  • Media assessment: Inspected all three prepared screenshots: they show historical host-editor states, not the current CLI-to-app launch boundary. The historical video could not be assessed: preparation reports ffprobe failed: spawnSync ffprobe ENOENT, and browser fallback returned Cache miss.

Likely related people:

  • Peter Steinberger: Raw commit 8106e7d adds Sources/CodexBarCore/RemoteSessionFetcher.swift:176 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: 8106e7d3cc31; files: Sources/CodexBarCore/RemoteSessionFetcher.swift)
  • ECuteri: Raw commit a9e37df adds Sources/CodexBarCore/Providers/Codex/RemoteCodexCostFetcher.swift:138 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: a9e37dfd3edb; files: Sources/CodexBarCore/Providers/Codex/RemoteCodexCostFetcher.swift)
  • jkobject: Raw commit d3724b2 adds Sources/CodexBarCore/Providers/Codex/RemoteCodexCostFetcher.swift:136 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: d3724b213a66; files: Sources/CodexBarCore/Providers/Codex/RemoteCodexCostFetcher.swift)

Labels

Label changes:

No label changes.

Label justifications:

  • P2: Useful optional configuration and spend functionality with a limited user population and no established urgent main regression.
  • merge-risk: 🚨 compatibility: CLI and app become concurrent writers of persisted host preferences, and stable-release upgrade preservation remains unverified.
  • merge-risk: 🚨 security-boundary: Persisted host selection authorizes SSH execution; source closes the launch race, but the production allowed/revoked boundary lacks final-effect proof.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🦐 gold shrimp.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Add final-effect proof that an allowed host reaches real SSH and a revoked host is rejected before I/O through production app wiring.

Rating scale

6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior.

Workflow

ClawSweeper edits this one comment on every review. Comment @clawsweeper re-review for a fresh review only. Repair and merge execution lanes are retired.

History

Review history (5 earlier review cycles)
  • reviewed 2026-10-31T21:06:35.881Z sha 06bd73b :: needs real behavior proof before merge. :: [P1] Reconcile pending host snapshots before applying Settings edits
  • reviewed 2026-10-31T23:55:12.154Z sha 138d943 :: needs real behavior proof before merge. :: none
  • reviewed 2026-11-01T00:40:10.408Z sha 138d943 :: needs real behavior proof before merge. :: [P1] [P1] Recheck host consent before launching each app SSH fetch
  • reviewed 2026-11-02T10:05:01.046Z sha 47a21c4 :: needs real behavior proof before merge. :: none
  • reviewed 2026-11-02T12:07:42.779Z sha 1867a69 :: needs real behavior proof before merge. :: none

Reviewed November 2, 2026, 9:44 AM ET / 14:44 UTC (Revision 6).

Share host subset normalization at the transaction boundary and keep the
cancellation check before each SSH host. Correct host output and lock errors.
Use per-host spend intent and shared preference errors. Name raw host tokens
explicitly and show JSON options before the literal-argument delimiter.
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🎉

Reviewed commit: 138d943241

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@salmonumbrella

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

🦞👀
Exact review queued.

Re-review progress:

@clawsweeper clawsweeper Bot added P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. merge-risk: 🚨 security-boundary 🚨 Merging this PR could weaken sandboxing, authorization, credentials, or sensitive data. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. and removed clawsweeper:intake:feature Preliminary submission classification; full source review pending. labels Nov 1, 2026
@salmonumbrella

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Pushed 47a21c470: the app machine-spend loader now rereads canonical Settings consent before each remote fetch, independently of notification delivery. A denied read, revoked host or released Settings owner ends the collection as cancellation.

The regression first failed before the guard. It pauses the first host, revokes the second while Settings is stale and no notification is delivered, then verifies the second never reaches the injected transport and no result is published. The allowed control fetches both. Final affected validation passes 22 tests in 3 suites; make check reports zero violations across 3168 files. The fresh normal macOS package and deep strict signature verification pass.

The PR body distinguishes that factory/Settings test from real app wiring or SSH runtime proof. The packaged CLI is byte-identical to the binary used for the recorded 31 scratch-domain fixture operations. App notification/restart traces, an actual stable-release upgrade, and the maintainer's CLI product decision are still unproved. The consent read and SSH launch are not one atomic lock.

@clawsweeper

clawsweeper Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

🦞👀
Exact review queued.

Re-review progress:

@clawsweeper clawsweeper Bot added clawsweeper:intake:feature Preliminary submission classification; full source review pending. and removed clawsweeper:intake:feature Preliminary submission classification; full source review pending. labels Nov 2, 2026
@salmonumbrella

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Nice work!

Reviewed commit: 47a21c4705

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@salmonumbrella

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

🦞👀
Exact review queued.

Re-review progress:

@clawsweeper clawsweeper Bot added clawsweeper:intake:feature Preliminary submission classification; full source review pending. and removed clawsweeper:intake:feature Preliminary submission classification; full source review pending. labels Nov 2, 2026
@salmonumbrella

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep them coming!

Reviewed commit: 1867a6944b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@salmonumbrella

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

🦞👀
Exact review queued.

Re-review progress:

@clawsweeper clawsweeper Bot added clawsweeper:intake:feature Preliminary submission classification; full source review pending. and removed clawsweeper:intake:feature Preliminary submission classification; full source review pending. labels Nov 2, 2026
@salmonumbrella

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🎉

Reviewed commit: bcf1a8e9a7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

This branch has not been deployed

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

Labels

merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. merge-risk: 🚨 security-boundary 🚨 Merging this PR could weaken sandboxing, authorization, credentials, or sensitive data. P2 Normal priority bug or improvement with limited blast radius. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant