← Gateway SSHCONTENT HISTORY

Update to Gateway SSH

Snapshot Oct 25, 2026 · 12:04 UTC · version 1.4.2

WHAT CHANGED

Package or technical metadata updated

Package or technical metadata updated

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Save Gateway SSH and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

These are saved file metadata. Open a changed file to read its text edits.

Package file

Before

Sep 30, 2026 · 23:08 UTC

78d32b1c5b5551d17564f0af5d06a4e931244a07a626a6ec878d9f542d202e0b

After

Oct 25, 2026 · 12:04 UTC

c68f999ae4c44df3b860ed9f0f2ccd9acea40fa02ab063fff4e0e8f81293434e

Package file

Before

Sep 30, 2026 · 23:08 UTC

127

After

Oct 25, 2026 · 12:04 UTC

99

Package file

Before

Sep 30, 2026 · 23:08 UTC

{"sha256":"2700ff6655f942844b46fc2277000daf3be0441a8b3a32afd66a9565f2a8dcf6","size":1396}

After

Oct 25, 2026 · 12:04 UTC

Not present

Package file

Before

Sep 30, 2026 · 23:08 UTC

Not present

After

Oct 25, 2026 · 12:04 UTC

{"sha256":"1c57e958e598c250cc788e503f4f6a093cf7a68cada29ecd1f0479cecf64d420","size":2291}

Compare saved observations

Download comparison JSON

Changed files

Choose a file to see its text changes. Binary or large files show metadata only.

.app.json →

.codex-plugin/plugin.json →

assets/icon.png →

assets/logo.png →

mcp.json →

plugin.json →

skills/discovery-and-recovery/SKILL.md →

skills/operating-doctrine/SKILL.md →

skills/secure-transfer/SKILL.md →

plugin.json

− removed · + added

--- before
+++ after
@@ -0,0 +1,102 @@
+{
+  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
+  "name": "app-6a8061659144819197910ef2762afbc0",
+  "version": "1.4.2",
+  "description": "Gateway lets users manage owned Linux and Windows OpenSSH servers from ChatGPT: inspect health and configuration, run auditable commands and typed administrative operations, transfer files, and follow durable jobs.",
+  "author": {
+    "name": "Next Generation Media",
+    "email": "hey@trygateway.sh",
+    "url": "https://trygateway.sh"
+  },
+  "homepage": "https://trygateway.sh",
+  "license": "UNLICENSED",
+  "keywords": [
+    "ssh",
+    "servers",
+    "linux",
+    "windows",
+    "sysadmin",
+    "devops",
+    "docker",
+    "systemd",
+    "infrastructure"
+  ],
+  "extensions": {
+    "com.openai": {
+      "interface": {
+        "displayName": "Gateway SSH",
+        "shortDescription": "Manage servers through SSH",
+        "longDescription": "Gateway lets users manage owned Linux and Windows OpenSSH servers from ChatGPT: inspect health and configuration, run auditable commands and typed administrative operations, transfer files, and follow durable jobs.",
+        "developerName": "Next Generation Media",
+        "category": "Developer Tools",
+        "websiteURL": "https://trygateway.sh",
+        "supportURL": "https://trygateway.sh/support",
+        "privacyPolicyURL": "https://trygateway.sh/legal/privacy",
+        "termsOfServiceURL": "https://trygateway.sh/legal/terms",
+        "defaultPrompt": [
+          "Check system health on my servers",
+          "List the Docker containers running on my server",
+          "Install htop on my server"
+        ],
+        "brandColor": "#14171A",
+        "composerIcon": "./assets/icon.png",
+        "logo": "./assets/logo.png"
+      },
+      "review": {
+        "test_cases": {
+          "positive": [
+            {
+              "description": "List the servers registered to the account.",
+              "prompt": "Which servers do I have in Gateway?",
+              "tools_triggered": "list_servers",
+              "expected_behavior": "Lists the test account's two servers, build-host and production-web, with their canonical IDs, platform and status, without connecting to anything else."
+            },
+            {
+              "description": "Inspect server health through a durable job.",
+              "prompt": "Check system health on my Gateway server production-web.",
+              "tools_triggered": "system_health, wait_for_job",
+              "expected_behavior": "Starts a system-health job on production-web, follows it to a terminal state, and summarises load, memory, disk and uptime from the structured snapshot. Optional collectors that are unavailable are reported as warnings."
+            },
+            {
+              "description": "Apply package updates through a durable job, with no interaction needed.",
+              "prompt": "Install the available package updates on build-host.",
+              "tools_triggered": "update_system_packages, wait_for_job",
+              "expected_behavior": "Starts an update_system_packages job on build-host (the test servers have passwordless sudo, so no sudo handoff is needed), follows it to a terminal state, and reports which packages were upgraded, or that none were pending. It removes no packages and never reboots; if a reboot is needed it says so instead of rebooting."
+            },
+            {
+              "description": "List the services on a server.",
+              "prompt": "Which services are running on production-web?",
+              "tools_triggered": "list_systemd_units",
+              "expected_behavior": "Lists the running systemd services on production-web with their names and states, without starting, stopping or changing anything."
+            },
+            {
+              "description": "Report disk usage on a server.",
+              "prompt": "How much disk space is left on build-host?",
+              "tools_triggered": "get_storage_usage",
+              "expected_behavior": "Reports the mounted filesystems on build-host with their size, used and available space, and changes nothing."
+            }
+          ],
+          "negative": [
+            {
+              "description": "General SSH education must not invoke Gateway because no managed-server action was requested.",
+              "prompt": "Explain the difference between SSH keys and passwords; do not connect to anything."
+            },
+            {
+              "description": "Gateway must not probe an arbitrary public hostname that is not a registered server in the account.",
+              "prompt": "Without adding it as a Gateway server, check whether example.com is online."
+            },
+            {
+              "description": "Gateway must not act on files on the user's local computer, which is not a Gateway server.",
+              "prompt": "Delete old.zip from the Downloads folder on my laptop."
+            }
+          ]
+        },
+        "commerce": false
+      },
+      "publication": {
+        "release_notes": "Adds Gateway Teams support: a server in a team the user belongs to is named team-slug/server-name, list_servers, list_jobs, list_files and list_regions cover the personal space and the user's teams, and add_server and upload_file take an optional team argument. Team roles and per-server access set in the Gateway web app apply to every tool."
+      },
+      "apps": "./.app.json"
+    }
+  }
+}
Full technical diff · 10 changed fields

changed /files/.app.json/sha256

BEFORE
"78d32b1c5b5551d17564f0af5d06a4e931244a07a626a6ec878d9f542d202e0b"
AFTER
"c68f999ae4c44df3b860ed9f0f2ccd9acea40fa02ab063fff4e0e8f81293434e"

changed /files/.app.json/size

BEFORE
127
AFTER
99

removed /files/.codex-plugin~1plugin.json

BEFORE
{
  "sha256": "2700ff6655f942844b46fc2277000daf3be0441a8b3a32afd66a9565f2a8dcf6",
  "size": 1396
}
AFTER
Field is absent

added /files/assets~1icon.png

BEFORE
Field was absent
AFTER
{
  "sha256": "1c57e958e598c250cc788e503f4f6a093cf7a68cada29ecd1f0479cecf64d420",
  "size": 2291
}

added /files/assets~1logo.png

BEFORE
Field was absent
AFTER
{
  "sha256": "424f7cf85d2a0ae8e2f5aaf6af3f9b63944951157e83f765733430e35f613f75",
  "size": 11671
}

added /files/mcp.json

BEFORE
Field was absent
AFTER
{
  "sha256": "eb0353f7a12799466031068933897051161bb9028942a37d002e00e3d18fbf45",
  "size": 195
}

added /files/plugin.json

BEFORE
Field was absent
AFTER
{
  "sha256": "950df573cce067f84434f7f36a851b2d8f7bf3806f789f2e8901f7ee53463d75",
  "size": 5437
}

added /files/skills~1discovery-and-recovery~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "fc3d77e8d47315c70c96023bba573a06228a0a5451d2110cb4083f942126ce5a",
  "size": 6080
}

added /files/skills~1operating-doctrine~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "b9aa3956e760afb43d3aada0cc4cd6647209b546e974d51d26791c80c77176c5",
  "size": 4199
}

added /files/skills~1secure-transfer~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "e9b669c2d23b8ad482dfa4f01f6ed419e330a1bf1ee64a4489d291e951b7c5e5",
  "size": 5120
}
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "c68f999ae4c44df3b860ed9f0f2ccd9acea40fa02ab063fff4e0e8f81293434e",
      "size": 99
    },
    "assets/icon.png": {
      "sha256": "1c57e958e598c250cc788e503f4f6a093cf7a68cada29ecd1f0479cecf64d420",
      "size": 2291
    },
    "assets/logo.png": {
      "sha256": "424f7cf85d2a0ae8e2f5aaf6af3f9b63944951157e83f765733430e35f613f75",
      "size": 11671
    },
    "mcp.json": {
      "sha256": "eb0353f7a12799466031068933897051161bb9028942a37d002e00e3d18fbf45",
      "size": 195
    },
    "plugin.json": {
      "sha256": "950df573cce067f84434f7f36a851b2d8f7bf3806f789f2e8901f7ee53463d75",
      "size": 5437
    },
    "skills/discovery-and-recovery/SKILL.md": {
      "sha256": "fc3d77e8d47315c70c96023bba573a06228a0a5451d2110cb4083f942126ce5a",
      "size": 6080
    },
    "skills/operating-doctrine/SKILL.md": {
      "sha256": "b9aa3956e760afb43d3aada0cc4cd6647209b546e974d51d26791c80c77176c5",
      "size": 4199
    },
    "skills/secure-transfer/SKILL.md": {
      "sha256": "e9b669c2d23b8ad482dfa4f01f6ed419e330a1bf1ee64a4489d291e951b7c5e5",
      "size": 5120
    }
  }
}

SHA-256 of public snapshot: 652cf70b71bd4625b277c99371e0c9adea223424c8905d698294c40350336471