Skills/Glama/gatorpath

gatorpath@0.2.0

VERIFIED· not started

Publisher claims: "Enables SF State students to plan their degree with any AI assistant by answering what remains, generating multi-year paths, selecting and ordering courses, and verifying every plan against the official Bulletin." Observed in sandbox: no network, touches nothing outside the project, writes no memory.

Registry GlamaPublisher ashleytzele · publishing for 3 daysInstalls 0Last detonated 3d ago
$npx skills add gatorpath
WatchReport an issue

Coverage

Not started: dependency install failed; the server itself was not observed.
Tested
the dependency install step · every file read, file written and host contacted by what ran
Not tested
server startup · the tool list · tool behavior

What this means for the label: Verified here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.

Before you give it your token

It will ask for
ANTHROPIC_API_KEYANTHROPIC_AUTH_TOKENGATORPATH_STATS_TOKENConfiguration, not credentials: GATORPATH_AI_PER_DAY, GATORPATH_AI_PER_HOUR, GATORPATH_BEHIND_PROXY, GATORPATH_STATS_DB
Where it talks to
no vendor host named in the codeAlso eab.com, sfsu.edu, ratemyprofessors.com — not the publisher's domain; check what for before connecting.
What the honeypot saw
no credential files read · no network
What we could not test
server startup · the tool list · tool behavior

Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names eab.com, sfsu.edu, ratemyprofessors.com as well as its own vendor. The guard injects ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, GATORPATH_STATS_TOKEN only into requests to the host you bind (and its subdomains) and refuses the rest.

$vet-skills run --net declared -- <the server's command>

Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.

Is [email protected] safe to install?

KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-11 and scored it 88/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.

Behavior trace

Honeypot run · 0 s · 2 scenarios · 0 deviations
t+CategoryObserved action
0.0sprocessno install scripts in bundle
0.1sprocessdependency install exit 1 ·
0.1sclaimednot started: dependency install failed (exit 1); the server itself was not observed
0.1sprocessscript backend runs setup only
0.1sprocessno install scripts to re-run

Static findings

MEDIUM
Python subprocess execution detectedsrc/gatorpath/ingest/bulletin.py:52 · Python subprocess execution detectedout = subprocess.run(["pdftotext", "-bbox-layout", "-f", str(page + 1), "-l", str(page + 1), str(pdf_path), "-"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/gatorpath/dpr.py:345 · Python subprocess execution detectedrun = lambda tool: subprocess.run([*tool, str(path), "-"], capture_output=True, text=True, check=True).stdoutFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
LOW
Instructs the agent to modify its persistent memory or instruction filesTASKS.md:391 · Instructs the agent to modify its persistent memory or instruction files · informational: not an instruction file- [x] Write `docs/ARCHITECTURE.md`, `AGENTS.md`, `TASKS.md`, `README.md`Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.
AST01
MEDIUM
Python subprocess execution detectedsrc/gatorpath/dpr.py:362 · Python subprocess execution detecteddone = subprocess.run(["pdftotext", "-layout", "-", "-"], input=data, capture_output=True, check=True, timeout=60)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedtests/test_assistant.py:365 · Python subprocess execution detectedassert subprocess.run([sys.executable, "-c", code], capture_output=True, text=True).stdout.strip() == "False"Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
LOW
Rule modification attemptdocs/ARCHITECTURE.md:463 · Rule modification attempt — overwriting existing instructions · informational: not an instruction file`quote` and `source`, for the person to write (rule 3: flag, don't guess); until then `audit` gives it statusFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.
AST01
MEDIUM
Destructive file system command detectedDockerfile:11 · Destructive file system command detectedRUN apt-get update && apt-get install -y --no-install-recommends poppler-utils && rm -rf /var/lib/apt/lists/* \Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
LOW
Rule modification attemptdocs/ARCHITECTURE.md:827 · Rule modification attempt — overwriting existing instructions · informational: not an instruction fileWhat keeps golden rule 5: the site has no student database and sets no cookies, and a student's record lives in the tab's memoryFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.
AST01
MEDIUM
Python subprocess execution detectedsrc/gatorpath/ingest/programs.py:260 · Python subprocess execution detectedrun = subprocess.run(shlex.split(client), input=text, capture_output=True, text=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/gatorpath/ingest/bulletin.py:41 · Python subprocess execution detectedout = subprocess.run(["pdftotext", "-raw", str(pdf_path), "-"], capture_output=True, text=True, check=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/gatorpath/transcript.py:60 · Python subprocess execution detectedreturn subprocess.run(["pdftotext", "-layout", str(path), "-"], capture_output=True, text=True, check=True).stdoutFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/gatorpath/dpr.py:350 · Python subprocess execution detectedrun = lambda tool: subprocess.run([*tool, "-", "-"], input=data, capture_output=True, check=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedevals/run_evals.py:205 · Python subprocess execution detectedout = subprocess.run(base + ([resume] if resume else []) + [text], cwd=WORK / "cwd", capture_output=True, text=True,Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST05
MEDIUM
Python subprocess execution detectedevals/run_evals.py:176 · Python subprocess execution detectedout = subprocess.run(cmd, cwd=WORK / "cwd", capture_output=True, text=True, stdin=subprocess.DEVNULL, timeout=1800)Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST05
MEDIUM
Python subprocess execution detectedsrc/gatorpath/dpr.py:357 · Python subprocess execution detectedreturn subprocess.run(["pdftotext", "-layout", str(path), "-"], capture_output=True, text=True, check=True).stdoutFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05

Cost to the agent

Instructions loaded
≈2,647 tok
3 files · 81 in bundle
Tool list per prompt
≈0 tok
0 tools · 0 per tool
Handshake
no reply
launch to tools/list, stdio
Undocumented tools
0
description under 20 chars · avg 0

Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.

Known vulnerabilities

Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.