Skip to content

fix(agent-isolation): arm the touch overlay for every git that reaches the key - #1833

Merged
potiuk merged 2 commits into
apache:mainfrom
potiuk:fix/touch-overlay-matcher
Oct 25, 2026
Merged

potiuk merged 2 commits into
apache:mainfrom
potiuk:fix/touch-overlay-matcher

Conversation

@potiuk

@potiuk potiuk commented Oct 25, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Commands that wait on a key touch ran with no window when the arm matcher did not recognise them. The gaps:
    • git global options with a quoted value (git -c user.name="Jane Doe" commit), one joined with = (--git-dir=/x), or one with a backslash-escaped quote (-c user.name=O\'Brien, -c user.name=$'O\'Brien')
    • git or ssh named by path (/usr/bin/git push, /opt/homebrew/bin/ssh host), quoted ("/usr/bin/git" push), or handed to a shell as a string (bash -c "git push", sh -c 'ssh host')
    • git that talks to a remote without being fetch or push: lfs, archive --remote, fetch-pack / send-pack, subtree, svn, maintenance run (its prefetch fetches), request-pull
    • the gh commands that run git, over ssh under git_protocol=ssh: gh repo clone, gh repo fork --clone, gh repo sync, gh pr create and gh repo create --push (they push a branch or repository not yet on GitHub), gh pr checkout and its default co alias (gh co, gh pr co), with options before or inside the command group (gh -R owner/repo pr checkout 1)
  • These stay quiet: ~/.ssh paths, /etc/ssh/sshd_config, ssh-agent, sshuttle, gh pr view / gh repo view / gh pr comment (with or without -R), gh codespace, a script whose name only starts with git-, and read-only git with a quoted -c value.

Type of change

  • Python package (tools/*/ with pyproject.toml)
  • Other: tools/agent-isolation/gpg-touch-overlay.sh

Test plan

  • The arm and quiet parameter cases of tests/test_gpg_touch_overlay.py (93) and the full file pass on macOS and in a Linux container (python:3.12, bash 5.2).
  • prek run --from-ref origin/main passes, as does tests/test_hook_manager_shim.py after merging main (which carries test(agent-isolation): keep the shim test's commit from signing #1831's fix for the shim test's signed commit).

RFC-AI-0004 compliance

  • Sandbox: no new host access. A false positive costs one short-lived watcher, as the matcher's comment already notes.

Notes for reviewers (optional)

Split from the dismissal fix in a separate PR, which keeps the window coming back. The two are independent and either can merge first.

🤖 Generated with Claude Code

…s the key

Commands that block on a touch still ran with no window when the matcher
did not recognise them: git global options with a quoted value
(-c user.name="Jane Doe"), git or ssh named by path or handed to a shell
as a string, remote-talking git that is neither fetch nor push (lfs,
archive --remote, subtree, svn, maintenance prefetch), and the gh
commands that run git over ssh.

Generated-by: Claude Opus 5
@potiuk potiuk added family:tools tools/* capability:fix Implement code change to resolve an issue substrate:sandbox Tool substrate: agent isolation, egress control, settings audit labels Oct 25, 2026
@github-actions github-actions Bot added family:setup setup-* skills capability:platform Framework / agent substrate skills (install, verify, doctor, override, status, setup bootstrap) labels Oct 25, 2026
@potiuk
potiuk enabled auto-merge (squash) October 25, 2026 23:02
@potiuk
potiuk merged commit dff7cc3 into apache:main Oct 25, 2026
12 checks passed
potiuk added a commit that referenced this pull request Oct 28, 2026
* docs(spec-loop): sync specs with contributed functionality

Back-fill the specs for the 46 commits since the last sync that changed
behaviour without touching a spec: the public-surface scrub mod (#1676),
adapter hardening (#1862), the hook managers with install strategy
`none` (#1838), Linux `allowAllUnixSockets` and its socket cover (#1809),
the touch-overlay dismissal and matcher (#1832, #1833), the per-family
Codex manifests (#1836), Vulnogram reviewer comments (#1840), the verify
false-pass fixes (#1808), gateway refusal hints (#1810), adversarial-review
output and agy fixes (#1852, #1854, #1871), and code-review inline comment
text (#1853).

Also correct drift found on the way: the threat-model pointer now names
Appendix B after the #1859 restructure, the troubleshooting catalogue has
fourteen entries, and the overview's Mentoring and Pairing skill counts
match docs/modes.md.

Generated-by: Claude Opus 5

* docs(marketplace): magpie-security ships its own Codex manifest too

#1676 gave magpie-security a .codex-plugin/plugin.json and an empty
hooks/codex-hooks.json, because its hooks.json now carries a Claude Code
mod, but the "Which manifest Codex reads" table and the Hooks paragraph
still named only magpie-setup and magpie-utilities.

Generated-by: Claude Opus 5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

capability:fix Implement code change to resolve an issue capability:platform Framework / agent substrate skills (install, verify, doctor, override, status, setup bootstrap) family:setup setup-* skills family:tools tools/* substrate:sandbox Tool substrate: agent isolation, egress control, settings audit

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant