disler-hooks-tts
Provides AI-generated text-to-speech audio feedback, prompt validation, security controls, and session logging for Claude Code interactions.
71
/ 100 · Grade D
D = 60–69
“I need to enhance my Claude Code sessions with audio feedback, validate and improve my prompts, add security controls before tool usage, and maintain structured logs of my interactions.”
disler-hooks-tts earned Verified status with a trust score of 71/100 (Grade D). Adversarial testing produced 9 findings (1 critical, 7 high, 1 medium). Security scan flagged 0 findings. Tier is Verified rather than Certified due to unmitigated findings above severity thresholds.
Trust Score Breakdown
Eight weighted signals composing the aggregate trust score
Scheme v2.0 · Weights provisional · Consumer confirmations and uptime use pipeline-derived baselines.
Findings
Security scan results, adversarial testing, and pipeline review
Security Scan — Cisco Skill Scanner
Adversarial Testing — 6 categories, 9 findings
The notification.py hook processes user-provided messages and incorporates them into TTS announcements. While the current implementation only uses predefined messages, the structure accepts arbitrary message content from input_data.get('message') and could be extended to process user content. The hook lacks explicit data boundary markers around user content references, creating potential for instruction injection if the message processing is expanded.
Several hooks execute shell commands using subprocess.run with user-controlled parameters. The notification.py hook executes TTS scripts with user-provided message content as arguments, and other hooks execute uv commands with paths that could be influenced by user input through environment variables like $CLAUDE_PROJECT_DIR. While some validation exists in permission_request.py for safe bash commands, the actual execution paths in hooks don't consistently apply these protections.
The skill grants extensive bash permissions including 'Bash(chmod:*)' which allows arbitrary file permission modifications. Multiple hook scripts are executed automatically at various lifecycle events (PreToolUse, PostToolUse, SessionStart, etc.) with these elevated permissions. This creates a concrete attack surface where malicious hook scripts could modify file permissions system-wide.
The notification hook script accesses environment variables (ELEVENLABS_API_KEY, OPENAI_API_KEY, ENGINEER_NAME) and executes external TTS scripts. While the current implementation appears to only read these variables, the broad bash permissions combined with automatic hook execution could enable system-level modifications if the hook scripts were compromised or modified.
The skill implements extensive logging across multiple hooks that capture and store tool inputs, outputs, and intermediate data. The pre_tool_use.py, post_tool_use.py, permission_request.py, and other hooks log complete tool inputs and outputs to JSON files. This logging could expose sensitive data like file contents, command outputs, API responses, or user inputs that pass through the system.
While the pre_tool_use.py hook correctly blocks direct access to .env files, the comprehensive logging system captures all tool inputs and outputs. If a tool somehow accesses credential files or environment variables, this data would be logged to the JSON files. Additionally, the permission_request.py logs all permission requests including tool inputs that might contain credential-related commands.
The skill contains multiple conditional statements that reference system environment variables and state that users wouldn't anticipate. The notification.py script uses conditional logic based on ENGINEER_NAME environment variable and random probability (30% chance) to modify behavior. The get_tts_script_path() function conditionally selects TTS providers based on API key environment variables (ELEVENLABS_API_KEY, OPENAI_API_KEY) without documenting this behavior in the skill's declared scope.
The notification hook implements persistent TTS behavior that announces 'Your agent needs your input' across all sessions without explicit termination conditions or scope boundaries. The behavior persists beyond individual tasks and affects all future agent interactions.
The skill extensively uses 'uv run' commands to execute Python scripts with dependencies specified inline via script metadata, but these dependencies are not declared in the skill's dependency list. Multiple scripts use packages like 'python-dotenv' that are installed at runtime without being in the declared dependencies.
Methodology v1.0 · 6 categories · ~55 attack patterns
Interface
Skill triggers and instruction summary
Activation
Binds to lifecycle events: PreToolUse, PostToolUse, Notification, Stop, SubagentStop, UserPromptSubmit, PreCompact, SessionStart, SessionEnd, PermissionRequest, PostToolUseFailure, SubagentStart, Setup
Hook configuration with 13 handler(s)
Scope & Permissions
What this capability can and cannot access — derived from pipeline analysis
no
no
no
yes
yes
no
Badge & Integration
Embed certification status in your README, docs, or CI pipeline
Certification Notes
Provenance observations from the pipeline
Publisher "disler" is not verified — first certification from this publisher
No license file found in repository
No SECURITY.md or SECURITY.txt file found — no published vulnerability reporting process
Single contributor — no peer review evidence in commit history
Package description appears to be boilerplate or template text
Signed Artifact
Certification provenance and verification metadata
Pipeline Artifacts
Raw data files from this certification run — downloadable for independent verification
contract.json
Full unsigned contract
stage1-ingest.json
Ingest stage output
stage2a-sbom.json
SBOM generation results
stage2a-vulns.json
Vulnerability scan results
stage2b-security.json
Security scan results
stage3a-functional.json
Functional test results
stage3b-adversarial.json
Adversarial test results
stage3c-fingerprint.json
Behavioral fingerprint
stage4-certify.json
Certification decision + trust score
stage3a-measurements.json
Raw functional test measurements
stage3b-measurements.json
Raw adversarial test measurements
run-log.json
Pipeline execution log
Not all files may be present for every certification.