Problem
mise run security:sast:masking (the py/ts-silent-success-masking rule, AI004 / #257) currently reports 21 un-suppressed findings that already exist on main. Because the check is wired into the pre-push git hook and scans the whole repo, every contributor hits this failure on git push regardless of what their branch touches — forcing --no-verify bypasses (e.g. PR #755).
These are pre-existing: none were introduced by recent feature branches. The full scan reports 79 findings, but 58 carry valid inline nosemgrep suppressions and are correctly ignored — only these 21 are genuinely unannotated.
This is separate from the PR-level security gate: security-pr.yml only runs secrets/deps/gh-actions, so the masking scan does not block PRs — it runs in security.yml on push-to-main / schedule. That job is effectively red on main for this rule today.
The 21 findings (file — line)
agent/src/clarification_tool.py — 42
agent/src/hooks.py — 1602
agent/src/observability.py — 86
cdk/src/handlers/github-webhook-processor.ts — 448
cdk/src/handlers/jira-webhook-processor.ts — 1530
cdk/src/handlers/linear-webhook-processor.ts — 532, 2757, 3057, 3108
cdk/src/handlers/orchestration-reconciler.ts — 471, 1455, 1476
cdk/src/handlers/shared/jira-feedback.ts — 372, 395
cdk/src/handlers/shared/linear-feedback.ts — 280
cdk/src/handlers/shared/linear-subissue-fetch.ts — 333
cdk/src/handlers/shared/orchestration-rollup.ts — 490
cdk/src/handlers/shared/orchestration-store.ts — 344
cdk/src/handlers/shared/slack-api.ts — 112
cli/src/commands/linear.ts — 1721
cli/src/linear-oauth.ts — 382
Fix
For each line, do one of (per the rule's own guidance):
- Add a justified inline
# nosemgrep: <rule> -- <why the fallback is safe degraded-mode> on the return line, or
- Re-raise / return a result shape that encodes the failure, if the swallow is actually a bug.
Most look like intentional best-effort/feature-detect fallbacks (e.g. except ImportError: return None for optional SDK; optional GitHub/Jira/Linear fetches returning null) → option 1. Each should be reviewed on its merits, not blanket-annotated.
Optional follow-up
Consider scoping the pre-push masking hook to the push diff rather than the whole repo, so contributors stop being blocked by untouched debt. That is a gate-semantics change and should be discussed separately.
Surfaced while addressing the PR #755 review (issue #641).
Problem
mise run security:sast:masking(thepy/ts-silent-success-maskingrule, AI004 / #257) currently reports 21 un-suppressed findings that already exist onmain. Because the check is wired into the pre-push git hook and scans the whole repo, every contributor hits this failure ongit pushregardless of what their branch touches — forcing--no-verifybypasses (e.g. PR #755).These are pre-existing: none were introduced by recent feature branches. The full scan reports 79 findings, but 58 carry valid inline
nosemgrepsuppressions and are correctly ignored — only these 21 are genuinely unannotated.This is separate from the PR-level security gate:
security-pr.ymlonly runs secrets/deps/gh-actions, so the masking scan does not block PRs — it runs insecurity.ymlon push-to-main / schedule. That job is effectively red onmainfor this rule today.The 21 findings (file — line)
agent/src/clarification_tool.py— 42agent/src/hooks.py— 1602agent/src/observability.py— 86cdk/src/handlers/github-webhook-processor.ts— 448cdk/src/handlers/jira-webhook-processor.ts— 1530cdk/src/handlers/linear-webhook-processor.ts— 532, 2757, 3057, 3108cdk/src/handlers/orchestration-reconciler.ts— 471, 1455, 1476cdk/src/handlers/shared/jira-feedback.ts— 372, 395cdk/src/handlers/shared/linear-feedback.ts— 280cdk/src/handlers/shared/linear-subissue-fetch.ts— 333cdk/src/handlers/shared/orchestration-rollup.ts— 490cdk/src/handlers/shared/orchestration-store.ts— 344cdk/src/handlers/shared/slack-api.ts— 112cli/src/commands/linear.ts— 1721cli/src/linear-oauth.ts— 382Fix
For each line, do one of (per the rule's own guidance):
# nosemgrep: <rule> -- <why the fallback is safe degraded-mode>on the return line, orMost look like intentional best-effort/feature-detect fallbacks (e.g.
except ImportError: return Nonefor optional SDK; optional GitHub/Jira/Linear fetches returning null) → option 1. Each should be reviewed on its merits, not blanket-annotated.Optional follow-up
Consider scoping the pre-push masking hook to the push diff rather than the whole repo, so contributors stop being blocked by untouched debt. That is a gate-semantics change and should be discussed separately.
Surfaced while addressing the PR #755 review (issue #641).