TickTick CLI

PassAudited by ClawScan on May 10, 2026.

Overview

This looks like a legitimate TickTick command-line skill, but it can read and change your TickTick tasks and stores OAuth tokens locally in plaintext.

Install only if you are comfortable giving this skill read/write access to your TickTick tasks and projects. Protect the plaintext credential file, revoke the OAuth app when you no longer need it, and require confirmation before task/project mutations such as complete, abandon, batch-abandon, or project updates.

Findings (4)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

Anyone or any process that can read that file may be able to access or modify the user's TickTick tasks.

Why it was flagged

The skill stores TickTick OAuth client secrets and tokens locally, giving ongoing access to the user's TickTick account.

Skill content
Tokens are stored in `~/.clawdbot/credentials/ticktick-cli/config.json` ... "clientSecret" ... "accessToken" ... "refreshToken" ... Note: Credentials are stored in plaintext.
Recommendation

Use this only if you trust the skill with TickTick task access, protect the config file, revoke the OAuth app if no longer needed, and delete the config or log out when finished.

What this means

An agent or script using the skill can accidentally complete, abandon, rename, or create TickTick items if given the wrong instruction or task ID.

Why it was flagged

The CLI exposes account-mutating task and project commands, including a batch operation, without an additional confirmation layer.

Skill content
.command("complete <task>") ... .command("abandon <task>") ... .command("batch-abandon <taskIds...>") ... .command("list <name>")
Recommendation

Require explicit user approval before running write or batch commands, prefer task/project IDs, and review JSON output before follow-up mutations.

What this means

Private task titles, descriptions, tags, or other task data may be exposed to the agent session or logs, and task text should not be treated as trusted instructions.

Why it was flagged

By default the task-listing command can collect tasks from all projects and print full JSON into the agent's context.

Skill content
let searchProjects = projects; ... console.log(JSON.stringify(filteredTasks, null, 2));
Recommendation

Use project/status filters where possible, avoid storing secrets in TickTick tasks, and treat returned task content as data rather than instructions.

What this means

A future dependency resolution could install different package versions than the reviewer saw.

Why it was flagged

The runtime dependencies are version ranges rather than pinned versions, and the supplied artifacts do not include a lockfile or install spec.

Skill content
"dependencies": { "commander": "^12.0.0", "open": "^10.0.0" }
Recommendation

Install in an isolated environment, pin dependencies with a lockfile if operationalizing this skill, and verify dependency provenance.