s-gw MCP server
The s-gw MCP server is a local credential gateway that lets coding agents perform secret-backed operations without ever exposing raw credential values. All secrets are kept in a secure local store; agents interact only with handles and receive sanitized output.
Scan files for secrets (
sgw_scan_file): Analyze a local file for embedded secrets and return tokenized content with local handles instead of raw values; optionally persist discovered secrets.Scan arbitrary text for secrets (
sgw_scan_text): Detect secrets in any supplied text and return tokenized output; usepersist=falseto preview handle assignments without enrolling secrets into the store.List credential handles (
sgw_list_handles): Retrieve all known local secret handles along with their non-secret metadata.Describe a specific handle (
sgw_describe_handle): Fetch non-secret metadata for a single credential handle (e.g., name, type, allowed commands) without revealing the underlying secret value.Request secret-backed command execution (
sgw_request_execution): Create a pending execution manifest that injects one or more secrets as environment variables into a specified command — supports multiple handles/env vars, arguments, reason, timeout, and working directory — subject to operator approval before running.Request an SSH session (
sgw_request_ssh_session): Create an approval request for an SSH command that s-gw runs over its own managed ControlMaster session, keeping SSH key material out of the agent's context.Execute an approved request (
sgw_execute_request): Run a previously approved request and receive sanitized output, with any detected credential values replaced by their handles before being returned to the agent.
Integrates with 1Password as a credential store, enabling secure resolution of typed handles to secrets stored in 1Password without exposing raw credentials.
Provides agent-specific configuration for GitHub Copilot, allowing it to interact with s-gw for credential handling via typed handles and scoped action requests.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@s-gw MCP servershow me available credential handles"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.

Stop handing raw credentials to coding agents. s-gw gives agents typed handles, asks you to approve bounded local actions, resolves the credential inside a constrained process on your machine, and returns sanitized output instead of secret values.
s-gw is an early preview. Storage formats and interfaces may change, Windows support is still experimental, and the project has not completed an independent security audit. Do not treat it as a replacement for endpoint security or a hardened enterprise secrets platform yet.
The TypeScript broker, clients, and documentation in this repository are Apache-2.0 licensed. Distributed packages also contain a proprietary compiled Rust execution core whose source is maintained separately.
The Short Version
Agent sees:
s-gw:credential:prod-readonlyYou approve: agent, command, handle, environment binding, working directory, and target
s-gw runs: the command locally with the credential injected only into that child process
Agent receives: sanitized output, audit evidence, and no raw secret
If s-gw helps your agent workflow, star the project. It makes the preview easier for other developers to find.
Related MCP server: projscan
See It In Action
The local console shows the approval queue, credential inventory, policy state, usage flow, and activity history without exposing secret values.

Public demo: s-gw.com.
What It Does
Govern | Approve | Execute | Audit |
Turn secrets into typed local handles that agents can reference safely. | Review the requesting agent, handle, command, environment binding, working directory, and target before access is granted. | Inject the credential only into the approved child process on the same machine. | Record request, approval, execution, policy, and destination evidence without storing returned raw secrets. |
Why Teams Use It
Local custody: raw values stay in macOS Keychain, Windows Credential Manager, 1Password, or the encrypted local ledger.
Action-scoped access: grants bind to the agent, handle, command, environment variable, working directory, target, approval mode, and optional time window.
Useful handles: agents can request real work with stable handle names instead of seeing keys, passwords, tokens, or SSH material.
Output sanitization: command output is scanned before it returns to the agent, replacing detected credential values with handles.
Agent-aware setup: Codex, Claude Code, Cursor, OpenCode, Gemini CLI, GitHub Copilot, VS Code, and other MCP clients get profile-specific configuration.
Local operator UI: the macOS app, menu helper, CLI, and web console show approvals, credential inventory, policies, usage flow, activity, and audit history.
How It Works
flowchart LR
A["Coding agent"] -->|"Handle + action request"| G["s-gw local gateway"]
G --> U["Local approval"]
U --> R["Constrained runner"]
K[("Keychain / Credential Manager / encrypted store")] --> R
R -->|"Sanitized output"| G
G --> AThe agent never needs the unlock passphrase or raw credential. Approval is scoped to the requested operation rather than granting general access to the store.
Core Surfaces
Surface | Purpose |
| Setup, credential enrollment, approvals, policies, agent snippets, guard mode, and diagnostics. |
| Stdio MCP server for agent-facing handle discovery and request creation. |
Native macOS app | Approval queue, credential inventory, policy rules, usage flow, activity, and audit review. |
Menu-bar helper | Fast visibility into pending approvals and local daemon status. |
Local web console | Browser-accessible fallback UI bound to |
Guard mode | Launch agents with credential-looking environment values replaced by s-gw handles. |
Quick Start
The public npm package is the recommended installation path on macOS, Windows 10/11, and Linux. Install Node.js 20 or newer, then run:
npm install -g @s-gw/s-gw
s-gw setup
s-gw statusOn Windows, run the same commands in PowerShell. Windows support is preview software: it uses the TypeScript execution path and includes the PowerShell client, tray helper, and local web console.
For an Apple Silicon Mac desktop bundle, GitHub Releases also provides a self-contained s-gw.dmg. Drag s-gw.app to Applications, then open it and complete setup. The app includes its own Node runtime, CLI, MCP server, native helpers, and menu-bar helper; it does not require Node.js or npm on the host. Setup is intentionally blocked until the app is in /Applications or ~/Applications.
An unsigned DMG requires a Gatekeeper override. Use the npm installation above instead if you do not want to use that override.
The public source builds the TypeScript compatibility path. Building the native macOS surfaces also requires a Swift toolchain. Maintainer release builds additionally require access to the private Rust core checkout.
The Apple Silicon Mac DMG is a self-contained desktop alternative. Published macOS DMGs are either Developer ID signed and notarized or explicitly documented as unsigned; unsigned builds require a Gatekeeper override but retain the standard release tag and update path. Local npm run build:installers output is ad-hoc signed for local verification. The npm package is the primary install and includes the native app, menu helper, Keychain helper, metadata-only Keychain inspector, and Rust core for Apple Silicon Macs. Linux and Windows use the TypeScript execution path when a matching native core is not packaged. Intel Macs must build the native Keychain and desktop surfaces from source for now; packaged arm64-only helpers are rejected before launch.
git clone https://github.com/sgateway/s-gw.git
cd s-gw
npm ci
npm run build
npm link
s-gw setup
s-gw statuss-gw setup generates local unlock material, stores it in the operating system credential store, initializes the encrypted ledger, starts the local UI surfaces available on the current platform, and safely connects detected supported agents. The self-contained macOS app runs its bundled runtime in place; npm installs copy the thin app into /Applications, falling back to ~/Applications when needed. Setup backs up existing agent config, preserves unrelated settings, installs the packaged s-gw skill where supported, and reports per-agent conflicts. Use --no-agents to skip agent registration.
Add a credential from your terminal without placing the value in chat or a process argument:
printf '%s' "$MY_API_TOKEN" | s-gw secret add-keychain \
--name demo-token \
--type api-token \
--value-stdin \
--inject-env API_TOKEN \
--allow-command "$(command -v printenv)"Then inspect the non-secret handle metadata:
s-gw secret listThe end-to-end trust loop walks through a disposable request, local approval, execution, and output sanitization without touching a real credential.
Try The Trust Loop
Use a disposable local token to see the full flow:
printf '%s' 'demo-secret-value' | s-gw secret add-keychain \
--name demo-printenv-token \
--type api-token \
--value-stdin \
--inject-env DEMO_TOKEN \
--allow-command "$(command -v printenv)"
s-gw request env-command <returned-handle> \
--command "$(command -v printenv)" \
--inject-env DEMO_TOKEN
s-gw approve <request-id>
s-gw execute <request-id>The execution output should show a handle token instead of demo-secret-value.
Agent Integration
List the known agent profiles and render the configuration for one client:
s-gw agent list
s-gw agent mcp-snippet codex
s-gw agent mcp-snippet claude-code
s-gw agent mcp-snippet opencodeReview or manage detected connections:
s-gw agent status
s-gw agent install codex --dry-run
s-gw agent install codex
s-gw agent uninstall codexManual profiles and config formats without a safe merge path continue to use the generated snippet. npm installation itself never edits agent configuration.
s-gw setup can safely manage detected Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot CLI, OpenCode, and default-profile VS Code installations on macOS, Windows, and Linux. On Windows, it launches the packaged MCP server through node.exe, not an npm .cmd shim.
For CLI agents, guard mode can replace credential-looking launch environment values with s-gw handles before the agent starts:
s-gw run codex --dry-run -- -v
s-gw run codex -- --ask-for-approval neverMCP registration does not intercept every prompt, file read, shell, or environment variable. See agent integration and the agent profile matrix for the supported paths and current limitations.
Example Request Flow
An agent sees
s-gw:credential:prod-readonlyand asks to runaws sts get-caller-identity.s-gw creates a pending request with the agent name, command, handle, environment binding, working directory, target, and policy result.
You approve once, for a time window, for the login session, or deny it.
s-gw starts the approved local process with the credential injected into the requested environment variable.
s-gw scans the process output before it returns to the agent.
The model can complete the task without receiving the raw access key.
Platform Status
Platform | Status | Credential store | User interface |
macOS 14+ on Apple Silicon | Primary development platform | Keychain | Native app, menu helper, local web console |
macOS 14+ on Intel | Build-from-source candidate; not QA-tested | Source-built Keychain helper | Source-built native surfaces or local web console |
Windows 10/11 | Preview | Credential Manager | PowerShell client, tray helper, local web console |
Linux | Experimental CLI | Environment-provided unlock material | Local web console |
Published Apple Silicon macOS DMGs are self-contained. Releases are Developer ID signed and notarized when credentials are available; otherwise the release notes and DMG README state that a Gatekeeper override is required. The Windows package remains unsigned preview software. Build locally with npm run build:installers; local DMGs are ad-hoc signed.
Security Model
s-gw is designed to reduce accidental credential exposure to coding agents. It does not protect against a compromised operating system account, a malicious approved executable, screen capture, kernel-level access, or every transformed derivative of a secret.
Read the threat model before relying on s-gw for sensitive workflows. Report suspected vulnerabilities through GitHub private vulnerability reporting, not a public issue.
Project Status
The public broker and client source distribution is preview quality; the compiled Rust execution core is proprietary.
macOS is the primary development and test platform.
Windows Credential Manager support is present but still needs broader native QA.
Linux currently depends on environment-provided unlock material.
The Windows desktop package remains an unsigned preview. macOS releases without Developer ID signing are marked unsigned in their release notes and require a Gatekeeper override.
The repository is prepared for open-source collaboration, but security-sensitive changes should come with focused tests and threat-model updates when behavior changes.
Documentation
Contributing
Issues and focused pull requests are welcome. Start with CONTRIBUTING.md, browse good first issue, and use SECURITY.md for anything that may expose credentials or bypass approval.
Planning a launch, write-up, or community post? The maintainer notes in docs/community-launch.md keep the public wording consistent and honest.
License
Source in this repository is Apache-2.0. See LICENSE and NOTICE. The separately maintained Rust core and its compiled binaries are proprietary and are not licensed under Apache-2.0. Third-party names and artwork remain the property of their respective owners and are documented in TRADEMARKS.md and the third-party notices.
Maintenance
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sgateway/s-gw'
If you have feedback or need assistance with the MCP directory API, please join our Discord server