Skip to content

Release 0.5.7 - #112

Merged
makeitfutureDev merged 7 commits into
mainfrom
release/0.5.7
Sep 25, 2026
Merged

makeitfutureDev merged 7 commits into
mainfrom
release/0.5.7

Conversation

@makeitfutureDev

Copy link
Copy Markdown
Owner

Release 0.5.7 — candidate 12c2411 (beta 69710e9 + the version cut).

What's in it

  • HTTP run API = an admin's message in the channel. The run API key is an admin credential. Every API run acts as the fixed api principal: admin rank and the channel's full mode (Auto; Admin-channel permission bypass for a Full run), plus memory and the post-reply memory review, org and channel skills and secrets, connectors and the gateway tools. It gets no personal scope: shared composio-agent only, and nobody's personal tokens, secrets, skills or SSH keys. The request's author is attribution only. Previously every gateway tool was refused, so Auto mode never applied either.
  • API runs join their thread's queue. Slack follow-ups get Steer / Queue / Cancel, and a Slack stop or steer stops the API run.
  • A per-run API mode no longer rebuilds an Admin channel's container. The operator-home mount follows the channel's mode.
  • resumeCommand from the API opens the session inside the channel's container.

No containers/ change — the runtime image is unchanged.

Checks (on this exact candidate)

  • npm run test:coverage — 2933 tests, 2906 pass, 0 fail (27 skipped), coverage floors met
  • npm run check:static, npm run secret-scan, npm run test:security-coverage — pass
  • npm audit --omit=dev --audit-level=high — pass
  • npm run check:dco -- origin/main..HEAD — 4 commits signed off

Live acceptance

  • Not executed. The Claude/Codex live cases in TEST-PLAN.md ("HTTP run API channel parity") have not run. Xavier has not been restarted onto this code.

🤖 Generated with Claude Code

tbiyss and others added 7 commits September 25, 2026 16:06
An API run was a second-class turn: every gateway tool was refused
(memory, permission_prompt and so Auto mode, schedules, background work,
charts, progress), it bypassed its thread's run queue, a per-run `mode`
rebuilt an Admin channel's container, and its resumeCommand pointed at
the host where the session does not exist.

The run API key now acts as one fixed principal, `api`: an approved
member of the target channel. The gateway MCP maps an API capability to
it, so the run gets every channel-scoped capability a member's message
gets, while the caller-named author stays attribution only: no admin
rank, no permission bypass, nobody's personal tokens, secrets, skills or
SSH keys, and admin-mode auto-approval never keys on the named id.
Background work and schedules it starts are owned by `api`, so no later
run inherits authority the key never proved.

- API turns join the per-thread run queue: Slack follow-ups get Steer /
  Queue / Cancel, and a Slack stop or steer stops the API run.
- The post-reply memory review runs after an API turn, as `api`.
- The runtime target keeps the channel's Admin posture, so a per-run
  mode narrows tools without changing mounts or recreating the container.
- resumeCommand uses the thread Resume form (exec into the container).
- Approval cards credit "An HTTP API run" instead of a broken <@api>.
- FEATURES/TEST-PLAN also correct the stale claim that interrupted API
  jobs are re-run after a restart; they are marked interrupted.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Tiberiu Socaci <tsocaci@makeitfuture.com>
The run API key is an admin key, so an API run now behaves like an
admin's message in its channel instead of a member's: it ranks as an
admin (admin gateway tools, admin-mode auto-approval, background shell
jobs without the admin click, and --dangerously-skip-permissions for a
Full run in an Admin channel, since api_foreground now escalates like
slack_foreground).

It still acts as the one fixed `api` principal
(src/config/api-principal.js), never as the author a request names, and
has no personal scope: only the channel's shared composio-agent
identity, no composio-user, and nobody's personal tokens, secrets,
skills or SSH keys. An untrusted capability naming a real admin never
borrows that admin's rank. isAdminPrincipal() applies the admin rank to
run AUTHORS only; clickers and approval links still authorize as people,
and no approval link is minted for `api`.

Per-user API keys that act as a proven person are on the roadmap.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Tiberiu Socaci <tsocaci@makeitfuture.com>
Signed-off-by: Tiberiu Socaci <tsocaci@makeitfuture.com>
An API run acts as the admin api principal with no personal scope. Pin the
other half: it still receives the organization's and the channel's secrets
and skills and runs in the channel's own folder, while the personal secrets
and skills of an admin the request names never reach it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Tiberiu Socaci <tsocaci@makeitfuture.com>
Signed-off-by: Tiberiu Socaci <tsocaci@makeitfuture.com>
Cut the 0.5.7 release section, bump the package and lockfile versions,
and record the release decision.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Tiberiu Socaci <tsocaci@makeitfuture.com>
@makeitfutureDev
makeitfutureDev merged commit 7115d3e into main Sep 25, 2026
4 checks passed
@makeitfutureDev
makeitfutureDev deleted the release/0.5.7 branch September 25, 2026 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants