Skip to content

Add SafeSkill security badge (91/100 — Verified Safe) - #3

Open
OyaAIProd wants to merge 1 commit into
tlemmons:mainfrom
OyaAIProd:safeskill-scan-1778897190043
Open

Add SafeSkill security badge (91/100 — Verified Safe)#3
OyaAIProd wants to merge 1 commit into
tlemmons:mainfrom
OyaAIProd:safeskill-scan-1778897190043

Conversation

@OyaAIProd

Copy link
Copy Markdown

✅ SafeSkill Security Scan Results

Metric Value
Overall Score 91/100 (Verified Safe)
Code Score 100/100
Content Score 76/100
Findings 3 findings detected (1 high)
Taint Flows 0
Files Scanned 0
Scan Duration 0.2s

Top Findings

  • 🟠 high: Detected instruction-override attempt: "act as a" (docs/WORKED_EXAMPLE.md:181)
  • low: Hidden/invisible text detected (html-comment) at byte offset 715: "Fill in your team's agents" (contrib/templates/COORDINATOR_CLAUDE.md:26)
  • info: Scanner-coverage note: this project declares a python manifest. SafeSkill's AST detectors target JavaScript/TypeScript and are not run against python sources. Prompt-injection and dependency checks still apply. (pyproject.toml:0)

View full report on SafeSkill


About SafeSkill

SafeSkill is a free, open-source security scanner for AI tools, MCP servers, and Claude Code skills. We scan for code exploits, prompt injection, and data exfiltration risks.

False positive? We take accuracy seriously. If any finding above is incorrect, please open an issue and we will fix it immediately.

Signed-off-by: SafeSkill Scanner <mk@oya.ai>
tlemmons added a commit that referenced this pull request Aug 9, 2026
…s for change_status

Two silent symptoms, ONE root cause, reported by legacy-team (Tom-relayed) and
verified at source: a malformed emission serialized 'project' INTO the details
body, so the server never received it. Consequences measured live:
  - doc filed to shared_patterns with project:'' despite project='nimbus'
    (learning_f588ce30c5b5c9a4, learning_e15138d7edc3af27 both confirmed)
  - project-scoped change_status then failed with an error indistinguishable
    from a bad doc id - they nearly concluded their own id was wrong
  - the dangling-ref advisory narrowed to shared-only and false-fired on every
    project-scoped id in the same write. Reproduced: project='nimbus' -> 0
    unresolved; project=None -> 3 false positives on ids that exist.
    Their hypothesis that #1 and #3 were the same defect was correct.

FIXES:
- record_learning recovers a swallowed 'project' and files where the caller
  intended, warning loudly that the client is malforming the call. Recovery
  beats define_spec-style rejection here: no work lost, no retry, and the doc
  lands correctly. An explicit project argument always wins over a recovered one.
- change_status LOCATE-ON-MISS: the server can see the doc in another
  collection, so the error now names it ('found_in') and says how to retry,
  instead of leaving scope-vs-missing to be inferred.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
tlemmons added a commit that referenced this pull request Aug 11, 2026
…e — API can no longer modify code-managed globals

Global rules live in GLOBAL_GUIDELINES (global_guidelines.py), re-seeded every
boot. A live memory_guidelines(set/delete) on a global row used to succeed and
then vanish silently at the next restart. Now it returns a hard rejection naming
the code source of truth. delete guards on the TARGET row's scope (not the
default-global scope param) so project-rule deletes still work. Boot seeder writes
db.guidelines directly, not through this tool, so it is unaffected.

Enforces Tom's 2026-08-11 governance rule (learning_66a2a5d8bb8f13c1); closes the
rejection-signal ask (state:memory decisions #2/#3). +5 regression tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant