Howard (624667664501178379) gets his ID pinned (full trust). Rob
(261978810713505792) added under a new "Recognized — Restricted
(read-only)" tier: greeted by name, but informational responses only —
no writes, git, system changes, M365, or vault. Restarted bot.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replace the placeholder so the owner is recognized from his first
message. Restarted bot to load the change.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Her Discord username is @Winter (ID 624666486362996755); store both so
the match against the [DISCORD_CONTEXT] block is robust. Restarted bot.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replace the (note on first interaction) placeholder with her user ID
624666486362996755 so the bot matches her from the [DISCORD_CONTEXT]
block immediately. Restarted the bot to load the change.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add Winter to the bot's known team members with full trust, and note she
is the go-to person for Syncro questions (also flagged on the /syncro
skill row). Restarted the bot to load the updated system prompt.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Reverse the no-questions rule (bot can/should ask via persistent thread
sessions), add a headless-operation constraint (no Chrome/credential
windows/GUI auth at BEAST), and add a Task Loop (identify requester ->
do work -> anything else? -> offer Syncro -> /save). Restarted the bot
service to load the corrected system prompt.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add DISCORD_CLAUDE.md as the Discord bot's dedicated system prompt,
replacing the main CLAUDE.md for bot sessions. Covers: no-interactive
rules, Discord user authorization, vault/remediation guidance, /save
after every task, and formatting rules for Discord.
- config.py: add discord_system_prompt field (default: projects/discord-bot/
DISCORD_CLAUDE.md, overridable via env var).
- client.py: _load_system_prompt() now loads discord_system_prompt path
with fallback to CLAUDE.md if file is missing.
- message_handler.py: inject [DISCORD_CONTEXT] header into every agent
message containing Discord username, display name, user ID, channel,
and guild so the agent always knows who is asking.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Points submodule to 9d917c3: security, quality, and three new UI pages
from the 2026-05-19 audit pass.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Updates guru-rmm submodule pointer to include the audit report
(reports/2026-05-19-rmm-audit.md) and updated UI_GAPS.md living doc
from the /rmm-audit skill run.
Note: .claude/CLAUDE.md (/rmm-audit command row) and
.claude/skills/rmm-audit/SKILL.md were committed in the prior
sync at 5ead5d4.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5-pass audit: API/route inventory, UI gap detection, Rust quality, TypeScript
quality, and data integrity/security. Produces timestamped reports in
projects/msp-tools/guru-rmm/reports/ and keeps UI_GAPS.md current.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Investigated auto-update system and agent deployment status
- Verified 35 agents (70%) already on v0.6.22 with process collection
- Confirmed process data collection and API functionality working
- Feature is fully operational in production for all v0.6.22 agents
- 15 offline agents will auto-update when they reconnect
- Updated guru-rmm submodule reference to commit 55e8a86
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>