heyeddi-ci-runners
Warn
Audited by Gen Agent Trust Hub on Aug 11, 2026
Risk Level: MEDIUMREMOTE_CODE_EXECUTIONEXTERNAL_DOWNLOADSCOMMAND_EXECUTIONPROMPT_INJECTION
Full Analysis
- [REMOTE_CODE_EXECUTION]: The script
scripts/load_policy_contract.pydynamically loads Python modules from local filesystem paths. It usessys.path.insert(0, str(backend))followed byfrom app.policy_insights import public_policy_contract. Because thebackendpath is derived from user-provided arguments (--heyeddi-ci-root) or environment variables (HEYEDDI_CI_ROOT), this behavior allows for arbitrary code execution if the targeted directory is compromised. - [COMMAND_EXECUTION]: The skill includes a utility script
scripts/_skill_cli.pythat contains arun_commandfunction usingsubprocess.run. While this function is not actively invoked by the skill's primary tools, its presence in the codebase provides a latent capability for executing shell commands if the agent is instructed to use it. - [EXTERNAL_DOWNLOADS]: The skill fetches configuration and policy data from the author's official domain at
https://cihook.heyeddi.com/api/public/eddi-ci-policy. This is standard functionality for retrieving the latest CI policy contract and is considered a trusted vendor resource. - [PROMPT_INJECTION]: The skill's instructions in
SKILL.mdandcontext/ANTI_PATTERNS.mduse strong negative constraints (e.g., 'NEVER claim a job ran', 'Refuse execution claims') to ensure the agent adheres to the 'fail-closed' state of the runners. While intended for safety, these represent instructions aimed at overriding default agent behavior. - [PROMPT_INJECTION]: The skill is susceptible to indirect prompt injection due to its data ingestion surfaces.
- Ingestion points: The tool
inspect_repo.pyreads content from various repository files, including READMEs and configuration files.load_policy_contract.pyingests JSON data from an external API. - Boundary markers: No specific delimiters or safety warnings are implemented to separate untrusted repository content from instructions in the agent's context.
- Capability inventory: The skill possesses capabilities for dynamic Python code execution and shell command execution (via
subprocess.runin_skill_cli.py). - Sanitization: Ingested text is limited by length (20,000 characters), but no structural sanitization or escaping is applied to prevent embedded instructions from being interpreted by the agent.
Audit Metadata