freeze
“Restrict file edits to a specific directory for the session. (gstack)”
bin
aipkg.jsonbin/check-freeze.shLICENSE.txtREADME.mdSKILL.mdSKILL.md.tmpl- 01SDI-285%MEDIUM
SKILL.md.tmpl:39
detailhide
The skill silently collects analytics data (writing to ~/.gstack/analytics/skill-usage.jsonl) without explicit user consent or clear documentation in the manifest. Users are not informed that their usage patterns, repository names, and timestamps are being logged, creating a privacy concern and violating transparency principles for data collection.
3738```bash39mkdir -p ~/.gstack/analytics40echo '{"skill":"freeze","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true41```fix Add explicit user disclosure in the skill description and setup flow. Update the manifest to declare analytics collection as a sensitive capability. Require explicit user consent before collecting any data. Alternatively, remove silent analytics collection and use only explicit logging with user awareness.
- 02SDI-480%MEDIUM
SKILL.md.tmpl:85
detailhide
The documentation claims the freeze boundary 'prevents accidental edits, not a security boundary' and acknowledges that Bash commands like 'sed' can bypass it. This contradicts the earlier security framing that the freeze 'blocks' and 'restricts' edits. Users may incorrectly rely on this as a security control when it provides only weak operational protection.
83- The trailing `/` on the freeze directory prevents `/src` from matching `/src-old`84- Freeze applies to Edit and Write tools only — Read, Bash, Glob, Grep are unaffected85- This prevents accidental edits, not a security boundary — Bash commands like `sed` can still modify files outside the boundary86- To deactivate, run `/unfreeze` or end the conversation87fix Clearly document in the initial description that freeze is an operational guard, not a security boundary. Add prominent warnings that users with Bash access can circumvent restrictions. Rename or reframe the feature to avoid security terminology ('freeze' → 'scope limiter' or similar). Update all descriptions to consistently convey the actual threat model.
- 03SDI-285%MEDIUM
bin/check-freeze.sh:74
detailhide
The skill logs analytics data including repository name extracted via git without explicit user consent or manifest permission. This creates an unintended side channel that leaks repository metadata (repo names) to local analytics files during normal operation, potentially exposing sensitive project information.
72 # Outside freeze boundary — deny73 # Log hook fire event74 mkdir -p ~/.gstack/analytics 2>/dev/null || true75 echo '{"event":"hook_fire","skill":"freeze","pattern":"boundary_deny","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true76fix Remove analytics logging entirely, or if logging is necessary, require explicit user opt-in via configuration and document in the skill manifest. Do not collect or log git repository information without explicit user consent.
- 04SDI-380%MEDIUM
bin/check-freeze.sh:74
detailhide
The skill writes to ~/.gstack/analytics/skill-usage.jsonl without any manifest-declared permission for this file or directory. This exceeds the skill's declared scope and creates persistent state that accumulates across sessions, potentially allowing tracking of skill usage patterns beyond what the user authorized.
72 # Outside freeze boundary — deny73 # Log hook fire event74 mkdir -p ~/.gstack/analytics 2>/dev/null || true75 echo '{"event":"hook_fire","skill":"freeze","pattern":"boundary_deny","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true76fix Either declare analytics file write permissions in the skill manifest with clear user visibility, or remove analytics logging entirely. If analytics are needed, implement explicit user opt-in and transparent documentation.
- 05SQP-280%MEDIUM
SKILL.md:44
detailhide
The analytics data collection is embedded in the skill setup without any warning or consent prompt to the user. The code silently logs skill usage, repository names, and timestamps to ~/.gstack/analytics/skill-usage.jsonl without informing the user that their activity is being tracked. This violates privacy principles and user expectations.
4243```bash44mkdir -p ~/.gstack/analytics45echo '{"skill":"freeze","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true46```fix 1. Add a prominent warning in the documentation explaining that usage analytics will be collected. 2. Implement an explicit AskUserQuestion asking for permission to enable analytics before logging occurs. 3. Provide a mechanism to disable analytics collection. 4. Clearly document what data points are collected and how long they are retained.
- 06SQP-282%MEDIUM
SKILL.md.tmpl:39
detailhide
Analytics data collection including repository names and timestamps occurs without user disclosure at the point of collection or in the skill manifest. Users activating this skill have no notice that telemetry will be sent, violating standard privacy and transparency expectations for LLM skills that may process sensitive project information.
3738```bash39mkdir -p ~/.gstack/analytics40echo '{"skill":"freeze","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true41```fix Add an explicit AskUserQuestion during skill activation to inform the user that usage analytics will be collected and what data will be captured. Include an option to opt-out. Update the skill manifest to declare analytics as a sensitive capability. Log this telemetry transparently and allow users to disable it.
- 07SQP-290%MEDIUM
bin/check-freeze.sh:74
detailhide
The skill silently creates and writes to ~/.gstack/analytics/skill-usage.jsonl without any user confirmation or awareness. This violates user autonomy by creating persistent tracking data on the local system without consent, and the use of 2>/dev/null suppresses any feedback about file creation.
72 # Outside freeze boundary — deny73 # Log hook fire event74 mkdir -p ~/.gstack/analytics 2>/dev/null || true75 echo '{"event":"hook_fire","skill":"freeze","pattern":"boundary_deny","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true76fix Remove silent file writes. If analytics logging is required, implement explicit user configuration and prompts before any file creation. Ensure errors are visible and users can opt-out completely.