Skip to content

chore(privacy): stop publishing absolute home paths - #227

Merged
saagpatel merged 4 commits into
mainfrom
chore/redact-home-paths
Aug 11, 2026
Merged

chore(privacy): stop publishing absolute home paths#227
saagpatel merged 4 commits into
mainfrom
chore/redact-home-paths

Conversation

@saagpatel

Copy link
Copy Markdown
Owner

Replaces absolute home paths with ~ in tracked files, so the repository stops
publishing the operator's macOS account name and local directory layout.

This is one of 31 identical branches across the portfolio. Every one of them was
committed and pushed but none was ever opened as a pull request, so the paths
stayed on the default branch and stayed public. Merging this is what actually
removes them.

No credential, token, key material or personal name was exposed. What leaks is
the account name and the shape of the directories under it, which is a
fingerprinting signal rather than a breach.

Some occurrences are deliberately left in place, and should not be redacted in a
follow-up:

  • tests that assert a named file does not contain the path. The literal
    there is the needle the test searches for, not a leak.
  • sandbox-escape tests that attempt to read or write a real absolute host path.
    Redacting the path removes the thing the test proves.
  • sealed evidence artifacts pinned by a SHA-256 contract test. A text edit
    invalidates the proof rather than redacting it; those need a re-run that
    produces a fresh receipt, not a substitution.

Test fixtures that must stay a detectable private path use /Users/example/...
rather than ~, because the validator they exercise keys on /users|home|root/
and not on the account name. That keeps each assertion meaningful while naming
nobody.

saagpatel and others added 2 commits August 11, 2026 06:04
Removes 50 occurrences of the operator's absolute home path from documentation, prose and shell defaults in this public repo.
Functional config, test fixtures and generated files are untouched: $HOME is not expanded by JSON/YAML parsers and tests may assert the literal path. 107 such occurrences remain and need per-file review.
The earlier commit on this branch redacted documentation and stopped there.
Code, configuration, test fixtures and generated run artifacts still carried the
absolute home path, which is what the published branch actually exposes.

Substitutions used, and why they differ:
  ~                    prose, shell command strings, and opaque fixture values,
                       none of which resolve the path
  /Users/example/...   fixtures that must stay a detectable private path. The
                       portfolio-truth validator keys on /users|home|root/, not
                       on the account name, so an anonymous account keeps every
                       assertion meaningful while naming nobody

Left alone deliberately, because each is a test that enforces the very thing
this branch is doing and redacting it would remove what the test proves:
  package-surface.test.ts asserts five named operator surfaces do not contain
    the path; the literal there is the needle, not a leak
  the sealed local-execution evidence is SHA-256 pinned by its own contract test,
    so a text edit invalidates the proof rather than redacting it. That one needs
    a re-qualification run, not a substitution.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f25abb43a9

ℹ️ 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".

{
"project_key": "AssistSupport-security-alerts",
"abs_path": "/Users/d/Projects/AssistSupport-security-alerts",
"abs_path": "~/Projects/AssistSupport-security-alerts",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve the absolute-path contract during redaction

Changing abs_path to a ~/... string silently breaks the field's absolute-path contract: Path("~/Projects/...").is_absolute() is false, and Python/subprocess APIs do not perform shell tilde expansion. The producer records this field from a concrete Path, while related audit code passes abs_path directly to Path(...) and git -C, so consumers of this JSON can now resolve it relative to the current directory or report a missing checkout. Redact with an explicitly absolute anonymous path or change/version the field contract rather than retaining the abs_path name with relative values.

AGENTS.md reference: AGENTS.md:L65-L70

Useful? React with 👍 / 👎.

main adopted the github_repo_auditor package namespace (#226), which moved every
module under src/ and collided with the redaction in three files. Resolved by
taking main's rename and keeping the redaction on the paths it did not cover:
main had already switched the workspace-root argument to "$HOME/Projects" but
left the two git -C paths and the cd line absolute.

Verified on the merged tree: 3,313 passed, 27 failed, 8 skipped. The same 27
fail on origin/main by itself, with an identical failure set, so they arrived
with the rename and are not from this branch. No /Users path remains.
@saagpatel
saagpatel merged commit 9995701 into main Aug 11, 2026
4 checks passed
@saagpatel
saagpatel deleted the chore/redact-home-paths branch August 11, 2026 20:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant