Skip to content

Epic: Harden skill trust boundaries without reducing capability #72

Description

@shaug

Outcome

Reduce the real attack surface behind the current skills.sh security warnings and make every remaining intentional capability explicit, testable, and auditable without removing the GitHub, Linear, repository-validation, shell, or database-comparison behavior these skills exist to provide.

A successful closeout improves the code and the accuracy of scanner explanations. It does not require every automated badge to become green: Snyk W011 is an inherent exposure for workflows that must read outsider-authored issue, review, and CI content.

Current evidence

The skills.sh installation report currently shows:

  • Snyk W011 medium-risk exposure where lifecycle and review skills ingest third-party prose;
  • Socket low-severity anomalies for implement-epic's transitive implement-ticket trust boundary;
  • Gen/Socket findings for carve-changesets command strings executed with shell=True; and
  • Socket concern about database-comparison stdout persisted to disk.

The scanners found no high/critical verdict, backdoor, secret-exfiltration behavior, or malicious payload. This epic therefore owns focused defense-in-depth work, not a redesign or a scanner-appeasement exercise.

Child tickets

GitHub native parent/sub-issue and blocker relationships are the source of truth. This list is a reader-oriented summary only.

Dependency and execution shape

Initial parallel-ready children:

#69 is blocked by #71. Database-output lifetime should be implemented against the final argv-based command executor so the two tickets do not independently redesign db_compare capture and failure semantics.

No other blocker edge is justified. #68 and #70 touch related orchestration prose but neither consumes an artifact produced by the other.

Epic acceptance criteria

  • All four native child issues are closed only after their own acceptance criteria pass.
  • implement-epic refuses missing, third-party, incompatible, dynamically fetched, or unverifiable implement-ticket dependencies before child mutation while preserving a valid installed repository-owned path.
  • Tracker, repository, review, CI, and packet prose remains usable as verified evidence but cannot grant authority, override policy, request secrets, or supply executable commands.
  • Adversarial and legitimate-control evaluations cover the affected GitHub, Linear, review, CI, command-discovery, and dependency-provenance boundaries.
  • Production carve-changesets command execution contains no subprocess.run(..., shell=True) path; ordinary commands use exact argv boundaries and approved shell semantics remain available only through an explicitly selected shell executable.
  • Database comparison leaves no persistent raw output by default and retains exact raw output only through an explicit, permission-restricted persistence option.
  • Existing branch restoration, clean-tree, immutable-source, dry-run, authority, review, publication, propagation, and terminal-result guarantees remain intact.
  • Existing legitimate GitHub, Linear, repository validation, database comparison, and review workflows remain supported.
  • Canonical and bundled review contracts remain byte-identical wherever touched.
  • just format, just lint, and just test pass on the integrated main result.
  • README and CHANGELOG.md accurately describe user-visible compatibility or safety changes.
  • The latest integrated skills are rescanned through the normal skills.sh flow and the before/after Gen, Socket, and Snyk results are recorded. A remaining exposure-based W011 is documented rather than hidden or treated as an epic failure.

Closeout evidence

Before closing this epic:

  1. verify every child outcome is represented on current main;
  2. run the required clean-main repository gates;
  3. read back native parent, subIssues, blockedBy, and blocking relationships;
  4. inspect the current per-skill security reports after rescan;
  5. confirm that no mitigation removed an intended capability or weakened an authority/review gate; and
  6. record residual scanner findings with their intentional capability and tested mitigation.

Non-goals

  • Eliminate third-party-content exposure by ceasing to read GitHub, Linear, review, repository, or CI content.
  • Promise that heuristic or model-based scanners will downgrade every report.
  • Obscure, relocate, or rename risky behavior merely to evade static analysis.
  • Remove arbitrary approved repository validation, explicit shell programs, database comparison, or raw-output retention when deliberately requested.
  • Redesign the review-v2 architecture or absorb provisional work from Epic: Make review-clean verdicts evidence-backed and empirically evaluated #49.
  • Add a package manager, central dependency registry, new policy framework, or runtime-specific mandatory API.
  • Broaden merge, deployment, communication, tracker-transition, cleanup, or destructive authority.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions