Security built around direct connections

SSH sessions go directly from your device to your server, and credentials stay in Apple Keychain. AI features run on-device. If you enable push alerts, a separate relay forwards alert text and a device token to Apple; it never carries SSH traffic or credentials.

Written by the GateShell team at Hefty Innovations

What does zero backend mean here?

Your SSH, SFTP, and port-forwarding traffic goes directly between your device and your server, without a GateShell account or session relay. The optional server agent keeps monitoring history on your server. Push alerts are the exception: when enabled, its alert text and device token pass through a GateShell relay on their way to Apple Push. That relay does not carry terminal traffic or SSH credentials.

Read the optional agent source and our privacy policy for the data flow and its limits.

Direct SSH Connections

Every SSH, SFTP, and port forwarding connection goes directly from your device to your server, with no GateShell relay in the session path. Optional push alerts use a separate relay to forward alert text and a device token to Apple. The relay does not handle SSH traffic or credentials.

Hardware-Backed Encryption

All passwords and SSH keys are stored in the Apple Keychain, encrypted with AES-256 by the Secure Enclave. Private keys are generated on-device and never become extractable.

Verified Host Keys

GateShell pins your server's host key on first connect and verifies it on every subsequent session. If the key changes, the connection is blocked and you're warned, which stops a man-in-the-middle before it starts.

Data security and privacy

Credential Storage

Passwords, passphrases, and SSH private keys are stored exclusively in the Apple Keychain, which is hardware-isolated, AES-256 encrypted storage. Keychain items are tied to your device passcode and the Secure Enclave. Even if raw app data is extracted, credentials remain inaccessible without biometric or passcode authentication.

  • AES-256 encryption via Secure Enclave
  • Biometric-gated access (Face ID / Touch ID)
  • Isolated from app sandbox and other applications
  • iCloud Keychain sync with E2E encryption (optional)

Data in Transit

All SSH connections use the SSH2 protocol with modern key exchange algorithms (curve25519-sha256, ecdh-sha2-nistp256). GateShell enforces strict host key checking and blocks connections when keys don't match. There are no intermediate servers, relays, or proxies. Your session runs directly from your device to your server over an encrypted SSH tunnel.

  • SSH2 with Curve25519 key exchange
  • Strict host key verification (TOFU pinning)
  • No relay for SSH: direct device-to-server connection
  • TLS 1.3 for App Store communication (StoreKit)

Data at Rest

Server configurations and snippets are stored in SwiftData and encrypted via Apple's Data Protection API (NSFileProtectionComplete). Session logs, if recording is enabled, are stored in the app container with the same file-level encryption. No data is ever written to shared or unencrypted storage locations.

  • NSFileProtectionComplete for all app data
  • Session logs encrypted at rest in app container
  • No plaintext credential storage, ever
  • Data deletion on app removal (no residual data)

Data Collection

GateShell collects zero analytics, zero telemetry, and zero crash reports. There are no third-party SDKs, no advertising identifiers, and no tracking frameworks in the app. We do not know who uses GateShell, how often, or which servers they connect to. Having no backend is what makes that true, so there is no policy here to revise later.

  • No analytics SDKs
  • No crash reporting frameworks
  • No advertising identifiers
  • No user accounts or email database

App and platform security

Agent-First Server Security Assistant

GateShell's optional open-source Go agent performs deterministic, read-only checks on the server itself, including updates, public listeners, SSH policy, firewall state, backup schedules, and certificate expiry. The agent binds locally and GateShell reaches it through the existing SSH tunnel. It exposes no remote shell or remediation API.

  • Read-only security findings are available free
  • Pro guided fixes show the exact locally approved command
  • Every change requires approval and passes the command guardrail
  • GateShell rescans after a fix and shows the resulting evidence

Biometric App Lock

GateShell requires Face ID or Touch ID authentication on app open. Biometric data is processed entirely on-device by Apple's Secure Enclave, and GateShell receives only a boolean response from LocalAuthentication. The app locks immediately when backgrounded. Failed biometric attempts fall back to the device passcode, which is also enforced by the system.

  • Face ID / Touch ID required on app open
  • Immediate lock on background
  • Secure Enclave processes all biometric data
  • Configurable auto-lock timer

On-Device AI (Apple Intelligence)

GateShell's AI features (command composition by voice or text, a dangerous-command guardrail, secret and PII redaction, and plain-English command explanations) run entirely on-device using Apple Intelligence and FoundationModels. The Intelligence module carries a zero-networking invariant enforced in CI: any networking symbol in the source tree fails the build. Your terminal data never leaves your device for AI processing.

  • 100% on-device inference via Apple Intelligence
  • CI-enforced zero-networking in AI module
  • Guardrail classifies command risk before execution
  • PII/secret redaction before session logging

Secure Development

GateShell is built with Apple's Swift programming language using memory-safe patterns. Dependencies are pinned to exact versions and reviewed during updates. The codebase follows Apple's Secure Coding Guide and uses Swift's type system to prevent common vulnerability classes like buffer overflows, use-after-free, and format string attacks.

  • Memory-safe Swift throughout
  • Pinned dependencies with manual review
  • Apple Secure Coding Guide compliance
  • Static analysis via Xcode Analyzer on every build

Payment Security

All Pro subscriptions are processed exclusively by Apple via StoreKit. GateShell never receives, stores, or transmits your credit card number, billing address, or purchase history. Apple provides only an anonymized transaction identifier and subscription status. Apple's PCI-DSS compliance governs all payment processing.

  • Apple StoreKit processes all payments
  • No credit card data touches GateShell
  • Anonymized transaction identifiers only
  • Managed via Apple ID subscriptions settings

Session Recording Privacy

Terminal session recording is opt-in and disabled by default. When enabled, recordings are stored exclusively in the app's local container with the same file-level encryption as all other app data. Recordings never leave your device unless you explicitly export them via the share sheet. You can delete recordings at any time.

  • Opt-in only, disabled by default
  • Stored locally with file-level encryption
  • No automatic upload or sync
  • User-controlled export and deletion

Infrastructure and network security

No SSH Relay Infrastructure

Your SSH sessions are direct device-to-server connections. GateShell does not operate a session relay, bastion host, or account database. The optional push relay described below handles alerts, not terminal sessions.

Push Alerts (The One Service We Run)

If you turn on alerts, the agent on your server calls a single relay endpoint we host, which hands the notification to Apple Push. The relay is stateless: it stores nothing between requests, keeps no database, and has no account to sign into. Your device token lives on your own server, and the agent sends it on every call. What passes through is the alert text itself, a line like “CPU above 90% on web-01”, plus that token, over HTTPS. No SSH traffic, no commands, no output, no credentials ever reach it, and nothing about a request is written to a log. Leave alerts off and the relay is never contacted at all.

iCloud Sync (Apple E2E Encryption)

Server configs and snippets sync via iCloud private database with end-to-end encryption. Data is encrypted on your device with keys derived from your Apple ID credentials. Not even Apple can read synced data. This is the same infrastructure that protects Apple Pay, Health data, iCloud Keychain, and Safari passwords.

No Third-Party Services

No analytics providers, no crash reporters, no ad networks, no CDNs, no authentication services. The app talks to your servers over SSH, and to Apple's StoreKit and iCloud, both governed by Apple's own security and privacy guarantees. If you enable push alerts, your server's agent also talks to our push relay, which forwards the notification to Apple Push. That is the complete list.

Report a vulnerability

If you discover a security issue in GateShell, please email us at support@heftyinnovations.com. We take every report seriously and will respond within 72 hours. Please include detailed steps to reproduce so we can validate and fix the issue quickly.

GateShell does not currently operate a public bug bounty program.