Ae1
- Category
- analysis-evasion
- Confidence
- 100% confidence
- Finding
Referenced artifact was not completely inspected
- Content
md osascript -l JavaScript ./scripts/omnifocus.js <command> [args...]
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a disclosed OmniFocus automation tool, with task-changing powers users should use carefully.
Install only if you want Codex to read and change your OmniFocus data. Ask it to show matching task IDs before destructive actions, and require explicit confirmation before using delete because deleted tasks may be permanently removed.
Referenced artifact was not completely inspected
osascript -l JavaScript ./scripts/omnifocus.js <command> [args...]
The skill description is broad enough to match many generic productivity or task-management requests, which can cause the agent to invoke this skill in situations where the user did not explicitly intend OmniFocus actions. Because the skill includes state-changing and destructive operations such as delete, move, and complete, over-broad activation increases the risk of unintended modifications to a real task database.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
| Command | Description |
|---------|-------------|
| `add <name> [project]` | Add task to inbox or project |
| `newproject <name> [folder]` | Create project |
| `newfolder <name>` | Create top-level folder |
| `newtag <name>` | Create or get tag |
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
| Command | Description |
|---------|-------------|
| `add <name> [project]` | Add task to inbox or project |
| `newproject <name> [folder]` | Create project |
| `newfolder <name>` | Create top-level folder |
| `newtag <name>` | Create or get tag |
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
| Command | Description |
|---------|-------------|
| `add <name> [project]` | Add task to inbox or project |
| `newproject <name> [folder]` | Create project |
| `newfolder <name>` | Create top-level folder |
| `newtag <name>` | Create or get tag |
The command list exposes a permanent delete operation but does not clearly warn that it is destructive and irreversible. In an agentic context, this omission raises the chance of accidental task loss if the model maps a vague user request like 'remove' or 'clean up' to permanent deletion rather than a safer alternative.
The script enables Standard Additions and invokes doShellScript to run dynamically constructed AppleScript via osascript, which expands its capability beyond direct OmniFocus automation into general subprocess execution. Although used here as a workaround for JXA limitations, this creates an unnecessary command-execution boundary where malformed escaping or future code changes could turn task/tag input into shell or AppleScript injection paths.
The delete command permanently removes a task immediately upon receiving a task ID, with no confirmation, dry-run mode, or safety interlock. In an agent-driven context, mistaken task selection, prompt confusion, or abuse by a downstream tool could cause silent destructive changes to a user's task data.
The helper runAppleScript invokes doShellScript to run osascript, which is subprocess execution. Although comments explain this is a workaround, there is no user-facing disclosure or warning when commands trigger shell execution.
No suspicious patterns detected.