You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All *_auto_collector.py tools write credential configs (API tokens, passwords) to ~/.colleague-skill/*_config.json using Path.write_text(...), which respects the user's umask — on most systems that ends up as 0644 (world-readable within the user account's processes).
This means any process running as the same user can read tokens in plaintext.
Affected files
tools/feishu_auto_collector.py — save_config() around line 72
tools/slack_auto_collector.py — save_config() around line 102
Problem
All
*_auto_collector.pytools write credential configs (API tokens, passwords) to~/.colleague-skill/*_config.jsonusingPath.write_text(...), which respects the user'sumask— on most systems that ends up as0644(world-readable within the user account's processes).This means any process running as the same user can read tokens in plaintext.
Affected files
tools/feishu_auto_collector.py—save_config()around line 72tools/slack_auto_collector.py—save_config()around line 102tools/dingtalk_auto_collector.pytools/confluence_auto_collector.py(pending PR feat: add Confluence auto-collector as new data source #106) —save_config()around line 89Proposed fix
In each collector's
save_config(), after writing the file:Also ensure the parent directory is created with restrictive perms:
Why
good-first-issueSmall, mechanical change across 3-4 files. Well-scoped. Touches every collector so a great way to learn the codebase structure.
Acceptance criteria
0o600on the config file after write0o700CONTRIBUTING.mdunder the Security section