Atlas / MCP servers / stanislavbg / claude-code-session-manager

claude-code-session-managerBLOCK

mcp/stanislavbg/claude-code-session-manager

Local cockpit for Claude Code CLI sessions — schedule routines, monitor token budget, manage long-running plans

Verdict
BLOCK
Grade
F
Trust score
40 /100
Exposed tools
79 70r · 8w · 1d
Transport
streamable-http
License
MIT
Stars
1
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Local cockpit for the Claude Code CLI — multi-tab terminal, configuration surface, scheduler, voice dictation, and live observability, all in one Electron desktop app.

The 30-second pitch

You already use the claude CLI. This wraps it in a cockpit so you can run multiple sessions at once, edit every config file Claude Code reads, queue overnight work as PRDs, talk to it with your microphone, and watch transcripts in real time — without ever leaving the window.

New tabs open as a lightweight chat box and stay dormant — no PTY, no claude process — until you actually send a message, so a window full of tabs costs almost nothing. Prefer a single bare terminal? Launch with --simple.

Single-author hobby project. Linux and macOS only. Free, MIT, anonymous opt-out telemetry (see Privacy).

Features tour

  • Dormant tabs + chat box — every new tab opens as a chat box and stays dormant (no PTY, no claude process) until you send the first message. The headless chat-run engine drives it through claude -p with stream-json, session resume, and a stop signal, so a tab is a real conversation without holding a live terminal open. Hydrate into a full terminal whenever you need one.
  • Simple mode — npx claude-code-session-manager@latest --simple boots a chrome-free, single-terminal cockpit: no nav, no tabs, no config surface, just one claude session in the launch directory.
  • Cmd-K command palette — commands organised into bands (session, voice, scheduler, config, nav). Fuzzy filter, emit-only dispatch so commands stay decoupled from views.
  • Sidebar groups — the left nav is organised into three groups: Workspace (where you do the work), Configure (how Claude behaves), and Tools (one-off utilities).
  • Scheduler / PRD queue — PRDs live under /session-manager-operations/scheduler/epics//prds/ and the scheduler picks them up as headless claude -p jobs. Author them through the `sch
Read from source at commit 94e3af245357OBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add app --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET} --env MAX_THINKING_TOKENS=${MAX_THINKING_TOKENS} --env RELAY_SECRET=${RELAY_SECRET} -- npx -y @session-manager/[email protected]
claude-desktop
{
  "mcpServers": {
    "app": {
      "command": "npx",
      "args": [
        "-y",
        "@session-manager/[email protected]"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "GOOGLE_CLIENT_SECRET": "${GOOGLE_CLIENT_SECRET}",
        "MAX_THINKING_TOKENS": "${MAX_THINKING_TOKENS}",
        "RELAY_SECRET": "${RELAY_SECRET}"
      }
    }
  }
}
03

Exposed tools (79)

70 read · 8 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
AWSreadAWS services access and best-practice guidance
CloudflarereadManage Cloudflare Workers, KV, R2, D1, and Workers AI
Context7readUp-to-date version-specific library docs injected into prompts
DOCXwriteCreate and edit Microsoft Word documents
DebuggerreadDiagnose a failing test or runtime error from a stack trace
EverythingreadReference/test server with prompts, resources, and tools
FetchreadWeb content fetching and conversion for efficient LLM usage
FilesystemreadSecure file operations with configurable access controls
GitreadTools to read, search, and manipulate Git repositories
GitHubreadOfficial GitHub repository, issues, and PR management
GitLabwriteGitLab API integration for projects, issues, and merge requests
HexagonalreadOrganizes code around ports and adapters.
HookifyreadUtilities and templates for authoring Claude Code hooks
LinearreadIssue tracking and project management for Linear
MemoryreadKnowledge graph-based persistent memory system
NotionreadNotion workspace page and database management
ObsidianreadRead and search notes in an Obsidian vault
PDFwriteCreate, edit, and extract content from PDF documents
PPTXwriteCreate and edit PowerPoint presentations
PerplexityreadAnswer-engine search with deep research and reasoning
PlaywrightreadCross-browser automation for navigation, screenshots, and data extraction
PostgreSQLreadRead-only database access with schema inspection
PuppeteerreadBrowser automation and web scraping via Puppeteer
Read-onlyreadResearch / analysis only — no edits, no bash, no writes
RedisreadInteract with Redis key-value stores
RefactorerreadPropose structural refactors without changing behavior
SQLitereadDatabase interaction and business intelligence over SQLite
SandboxedreadBlock writes outside cwd; allow reads everywhere; deny network and sudo
Security-paranoidreadTreat every input as hostile; never trust external data
SentryreadRetrieve and analyze Sentry error tracking issues
SlackreadChannel management and messaging for Slack workspaces
SocraticreadAsk clarifying questions before implementing anything ambiguous
StrictreadDeny all network + dangerous bash; ask before edits; no auto-accept
StripereadPayment processing, customers, and invoices via Stripe API
SupabasereadManage Supabase projects, tables, and SQL queries
TDD-firstwriteWrite a failing test before any production code change
TavilyreadAI-optimized web search with clean structured results
TersereadOne-sentence answers, minimal preamble, no summaries
TimereadTime and timezone conversion capabilities
XLSXwriteCreate and edit Excel spreadsheets with formulas and formatting
YAGNIreadBuilds only what is needed right now.
architectreadOwns overall plan and decomposition.
asanareadAsana task and project ops.
atlassianreadJira / Confluence search and updates.
builderwriteDrives the next publish.
carry-agentreadd
clangd-lspreadC/C++ diagnostics via clangd. Requires clangd on $PATH.
clear-agentdestructived
code-reviewerreadReviews diffs for correctness and style.
csharp-lspreadC# diagnostics. Requires OmniSharp or Roslyn LSP on $PATH.
debuggerreadDiagnoses failures.
dev-leadreadd
figmareadFigma file inspection for UI work.
firebasereadFirebase project + Firestore ops.
fresh-agentreadA new persona.
githubreadGitHub PRs, issues, gh-style flows.
gitlabreadGitLab MRs, issues, pipelines.
jdtls-lspreadJava diagnostics via Eclipse JDT LS. Requires jdtls on $PATH.
kotlin-lspreadKotlin diagnostics. Requires kotlin-language-server on $PATH.
linearreadLinear issue tracking — pairs with the Tasks tab.
lua-lspreadLua diagnostics. Requires lua-language-server on $PATH.
minimal-agentread
my-agentreadDoes a thing.
new-agentread
new.mdreadA short description
notionreadNotion document lookup and edits.
preadd
page-alphareadSteward for Alpha
php-lspreadPHP diagnostics. Requires intelephense or phpactor on $PATH.
pinned-model-agentreadPinned to a concrete model id outside the standard list.
project-home-builderreadGenerates pages.
richreadHas every optional field.
scoutreadLooks around.
sentryreadSentry bug triage and event lookup.
slackreadSlack DM / channel posting from agents.
stamped-agentreadEdited via the UI.
supabasereadSupabase database operations.
swift-lspreadSwift diagnostics via sourcekit-lsp. Requires sourcekit-lsp on $PATH.
vercelwriteVercel deploy diagnostics.
04

Trust audit

BLOCKgrade F · trust 40/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (4 observation(s))
Network
declared (9 observation(s))
Shell
declared (1 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

CRITICALHard-coded secrets · secret.stripe · CWE-798, CWE-321
web/remote-app/src/App.tsx:16
'pk_live_Y2xlcmsuYmlsa28ucnVuJA';
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/main/lib/feedback-remote/projectHomeAdminRoutes.cjs:62
{ re: /\beval\s*\(/i, message: 'eval(...) is not allowed' },
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
src/main/files.cjs:50
throw new Error('Write inside ~/.ssh denied');
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
src/renderer/data/catalog.ts:224
{ id: 'block-secret-writes', name: 'Block Writes to Secrets', description: 'Deny edits to .env, credentials, key files', event: 'PreToolUse', matcher: 'Write|Edit', command: `path=$(jq -r '.tool_input
Why it matters. touches a credential store
MEDIUMInventory / provenance · inv.binary · CWE-1104
src/main/promptSessionTranscript.cjs
promptSessionTranscript.cjs
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
web/promo-video/vo/cameo-bot-check-1.wav
cameo-bot-check-1.wav
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
web/promo-video/vo/cameo-bot-check-2.wav
cameo-bot-check-2.wav
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
web/promo-video/vo/cameo-bot-check-3.wav
cameo-bot-check-3.wav
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/scheduler-mcp-server.cjs:109
res = await fetch(`http://127.0.0.1:${port}${urlPath}`, {
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/main/lib/feedback-remote/__tests__/customerFeedbackInbox.test.cjs:14
const TOKEN = 'sekrit-owner-token-123';
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
clear-agent
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.binary · CWE-1104
src/main/__tests__/promptSessionTranscript.test.cjs
promptSessionTranscript.test.cjs
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.ignore
.ignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.suspicious_name · CWE-1104
src/main/__tests__/scheduler-heartbeat-payload.test.cjs
scheduler-heartbeat-payload.test.cjs
Why it matters. member named after an attack tool
Fix. remove or justify
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/main/__tests__/projectHomeAdminRoutes.test.cjs:253
['Function(', `<html><head><meta name="sm-demo-duration" content="10"></head><body><script>new Function("return 1")()</script></body></html>`],
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/main/lib/git/gitWorktree.cjs:310
return crypto.createHash('sha1').update(input).digest('hex').slice(0, 16);
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/main/lib/scheduler/definitionOfDone.cjs:43
.createHash('sha1')
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
src/main/__tests__/files-reject-credentials.test.cjs:20
test('denies writes anywhere inside ~/.ssh (keys, authorized_keys, config)', () => {
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
src/main/__tests__/files-reject-credentials.test.cjs:21
for (const p of ['authorized_keys', 'authorized_keys2', 'id_ed25519', 'config']) {
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
src/main/__tests__/files-reject-credentials.test.cjs:22
assert.throws(() => rejectCredentials(under('.ssh', p)), /\.ssh denied/, `~/.ssh/${p} should be denied`);
Why it matters. touches a credential store
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/__tests__/check-epic-transcripts.test.cjs:13
const { encodeCwd } = require('../../src/main/lib/util/encodeCwd.cjs');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/__tests__/move-modules.test.cjs:19
[`${L}/alpha.cjs`]: "const b = require('./beta.cjs')\nconst c = require('./gamma')\nconst p = require('../../../package.json')\nmodule.exports = { b, c, p }\n",
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/__tests__/move-modules.test.cjs:59
expect(read(`${L}/core/alpha.cjs`)).toContain("require('../../../../package.json')");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/__tests__/move-modules.test.cjs:62
expect(read(`${L}/core/__tests__/alpha.test.cjs`)).toContain("require('../../gamma.cjs')");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
scripts/__tests__/package-files.test.cjs:57
const { GUARD_NAMES } = require('../../src/main/lib/guardShims.cjs');

Gates applied: critical_finding, no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 94e3af245357full audit observations/trust-audit/mcp-server/stanislavbg__claude-code-session-manager.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1294e3af245357BLOCKF40first audit
06

Questions

What is the claude-code-session-manager MCP server?

Local cockpit for Claude Code CLI sessions — schedule routines, monitor token budget, manage long-running plans

What tools does claude-code-session-manager expose?

79 in total: 70 read-only, 8 that write, and 1 that can delete or overwrite (clear-agent). Every one is listed on this page with its risk.

Is claude-code-session-manager safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (40/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does claude-code-session-manager need?

It reads ANTHROPIC_API_KEY, GOOGLE_CLIENT_SECRET, MAX_THINKING_TOKENS, RELAY_SECRET, SM_ADMIN_TOKEN_PATH, SM_BEACON_KEY and SM_GATE_AUTHORITATIVE_DISABLE 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 does claude-code-session-manager run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as @session-manager/app at 0.1.0.

How current is this page?

The grade is for one exact copy of the source (94e3af245357), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement