Security boundaries

Helpful is not the same as trusted.

ThreadSherpa narrows what can become memory, what can be looked up, and who can change it. These boundaries are part of the product, not a promise that generated answers are always correct.

Only opted-in channels

ThreadSherpa monitors only support channels a moderator connects. Forum posts use their parent channel configuration. /ask is an explicit request and can work elsewhere in the server.

The application reads new events. It does not backfill historical posts, and it does not silently turn an existing archive into a knowledge base.

Only explicit saves become knowledge

Ordinary conversation never becomes approved knowledge automatically. A moderator saves a specific reply through the native message action or /teach. The selected facts become reusable guidance for that server. Saving does not post a reply into the old conversation.

Saving, correcting, removing, setup, and /queue require Discord Administrator or a configured moderator role. An empty moderator-role list does not authorize ordinary members. Outcome buttons require the original asker or a moderator.

Bounded lookup, not an agent with keys

Models and fetched text cannot execute arbitrary tools. The only lookup tools are reviewed knowledge and exact moderator-selected source pages. The fetcher enforces domain and SSRF checks, redirect limits, and response limits. Broad web search, GitHub publishing, and incident actions are not part of the support path.

Citation validation establishes where an answer came from. It does not prove that the generated sentence is factually entailed by the source. Read the reply and inspect the source before trusting it.

Quiet is a valid answer

Unsupported questions wait for a moderator instead of receiving a public filler message. Need help and the quiet queue do not DM or page staff, and they do not promise a response time. Questions are never automatically merged. A clear confirmation from the asker can mark the case resolved; uncertain replies stay open.

Sensitive account operations, payments, and visible credential assignments take a private human-support path before model or web calls. This is a bounded pattern check, not a guarantee that every secret or sensitive request is detected.

Where the question goes

With Ollama, the synthesis request stays on the machine running the bot. Local embeddings also run through Ollama. Discord, MongoDB Atlas, selected documentation pages, and optional Sentry still use network services.

Paper mode sends synthesis questions and supporting evidence to Paper Instruments. Review a provider's data handling before operating with real community data. Provider credentials belong in server-side environment variables, never in browser code, screenshots, commits, or this website.

What the bot stores

The bot stores support text, requester IDs, evidence, reviewed answers, versions, reviews, and audit records in MongoDB. There is no automatic retention or privacy-erasure job. Removing a saved answer stops future replies from using it, but it does not erase historical records or messages already posted.

Sentry spans intentionally contain operation metadata and numeric usage rather than message bodies. Logs and SDK error behavior still require review before production use. Keep .env out of version control, screenshots, and submissions.

What remains fallible

  • Generated prose can be wrong even when the source was retrieved correctly.
  • Prompt-injection checks are bounded heuristics, not a complete defense.
  • Semantic duplicate detection can miss a near-duplicate answer.
  • Permissions depend on the Discord setup; review channel overrides.
  • No automatic job erases historical data after a knowledge removal.

The project is independent and self-hosted. The operator remains responsible for the server, the data, the model provider, and the people using it.