T09 · Insecure Skill Coding Practices
- Location
config/settings.json:30- Finding
Default-On Dashboard Synchronization May Disclose Writing-Derived Data
- Content
View full analysis
Vulnerability Details
File Location:
config/settings.json:30-34; related behavior inSKILL.md:432-452,dashboard-kit/DASHBOARD-SPEC.md:8-9,17-20, and conflicting claims inSECURITY.md:23-25
Vulnerability Type: Default-enabled external data synchronization without explicit informed consent
Risk Level: MediumVulnerable Code and Configuration
config/settings.json:30-34:json "dashboard": { "enabled": true, "sync_after_each_session": true, "progress_report_interval_sessions": 10 }SKILL.md:432-452:text Writing Coach Pro feeds data to the NormieClaw dashboard (if installed). The dashboard kit is in `dashboard-kit/`. ### Data Tables Three tables (full schemas in `dashboard-kit/manifest.json`): - **`wc_sessions`**: One row per review session — date, mode, word count, issues found/accepted, readability metrics, context type - **`wc_issues`**: Individual issues across all sessions — linked to session, categorized by pass (grammar/style/tone/consistency), tracks acceptance - **`wc_profile_history`**: Style profile change log — what changed, old/new values, whether learned or manual ### Dashboard Route & Sync Route: `/writing-coach` — displays stat cards (sessions, words, grade level, acceptance rate), readability trend line, issue category breakdown, acceptance rate over time, and a recent sessions table. After each review session, write a summary row to `wc_sessions` and individual findings to `wc_issues`. Update `wc_profile_history` whenever the style profile changes.dashboard-kit/DASHBOARD-SPEC.md:8-9,17-20:text - NormieClaw Dashboard v1.0+ - Dashboard must support the standard manifest format (see `manifest.json`) - Tables auto-created on first data sync if using Supabase backendtext 1. After each Writing Coach Pro review session, the agent writes a summary row to `wc_sessions` 2. Individual findings are written to `w ...[truncated 2652 chars]- Remediation
View remediation
Remediation Suggestions
- Set both
dashboard.enabledanddashboard.sync_after_each_sessiontofalseby default. - Require explicit, informed opt-in before the first synchronization.
- Display the destination backend, whether it is local or remote, and the exact fields that will be transmitted.
- Allow users to select which record types may be synchronized.
- Redact document excerpts, names, identifiers, and sensitive issue descriptions before synchronization.
- Provide a local-only dashboard mode and a visible synchronization status indicator.
- Add documented authentication, authorization, encryption, and retention requirements for remote dashboard deployments.
- Provide controls to delete both local records and all remotely synchronized records.
- Update
SECURITY.mdto disclose optional remote dashboard transmission and avoid unconditional no-transmission or no-tracking claims. - Consider per-session confirmation when the analyzed document may contain confidential or regulated information.
- Set both
