Repository navigation
Closed
Copy link
Labels
area: securitySecurity-relevant: vulnerability, hardening, or disclosure follow-up.Security-relevant: vulnerability, hardening, or disclosure follow-up.priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.A maintainer confirmed the item is real and in scope; ready to be worked.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Description
Parent
Refs #5945
Depends on
- feat(guardrails): add the identity-domain guard with domain classification and its kill switch #9743
Outcome
A command carrying another domain's identity marker in an identity position is denied (rule 4):
git remote add or set-url to the other domain's org, a user.email= or --author with its address, its
gh or az config directory name.
Decisions
- Epic feat(guardrails): generalize machine-local safety guards into plugin guards #5943 defaults, adopted: the guard lives in guardrails behind its dispatcher and a per-guard kill switch;
bash under the node entry point; port behavior, not the local Python. - The domain map is derived from
/harness-ops:machine-profileand is machine-local: it never sits in a tracked
file, fixture or doc. Placeholders only. - Fail open on any internal error; every exit is 0 with the decision in stdout JSON.
- The guard reads command text: a deterrent, not a sandbox. Declared gaps: computed paths, scripts run by name.
Key interfaces
plugins/guardrails/hooks/block-cross-domain.shandplugins/guardrails/hooks/block-cross-domain.test.sh, theBash|PowerShellrow ofplugins/guardrails/hooks/hooks.json,
plugins/guardrails/README.md,docs/conventions/hook-precision,docs/conventions/hook-budget.
Done when
-
scripts/run-test-file.sh plugins/guardrails/hooks/block-cross-domain.test.shexits 0 with deny cases for each identity position and allow cases for the same marker in a non-identity position (a commit message, anecho). -
git grep -nE "melodic|kyle|sexton" -- plugins/guardrails/hooks/block-cross-domain.sh plugins/guardrails/hooks/block-cross-domain.test.shprints nothing (placeholders only). -
scripts/run-test-file.sh plugins/guardrails/hooks/run-guards.test.shexits 0, including the guardrails: Bash|PowerShell PreToolUse row takes 30+s on a ~70 KB command; its 60s timeout fails open #4528 long-command ceiling case. - The PR reports the Bash|PowerShell row's added time, measured as
docs/conventions/hook-budgetdescribes, inside that budget. -
scripts/check-changelog-fragments.sh --check-required origin/mainexits 0.
Metadata
Metadata
Assignees
Labels
area: securitySecurity-relevant: vulnerability, hardening, or disclosure follow-up.Security-relevant: vulnerability, hardening, or disclosure follow-up.priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.A maintainer confirmed the item is real and in scope; ready to be worked.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Type
Fields
No fields configured for Feature.
Activity
melodic-automation-lanes commentedon Oct 24, 2026
Not admitted to the issue lane: merged pull request #10871 names it with
Refs:after its newest decision or refinement comment, so its work may already be done: close the issue if it is, or post a comment whose first line is**Decision recorded.**saying what is left, which sends it back through intake. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).melodic-automation-lanes commentedon Oct 29, 2026
The lanes App's pull request #10871 merged with
Refs:, so this issue stays open and nothing starts the lane on it again. work-unblock removedstatus: readyandagent-ready, so the hourly triage sweep sends it back to intake triage. Admission then parks it atstatus: confirmedfor a check of what that pull request left, until a**Decision recorded.**comment says what is left or someone closes it.github-actions commentedon Oct 29, 2026
The triage sweep dispatched intake triage for this issue (attempt 1 of 2).
github-actions commentedon Oct 29, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Small
Complexity: Medium
Uncertainty: Knowable
Flags: none
Blocked by: none
I understand this as adding a guardrails hook that denies another identity domain's markers (git remote org, user.email or --author, gh/az config directory) in identity positions only, with placeholders only in tracked files.
#9743 no longer appears among the open issues, so I list no blocker. The guard script and its test file already exist in
plugins/guardrails/hooks/, and merged PR #10871 referenced this issue. What that PR left against the done-when list needs a check: the deny and allow cases, the placeholder grep, the run-guards ceiling case, the hook-budget measurement and the changelog fragment. No duplicates found.Automated triage, applied by the lanes App.
melodic-automation-lanes commentedon Oct 29, 2026
The latest triage verdict holds nothing: admission moved the issue to
status: confirmed; its comment says why.