Remote questions allow GSD to ask for user input via Slack, Discord, or Telegram when running in headless auto-mode. When GSD encounters a decision point that needs human input, it posts the question to your configured channel and polls for a response.
/gsd remote discord
The setup wizard:
- Prompts for your Discord bot token
- Validates the token against the Discord API
- Lists servers the bot belongs to (or lets you pick)
- Lists text channels in the selected server
- Sends a test message to confirm permissions
- Saves the configuration to
~/.gsd/preferences.md
Bot requirements:
- A Discord bot application with a token (from Discord Developer Portal)
- Bot must be invited to the target server with these permissions:
- Send Messages
- Read Message History
- Add Reactions
- View Channel
- The
DISCORD_BOT_TOKENenvironment variable must be set (the setup wizard handles this)
/gsd remote slack
The setup wizard:
- Prompts for your Slack bot token (
xoxb-...) - Validates the token
- Lists channels the bot can access (with manual ID fallback)
- Sends a test message to confirm permissions
- Saves the configuration
Bot requirements:
- A Slack app with a bot token (from Slack API)
- Bot must be invited to the target channel
- Typical scopes for public/private channels:
chat:write,reactions:read,reactions:write,channels:read,groups:read,channels:history,groups:history
/gsd remote telegram
The setup wizard:
- Prompts for your Telegram bot token (from @BotFather)
- Validates the token against the Telegram API
- Prompts for the chat ID (group or private chat)
- Sends a test message to confirm permissions
- Saves the configuration
Bot requirements:
- A Telegram bot token from @BotFather
- Bot must be added to the target group chat (or use private chat with the bot)
- The
TELEGRAM_BOT_TOKENenvironment variable must be set
Remote questions are configured in ~/.gsd/preferences.md:
remote_questions:
channel: discord # or slack or telegram
channel_id: "1234567890123456789"
timeout_minutes: 5 # 1-30, default 5
poll_interval_seconds: 5 # 2-30, default 5- GSD encounters a decision point during auto-mode
- The question is posted to your configured channel as a rich embed (Discord) or Block Kit message (Slack)
- GSD polls for a response at the configured interval
- You respond by:
- Reacting with a number emoji (1️⃣, 2️⃣, etc.) for single-question prompts
- Replying to the message with a number (
1), comma-separated numbers (1,3), or free text
- GSD picks up the response and continues execution
- A ✅ reaction is added to the prompt message to confirm receipt
Single question:
- React with a number emoji (single-question prompts)
- Reply with a number:
2 - Reply with free text (captured as a user note)
Multiple questions:
- Reply with semicolons:
1;2;custom text - Reply with newlines (one answer per line)
If no response is received within timeout_minutes, the prompt times out and GSD continues with a timeout result. The LLM handles timeouts according to the task context — typically by making a conservative default choice or pausing auto-mode.
| Command | Description |
|---|---|
/gsd remote |
Show remote questions menu and current status |
/gsd remote slack |
Set up Slack integration |
/gsd remote discord |
Set up Discord integration |
/gsd remote status |
Show current configuration and last prompt status |
/gsd remote disconnect |
Remove remote questions configuration |
| Feature | Discord | Slack |
|---|---|---|
| Rich message format | Embeds with fields | Block Kit |
| Reaction-based answers | ✅ (single-question) | ✅ (single-question) |
| Thread-based replies | Message replies | Thread replies |
| Message URL in logs | ✅ | ✅ |
| Answer acknowledgement | ✅ reaction on receipt | ✅ reaction on receipt |
| Multi-question support | Text replies (semicolons/newlines) | Text replies (semicolons/newlines) |
| Context source in prompt | ✅ (footer) | ✅ (context block) |
| Server/channel picker | ✅ (interactive) | ✅ (interactive + manual fallback) |
| Token validation | ✅ | ✅ |
| Test message on setup | ✅ | ✅ |
- Verify your bot token is correct and not expired
- For Discord: ensure the bot is still in the server
- For Slack: ensure the bot token starts with
xoxb-
- Verify the bot has Send Messages permission in the target channel
- For Discord: check the bot's role permissions in Server Settings
- For Slack: ensure the bot is invited to the channel (
/invite @botname)
- Ensure you're replying to the prompt message (not posting a new message)
- For reactions: only number emojis (1️⃣-5️⃣) on single-question prompts are detected
- Check that
timeout_minutesis long enough for your response time
- Slack: 9-12 uppercase alphanumeric characters (e.g.,
C0123456789) - Discord: 17-20 digit numeric snowflake ID (e.g.,
1234567890123456789) - Enable Developer Mode in Discord (Settings → Advanced) to copy channel IDs