teamshared-ai/teamshared
v0.13.0MIT
Shared team memory for Cursor: remote MCP with email/OTP Connect, the recall-first memory rule, and hooks that capture Agent Chat plus failed-tool/preCompact events.
Changelog
Unreleased
- D5 unbound multi-org warning (protocol 1.29.0):
rules/teamshared.mdcmatches the server copy. Agents relaymemory_session_ensurewarningsonce per session and suggestteamshared org bind <slug>. Binding is not required. - D4 docs: one Connect, one org per repo (#38): install guides teach
connect once and
teamshared org bind <slug>(.teamshared/org). Do not add a second TeamShared server. Unbound/mcpkeeps working. Bots that must stay in one org useteamshared token mint(org-scoped seat key). Covers Cursor, Claude Code, Codex, and Cursor Cloud. Agent copy inAGENTS.md.scripts/validate.shchecks the install docs. - D2 capture follows bound org (#37): hooks resolve
.teamshared/orgviascripts/org_binding.pyand POST transcripts tohttps://teamshared.com/o/{slug}/mcp. Unbound or invalid bindings stay onhttps://teamshared.com/mcp. Plugin MCP entries remain/mcp(no second server). Cursor still reuses Connect; Claude/Codex hooks still useTEAMSHARED_TOKENor OAuth on the org path. - D1 org binding spike (#36): committed repo file
.teamshared/orgis the bind format. Decision and harness evidence indocs/d1-org-binding.md. Resolver contract inscripts/org_binding.py(D2/D3). Do not write a second TeamShared server into.cursor/mcp.json, project.mcp.json, or.codex/config.toml. - README: public install/source no longer claims the MCP server
lives in
teamshared-ai/teamshared(that GitHub repo is private and 404s). Canonical set is teamshared.com/#connect, this plugin repo, andhttps://teamshared.com/mcp. - Cursor sessionStart additional_context (#33): after a successful
memory_session_ensure, the Cursor hook emits Mem0-style{ "additional_context": "..." }with the linked soul (when non-empty) and a short playbook header (name+ truncatedbody_md). Optionalprofile/bootstrapfrom ensure is included when present. Hard-capped (~3.5k chars). Empty soul + no playbook emits no filler. MCP/auth failures stay fail-open (env-only /{}). Does not dump recall catalogs, skill libraries, or transcripts. - ChatGPT / Codex logo:
plugins/teamshared/.codex-plugin/plugin.jsonnow setsinterface.logo,interface.logoDark, andinterface.composerIconto files inside that package (assets/logo.png512×512,assets/icon.png128×128). Marketplace install reads this nested plugin, not a repo-root.codex-plugin/. Bump Codex package0.13.0→0.13.1so ChatGPT/Codex re-import the listing. - Claude Code: OAuth for the MCP connection. Removed the static
Authorization: Bearer ${TEAMSHARED_TOKEN}header fromclaude/.mcp.json. Claude Code has its own native MCP OAuth flow (auto-detects the server needs auth,/mcp→ Authenticate → browser login → token in the system keychain — same idea as Cursor's Connect, confirmed working viaclaude mcp listshowing the header-less server as "Needs authentication"). A static header on the server config preempts that auto-detection, which is why it was never triggering before.TEAMSHARED_TOKENis now scoped to what it's actually needed for: the capture hooks, which run as separate subprocesses with no access to the OAuth keychain and always required their own token regardless. Updatedscripts/validate.sh(was asserting the header must equalBearer ${TEAMSHARED_TOKEN}and that README.md say "does not inherit Cursor Connect" — both now assert the opposite),claude/README.md,claude/skills/teamshared-memory/SKILL.md, and the rootREADME.md's Claude Code section. - 0.13.0 protocol 1.27.0: all three marketplace packages advertise
protocol 1.27.0 so
versionupgrades can complete (Codex was stuck on plugin 0.12.0 / protocol 1.24.0 vs server 1.26.0). Cursor package0.11.0→0.13.0(skipped0.12.0, already used by Claude/Codex); Claude and Codex0.12.0→0.13.0. Rule keeps 1.26 semantics (memory_changes_since, degraded recall / metrics notes) and restores full Cursor capture-hook docs (sessionStart→sessionEndpluspostToolUse/preCompact) — do not copy the 1.26.0 "two hooks only" paragraph. Claude/Codex SessionStart injectors,teamshared-memoryskills, and$status//teamshared:statusnow pass1.27.0.validate.shfails ifrules/teamshared.mdcdrifts fromPROTOCOL_VERSION. Canonical server copy is teamshared#320. - 0.12.0 Codex plugin excellence:
plugins/teamshared/is first-class TeamShared (protocol 1.24.0), not a thin MCP wrapper.SessionStartinjects the recall-first loop via official CodexadditionalContext. Capture hooks use only documented Codex events (UserPromptSubmit,Stop,SessionEnd,PostToolUseon failedBash,PreCompact) and write throughmemory_session_ensure/memory_session_append/context_commit/memory_session_close. Native.mcp.jsonstays OAuth discovery (no headers). Hook subprocesses read Codex$CODEX_HOME/.credentials.json, thenTEAMSHARED_TOKENas last resort; keyring-only OAuth is a documented fail-open gap. Codex has noStopFailureorPostToolUseFailure(Claude-only). Skill expanded to 1.24.0 parity (work_id/playbook_slug, soul / agent_memory / playbook, named gets,~/.codex/AGENTS.mdversion notes).$statusskill.install/codex/remains thetsk_fallback — do not mix. Cursor package at repo root is unchanged. - 0.12.0 Claude Code plugin excellence:
claude/is first-class TeamShared (protocol 1.24.0), not a thin MCP wrapper.SessionStartinjects the recall-first loop via officialadditionalContext. Capture hooks use only documented Claude Code events (UserPromptSubmit,Stop,StopFailure,SessionEnd,PostToolUseFailureonBash|PowerShell,PreCompact) and write throughmemory_session_ensure/memory_session_append/context_commit/memory_session_closewithTEAMSHARED_TOKEN(fail-open, secret scrub). Skill expanded to 1.24.0 parity (work_id/playbook_slug, soul / agent_memory / playbook, named gets, Claude write path~/.claude/rules/teamshared.md). Slash skill/teamshared:status. Cursor package at repo root is unchanged. - 0.11.0 Cursor chat-capture hooks: Agent Chat turns are appended to
TeamShared in near-real-time without relying on the agent calling
memory_session_ensure/context_commit. New hooks:sessionStart(mapconversation_id→ working session),beforeSubmitPrompt(redacted user prompt),afterAgentResponse(redacted assistant text),stop(aborted/error note only — does not distill after every turn), andsessionEnd(close + distill). ExistingpostToolUse+preCompactbehavior is unchanged. Ingest still uses hosted MCP (memory_session_ensure+memory_session_append/context_commit/memory_session_close) with the Cursor Connect token. Fail-open, secret scrubbing, notsk_inmcp.json. Cloud agents may skipsessionStart/sessionEnd; prompt/response hooks still capture turns. - clients/protocol.md: github scope example is now
teamshared-ai/teamshared(wasxhad/teamshared). Historical changelog copy-from lines and theio.github.xhad/teamsharedregistry listing are unchanged. - README: historical note — an earlier live pointer named
teamshared-ai/teamsharedafter thexhad/teamsharedtransfer. That checkout is private (public 404). Public install/source is#connectand this plugin repo; remote MCP ishttps://teamshared.com/mcp. Historical changelog copy-from lines and theio.github.xhad/teamsharedregistry listing are unchanged. - Native Codex marketplace plugin:
.agents/plugins/marketplace.jsoncatalogsplugins/teamshared/forcodex plugin marketplace add teamshared-ai/teamshared-pluginandcodex plugin add teamshared@teamshared. The package registers the hosted streamable HTTP MCP through OAuth discovery and adds an implicitly invokableteamshared-memoryrecall/commit workflow. No token, custom header, or Cursor hook is included. The existinginstall/codex/TOML path remains the manualTEAMSHARED_TOKENalternative. - Claude Code marketplace plugin:
.claude-plugin/marketplace.jsoncatalogsclaude/so users can/plugin marketplace add teamshared-ai/teamshared-pluginthen/plugin install teamshared@teamshared. Registers remote MCPhttps://teamshared.com/mcpwithAuthorization: Bearer ${TEAMSHARED_TOKEN}(tsk_minted at/app/keys; never committed). Thinskills/teamshared-memorypointer; no Cursor hooks in the Claude package. Cursor Connect path unchanged. - Codex install package: first-class
install/codex/withcodex mcp addand project-local.codex/config.tomlmerge. Auth isTEAMSHARED_TOKEN(tsk_, mint at/app/keys) viabearer_token_env_var→Authorization: Bearer. Cursormcp.jsonstays URL-only. - Rule 1.22.0: copy the canonical memory rule from
xhad/teamshared(live serverc98c737, 1.22.0 after #110 / squashb05b0f2). Adds identity get-by-name routing (named playbook/skill/entity →memory_playbook_get/memory_skill_get/memory_entity_view, not recall;soul+agent_memory;memory_agent_get). No mcp.json, hooks, or marketplace submit changes. - Rule 1.19.0: copy the canonical memory rule from
xhad/teamshared(7b524d5, after #85). Adds Campaign CRM (Person / Organization / campaign-as-Project,gtm-outreach,kind=outreach). No mcp.json, hooks, or marketplace submit changes. - 0.10.0 Cursor hooks: two hooks only —
postToolUse(failed) test/lint/shell → short episodic fact: command + error tail, secrets stripped) andpreCompact(short session summary). Both append throughmemory_session_ensure+context_commiton the existing Connect session. Notsk_inmcp.json. Still no skills, agents, or commands. - cursor.directory copy: install path is Add marketplace → this GitHub
URL →
/add-plugin teamshared→ Settings → Tools & MCP → Connect. Cloud / Grok inherit. Listing paste block does not mentionmcp_authortsk_. - Author:
author.nameis Loreum Labs Ltd inplugin.jsonand.cursor-plugin/plugin.json(matches marketplace owner).validate.shnow asserts that name. - Setup story: Cloud and Grok Bot inherit account-level Cursor Connect
(Settings → Tools & MCP → teamshared → Connect). Do not treat
mcp_authas the primary path. Pluginmcp.jsonstays URL-only. Durable backup: one orgtsk_on the MCP headers. - Rule 1.17.0: same Connect inheritance copy; drop headless
mcp_authas the default auth path.
0.9.2 — 2026-08-18
- Rule 1.15.0: always-on protocol is a ~130-line fetch/store loop
(
ensure(user=)→ keywordmemory_recall→context_commitwithfacts[]andclose=true). Dropped the duplicated tool encyclopedia / Quick chooser; routing stays onmemory_tools_catalog(need=...). Store table still namesfile_upload_requestandproject_*.
0.9.1 — 2026-08-15
- Plugin logo:
plugin.jsonnow uses the committed relative pathassets/logo.png(512×512), matchingmarketplace.jsonand first-party Cursor plugins. The previous absolute URL (https://teamshared.com/assets/logo.png) 500s, so Cursor had nothing to paint on tool turns.
0.9.0 — 2026-08-13
- License / author: Agentic Labs Ltd (copyright and plugin/marketplace author).
- Slim plugin: MCP tools + recall rule only. Removed skills, slash commands, the continual-learning stop hook, and the AGENTS.md updater agent. Cursor auto-discovers those folders, so they are gone from the bundle.
0.8.0 — 2026-08-13
- Cursor plugin contract:
mcp.jsonregistershttps://teamshared.com/mcp(URL only; Cursor OAuth Connect, no bearer headers). Manifestnameis kebab-caseteamshared.plugin.jsonpointsrulesatteamshared.mdcso the stale markdown twin is not also injected. - Commands:
/teamshared-connect,/teamshared-recall,/teamshared-remember,/teamshared-think,/teamshared-probe. - Onboarding: install the plugin, then Connect — do not paste a URL or
tsk_*token into~/.cursor/mcp.json.
Unreleased
- Own repo: plugin lives at
teamshared-ai/teamshared-plugin(this repository; moved fromxhad/teamshared-cursor). Add marketplacehttps://github.com/teamshared-ai/teamshared-plugin, then/add-plugin teamshared. The MCP server was historicallyxhad/teamshared(private checkout; public install is teamshared.com/#connect). - Folder marketplace:
.cursor-plugin/marketplace.jsonwith"source": "./"so Cursor Add plugins from folder accepts this repo root. - Rule 1.14.0: every-turn
memory_session_ensure(..., user=request)(no separate append);memory_tools_catalog(need=...)is the conversation router; Quick chooser covers projects and ontology. - Landing + onboarding: public
/restyled; curlinstall.shretired (/install→/#connect;.shroutes return 410). Cursor connects via MCP OAuth in Settings, not inlinemcp.json. - MCP OAuth (Cursor): Connect uses browser email/OTP
(same as
/app).tsk_*API keys remain for CI and other harnesses. Migration:042_mcp_oauth.sql. Rule 1.13.0. - Rule 1.9.0: private per-person soul memory (org + account scoped).
Tiny compressed identity block returned on
memory_session_ensureand injected bycontext_prepare/ the LLM gateway. Tools:memory_soul_get,memory_soul_set. Preferences absorb into the soul. API keys must be minted from the console while signed in socreated_bylinks to the human account. Migration:034_soul.sql.
0.5.0 — 2026-07-11
- Server 0.5.0:
memory_session_ensureandcontext_commitfor one-call session bootstrap and turn-end logging; self-healingmemory_session_append; compression middleware fix;work_list(mine=true)for agents; FTS recall score normalization; graph neighbor dedup; tool param aliases; optional chat gateway; migration 033 (memory:deletefor agent tokens); API key page install URL pinned toteamshared.com. - Rule 1.8.0: session logging now uses
memory_session_ensureandcontext_commit;memory_session_appendself-heals expired sessions (reopened: true). - Rule 1.7.1: align governance guidance with the active-write implementation; remove references to retired approvals and capture-consent console surfaces.
Unreleased
0.7.0 — 2026-06-29
- Rule 1.7.0: retrieval playbook — durable default scope (exclude working),
keyword-anchor-then-broaden queries, recall-before-think for entity/competitor
questions, no
[tool]appends for teamshared MCP calls, dense summary guidance onmemory_remember. - Server:
DEFAULT_RECALL_SCOPESandmemory_thinkdefault recall omit working; MCP tool descriptions and server instructions updated to match. - Installer: Pi coding agent harness (
pi) — project-local./.mcp.json.
0.6.0 — 2026-06-25
- Rule 1.6.0: removed the agent-execution surface — cloud/background agent
runs (
agent_run_*), the workflow engine (workflow_*), and agent assignees (assignee_agent). Work items assign to people only; API keys are org-bound and carry a free-text attribution label. Dropped all "Cloud Agents" references.
0.5.0 — 2026-06-19
- Install consolidation: all curl-install templates live under
install/in this plugin bundle; repo-rootinstall_assets/removed. Server resolves assets viateamshared.clients.install_assets(aliases: rule →rules/, protocol →clients/protocol.md). - Rule 1.5.0: context compression via MCP (
context_prepare,context_normalize,context_compress,context_retrieve); MCP middleware auto-normalizes teamshared tool responses; removed Cursor compression hooks (beforeSubmitPrompt,postToolUse). - Rule 1.5.0:
memory_think+ recallexplain; skills vs playbooks decision tree; tiered every-turn checklist; approval matrix; graph autolink + Postgres fallback; slim tool reference (delegate tomemory_tools_catalog); fixwork_createactive-immediately guidance; bundled rituals documented as skills.
0.4.0 — 2026-06-08
- Rule 1.3.0: log every chat via
memory_session_*(open on first turn, append user/assistant each round, close on done/pivot). State key:conversation/active-session. - Removed the Cursor
conversation-capture-stoptranscript hook; NL capture is agent-driven through MCP instead ofPOST /sessions/turns. - Continual-learning stop hook unchanged.
- Rule 1.4.0: every-turn checklist (ordered steps), mid-thread pivot handling,
append-failure recovery, always resolve
repo=, consent clarification, aligned starter procedures.
0.3.0 — 2026-06-01
- Rule + skill now point teammates to the web console (
/app) for human actions: self-service OTP sign-in, multi-tenant orgs (own org on first login, create/switch, add members), the browsable memory wiki, and managing agents, API keys, approvals, and consent. - Onboarding (README + MARKETPLACE) updated: mint a bearer token from the console
API Keys page (self-service) in addition to
/get-token/ invite links. healthtool description corrected to reflect the full component set.
0.2.0 — 2026-05-28
- Unified
teamshared-memoryand continual-learning into one teamshared plugin. - Continual-learning hook stores cadence + transcript index on teamshared (
/stateAPI). - MCP server key standardized to
teamshared. - Rule file renamed to
teamshared.mdc.
0.1.0
- Initial
teamshared-memoryplugin: MCP wiring, recall-first rule, client snippets.