Diary Force

Security checks across static analysis, malware telemetry, and agentic risk

Overview

Diary Force is a coherent diary/analysis tool, but it can store personal diary content in long-term memory and run broad Git push commands that may upload more than the intended diary files.

Install only if you are comfortable with a scheduled diary assistant that can write local diary/memory files and use your Git/OpenCode setup. Before enabling cron or running analysis, edit the paths, inspect what repository would be pushed, and remove or narrow the `git add . && git push` behavior.

Static analysis

No static analysis findings were reported for this release.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Risk analysis

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

If the Git repository contains other private notes or changed files, this workflow may commit and push them to the configured remote.

Why it was flagged

The script changes to the parent of the memory directory and stages all files with `git add .` before pushing, which can include unrelated notes or vault files rather than only the diary or memory entry.

Skill content
os.chdir(MEMORY_PATH.parent)
os.system('git add . && git commit -m "memory: sync {}" && git push'.format(date))
Recommendation

Limit Git operations to the exact diary or memory files, show a diff before committing, and require explicit user confirmation before any push.

What this means

The skill can mutate a remote Git repository using the user's existing Git identity, possibly without the user realizing which account or repository is being used.

Why it was flagged

Running `git push` uses whatever Git account, remote, and credentials are already configured locally, but the skill metadata declares no credential requirement or permission boundary.

Skill content
os.system('git add . && git commit -m "memory: sync {}" && git push'.format(date))
Recommendation

Declare the Git privilege requirement, restrict the remote/repository explicitly, and ask for approval before committing or pushing.

What this means

A crafted diary input could potentially interfere with command execution depending on the operating system and shell behavior.

Why it was flagged

User-controlled diary input is inserted into a prompt that is passed to a subprocess with `shell=True`, which unnecessarily exposes the command to shell parsing risk.

Skill content
prompt = THINKING_PROMPT.format(user_input=user_input)
subprocess.run(["opencode", "run", "--model", "opencode/minimax-m2.5-free", prompt], ..., shell=True)
Recommendation

Use `shell=False`, pass the prompt via stdin or a safely quoted argument, and validate inputs before invoking external commands.

What this means

Private diary details may be stored in long-term memory and later reused or synchronized beyond the immediate diary task.

Why it was flagged

The script can write the full diary content into a long-term memory path, rather than clearly limiting storage to extracted insights or providing retention controls.

Skill content
MEMORY_PATH = Path("D:/ObsidianVault/ChuQuan/memory")
...
memory_file.write_text(content, encoding='utf-8')
Recommendation

Store only user-approved summaries, make the memory path configurable, document retention behavior, and provide an easy way to disable memory writes.

What this means

Diary content may leave the local environment for model analysis, depending on the OpenCode configuration.

Why it was flagged

The thinking-model analysis sends the diary-derived prompt to OpenCode/model tooling. This is disclosed and purpose-aligned, but diary entries can be sensitive.

Skill content
["opencode", "run", "--model", "opencode/minimax-m2.5-free", prompt]
Recommendation

Review OpenCode's privacy and account settings before using this with sensitive diary entries, and consider a local-only analysis option.

What this means

If enabled, the skill may run every night and perform diary, memory, and Git actions without a fresh manual launch.

Why it was flagged

The skill documents a persistent nightly cron trigger. This is central to the stated habit-reminder purpose, but it means the workflow can run repeatedly in the background once configured.

Skill content
- schedule: "0 23 * * *"
  command: "python scripts/diary_force.py auto"
Recommendation

Enable the cron schedule only if you want automatic nightly operation, and remove or disable the cron entry to stop it.

What this means

Users may not realize they need extra tools installed, and behavior may vary based on the locally installed OpenCode and Git configuration.

Why it was flagged

The documentation depends on external local tools, including the latest OpenCode CLI, while the registry metadata lists no required binaries or install spec.

Skill content
Python | 3.10+ | 运行环境
Git | 任意 | 版本控制
OpenCode CLI | 最新 | 思维模型分析
Recommendation

Declare required binaries in metadata, pin or document supported tool versions, and install only from trusted sources.