All credentials are stored in ~/.claude-to-im/config.env with file permissions set to 600 (owner read/write only). This file is created during setup and never committed to version control.
The .gitignore excludes config.env to prevent accidental commits.
All tokens and secrets are masked in log output and terminal display. Only the last 4 characters of any secret are shown (e.g., ****abcd). This applies to:
- Setup wizard confirmation output
reconfigurecommand displaylogscommand output- Error messages
This project operates as a single-user local daemon:
- The daemon runs on the user's local machine under their user account
- No network listeners are opened; the daemon connects outbound to IM platform APIs only
- Authentication is handled by the IM platform's bot token mechanism
- Access control is enforced via allowed user/channel ID lists configured per platform
The primary threats are:
- Token leakage: Mitigated by file permissions, log redaction, and
.gitignore - Unauthorized message senders: Mitigated by allowed user ID filtering per platform
- Local privilege escalation: Mitigated by running as unprivileged user process
To rotate compromised or expired tokens:
- Revoke the old token on the IM platform
- Generate a new token
- Run
/claude-to-im reconfigureto update the stored credentials - Run
/claude-to-im stopthen/claude-to-im startto apply changes
If you suspect a token has been leaked:
- Immediately revoke the token on the respective IM platform
- Run
/claude-to-im stopto halt the daemon - Run
/claude-to-im reconfigurewith a new token - Review
~/.claude-to-im/logs/for unauthorized activity - Run
/claude-to-im startwith the new credentials