T09 · Insecure Skill Coding Practices
- Location
runtime/realtime_interpreter/organize_senseaudio_transcript.py:272- Finding
Persistent Duplication of the Full AudioClaw Configuration
- Content
View full analysis
Path: root = transcript_path.parents[4] home = root / "state" / "realtime_interpreter" / "audioclaw_organizer_home" workspace = home / "workspace" workspace.mkdir(parents=True, exist_ok=True) source_config = Path.home() / ".audioclaw" / "config.json" target_config = home / "config.json" if source_config.exists(): config = json.loads(source_config.read_text(encoding="utf-8")) defaults = config.setdefault("agents", {}).setdefault("defaults", {}) defaults["workspace"] = str(workspace) defaults["max_tokens"] = min(int(defaults.get("max_tokens") or 4096), 4096) defaults["summarize_message_threshold"] = 4 target_config.write_text(json.dumps(config, ensure_ascii=False, indent=2), encoding="utf-8") elif not target_config.exists(): raise SystemExit("AudioClaw config not found in the configured AudioClaw home.") ``` ### Technical Analysis The transcript organization feature creates an isolated AudioClaw home, but it does so by reading and copying the complete `~/.audioclaw/config.json` file into persistent project workspace state. Only a limited set of agent defaults is modified. All other configuration fields remain in the copied document. If the original configuration contains API keys, provider credentials, private endpoints, account identifiers, or other sensitive settings, those values are duplicated even though the organization operation does not need all of them. The copied file is written using the process's default file-creation permissions. The code does not: - Select only the minimum configuration fields needed by the organizer. - Remove or r ...[truncated 1830 chars]- Remediation
View remediation
