gatherthreadBLOCK
GatherThread 共序:本地 AI 编程 Agent 多人联机协作、实时共享上下文。Self-hostable collaboration for local AI coding agents, Codex Desktop connector & DeepSeek Harness plugin.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Work together. Bring your Agents. Keep going anywhere.
GatherThread puts your team's discussion, AI-assisted work, and file review in one shared conversation. Collaborate live, use your own Agent, and continue from a computer, phone, or tablet. Less copying between chats. More progress everyone can follow.
Open GatherThread · Try the example · Illustrated guide · 简体中文
Open source · Self-hostable · Current version identifier 0.1.0-beta.1 · Apache 2.0
Beta 1 is the npm and isolated-test release. Test service: enter your private tester code, then verify your email and sign in with a password. Production is upgraded separately; project invitations are not account registration codes. The Cloud Agent entry is open in Beta 1; usable models depend on the test operator's validated provider and container configuration, with availability shown in the workspace.
Your team. Your devices. Your Agents.
Work together in the same conversation. Agree on a goal, ask your Agent to work, and let teammates follow the result. Quote a particular message or mention someone instead of explaining the same thing twice. Discussion and development stay together.
Keep going beyond your desk. The same account can be signed in on computers, phones, and tablets at once. On your phone, continue the discussion, review progress, or ask your connected computer Agent to keep working. Move to another computer by downloading the file version you saved.
Choose the helper that fits. Connect Codex or DeepSeek Harness, or use the cloud trial Agent for a small task without local setup. Choose from that Agent's supported models and options. Each teammate keeps their own setup while sha
2981ec88f1bdOBSERVED · 2026-10-10Exposed tools (1)
1 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
gatherthread_redaction_fixture | read | Return a deterministic public value containing secret-shaped fixture fields. |
Trust audit
BLOCKgrade F · trust 58/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (7 observation(s))
- Network
- declared (15 observation(s))
- Shell
- declared (2 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
if ([".git", ".codex", ".dsh", ".ssh", ".npmrc", ".netrc", ".ds_store"].includes(lower)) return false;
return !/\.(?:pem|p12|pfx|key)$/iu.test(lower) && !/^(?:id_rsa|id_ed25519)(?:\.|$)/iu.test(lower);
".env" ... WebSocket
GATHERTHREAD_PUBLIC_BASE_URL=http://127.0.0.1:18787
GATHERTHREAD_WEB_API_ORIGIN=http://127.0.0.1:18787
configuredPublicBaseUrl || `http://127.0.0.1:${port}`,options: { baseURL: "http://127.0.0.1:8787/v1", apiKey: "local" },token: "gta_fixture-long-lived-device-token",
token: "gta_fixture-long-lived-device-token",
token: "PRIVATE_PAYLOAD_TOKEN",
() => parseDshHostConfig({ ...enabledConfig, token: "must-not-be-accepted" }),const secret = "gta_01234567890123456789012345678901";
.node-version
const sha = (text: string) => createHash("sha1").update(text).digest("hex");if (locale === "zh-CN") console.log(`${name}: ${width}x${height} pointer/scroll/password checks passed`);for name in [".git/config", ".ssh/id_rsa", ".aws/config", ".workbench/state", ".local/state",
".env", ".env.local", ".env.production", ".git-credentials", ".netrc", ".npmrc",
"authorized_keys", "known_hosts", "id_rsa", "id_ed25519", "secret.pem", "secret.key",
for (const path of ["../escape", "a/../../x", "/tmp/x", "a\\x", "A/.GIT/config", ".gatherthread/state", ".env", "a/.codex/auth.json", "x.key", "aux.txt", "a/CON", "a.", "a:stream", "a".repeat(256), "汉
import type { CodeRepository } from "../../src/code-repository.js";import { CollaborationDatabase } from "../../src/database.js";import { HostedAgent, type HostedAgentOptions } from "../../src/hosted-agent.js";import { HostedRepositoryRunner } from "../../src/hosted-repository-runner.js";Set `GATHERTHREAD_ALLOWED_ORIGINS` to a comma-separated exact Origin allowlist when the browser is hosted separately, for example `http://127.0.0.1:4173`. Cross-origin requests are denied by default.
const value = new TextDecoder("utf-8", { fatal: true }).decode(Uint8Array.from(atob(base64), (c) => c.charCodeAt(0)));Gates applied: no_behavioural_pass.
2981ec88f1bdfull audit observations/trust-audit/mcp-server/th060419__gatherthread.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-10 | 2981ec88f1bd | BLOCK | F | 58 | first audit |
Questions
What is the gatherthread MCP server?
GatherThread 共序:本地 AI 编程 Agent 多人联机协作、实时共享上下文。Self-hostable collaboration for local AI coding agents, Codex Desktop connector & DeepSeek Harness plugin.
What tools does gatherthread expose?
1 in total: 1 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is gatherthread safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (58/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does gatherthread need?
It reads ACP_AUTH_TOKEN_PEPPER, API_TOKEN, GATHERTHREAD_AUTHORIZATION_TOKEN, GATHERTHREAD_AUTH_TOKEN_PEPPER, GATHERTHREAD_BEARER_TOKEN, GATHERTHREAD_DSH_PROJECT_TEST_TOKEN, GATHERTHREAD_DSH_TEST_TOKEN, GATHERTHREAD_DSH_TEST_TOOL_SECRET, GATHERTHREAD_HOSTED_GITHUB_CLIENT_SECRET, GATHERTHREAD_SILICONFLOW_API_KEY, GATHERTHREAD_TOKEN and RELAYROOM_AUTHORIZATION_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How current is this page?
The grade is for one exact copy of the source (2981ec88f1bd), read on 2026-10-10. The repository is watched and re-audited when it changes.