Permissions & Governance #235

Closed
opened 2026-07-15 11:34:21 +00:00 by Mark · 0 comments
Owner

Phase 5: Permissions & Governance

Goal: Role-based access control, channel restrictions, rate limiting per user. Ensure the bot follows Discord governance best practices.

Approach candidates:

  • YAML-based channel allow/deny list in config/discord.yaml
  • Discord role-based access — users need specific roles to use certain commands
  • Rate limiting: per-user cooldown (configurable, e.g. 5 calls/min for /research, unlimited /chat)
  • Admin role for configuration management (set allowed channels, adjust rate limits)
  • Privacy: message content not logged/stored outside mesh conversation history

Outputs:

  • Permission checker in runtime/discord_permissions.py
  • Channel allow/deny rules in config
  • Rate limiter per user per command category
  • Tests for permission enforcement

Acceptance criteria:

  • Channel allowlist: bot only responds in configured channels; silent in non-allowed channels
  • Role-based gating: /research requires researcher role; /write requires author role
  • Per-user cooldown enforced: hitting limit returns a rate-limit embed with retry-after info
  • Admin commands (/config, /allow channel) gated to admin role only
  • No Discord message content leaks into unsecured logs or caches
  • Unit tests verify: unauthorized user gets denied, authorized user passes, rate limit fires after N calls in window

Files touched: runtime/discord_permissions.py (create), config/discord.yaml (amend), docker/discord_bot.py (amend — wire permission checks), tests/unit/test_discord_permissions.py (create)


  • CONV-001: Conversation Interface Infrastructure
  • CONV-002: Multi-turn Context Management

Decomposed from Mark/mesh-seed#134


Decomposed from mesh-seed#134

## Phase 5: Permissions & Governance **Goal:** Role-based access control, channel restrictions, rate limiting per user. Ensure the bot follows Discord governance best practices. **Approach candidates:** - YAML-based channel allow/deny list in `config/discord.yaml` - Discord role-based access — users need specific roles to use certain commands - Rate limiting: per-user cooldown (configurable, e.g. 5 calls/min for `/research`, unlimited `/chat`) - Admin role for configuration management (set allowed channels, adjust rate limits) - Privacy: message content not logged/stored outside mesh conversation history **Outputs:** - Permission checker in `runtime/discord_permissions.py` - Channel allow/deny rules in config - Rate limiter per user per command category - Tests for permission enforcement **Acceptance criteria:** - [ ] Channel allowlist: bot only responds in configured channels; silent in non-allowed channels - [ ] Role-based gating: `/research` requires `researcher` role; `/write` requires `author` role - [ ] Per-user cooldown enforced: hitting limit returns a rate-limit embed with retry-after info - [ ] Admin commands (`/config`, `/allow channel`) gated to admin role only - [ ] No Discord message content leaks into unsecured logs or caches - [ ] Unit tests verify: unauthorized user gets denied, authorized user passes, rate limit fires after N calls in window **Files touched:** `runtime/discord_permissions.py` (create), `config/discord.yaml` (amend), `docker/discord_bot.py` (amend — wire permission checks), `tests/unit/test_discord_permissions.py` (create) --- ## Related - CONV-001: Conversation Interface Infrastructure - CONV-002: Multi-turn Context Management _Decomposed from Mark/mesh-seed#134_ --- _Decomposed from [mesh-seed#134](https://forgejo.tail018ac4.ts.net/Mark/mesh-seed/issues/134)_
Mark 2026-08-12 13:25:04 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Mark/mesh-seed#235
No description provided.