Skip to content

t1385: Add 11 chat platform integration agents with privacy/security assessments#2771

Merged
marcusquinn merged 2 commits intomainfrom
feature/t1385-chat-platform-agents
Mar 3, 2026
Merged

t1385: Add 11 chat platform integration agents with privacy/security assessments#2771
marcusquinn merged 2 commits intomainfrom
feature/t1385-chat-platform-agents

Conversation

@marcusquinn
Copy link
Owner

Summary

  • Add subagent documentation for 11 messaging platforms: Telegram, Signal, WhatsApp, iMessage/BlueBubbles, Nostr, Slack, Discord, Google Chat, MS Teams, Nextcloud Talk, and Urbit
  • Each doc follows the established simplex.md pattern with detailed security/privacy assessments covering encryption methods, metadata exposure, push notification privacy, and AI training data policies
  • Add comprehensive cross-platform privacy comparison matrix to opsec.md covering all 18 messaging platforms with threat model recommendations
  • Update domain index, subagent-index.toon, and matterbridge.md cross-references

Privacy Assessment Highlights

Privacy Tier Platforms
Strongest (E2E default, minimal metadata, no AI training) SimpleX, Signal, Nextcloud Talk (self-hosted)
Good (E2E or decentralized, some metadata) Matrix, Nostr, Urbit, XMTP, Bitchat, iMessage
Content encrypted, metadata harvested WhatsApp (Meta), Telegram (server-side)
No E2E, AI training active/default Slack, Discord, Google Chat, MS Teams

Files Changed

  • 11 new docs: .agents/services/communications/{telegram,signal,whatsapp,imessage,nostr,slack,discord,google-chat,msteams,nextcloud-talk,urbit}.md
  • Updated: opsec.md (privacy matrix), AGENTS.md (domain index), subagent-index.toon, matterbridge.md (Related section)
  • Total: ~7,300 lines added across 15 files

Closes #2747

…curity assessments

Add subagent documentation for Telegram, Signal, WhatsApp, iMessage/BlueBubbles,
Nostr, Slack, Discord, Google Chat, MS Teams, Nextcloud Talk, and Urbit.

Each doc follows the simplex.md pattern with: YAML frontmatter, Quick Reference,
architecture diagram, installation, bot API integration (TypeScript/Bun), detailed
security considerations (encryption, metadata, push notification privacy, AI training
data policies), aidevops integration patterns, Matterbridge bridging notes, and
limitations.

Add comprehensive cross-platform privacy comparison matrix to opsec.md covering
all 18 messaging platforms with columns for encryption, metadata exposure, AI
training policy, open-source status, and self-hosting capability. Includes threat
model recommendations and AI training risk summary table.

Update AGENTS.md domain index, subagent-index.toon, and matterbridge.md Related
section with cross-references to all new platform docs.

Closes #2747
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 3, 2026

Warning

Rate limit exceeded

@marcusquinn has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 15 minutes and 12 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 89ea2f4 and 4a6c714.

📒 Files selected for processing (13)
  • .agents/AGENTS.md
  • .agents/services/communications/google-chat.md
  • .agents/services/communications/imessage.md
  • .agents/services/communications/matterbridge.md
  • .agents/services/communications/nextcloud-talk.md
  • .agents/services/communications/nostr.md
  • .agents/services/communications/signal.md
  • .agents/services/communications/slack.md
  • .agents/services/communications/telegram.md
  • .agents/services/communications/urbit.md
  • .agents/services/communications/whatsapp.md
  • .agents/subagent-index.toon
  • .agents/tools/security/opsec.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/t1385-chat-platform-agents

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist
Copy link

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly expands the documentation for integrating with various chat platforms, providing detailed guides for bot development and critical security considerations. It aims to equip users with the necessary information to understand the privacy implications of each platform, including their encryption models, metadata handling, and AI training policies, thereby enabling more informed decisions when choosing communication tools.

Highlights

  • New Chat Platform Integrations: Added comprehensive documentation for bot integration with 11 new messaging platforms: Telegram, Signal, WhatsApp, iMessage/BlueBubbles, Nostr, Slack, Discord, Google Chat, MS Teams, Nextcloud Talk, and Urbit.
  • Detailed Privacy and Security Assessments: Each new platform document includes in-depth security and privacy assessments, covering encryption methods, metadata exposure, push notification privacy, and AI training data policies.
  • Cross-Platform Privacy Comparison: Introduced a comprehensive cross-platform privacy comparison matrix in opsec.md, covering all 18 messaging platforms with threat model recommendations.
  • Documentation Updates: Updated the domain index (AGENTS.md), subagent index (subagent-index.toon), and Matterbridge cross-references (matterbridge.md) to reflect the new communication services.
Changelog
  • .agents/AGENTS.md
    • Updated the 'Communications' section to include links to the newly added chat platform documentation.
  • .agents/services/communications/discord.md
    • Added a new document detailing Discord bot integration, architecture, installation, API usage, and critical security considerations, including its lack of E2E encryption and AI training policies.
  • .agents/services/communications/google-chat.md
    • Added a new document outlining Google Chat bot integration, architecture, installation, API usage, and critical security considerations, emphasizing its lack of E2E encryption and aggressive Gemini AI integration.
  • .agents/services/communications/imessage.md
    • Added a new document covering iMessage/BlueBubbles bot integration, architecture, installation, API usage, and security considerations, highlighting E2E encryption with metadata and iCloud backup risks.
  • .agents/services/communications/matterbridge.md
    • Updated the 'Related' section to categorize platforms with and without native Matterbridge support, incorporating the newly added communication services.
  • .agents/services/communications/msteams.md
    • Added a new document detailing Microsoft Teams bot integration, architecture, installation, API usage, and critical security considerations, focusing on its lack of E2E encryption and Copilot AI integration.
  • .agents/services/communications/nextcloud-talk.md
    • Added a new document describing Nextcloud Talk bot integration, architecture, installation, API usage, and critical security considerations, emphasizing its self-hosted nature and strong privacy.
  • .agents/services/communications/nostr.md
    • Added a new document covering Nostr bot integration, architecture, installation, API usage, and security considerations, highlighting its decentralized nature and metadata exposure.
  • .agents/services/communications/signal.md
    • Added a new document detailing Signal bot integration, architecture, installation, API usage, and critical security considerations, emphasizing its E2E encryption and strong metadata protection.
  • .agents/services/communications/slack.md
    • Added a new document outlining Slack bot integration, architecture, installation, API usage, and critical security considerations, including its lack of E2E encryption and AI training policies.
  • .agents/services/communications/telegram.md
    • Added a new document covering Telegram bot integration, architecture, installation, API usage, and security considerations, highlighting its server-client encryption and metadata exposure.
  • .agents/services/communications/urbit.md
    • Added a new document detailing Urbit bot integration, architecture, installation, API usage, and critical security considerations, focusing on its decentralized, sovereign nature.
  • .agents/services/communications/whatsapp.md
    • Added a new document outlining WhatsApp bot integration, architecture, installation, API usage, and critical security considerations, emphasizing E2E content encryption but extensive metadata harvesting.
  • .agents/subagent-index.toon
    • Updated the 'Communications' entry to include the newly added chat platforms.
  • .agents/tools/security/opsec.md
    • Updated the 'Platform Trust Matrix' to include a detailed privacy comparison table for messaging platforms and an AI training risk summary, categorizing platforms by privacy tiers.
Activity
  • marcusquinn created this pull request.
  • The pull request introduces approximately 7,300 lines of new content across 15 files.
  • The PR description includes a detailed summary of the changes and a privacy assessment highlights table.
  • This pull request addresses and closes issue t1385: Chat platform integration agents #2747.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Accept worker versions for discord.md and msteams.md (already reviewed/merged).
Keep our urbit.md (more detailed). Keep our AGENTS.md and subagent-index.toon
(superset of all platforms).
@github-actions
Copy link

github-actions bot commented Mar 3, 2026

🔍 Code Quality Report

�[0;35m[MONITOR]�[0m Code Review Monitoring Report

�[0;34m[INFO]�[0m Latest Quality Status:
SonarCloud: 0 bugs, 0 vulnerabilities, 113 code smells

�[0;34m[INFO]�[0m Recent monitoring activity:
Tue Mar 3 04:58:42 UTC 2026: Code review monitoring started
Tue Mar 3 04:58:43 UTC 2026: SonarCloud - Bugs: 0, Vulnerabilities: 0, Code Smells: 113

📈 Current Quality Metrics

  • BUGS: 0
  • CODE SMELLS: 113
  • VULNERABILITIES: 0

Generated on: Tue Mar 3 04:58:45 UTC 2026


Generated by AI DevOps Framework Code Review Monitoring

@sonarqubecloud
Copy link

sonarqubecloud bot commented Mar 3, 2026

@marcusquinn marcusquinn merged commit 4c63f9d into main Mar 3, 2026
12 checks passed
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request significantly expands the documentation for communication platform integrations by adding detailed guides for Discord, Google Chat, iMessage/BlueBubbles, Microsoft Teams, Nextcloud Talk, Nostr, Signal, Slack, Telegram, and Urbit. These new documents cover setup, architecture, API integration, security considerations (including E2E encryption status and AI training policies), and Matterbridge integration where applicable. The changes also update the main AGENTS.md and subagent-index.toon files to reflect these new services, and opsec.md is enhanced with comprehensive privacy comparisons and AI training risk summaries for all messaging platforms. Review comments highlight critical security vulnerabilities, such as a command injection in the Telegram bot example and missing webhook verification in the Google Chat bot, along with insecure handling of sensitive credentials in example configurations for Discord, MS Teams, and Slack. Other feedback includes improving type safety in Urbit bot code, robustly handling potentially undefined values in iMessage bot code, and correcting an invalid Adaptive Card property in MS Teams documentation.

I am having trouble creating individual review comments. Click here to see my feedback.

.agents/services/communications/telegram.md (523-526)

security-critical critical

The example code for the /run command is vulnerable to critical command injection. It uses Bun.spawn to execute a shell command constructed by interpolating user-supplied input (command) into a string passed to bash -c. An attacker can break out of the intended command and execute arbitrary shell commands on the host system. This pattern can introduce a command injection vulnerability if the input is not thoroughly sanitized. Ensure robust input validation and sanitization are in place before executing external commands. To avoid command injection vulnerabilities when constructing shell commands dynamically, do not use eval. Instead, use a bash array to build the command and its arguments safely.

  const proc = Bun.spawn(
    ["runner-helper.sh", "dispatch", command],
    { stdout: "pipe", stderr: "pipe" }
  );
References
  1. To avoid command injection vulnerabilities when constructing shell commands dynamically, do not use eval. Instead, use a bash array to build the command and its arguments safely.

.agents/services/communications/google-chat.md (169-172)

security-high high

The Google Chat webhook handler example does not verify the authenticity of incoming requests. Google Chat sends an Authorization bearer token with every request, which should be verified to ensure the request originated from Google. Without this verification, an attacker who discovers the webhook URL can send forged events to the bot, potentially bypassing access controls or triggering unintended actions.

  async fetch(req) {
    if (req.method !== "POST") {
      return new Response("Method not allowed", { status: 405 });
    }

    const authHeader = req.headers.get("Authorization");
    if (!authHeader || !authHeader.startsWith("Bearer ")) {
      return new Response("Unauthorized", { status: 401 });
    }
    // Note: In production, verify the bearer token using google-auth-library

.agents/services/communications/google-chat.md (362-363)

high

The documentation highlights that webhook verification is recommended but not enforced, posing a security risk. The provided example code for the webhook handler does not include this verification. It's critical to implement X-Goog-Channel-Token verification to prevent spoofing and unauthorized requests, especially since the URL is public. When documenting security practices, explicitly emphasize the preference for secure tools (e.g., gopass) over less secure alternatives (e.g., plaintext files), even if the alternatives are permitted with restrictions.

References
  1. When documenting security practices, explicitly emphasize the preference for secure tools (e.g., gopass) over less secure alternatives (e.g., plaintext files), even if the alternatives are permitted with restrictions.

.agents/services/communications/discord.md (164)

medium

Using the non-null assertion operator ! on process.env.DISCORD_APP_ID can lead to runtime errors if the environment variable is not set. It's safer to add an explicit check or provide a fallback default value to prevent unexpected behavior.

.agents/services/communications/discord.md (475)

medium

The botToken field in the configuration example is shown as an empty string. Although the 'Store securely' section mentions gopass or credentials.sh, it's crucial to explicitly state in a note near this configuration snippet that sensitive values like botToken should never be hardcoded or stored directly in this JSON file in a production environment. When documenting security practices, explicitly emphasize the preference for secure tools (e.g., gopass) over less secure alternatives (e.g., plaintext files), even if the alternatives are permitted with restrictions.

References
  1. When documenting security practices, explicitly emphasize the preference for secure tools (e.g., gopass) over less secure alternatives (e.g., plaintext files), even if the alternatives are permitted with restrictions.

.agents/services/communications/google-chat.md (161)

medium

Using process.env.GOOGLE_CHAT_SA_KEY_PATH directly with no fallback or explicit check can cause runtime errors if the environment variable is not defined. Consider adding a check or a default value for robustness.

.agents/services/communications/imessage.md (231-233)

security-medium medium

The example code for sending a message via the BlueBubbles API passes the BB_PASSWORD secret as a query parameter in the URL. Secrets in query strings are often logged in plaintext by web servers, proxies, and browser history, increasing the risk of credential leakage. The BlueBubbles API supports the Authorization header, which should be used instead to pass the password securely. When documenting security practices, explicitly emphasize the preference for secure tools (e.g., gopass) over less secure alternatives (e.g., plaintext files), even if the alternatives are permitted with restrictions.

    await fetch(`${BB_URL}/api/v1/message/text`, {
      method: "POST",
      headers: { 
        "Content-Type": "application/json",
        "Authorization": BB_PASSWORD
      },
References
  1. When documenting security practices, explicitly emphasize the preference for secure tools (e.g., gopass) over less secure alternatives (e.g., plaintext files), even if the alternatives are permitted with restrictions.

.agents/services/communications/imessage.md (226)

medium

The expression handle?.address suggests that handle might be null or undefined. If handle is indeed null, isAuthorized(undefined) would be called, which might not behave as expected or could lead to errors. It would be safer to explicitly check if handle.address exists before passing it to isAuthorized.

  if (!handle?.address || !isAuthorized(handle.address)) { res.sendStatus(200); return; }

.agents/services/communications/msteams.md (263-266)

medium

Directly accessing process.env variables (MSTEAMS_APP_ID, MSTEAMS_CLIENT_SECRET, MSTEAMS_TENANT_ID) without explicit checks or default values can lead to runtime errors if these environment variables are not set. It's good practice to validate their presence.

.agents/services/communications/msteams.md (304-305)

medium

The fontType: "Default" property is not a standard or recognized property for TextBlock elements in Adaptive Cards version 1.5. This could lead to the property being ignored or causing rendering issues in Teams clients. Adaptive Cards typically use fontType: "default" or fontType: "monospace".

.agents/services/communications/msteams.md (740)

medium

The clientSecret field in the configuration example is shown directly. While the 'Store Credentials' section advises using gopass or credentials.sh, it's important to explicitly note here that sensitive values like clientSecret should never be hardcoded or stored directly in this JSON file in a production environment. When documenting security practices, explicitly emphasize the preference for secure tools (e.g., gopass) over less secure alternatives (e.g., plaintext files), even if the alternatives are permitted with restrictions.

References
  1. When documenting security practices, explicitly emphasize the preference for secure tools (e.g., gopass) over less secure alternatives (e.g., plaintext files), even if the alternatives are permitted with restrictions.

.agents/services/communications/slack.md (205-206)

medium

Directly accessing process.env variables (SLACK_BOT_TOKEN, SLACK_APP_TOKEN) without explicit checks or default values can lead to runtime errors if these environment variables are not set. It's good practice to validate their presence.

.agents/services/communications/slack.md (588-589)

medium

The botToken and appToken fields in the configuration example are shown directly. While the 'Install and Obtain Tokens' section advises using gopass or credentials.sh, it's important to explicitly note here that sensitive values like these should never be hardcoded or stored directly in this JSON file in a production environment. When documenting security practices, explicitly emphasize the preference for secure tools (e.g., gopass) over less secure alternatives (e.g., plaintext files), even if the alternatives are permitted with restrictions.

References
  1. When documenting security practices, explicitly emphasize the preference for secure tools (e.g., gopass) over less secure alternatives (e.g., plaintext files), even if the alternatives are permitted with restrictions.

.agents/services/communications/urbit.md (448)

medium

The type assertion (node as { post: { author: string; contents: { text?: string }[] } }).post bypasses TypeScript's type safety. If the incoming node structure is not guaranteed to match this type, it could lead to runtime errors. Consider adding runtime checks or a type guard to safely access properties, especially when dealing with external data.

@marcusquinn marcusquinn deleted the feature/t1385-chat-platform-agents branch March 3, 2026 05:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

t1385: Chat platform integration agents

1 participant