Gait watches behavioral patterns — never message content — to score whether an account is operated by a real human or an automated system. Built for server admins who want signal, not noise.
How it works
Gait computes a trust score between 0 and 1 from four behavioral dimensions. A minimum of 50 observed events is required before any account is scored.
How regular and mechanical is the timing of this account's activity? Bots operate on clocks; humans don't.
Do message lengths and edit patterns show human variance? Automated accounts often produce suspiciously uniform output.
Account history and identity signals. New accounts with randomised names and no avatars score lower.
Cross-server coordination and interaction graph analysis. Reserved for Phase 2 — currently neutral at 0.5.
Permissions
Three of these are Discord Privileged Gateway Intents — you'll see them labelled in the authorisation flow. Here's exactly what each one enables.
| Permission | Why we need it | What it does NOT grant |
|---|---|---|
| Server Membersprivileged | Receive join and leave events to track account age at join, join velocity, and membership patterns across your server. | Access to member DMs, bans, roles, or any profile data beyond what is publicly visible. |
| Message Contentprivileged | Measure message length and edit timing. We record the length of a message in characters and whether it was edited — never the text itself. | Message text, attachments, links, or any semantic content. The content field is discarded immediately after length is measured. |
| Presenceprivileged | Observe activity state transitions (online → idle → offline) to detect unnaturally stable or clockwork presence patterns. | Rich presence data, game activity, Spotify status, or custom status text. |
| Send Messages | Post alert embeds to the channel you configure with /gait setchannel. |
Access to any channel that is not the configured alert channel. |
| Embed Links | Render rich alert cards with score breakdowns and action buttons. | Ability to post in channels not already granted by Send Messages. |
| View Channels | Observe message and reaction events across channels that are visible to the bot role. | Access to private or restricted channels unless explicitly granted by your server's role configuration. |
Data transparency
Gait never transmits message content, raw user IDs, or any personally identifiable information. All identifiers are anonymised before leaving your server.
The guild-specific salt is unique to your server and never shared. The two-stage hash means Gait cannot reverse-map a GIID to a Discord user, and your guild cannot reconstruct GIIDs without Gait's internal salt.
Setup
No account, no dashboard, no API keys to manage. Everything is configured from inside Discord.
Click the button below and authorise Gait for your server. The bot will appear in your member list and begin observing events immediately. No configuration needed to start collecting data.
→ Add to DiscordRun one slash command in the channel where you want to receive alerts. Gait will post a test message to confirm it's working.
/gait setchannel #your-channelOptional — fine-tune per server
Lower the alert threshold for stricter detection. Default is 0.45.
Automatically kick confirmed bots instead of alerting only.
Check the current trust score for any member on demand.
Mark a known-human account, overriding the score permanently.