Skip to content

Security: SebassContreras/specloop

Security

SECURITY.md

Security policy

specloop is a personal project shared as-is — no dedicated security team, but reports are welcome and taken seriously.

Supported versions

Only the latest main is supported — there are no maintained release branches. Report against the current commit; include it in your report.

Reporting a vulnerability

Prefer GitHub's private vulnerability reporting for this repository when available. Otherwise, open an issue asking for a private contact — do not include exploit details, secrets, tokens, or another party's data in a public issue, PR, or commit.

Include, when known:

  • the affected skill (skills/*/SKILL.md), and the exact commit;
  • a minimal reproduction;
  • the security impact and conditions required to trigger it;
  • a suggested mitigation, if you have one.

Scope

There is no orchestrator code — the loop runs entirely as skills/loop/SKILL.md, instructions followed by whatever agent session invokes it, inside the target repo. The most relevant attack surface is that skill directing the agent to launch a user-configured worker CLI as a subprocess (or its own harness's native sub-agent tool). A prompt- or config-driven command-injection issue there is the most likely class of real vulnerability — review any change to skills/loop's Phase 3 (worker invocation) with that in mind.

Some of the headless worker flags in skills/loop-setup's known-flags map let a worker act without asking — copilot's --allow-all-tools and cursor-agent's --trust --force approve every tool call, shell commands and file writes included. A worker's briefing is built from repo-sourced text (task text, requirements.md, design.md), so hostile text in a repo the loop runs against can steer such a worker into running commands (prompt injection). Run the loop only against repos you trust, and treat any change that widens what a worker may do without asking as security-relevant.

The skills themselves (skills/*/SKILL.md) are Q&A instructions run by an interactive agent inside the target repo — they write files, never execute arbitrary shell commands outside of running a user-configured worker, and never install anything without explicit confirmation (see each skill's "Style rules").

skills/status writes planning/dashboard.html, a static file embedding repo-sourced text (task text, fix-log notes) inside a <script type="application/ json"> tag that a browser then parses and renders. The relevant risk there is a crafted string breaking out of that tag — skills/status/scripts/build_dashboard.py (030) escapes every </script occurrence (case-insensitively) for exactly this reason; review any change to that step with the same care as skills/loop's Phase 3.

Non-security bugs

Use regular GitHub issues for functional problems that don't have a security impact.

There aren't any published security advisories