Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
270 commits
Select commit Hold shift + click to select a range
798b2cb
Merge ChannelGate 0.6.1 release back into beta
tbiyss Oct 6, 2026
866dec5
fix: continue Codex sessions after capacity errors
tbiyss Oct 6, 2026
dcbac43
Merge branch 'fix/codex-capacity-continuation' into beta
tbiyss Oct 6, 2026
88f185e
fix: run complete gateway repairs through host Bash
tbiyss Oct 6, 2026
1e2b73d
Merge host gateway update repair into beta
tbiyss Oct 6, 2026
b24c9d7
feat: filter conversations by source and resolve Teams channel names
tbiyss Oct 6, 2026
c02d480
fix: include displayed conversation titles in search
tbiyss Oct 6, 2026
8f4aee0
Merge conversation source filters and Teams names into beta
tbiyss Oct 6, 2026
5a2ee11
docs: publish Astro Starlight guides on the main website
tbiyss Oct 6, 2026
ed07141
Merge public Astro documentation into beta
tbiyss Oct 6, 2026
d020f39
docs: expand the public feature and configuration handbook
tbiyss Oct 6, 2026
efdb63d
Merge feature and configuration handbook into beta
tbiyss Oct 6, 2026
d35de0c
docs: record handbook publication and automatic website builds
tbiyss Oct 6, 2026
99aa1d0
Merge feature and configuration handbook into beta
tbiyss Oct 6, 2026
b96fbc6
docs: cover all product workflows and gateway controls
tbiyss Oct 6, 2026
32c1488
Merge complete functionality documentation into beta
tbiyss Oct 6, 2026
82b2546
docs: record complete functionality publication
tbiyss Oct 6, 2026
92cfbfc
Merge complete functionality documentation into beta
tbiyss Oct 6, 2026
1c6d093
Merge remote-tracking branch 'origin/beta' into feat/model-shortcuts
tbiyss Oct 6, 2026
bf3463c
feat: align Teams conversation settings with Slack
tbiyss Oct 6, 2026
84343cf
fix: preserve shortcut tasks through runtime card retries
tbiyss Oct 6, 2026
ef144cd
fix: wait for the model catalog before adding shortcuts
tbiyss Oct 6, 2026
a315213
Merge configurable model shortcuts into beta
tbiyss Oct 6, 2026
570f4e3
fix(runtime): restrict operator home mounts to admin authors
tbiyss Oct 6, 2026
45fee08
Merge admin author filesystem isolation into beta
tbiyss Oct 6, 2026
686ef56
fix(background): start container shell jobs in Auto mode without an a…
tbiyss Oct 6, 2026
fd44543
Merge container background shell gate into beta
tbiyss Oct 6, 2026
78394b4
feat: allow users to enable their own channel SSH access
tbiyss Oct 6, 2026
af37646
Merge SSH self-service access into beta
tbiyss Oct 6, 2026
20a52d3
Merge remote-tracking branch 'origin/beta' into feat/teams-settings-p…
tbiyss Oct 6, 2026
1f6f1c6
fix: preserve Teams admin session resume access
tbiyss Oct 6, 2026
0e4b30e
Merge Teams conversation settings into beta
tbiyss Oct 6, 2026
da0aa46
feat: select a model shortcut when forking Slack threads
tbiyss Oct 6, 2026
ad5a990
Merge fork model shortcuts into beta
tbiyss Oct 6, 2026
82c2092
fix: relay Claude login for nested commands across engines
tbiyss Oct 6, 2026
7fb2e96
Merge remote-tracking branch 'origin/beta' into fix/claude-login-all-…
tbiyss Oct 6, 2026
60656d0
Merge nested Claude login into beta
tbiyss Oct 6, 2026
0b32ca4
fix: keep Teams settings in their source conversation
tbiyss Oct 6, 2026
c4777ac
Merge Teams conversation settings fix into beta
tbiyss Oct 6, 2026
231387f
fix: open Teams settings with the section menu
tbiyss Oct 6, 2026
e0614a2
Merge Teams settings section menu into beta
tbiyss Oct 6, 2026
9b4319a
feat: apply Teams runtime settings once per scope
tbiyss Oct 6, 2026
bf04814
Merge Teams runtime scope Apply controls into beta
tbiyss Oct 6, 2026
b80bb91
feat: continue forked Slack threads on another engine
tbiyss Oct 6, 2026
30775fe
Merge fork engine handoffs into beta
tbiyss Oct 6, 2026
d89862f
feat(platforms): show model and app activity in chat replies
tbiyss Oct 7, 2026
36b8f68
Merge chat run details into beta
tbiyss Oct 7, 2026
1dcd354
feat(teams): add a practical help guide
tbiyss Oct 7, 2026
777ff36
Merge Teams help guide into beta
tbiyss Oct 7, 2026
490a35a
fix(teams): align help emoji names and robot reaction IDs
tbiyss Oct 7, 2026
98c1448
Merge Teams help emoji mapping into beta
tbiyss Oct 7, 2026
ba21599
fix(teams): present help in a readable native card
tbiyss Oct 7, 2026
eb823fe
Merge Teams help layout into beta
tbiyss Oct 7, 2026
129ef6b
fix(teams): handle stop and reminder acknowledgment reactions
tbiyss Oct 7, 2026
8db691e
Merge Teams reaction controls into beta
tbiyss Oct 7, 2026
269e21f
fix(teams): show Teams reaction names and IDs in help
tbiyss Oct 7, 2026
be46066
Merge Teams help reaction labels into beta
tbiyss Oct 7, 2026
a8b0519
fix(teams): recognize reaction shortcuts and Like activation
tbiyss Oct 7, 2026
bac176b
Merge Teams reaction shortcut activation into beta
tbiyss Oct 7, 2026
42896b7
fix(skills): continue runs with unavailable personal grants
tbiyss Oct 7, 2026
d8e89ec
Merge optional skill availability fix into beta
tbiyss Oct 7, 2026
776711f
fix(teams): activate requests with Alien reactions
tbiyss Oct 7, 2026
b3a6da1
Merge Teams Alien reaction activation into beta
tbiyss Oct 7, 2026
56b3b05
fix(teams): qualify robot reactions from Graph metadata
tbiyss Oct 7, 2026
541dfa3
Merge Teams Graph robot reaction metadata repair
tbiyss Oct 7, 2026
8baa700
fix(teams): filter settings models by selected engine
tbiyss Oct 7, 2026
88d3cdc
fix(teams): open session runtime picker with model command
tbiyss Oct 7, 2026
85d1793
Merge Teams model command picker
tbiyss Oct 7, 2026
ea4095f
Merge remote-tracking branch 'origin/beta' into fix/teams-engine-models
tbiyss Oct 7, 2026
481e3fc
test(teams): record integrated settings regression results
tbiyss Oct 7, 2026
93e93c5
Merge Teams engine-specific model settings into beta
tbiyss Oct 7, 2026
f56a127
feat: add subscription-backed Perplexity research delegation
tbiyss Oct 7, 2026
268a880
Configure independent activation emojis for each chat platform
tbiyss Oct 7, 2026
af538ea
Merge platform activation emoji settings into beta
tbiyss Oct 7, 2026
5deafb9
Merge remote-tracking branch 'origin/beta' into feat/custom-mcp
tbiyss Oct 7, 2026
b226562
merge: custom MCP connections by URL and Bearer token
tbiyss Oct 7, 2026
9bc499c
docs: refresh chat help with current functionality
tbiyss Oct 7, 2026
405e63e
merge: refresh chat help with current functionality
tbiyss Oct 7, 2026
31450be
feat: track automation health and support quiet result delivery
tbiyss Oct 7, 2026
a296f6f
merge: automation health and quiet delivery
tbiyss Oct 7, 2026
5e5e204
feat(approvals): minimum second-approval cards, durable and tiered by…
tbiyss Oct 7, 2026
9c8974d
Merge remote-tracking branch 'origin/beta' into feat/minimal-approval…
tbiyss Oct 7, 2026
bbc1d47
docs(guide): name the four skill verbs that keep a durable card
tbiyss Oct 7, 2026
f838b79
Merge minimum second-approval cards into beta
tbiyss Oct 7, 2026
3f90724
fix: accept completed Codex reconnect recovery
tbiyss Oct 7, 2026
0cb54f8
merge: integrate subscription research delegation
tbiyss Oct 7, 2026
8824b18
fix: classify Claude watchdog recovery by stable codes
tbiyss Oct 7, 2026
0e802d7
fix: validate optional provider readiness before runtime selection
tbiyss Oct 7, 2026
d82fea9
fix: report observed tool context on engine hard kills
tbiyss Oct 7, 2026
f53452e
fix: retain successful attachment delivery after media cleanup
tbiyss Oct 7, 2026
4ce856e
merge: integrate recovered Codex reconnect handling
tbiyss Oct 7, 2026
d7529cf
merge: integrate typed watchdog recovery
tbiyss Oct 7, 2026
cba509e
merge: integrate pending tool context for hard kills
tbiyss Oct 7, 2026
beac09c
merge: integrate optional provider admission checks
tbiyss Oct 7, 2026
748589d
merge: integrate processed attachment retention
tbiyss Oct 7, 2026
54ca68a
docs: explain Composio bulk scripting and remote file boundaries
tbiyss Oct 7, 2026
165b396
fix: validate Claude Cloud MCP admission before selecting servers
tbiyss Oct 7, 2026
6d72d29
fix: refresh vulnerable runtime dependency locks
tbiyss Oct 7, 2026
a052f17
fix: distinguish unlinked channels from Drive sync readiness
tbiyss Oct 7, 2026
50d7466
test: assert typed process-gone runtime verdict
tbiyss Oct 7, 2026
97efc2d
merge: integrate Composio scripting guidance
tbiyss Oct 7, 2026
43965fb
merge: integrate Claude MCP admission checks
tbiyss Oct 7, 2026
8025cd0
merge: distinguish Drive gateway readiness from folder linking
tbiyss Oct 7, 2026
46d0b10
merge: verify typed backend process-loss recovery
tbiyss Oct 7, 2026
fed91a2
merge: integrate patched runtime dependencies
tbiyss Oct 7, 2026
4c8efb4
fix: revalidate Teams Cloud MCP activation after discovery
tbiyss Oct 7, 2026
7c0c067
merge: revalidate Teams Cloud MCP activations
tbiyss Oct 7, 2026
c81333a
docs: cover automation history and quiet delivery controls
tbiyss Oct 7, 2026
ffb7205
merge: document automation ledger and delivery controls
tbiyss Oct 7, 2026
adf97b4
merge: refresh subscription research candidate with verified beta fixes
tbiyss Oct 7, 2026
b910cd4
feat(slack): native Stop button, agent sessions, richer tables, compo…
tbiyss Oct 7, 2026
807e355
docs(slack): record agent sessions, richer tables, composed replies a…
tbiyss Oct 7, 2026
94681c3
fix(slack): classify slack_compose_reply in the gateway tool lists
tbiyss Oct 7, 2026
ef6fe97
fix(slack): harden composed replies and agent-session lifecycle after…
tbiyss Oct 7, 2026
83f489c
merge: Slack native Stop, agent sessions, richer tables, composed rep…
tbiyss Oct 7, 2026
4e5f7f4
fix(teams): split /model into engine step and per-engine model step
tbiyss Oct 8, 2026
c1b8eda
merge: Teams /model two-step engine then model picker
tbiyss Oct 8, 2026
4f2bf02
fix(teams): make /model match Settings with a Load models button
tbiyss Oct 8, 2026
43b752c
merge: Teams /model Load models layout matching Settings
tbiyss Oct 8, 2026
b329865
feat: open Teams settings in a private native dialog
tbiyss Oct 8, 2026
b13bbee
merge: Teams settings popup
tbiyss Oct 8, 2026
4a776a4
fix: center Teams settings section navigation
tbiyss Oct 8, 2026
9b5862d
merge: center Teams settings navigation
tbiyss Oct 8, 2026
5d5eec1
fix(teams): make help concise and expandable
tbiyss Oct 8, 2026
e6d4bc5
merge: simplify Teams help navigation
tbiyss Oct 8, 2026
705c1fd
fix(teams): harden runtime selection and durable delivery
tbiyss Oct 9, 2026
1c02450
test: serve browser fixtures from hidden worktrees
tbiyss Oct 9, 2026
ad9abb6
Merge Teams validation fixes
tbiyss Oct 9, 2026
0e14516
test(teams): isolate native card routing database
tbiyss Oct 9, 2026
91b607f
test(teams): identify recovered stop target by session
tbiyss Oct 9, 2026
e904aad
Merge Teams validation fixes
tbiyss Oct 9, 2026
eda0c37
fix(teams): process fresh history-free activation reactions
tbiyss Oct 9, 2026
e58436e
Merge Teams history-free activation repair
tbiyss Oct 9, 2026
916b0d3
fix(teams): expose safe Graph callback diagnostics
tbiyss Oct 9, 2026
2a52968
Merge Teams callback diagnostics
tbiyss Oct 9, 2026
ac52362
feat(api): persist conversations across Slack thread events
tbiyss Oct 9, 2026
999cae6
Merge persistent HTTP API conversations
tbiyss Oct 9, 2026
658255c
fix(drivesync): recover interrupted passes and surface wedged syncs
tbiyss Oct 11, 2026
783f895
Merge fix/drivesync-stuck-recovery: recover interrupted Drive sync pa…
tbiyss Oct 11, 2026
3994eda
docs: document composed Slack replies
Oct 12, 2026
bf42000
docs: record approved stable API conversation candidate and deferred …
tbiyss Oct 12, 2026
b6213a4
Merge stable 0.6.3 history into beta and preserve pending acceptance …
tbiyss Oct 12, 2026
e0630c8
fix: omit container images from chat reply footers
tbiyss Oct 12, 2026
509d49a
Merge fix/hide-reply-runtime-image into beta
tbiyss Oct 12, 2026
7e7b89d
fix(teams): shrink reply statistics and add spacing
tbiyss Oct 12, 2026
0fddb97
Merge fix/teams-footer-spacing into beta
tbiyss Oct 12, 2026
6871f62
fix(teams): tag requester after completed replies
tbiyss Oct 12, 2026
106e088
Merge fix/teams-requester-mention into beta
tbiyss Oct 12, 2026
2d3b552
merge: integrate Perplexity subscription research into beta
tbiyss Oct 12, 2026
a0e2715
feat(slack): manage custom MCP servers from Settings → MCPs
tbiyss Oct 12, 2026
46e459d
docs(skill): add recommended server and hosting providers to the chan…
tbiyss Oct 12, 2026
69ef4a1
merge: add recommended server and hosting providers to the channelgat…
tbiyss Oct 12, 2026
53d94fa
fix: allow CLAUDE.md uploads with optional overwrite
tbiyss Oct 13, 2026
7ee8983
merge: allow instruction file uploads with optional overwrite
tbiyss Oct 13, 2026
dcd8b9b
fix: continue batch uploads after individual failures
tbiyss Oct 13, 2026
6311b77
merge: continue uploads after individual file failures
tbiyss Oct 13, 2026
3ef3344
fix: route ongoing requests to the owning persistence scope
tbiyss Oct 13, 2026
50b714c
merge: route ongoing requests to the owning persistence scope
tbiyss Oct 13, 2026
e5cadf9
fix: allow project-local Claude skills and settings uploads
tbiyss Oct 13, 2026
9e80dcc
merge: preserve project-local Claude configuration in uploads
tbiyss Oct 13, 2026
2883010
docs: bundle VPN and SSH access guidance in ChannelGate skill
tbiyss Oct 13, 2026
18adcd8
merge: bundle VPN and SSH access guidance
tbiyss Oct 13, 2026
ec28d76
fix: show Teams settings tabs in one row and default to General
tbiyss Oct 13, 2026
094e269
merge: fix Teams settings navigation and default page
tbiyss Oct 13, 2026
a129f72
fix: keep Teams approval actions in their source thread
tbiyss Oct 13, 2026
c2459d2
feat(teams): keep file and connection controls in their source thread
tbiyss Oct 13, 2026
35615bb
Merge feat/teams-thread-actions into beta
tbiyss Oct 13, 2026
48b63d1
fix(teams): omit detailed status from replies
tbiyss Oct 13, 2026
6a4d743
Merge fix/teams-final-status into beta
tbiyss Oct 13, 2026
a36c170
feat(teams): show a transient working and typing indicator
tbiyss Oct 13, 2026
6584310
Merge feat/teams-working-indicator into beta
tbiyss Oct 13, 2026
1cd3136
fix(teams): preview and deliver workspace files through native controls
tbiyss Oct 13, 2026
e4459bc
docs: document native Teams file delivery control
tbiyss Oct 13, 2026
9ec86a7
Merge fix/teams-file-preview into beta
tbiyss Oct 13, 2026
d602cfc
fix(teams): bound read-only file dialog callbacks and render errors
tbiyss Oct 13, 2026
be06216
fix(teams): recheck workspace access after roster reads
tbiyss Oct 13, 2026
9ba9c35
Merge fix/teams-files-callback into beta
tbiyss Oct 13, 2026
75c1e20
fix(teams): preserve file launcher references across restarts
tbiyss Oct 13, 2026
a36fa15
Merge fix/teams-file-launcher-state into beta
tbiyss Oct 13, 2026
c36fb02
fix(teams): keep file launchers when Teams returns no activity id
tbiyss Oct 13, 2026
3cfa802
Merge fix/teams-launcher-no-message-id into beta
tbiyss Oct 13, 2026
9b6a2f3
feat(teams): preview Word text and fix the browser-edit limit in file…
tbiyss Oct 13, 2026
ab01c9d
Merge fix/teams-file-edit-docx-preview into beta
tbiyss Oct 13, 2026
84d4fa7
feat(teams): add the Files/Variables/Settings reply menu under answers
tbiyss Oct 13, 2026
e97405f
Merge feat/teams-reply-menu into beta
tbiyss Oct 13, 2026
cea4aa5
fix(teams): restore Stop and Tick reactions without Graph history
tbiyss Oct 14, 2026
3405cbb
Merge fix/teams-control-reaction-snapshots into beta
tbiyss Oct 14, 2026
f1c3dec
feat(googlechat): add native help, settings and workspace controls
tbiyss Oct 14, 2026
37a0953
Merge Google Chat native controls into beta
tbiyss Oct 14, 2026
62768fd
fix(googlechat): audit fixes for native controls
tbiyss Oct 14, 2026
c45b08b
Merge fix/googlechat-audit into beta
tbiyss Oct 14, 2026
1b6bf23
feat(googlechat): lay out /help as icon rows with emoji headers
tbiyss Oct 14, 2026
05021fc
Merge feat/googlechat-help-layout into beta
tbiyss Oct 14, 2026
a4c83c2
feat(googlechat): reaction controls through Workspace Events subscrip…
tbiyss Oct 14, 2026
534c0e9
Merge feat/googlechat-reaction-events into beta
tbiyss Oct 14, 2026
2d605f6
feat(googlechat): serve an HTTP endpoint so card buttons work
tbiyss Oct 14, 2026
83b9fd0
Merge feat/googlechat-http-endpoint into beta
tbiyss Oct 14, 2026
a23c64c
docs: add login routes and European data handling to engine authentic…
makeitfutureDev Oct 14, 2026
c352ae2
docs: list Bedrock, Vertex and OpenAI EU routes as in development; dr…
makeitfutureDev Oct 14, 2026
ded27ac
docs: add responsibility note to the European login section
makeitfutureDev Oct 14, 2026
fddcd2e
Merge remote-tracking branch 'origin/beta' into feat/slack-settings-r…
tbiyss Oct 14, 2026
51a7042
docs: login routes and European data handling in engine authenticatio…
makeitfutureDev Oct 14, 2026
c455fc5
chore: refresh engine CLI pins
tbiyss Oct 14, 2026
b9bcc07
Merge engine CLI pin updates into beta
tbiyss Oct 14, 2026
9f20f97
docs: note GDPR transfer basis in the European login section
makeitfutureDev Oct 14, 2026
c52538d
docs: GDPR transfer-basis note in engine authentication Europe sectio…
makeitfutureDev Oct 14, 2026
373b272
chore(deps): update compatible gateway dependencies on beta
tbiyss Oct 14, 2026
d553b31
feat(slack): redesign Settings into seven pages with in-place editing
tbiyss Oct 14, 2026
7a49f64
feat(slack): finish scoped custom MCP settings and safe modal saves
tbiyss Oct 14, 2026
4871be6
Merge stable engine CLI update into beta
tbiyss Oct 14, 2026
30f1755
Merge stable CLI history into beta
tbiyss Oct 14, 2026
952dfff
merge: validate compatible beta dependency updates
tbiyss Oct 14, 2026
db19d48
merge: finish scoped Slack custom MCP settings
tbiyss Oct 14, 2026
a63d624
merge: preserve current beta integration history
tbiyss Oct 14, 2026
dbea060
chore: follow stable Claude CLI release
tbiyss Oct 14, 2026
2f48795
fix: clarify Composio staging identity arguments
tbiyss Oct 14, 2026
87d9163
Merge engine CLI pin updates into beta
tbiyss Oct 14, 2026
0c90236
docs: explain Microsoft 365 access boundaries
tbiyss Oct 15, 2026
e0ff497
Merge Microsoft 365 access documentation into beta
tbiyss Oct 15, 2026
c1e12cc
merge: preserve current beta updates before landing
tbiyss Oct 15, 2026
840bd13
docs: state that OpenAI does not document Codex CLI residency scope
makeitfutureDev Oct 15, 2026
87fe531
Merge pull request #179 from makeitfutureDev/docs/engine-auth-residen…
makeitfutureDev Oct 15, 2026
0c2ab3b
feat(slack): page and search the Access member list
tbiyss Oct 15, 2026
79e9a52
Merge remote-tracking branch 'origin/beta' into feat/slack-settings-r…
tbiyss Oct 15, 2026
95c3e57
merge: Slack Settings redesign with in-place editing and paged member…
tbiyss Oct 15, 2026
3ae2cfe
Merge stable engine CLI update into beta
tbiyss Oct 15, 2026
9f61881
Merge stable CLI history into beta
tbiyss Oct 15, 2026
42e5473
feat(slack): Access lists people with exceptions and searches the rest
tbiyss Oct 15, 2026
f1302d4
merge: Access people search instead of paging
tbiyss Oct 15, 2026
3847d46
docs: record Microsoft 365 page publication checks
tbiyss Oct 15, 2026
bee6abd
Merge Microsoft 365 publication evidence into beta
tbiyss Oct 15, 2026
dbc864a
fix(slack): require human approval for connector membership changes
tbiyss Oct 15, 2026
39b1962
fix(slack): render settings multiselects as section accessories
tbiyss Oct 15, 2026
0e52e68
Show the active model in native Slack agent sessions
tbiyss Oct 15, 2026
a683b1b
Merge branch 'fix/slack-native-model-name' into beta
tbiyss Oct 15, 2026
9450ec6
fix(ssh): refresh current session authority and secrets
tbiyss Oct 16, 2026
7a5fb15
Merge SSH session refresh fix into beta
tbiyss Oct 16, 2026
ceb53fb
fix(slack): close progress when a turn is aborted
tbiyss Oct 16, 2026
d625f46
fix(slack): share bounded cancellation cleanup
tbiyss Oct 16, 2026
0094c6f
Merge Slack cancellation progress fix into beta
tbiyss Oct 16, 2026
b5f073e
fix(slack): clear secret inputs after asynchronous form refusal
tbiyss Oct 16, 2026
6a408e7
Merge Slack secret-input reset fix into beta
tbiyss Oct 16, 2026
500bcef
fix(admin): offer enabled channel engine adapters
tbiyss Oct 16, 2026
0172385
Merge enabled channel engine picker fix into beta
tbiyss Oct 16, 2026
06e19fd
Preserve unavailable MCP grants on unrelated admin saves
tbiyss Oct 16, 2026
af596c5
Merge legacy MCP selection preservation fix into beta
tbiyss Oct 16, 2026
95610e8
fix: report resolved permission bypass for each attempt
tbiyss Oct 16, 2026
ffe0773
Merge actual runtime bypass facts fix into beta
tbiyss Oct 16, 2026
364c05c
test: exercise authorized session carry in live fixture
tbiyss Oct 16, 2026
a839b77
Merge corrected live session carry fixture into beta
tbiyss Oct 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
47 changes: 47 additions & 0 deletions .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Public documentation

on:
push:
branches: [main, beta]
paths:
- 'documentation/**'
- 'docs/**'
- 'src/mcp/tools/**'
- 'src/web/skills-mcp.js'
- 'FEATURES.md'
- 'INSTALL.md'
- 'CHANGELOG.md'
- 'SUPPORT.md'
- '.github/workflows/documentation.yml'
pull_request:
paths:
- 'documentation/**'
- 'docs/**'
- 'src/mcp/tools/**'
- 'src/web/skills-mcp.js'
- 'FEATURES.md'
- 'INSTALL.md'
- 'CHANGELOG.md'
- 'SUPPORT.md'
- '.github/workflows/documentation.yml'

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: documentation
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '24'
cache: npm
cache-dependency-path: documentation/package-lock.json
- run: npm ci
- run: npm run build
- run: npm test
- run: npm audit --omit=dev --audit-level=high
40 changes: 27 additions & 13 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ Contributor workflow).
A **self-hosted Linux daemon** (Node ESM, Express, `node:sqlite`) that runs coding agents inside
team chat. Every conversation — a Slack DM, group or channel; Microsoft Teams and Google Chat in
Beta — gets its **own work folder** (`~/ChannelGate/<platform>/<slug>/`), its **own rootless
Podman container**, its own persistent memory and one engine session per thread. Each ordinary message runs
a **headless engine turn inside that container**: Claude Code (`claude -p`, the primary engine),
Podman containers for project and admin authors**, its own persistent memory and one engine
session per thread and runtime lane. Each ordinary message runs a **headless engine turn inside
that container**: Claude Code (`claude -p`, the primary engine),
OpenAI Codex (`codex exec`), or OpenCode (a proof adapter admitted only read-only and
network-off). An organization admin can explicitly turn one Slack thread into a direct-host
`/sudo` thread; only admins may then message it. The container is the default confinement boundary;
Expand Down Expand Up @@ -112,7 +113,9 @@ post/edit the reply in the thread (degraded to the surface's capabilities) → u
and TTL), `composio-user` (the author's personal token only), `composio-agent` (channel token →
organization default; suppressed in DMs), the toolbox/Make servers when a token resolves, then
— through the engine adapter — the channel/organization-selected catalog servers ("Cloud MCP")
and plugin-package servers mapped onto explicitly selected connections. Lean injects nothing.
and plugin-package servers mapped onto explicitly selected connections, plus the custom MCP
connections people add by URL + Bearer token (`custom-mcps.js` rules, `custom-mcp-store.js`
writes; relayed with a per-dial public-address check, `src/mcp/public-fetch.js`). Lean injects nothing.
Slack beyond the gateway's own bot tools is the **Composio** Slack toolkit — there is no
separate hosted Slack MCP. Composio SDK mode is Enterprise-only (`src/ee/`).
- `src/gateway/modes.js` — the three base modes `read` (Read-only), `worker` (shell + file
Expand Down Expand Up @@ -385,8 +388,8 @@ Config that stays as **files** (read wholesale / bootstrap, hand-editable):
## Non-negotiable rules

- **Confinement is the product, and the container is the default boundary.** Every ordinary turn —
foreground, background job, schedule, API run, memory review — runs inside the channel's own container
(rootless Podman, image-shipped toolchain, `--cap-drop ALL`, no `sudo`): a per-channel HOME
foreground, background job, schedule, API run, memory review — runs inside the channel's
selected author container (rootless Podman, image-shipped toolchain, `--cap-drop ALL`, no `sudo`): a per-channel HOME
volume at `/home/agent` (engine sessions, CLI logins, installed tools) and, bind-mounted at
their identical absolute paths, ONLY the channel's work folder, its clean workspace and its
artifact dir (`~/ChannelGate/.runtime/<platform>/<slug>`, which also backs `/tmp` and
Expand Down Expand Up @@ -422,13 +425,19 @@ Config that stays as **files** (read wholesale / bootstrap, hand-editable):
container, everything in it included. That is the intended trust model for admin channels; put
nothing in such a folder that the channel must not see. The one operator-chosen widening is the
gateway-wide *Admin channels can access the host home* switch (Settings → Container runtime,
`containerFullAccessHome`, OFF by default): while it is on, every Admin-mode channel's container
also bind-mounts the daemon user's WHOLE home read-write at its identical path — every channel's
work folder and memory, every repo, the gateway root with its logs, metadata and credential
stores — with only the container engine's own storage masked. It is a boolean, never a path
(`operatorHomeMounts` in `src/runtimes/container/lifecycle.js`), it is part of the create-time
fingerprint, no MCP tool can flip it, and it is per CHANNEL: every author the channel admits can
read the home through the file tools, only an admin author's turn writes with the bypass tools.
`containerFullAccessHome`, OFF by default): only a currently authorized organization admin's
run in an Admin-mode channel gets the daemon user's WHOLE home read-write at its identical
path — other channel folders, repositories, gateway metadata and credential stores — with
the container engine's storage masked. Non-admin members and guests use a separate project
container, retain Worker with the selected Auto/Lean options, and cannot read the operator
home, other channels or admin engine histories. The daemon checks the author's current role
when resolving each foreground or background spawn; metadata, prompt text and a stored job's
claimed role cannot grant a mount. Admins retain the legacy container/HOME/artifact lane;
project authors use a fresh `cgp2-` container, HOME and temporary volumes and a separate
`.runtime-project-v2/<platform>/<slug>` artifact root. The project and clean workspace remain
shared, so files deliberately stored there are visible to admitted authors. Lane changes start fresh engine sessions and
do not transfer admin history. Memory reviews always use the project lane. The switch remains
boolean, part of create-time reconciliation, and unavailable through MCP tools.
- **Secrets never ride a listing response.** `/api/settings`, `/api/channels`, `/api/users` and the
channel-meta PUT return `has*`/`last4` ONLY. A value is fetched one at a time from
`POST /api/secrets/reveal`, which re-checks the admin password even for a valid session and
Expand Down Expand Up @@ -517,7 +526,12 @@ Config that stays as **files** (read wholesale / bootstrap, hand-editable):
applied last in the child env so a channel secret cannot displace it — and in a proxy-mode
container not even that: the channel's relay PLACEHOLDER (`containerClaudeCredential`), which
the egress proxy swaps for the current access token on `api.anthropic.com` only. A turn with no resolvable
login fails closed with the remedy named; it never runs on a guessed credential. A new consumer
login fails closed with the remedy named when Claude is the selected engine; a missing optional
child login does not block Codex or Qwen. Before every proxy-mode container turn,
`nested-claude-login.js` prepares a private HOME env file containing only channel-bound relay
placeholders and the nested CLI launcher. Qwen's main CLI bypasses that launcher; nested
`claude` clears inherited provider settings before loading the Anthropic relay. API-key child
logins also use destination-bound relay grants. A new consumer
asks the resolver; it never adds a second notion of "the login". The ONE login file the gateway
writes is an interactive SSH session's (`src/gateway/ssh-session.js`): an ACCESS-ONLY
`.credentials.json` in the channel's config dir — the relayed token, its expiry and plan facts,
Expand Down
Loading
Loading