grok-bot-cli 0.10.0 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7062,7 +7062,7 @@ var __webpack_modules__ = {
7062
7062
  var _core_claude_routes_js__rspack_import_2 = __webpack_require__("./src/core/claude-routes.ts");
7063
7063
  const __rspack_default_export = (0, agent_bundle_routes__rspack_import_1.uO)({
7064
7064
  title: 'Message Claude Code',
7065
- description: 'Send to a named, opted-in live Claude Code channel and wait for its reply. Unknown delivery must not be retried automatically.',
7065
+ description: 'Send to a named, opted-in live Claude Code channel and wait for its reply. Unknown delivery must not be retried automatically. Runs on the user\'s registered machine via its local socket, not the Grok Bot box. From the box, use Grok Bot Shell with a machineId to run gbot there after codex app-server daemon start or bootstrap; gbot has no remote transport.',
7066
7066
  annotations: {
7067
7067
  readOnlyHint: false
7068
7068
  },
@@ -7132,7 +7132,7 @@ var __webpack_modules__ = {
7132
7132
  excludeClients: [
7133
7133
  'codex'
7134
7134
  ],
7135
- description: 'Send to Codex. With replyToGrok or bindingId, managed delivery returns the terminal answer to Grok automatically. Otherwise optional wait observes completion and explicit steer requires expectedTurnId. Acceptance is not completion.',
7135
+ description: 'Send to a Codex thread. Runs on the user\'s registered machine via its local socket, not the Grok Bot box. From the box, use Grok Bot Shell with a machineId to run gbot there after codex app-server daemon start or bootstrap; gbot has no remote transport. With replyToGrok or bindingId, managed delivery returns the terminal answer to Grok automatically. Otherwise optional wait observes completion and explicit steer requires expectedTurnId. Acceptance is not completion.',
7136
7136
  title: 'Codex send',
7137
7137
  annotations: {
7138
7138
  readOnlyHint: false
@@ -7243,7 +7243,7 @@ var __webpack_modules__ = {
7243
7243
  excludeClients: [
7244
7244
  'codex'
7245
7245
  ],
7246
- description: 'Discover a bounded page of Codex daemon threads.',
7246
+ description: 'Discover a bounded page of Codex daemon threads. Runs on the user\'s registered machine via its local socket, not the Grok Bot box. From the box, use Grok Bot Shell with a machineId to run gbot there after codex app-server daemon start or bootstrap; gbot has no remote transport.',
7247
7247
  title: 'Codex threads',
7248
7248
  annotations: {
7249
7249
  readOnlyHint: true
@@ -7294,7 +7294,7 @@ var __webpack_modules__ = {
7294
7294
  excludeClients: [
7295
7295
  'codex'
7296
7296
  ],
7297
- description: 'Explicit diagnostic observation of one Codex turn; returns execution and final reply without interrupting it.',
7297
+ description: 'Explicit diagnostic observation of one Codex turn; returns execution and final reply without interrupting it. Runs on the user\'s registered machine via its local socket, not the Grok Bot box. From the box, use Grok Bot Shell with a machineId to run gbot there after codex app-server daemon start or bootstrap; gbot has no remote transport.',
7298
7298
  title: 'Codex wait',
7299
7299
  annotations: {
7300
7300
  readOnlyHint: true
@@ -7363,7 +7363,7 @@ var __webpack_modules__ = {
7363
7363
  excludeClients: [
7364
7364
  'codex'
7365
7365
  ],
7366
- description: 'Watch bounded Codex thread events for diagnostics without answering approvals.',
7366
+ description: 'Watch bounded Codex thread events for diagnostics without answering approvals. Runs on the user\'s registered machine via its local socket, not the Grok Bot box. From the box, use Grok Bot Shell with a machineId to run gbot there after codex app-server daemon start or bootstrap; gbot has no remote transport.',
7367
7367
  title: 'Codex watch',
7368
7368
  annotations: {
7369
7369
  readOnlyHint: true
@@ -56173,7 +56173,7 @@ var __webpack_modules__ = {
56173
56173
  const route10 = Object.assign({}, Reflect.get(_src_mcp_grok_bot_tools_gbot_grok_respond_tsx__rspack_import_13, 'default'), _src_mcp_grok_bot_tools_gbot_grok_respond_tsx__rspack_import_13);
56174
56174
  const route11 = Object.assign({}, Reflect.get(_src_mcp_grok_bot_tools_gbot_send_tsx__rspack_import_14, 'default'), _src_mcp_grok_bot_tools_gbot_send_tsx__rspack_import_14);
56175
56175
  const route12 = Object.assign({}, Reflect.get(_src_mcp_grok_bot_tools_gbot_thread_tsx__rspack_import_15, 'default'), _src_mcp_grok_bot_tools_gbot_thread_tsx__rspack_import_15);
56176
- const ARTIFACT_EPOCH = "gbot@0.10.0";
56176
+ const ARTIFACT_EPOCH = "gbot@0.10.1";
56177
56177
  const pluginRoot = (0, _agent_bundle_runtime__rspack_import_16.E7)({
56178
56178
  fallback: (0, node_url__rspack_import_0.fileURLToPath)(new URL('..', import.meta.url)),
56179
56179
  stateAnchor: 'user-data'
@@ -56188,7 +56188,7 @@ var __webpack_modules__ = {
56188
56188
  "annotations": {
56189
56189
  "readOnlyHint": false
56190
56190
  },
56191
- "description": "Send to a named, opted-in live Claude Code channel and wait for its reply. Unknown delivery must not be retried automatically.",
56191
+ "description": "Send to a named, opted-in live Claude Code channel and wait for its reply. Unknown delivery must not be retried automatically. Runs on the user's registered machine via its local socket, not the Grok Bot box. From the box, use Grok Bot Shell with a machineId to run gbot there after codex app-server daemon start or bootstrap; gbot has no remote transport.",
56192
56192
  "inputJsonSchema": {
56193
56193
  "additionalProperties": false,
56194
56194
  "properties": {
@@ -56223,7 +56223,7 @@ var __webpack_modules__ = {
56223
56223
  "annotations": {
56224
56224
  "readOnlyHint": false
56225
56225
  },
56226
- "description": "Send to Codex. With replyToGrok or bindingId, managed delivery returns the terminal answer to Grok automatically. Otherwise optional wait observes completion and explicit steer requires expectedTurnId. Acceptance is not completion.",
56226
+ "description": "Send to a Codex thread. Runs on the user's registered machine via its local socket, not the Grok Bot box. From the box, use Grok Bot Shell with a machineId to run gbot there after codex app-server daemon start or bootstrap; gbot has no remote transport. With replyToGrok or bindingId, managed delivery returns the terminal answer to Grok automatically. Otherwise optional wait observes completion and explicit steer requires expectedTurnId. Acceptance is not completion.",
56227
56227
  "excludeClients": [
56228
56228
  "codex"
56229
56229
  ],
@@ -56303,7 +56303,7 @@ var __webpack_modules__ = {
56303
56303
  "annotations": {
56304
56304
  "readOnlyHint": true
56305
56305
  },
56306
- "description": "Discover a bounded page of Codex daemon threads.",
56306
+ "description": "Discover a bounded page of Codex daemon threads. Runs on the user's registered machine via its local socket, not the Grok Bot box. From the box, use Grok Bot Shell with a machineId to run gbot there after codex app-server daemon start or bootstrap; gbot has no remote transport.",
56307
56307
  "excludeClients": [
56308
56308
  "codex"
56309
56309
  ],
@@ -56336,7 +56336,7 @@ var __webpack_modules__ = {
56336
56336
  "annotations": {
56337
56337
  "readOnlyHint": true
56338
56338
  },
56339
- "description": "Explicit diagnostic observation of one Codex turn; returns execution and final reply without interrupting it.",
56339
+ "description": "Explicit diagnostic observation of one Codex turn; returns execution and final reply without interrupting it. Runs on the user's registered machine via its local socket, not the Grok Bot box. From the box, use Grok Bot Shell with a machineId to run gbot there after codex app-server daemon start or bootstrap; gbot has no remote transport.",
56340
56340
  "excludeClients": [
56341
56341
  "codex"
56342
56342
  ],
@@ -56385,7 +56385,7 @@ var __webpack_modules__ = {
56385
56385
  "annotations": {
56386
56386
  "readOnlyHint": true
56387
56387
  },
56388
- "description": "Watch bounded Codex thread events for diagnostics without answering approvals.",
56388
+ "description": "Watch bounded Codex thread events for diagnostics without answering approvals. Runs on the user's registered machine via its local socket, not the Grok Bot box. From the box, use Grok Bot Shell with a machineId to run gbot there after codex app-server daemon start or bootstrap; gbot has no remote transport.",
56389
56389
  "excludeClients": [
56390
56390
  "codex"
56391
56391
  ],
@@ -56766,7 +56766,7 @@ var __webpack_modules__ = {
56766
56766
  lineage: lineage.registry,
56767
56767
  plugin: {
56768
56768
  "name": "gbot",
56769
- "version": "0.10.0"
56769
+ "version": "0.10.1"
56770
56770
  },
56771
56771
  pluginRoot: pluginRoot.identity,
56772
56772
  routes
@@ -57007,6 +57007,7 @@ var __webpack_modules__ = {
57007
57007
  var node_net__rspack_import_2 = __webpack_require__("node:net");
57008
57008
  var node_os__rspack_import_3 = __webpack_require__("node:os");
57009
57009
  var node_path__rspack_import_4 = __webpack_require__("node:path");
57010
+ var _user_machine_guidance_js__rspack_import_5 = __webpack_require__("./src/core/user-machine-guidance.js");
57010
57011
  const MAX_BYTES = 65536;
57011
57012
  const FRAME_BYTES = MAX_BYTES * 6 + 1024;
57012
57013
  const defaultDirectory = ()=>(0, node_path__rspack_import_4.join)((0, node_os__rspack_import_3.homedir)(), '.grok-bot-cli', 'claude');
@@ -57017,6 +57018,18 @@ var __webpack_modules__ = {
57017
57018
  if (Buffer.byteLength(path) >= 104) throw Error('Claude channel socket path is too long');
57018
57019
  return path;
57019
57020
  }
57021
+ function absentClaudeChannelMessage(path, directory) {
57022
+ if ((0, _user_machine_guidance_js__rspack_import_5.R)({
57023
+ path,
57024
+ home: directory
57025
+ })) {
57026
+ return [
57027
+ 'No Claude channel socket at ' + path + '.',
57028
+ _user_machine_guidance_js__rspack_import_5.M
57029
+ ].join('\n');
57030
+ }
57031
+ return 'No Claude channel socket at ' + path + '. Start an opted-in Claude Code session with GROK_BOT_CLAUDE_CHANNEL on this machine (gbot has no remote transport).';
57032
+ }
57020
57033
  function messageText(message) {
57021
57034
  if (typeof message !== 'string' || !message.trim() || Buffer.byteLength(message) > MAX_BYTES) throw Error('Message must contain text within 64 KiB');
57022
57035
  return message;
@@ -57150,8 +57163,21 @@ var __webpack_modules__ = {
57150
57163
  const path = socketPath(name, directory);
57151
57164
  messageText(message);
57152
57165
  timeout(timeoutMs);
57153
- await privateDirectory(directory);
57154
- const info = await (0, node_fs_promises__rspack_import_1.lstat)(path);
57166
+ try {
57167
+ await privateDirectory(directory);
57168
+ } catch (error) {
57169
+ if (error && (error.code === 'ENOENT' || /no such file|ENOENT/i.test(String(error.message)))) {
57170
+ throw Error(absentClaudeChannelMessage(path, directory));
57171
+ }
57172
+ throw error;
57173
+ }
57174
+ let info;
57175
+ try {
57176
+ info = await (0, node_fs_promises__rspack_import_1.lstat)(path);
57177
+ } catch (error) {
57178
+ if (error && error.code === 'ENOENT') throw Error(absentClaudeChannelMessage(path, directory));
57179
+ throw error;
57180
+ }
57155
57181
  if (!info.isSocket() || info.uid !== process.getuid() || info.mode & 63) throw Error('Claude channel socket is not private to this user');
57156
57182
  return new Promise((resolve, reject)=>{
57157
57183
  const socket = (0, node_net__rspack_import_2.connect)(path);
@@ -57201,6 +57227,7 @@ var __webpack_modules__ = {
57201
57227
  var _package_json__rspack_import_6 = __webpack_require__("./package.json");
57202
57228
  var _codex_contract_js__rspack_import_7 = __webpack_require__("./src/core/codex/contract.js");
57203
57229
  var _desktop_shim_js__rspack_import_8 = __webpack_require__("./src/core/desktop-shim.js");
57230
+ var _user_machine_guidance_js__rspack_import_9 = __webpack_require__("./src/core/user-machine-guidance.js");
57204
57231
  const PINNED_CODEX_VERSION = "0.154.0";
57205
57232
  const UPSTREAM_DESKTOP_ISSUES = [
57206
57233
  "https://github.com/openai/codex/issues/41014",
@@ -57234,20 +57261,34 @@ var __webpack_modules__ = {
57234
57261
  function singleLine(text) {
57235
57262
  return stripTerminalControls(text).replace(/[\t\n\r\u2028\u2029]+/g, " ");
57236
57263
  }
57237
- function unreachableMessage(path, desktopAttached = "unknown") {
57264
+ function boxUnreachableMessage(path) {
57265
+ return [
57266
+ "No Codex app-server control socket at " + path + ".",
57267
+ _user_machine_guidance_js__rspack_import_9.M
57268
+ ].join("\n");
57269
+ }
57270
+ function unreachableMessage(path, desktopAttached = "unknown", env = process.env) {
57271
+ if ((0, _user_machine_guidance_js__rspack_import_9.R)({
57272
+ path,
57273
+ env,
57274
+ home: env.HOME || (0, node_os__rspack_import_3.homedir)()
57275
+ })) {
57276
+ return boxUnreachableMessage(path);
57277
+ }
57238
57278
  if (desktopAttached === "private-stdio") {
57239
57279
  return [
57240
57280
  "ChatGPT Desktop is running its private stdio app-server, which external clients cannot reach",
57241
57281
  "(" + UPSTREAM_DESKTOP_ISSUES.join(", ") + ").",
57242
- "No Codex app-server control socket at " + path + ": start a managed standalone daemon with `codex app-server daemon start`.",
57243
- "gbot codex targets daemon-managed threads only."
57282
+ "No Codex app-server control socket at " + path + ": start a managed standalone daemon with `codex app-server daemon start` (or bootstrap).",
57283
+ "gbot codex targets daemon-managed threads only; gbot has no remote transport."
57244
57284
  ].join("\n");
57245
57285
  }
57246
57286
  return [
57247
57287
  "No Codex app-server control socket at " + path + ".",
57248
- "Either no daemon is running (start one with `codex app-server daemon start`),",
57288
+ "Either no daemon is running (start one with `codex app-server daemon start` or bootstrap),",
57249
57289
  "or ChatGPT Desktop is running a private stdio app-server that external clients cannot reach",
57250
57290
  "(" + UPSTREAM_DESKTOP_ISSUES.join(", ") + ").",
57291
+ "gbot connects only to this machine's local socket; it has no remote transport.",
57251
57292
  "gbot codex targets daemon-managed threads only."
57252
57293
  ].join("\n");
57253
57294
  }
@@ -57980,7 +58021,7 @@ var __webpack_modules__ = {
57980
58021
  session = await openSession(env);
57981
58022
  } catch (err) {
57982
58023
  if (err instanceof CodexRouteError) {
57983
- const message = err.mode === "socket-absent" ? unreachableMessage(path, desktopAttached) : err.message;
58024
+ const message = err.mode === "socket-absent" ? unreachableMessage(path, desktopAttached, env) : err.message;
57984
58025
  return withStatusExitCode({
57985
58026
  ...base,
57986
58027
  reachable: false,
@@ -60907,9 +60948,30 @@ ts() { date -u +%Y-%m-%dT%H:%M:%SZ; }
60907
60948
  fp: ()=>redactSecrets
60908
60949
  });
60909
60950
  },
60951
+ "./src/core/user-machine-guidance.js" (__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
60952
+ const USER_MACHINE_CODEX_CLAUDE_GUIDANCE = [
60953
+ "Codex and Claude sessions live on the user's registered machines (for example their Linux desktop or Mac), not on the Grok Bot agent box (/home/box).",
60954
+ "gbot connects only to a local Unix socket ($CODEX_HOME/app-server-control/app-server-control.sock, or CODEX_APP_SERVER_SOCK). There is no remote transport.",
60955
+ "When running on the box (HOME=/home/box), do not call codex_* or claude_send there. Run the gbot CLI on the user's machine through Grok Bot Shell with a machineId (the host's machine-targeted shell).",
60956
+ "On that machine, provide the socket with `codex app-server daemon start` (or bootstrap). Auth stays with each machine's native Codex or Claude login; gbot does not store or export credentials."
60957
+ ].join("\n");
60958
+ function looksLikeGrokBotBox({ path = "", env = process.env, home = env.HOME || "" } = {}) {
60959
+ const values = [
60960
+ home,
60961
+ env.HOME,
60962
+ path
60963
+ ].filter((value)=>value != null && value !== "").map(String);
60964
+ return values.some((value)=>value === "/home/box" || value.startsWith("/home/box/"));
60965
+ }
60966
+ __webpack_require__.d(__webpack_exports__, {
60967
+ R: ()=>looksLikeGrokBotBox
60968
+ }, {
60969
+ M: USER_MACHINE_CODEX_CLAUDE_GUIDANCE
60970
+ });
60971
+ },
60910
60972
  "./package.json" (module) {
60911
60973
  module.exports = {
60912
- "rE": "0.10.0"
60974
+ "rE": "0.10.1"
60913
60975
  };
60914
60976
  }
60915
60977
  };
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "grok-bot-cli",
3
- "version": "0.10.0",
3
+ "version": "0.10.1",
4
4
  "description": "CLI and Agent Bundle plugin for Grok Bot agents and groups: create, update, message, inspect threads, and automate cleanup",
5
5
  "type": "module",
6
6
  "engines": {
package/dist/plugin.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://agent-plugins.org/schemas/1.0.0/plugin.schema.json","author":{"name":"Zack Jackson","url":"https://github.com/ScriptedAlchemy"},"description":"Message Grok Bot from Codex, Claude Code, and Cursor, with managed automatic replies and explicit Codex conversation links.","homepage":"https://github.com/ScriptedAlchemy/grok-bot-cli#readme","keywords":["grok","grok-bot","grokbot","gbot","cursor","ai-agents","automation","terminal","cli","agent-bundle"],"license":"MIT","name":"gbot","repository":"https://github.com/ScriptedAlchemy/grok-bot-cli","version":"0.10.0"}
1
+ {"$schema":"https://agent-plugins.org/schemas/1.0.0/plugin.schema.json","author":{"name":"Zack Jackson","url":"https://github.com/ScriptedAlchemy"},"description":"Message Grok Bot from Codex, Claude Code, and Cursor. Codex/Claude tools use local sockets on the user's registered machines only (no remote transport); from the Grok Bot box, run gbot via Grok Bot Shell with a machineId.","homepage":"https://github.com/ScriptedAlchemy/grok-bot-cli#readme","keywords":["grok","grok-bot","grokbot","gbot","cursor","ai-agents","automation","terminal","cli","agent-bundle"],"license":"MIT","name":"gbot","repository":"https://github.com/ScriptedAlchemy/grok-bot-cli","version":"0.10.1"}
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Codex and Claude tools run on the user's registered machines via local sockets — never on the Grok Bot box
3
+ alwaysApply: true
4
+ ---
5
+ # Codex and Claude run on the user's machines
6
+
7
+ `codex_*` and `claude_send` talk only to a **local** Unix socket on the machine
8
+ where the process runs. gbot has **no remote transport**.
9
+
10
+ - Codex/Claude sessions live on the user's registered computers (Linux desktop,
11
+ Mac, …), not on the Grok Bot agent box (`HOME=/home/box`, no Codex install).
12
+ - When you are on the box, **do not** call those MCP tools. Run the `gbot` CLI on
13
+ the user's machine through **Grok Bot Shell with a machineId** (the host's
14
+ machine-targeted shell).
15
+ - On that machine, start the daemon with `codex app-server daemon start` (or
16
+ bootstrap) so `$CODEX_HOME/app-server-control/app-server-control.sock` exists.
17
+ - Auth stays with each machine's native Codex or Claude login. Do not invent
18
+ token files or export credentials.
@@ -22134,6 +22134,7 @@ var __webpack_modules__ = {
22134
22134
  var _package_json__rspack_import_6 = __webpack_require__("./package.json");
22135
22135
  var _codex_contract_js__rspack_import_7 = __webpack_require__("./src/core/codex/contract.js");
22136
22136
  var _desktop_shim_js__rspack_import_8 = __webpack_require__("./src/core/desktop-shim.js");
22137
+ var _user_machine_guidance_js__rspack_import_9 = __webpack_require__("./src/core/user-machine-guidance.js");
22137
22138
  const PINNED_CODEX_VERSION = "0.154.0";
22138
22139
  const UPSTREAM_DESKTOP_ISSUES = [
22139
22140
  "https://github.com/openai/codex/issues/41014",
@@ -22167,20 +22168,34 @@ var __webpack_modules__ = {
22167
22168
  function singleLine(text) {
22168
22169
  return stripTerminalControls(text).replace(/[\t\n\r\u2028\u2029]+/g, " ");
22169
22170
  }
22170
- function unreachableMessage(path, desktopAttached = "unknown") {
22171
+ function boxUnreachableMessage(path) {
22172
+ return [
22173
+ "No Codex app-server control socket at " + path + ".",
22174
+ _user_machine_guidance_js__rspack_import_9.M
22175
+ ].join("\n");
22176
+ }
22177
+ function unreachableMessage(path, desktopAttached = "unknown", env = process.env) {
22178
+ if ((0, _user_machine_guidance_js__rspack_import_9.R)({
22179
+ path,
22180
+ env,
22181
+ home: env.HOME || (0, node_os__rspack_import_3.homedir)()
22182
+ })) {
22183
+ return boxUnreachableMessage(path);
22184
+ }
22171
22185
  if (desktopAttached === "private-stdio") {
22172
22186
  return [
22173
22187
  "ChatGPT Desktop is running its private stdio app-server, which external clients cannot reach",
22174
22188
  "(" + UPSTREAM_DESKTOP_ISSUES.join(", ") + ").",
22175
- "No Codex app-server control socket at " + path + ": start a managed standalone daemon with `codex app-server daemon start`.",
22176
- "gbot codex targets daemon-managed threads only."
22189
+ "No Codex app-server control socket at " + path + ": start a managed standalone daemon with `codex app-server daemon start` (or bootstrap).",
22190
+ "gbot codex targets daemon-managed threads only; gbot has no remote transport."
22177
22191
  ].join("\n");
22178
22192
  }
22179
22193
  return [
22180
22194
  "No Codex app-server control socket at " + path + ".",
22181
- "Either no daemon is running (start one with `codex app-server daemon start`),",
22195
+ "Either no daemon is running (start one with `codex app-server daemon start` or bootstrap),",
22182
22196
  "or ChatGPT Desktop is running a private stdio app-server that external clients cannot reach",
22183
22197
  "(" + UPSTREAM_DESKTOP_ISSUES.join(", ") + ").",
22198
+ "gbot connects only to this machine's local socket; it has no remote transport.",
22184
22199
  "gbot codex targets daemon-managed threads only."
22185
22200
  ].join("\n");
22186
22201
  }
@@ -22913,7 +22928,7 @@ var __webpack_modules__ = {
22913
22928
  session = await openSession(env);
22914
22929
  } catch (err) {
22915
22930
  if (err instanceof CodexRouteError) {
22916
- const message = err.mode === "socket-absent" ? unreachableMessage(path, desktopAttached) : err.message;
22931
+ const message = err.mode === "socket-absent" ? unreachableMessage(path, desktopAttached, env) : err.message;
22917
22932
  return withStatusExitCode({
22918
22933
  ...base,
22919
22934
  reachable: false,
@@ -27365,9 +27380,30 @@ ts() { date -u +%Y-%m-%dT%H:%M:%SZ; }
27365
27380
  fp: ()=>redactSecrets
27366
27381
  });
27367
27382
  },
27383
+ "./src/core/user-machine-guidance.js" (__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
27384
+ const USER_MACHINE_CODEX_CLAUDE_GUIDANCE = [
27385
+ "Codex and Claude sessions live on the user's registered machines (for example their Linux desktop or Mac), not on the Grok Bot agent box (/home/box).",
27386
+ "gbot connects only to a local Unix socket ($CODEX_HOME/app-server-control/app-server-control.sock, or CODEX_APP_SERVER_SOCK). There is no remote transport.",
27387
+ "When running on the box (HOME=/home/box), do not call codex_* or claude_send there. Run the gbot CLI on the user's machine through Grok Bot Shell with a machineId (the host's machine-targeted shell).",
27388
+ "On that machine, provide the socket with `codex app-server daemon start` (or bootstrap). Auth stays with each machine's native Codex or Claude login; gbot does not store or export credentials."
27389
+ ].join("\n");
27390
+ function looksLikeGrokBotBox({ path = "", env = process.env, home = env.HOME || "" } = {}) {
27391
+ const values = [
27392
+ home,
27393
+ env.HOME,
27394
+ path
27395
+ ].filter((value)=>value != null && value !== "").map(String);
27396
+ return values.some((value)=>value === "/home/box" || value.startsWith("/home/box/"));
27397
+ }
27398
+ __webpack_require__.d(__webpack_exports__, {
27399
+ R: ()=>looksLikeGrokBotBox
27400
+ }, {
27401
+ M: USER_MACHINE_CODEX_CLAUDE_GUIDANCE
27402
+ });
27403
+ },
27368
27404
  "./package.json" (module) {
27369
27405
  module.exports = {
27370
- "rE": "0.10.0"
27406
+ "rE": "0.10.1"
27371
27407
  };
27372
27408
  }
27373
27409
  };
@@ -4,8 +4,23 @@ description: Message Grok Bot, Codex threads, or opted-in local Claude Code chan
4
4
  ---
5
5
  # Talk to Grok Bot
6
6
 
7
- The `grok-bot` MCP server and `gbot` CLI share Grok gateway access and local
8
- Codex/Claude transports.
7
+ The `grok-bot` MCP server and `gbot` CLI share Grok gateway access. Codex and
8
+ Claude tools use **local sockets only** on the user's registered machines.
9
+
10
+ ## MCP instructions (Codex / Claude)
11
+
12
+ gbot connects only to a local Unix socket
13
+ (`$CODEX_HOME/app-server-control/app-server-control.sock`, or
14
+ `CODEX_APP_SERVER_SOCK`). There is **no remote transport**.
15
+
16
+ - Codex app-server threads and opted-in Claude Code channels live on the user's
17
+ registered computers (Linux desktop, Mac, …) — **never** on the Grok Bot agent
18
+ box (`HOME=/home/box`, no Codex install).
19
+ - When this MCP server is running on the box, **do not** call `codex_*` or
20
+ `claude_send`. Run the `gbot` CLI on the user's machine through **Grok Bot Shell
21
+ with a machineId** (the host's machine-targeted shell).
22
+ - On that machine, provide the socket with `codex app-server daemon start` (or
23
+ bootstrap). Auth stays with each machine's native Codex or Claude login.
9
24
 
10
25
  ## When to load this
11
26
 
@@ -49,12 +64,12 @@ which source is present.
49
64
 
50
65
  ## Claude Code channel
51
66
 
52
- `claude_send` sends to a named live Claude Code session on this machine and waits
53
- for its explicit `claude_reply`. The destination must enable the native
54
- `claude-channel` with `GROK_BOT_CLAUDE_CHANNEL=NAME` and Claude's development-channel
55
- opt-in. Supply `name`, `message`, and optional `timeoutMs` (1..120000). `replied`
56
- means the reply tool ran; `unknown` is not rejection and must not be automatically
57
- retried. Normal Claude tool approvals remain in its session. This does not attach
58
- to arbitrary Claude Desktop chats or connect a remote Grok runtime to local tools.
59
- CLI: `gbot claude send NAME "message" --json`.
60
-
67
+ `claude_send` sends to a named live Claude Code session on the user's registered
68
+ machine (local socket under `~/.grok-bot-cli/claude/`) and waits for its explicit
69
+ `claude_reply`. From the Grok Bot box, do not call this tool — use Grok Bot Shell
70
+ with a machineId to run `gbot claude send` on that machine instead. The destination
71
+ must enable the native `claude-channel` with `GROK_BOT_CLAUDE_CHANNEL=NAME` and
72
+ Claude's development-channel opt-in. Supply `name`, `message`, and optional
73
+ `timeoutMs` (1..120000). `replied` means the reply tool ran; `unknown` is not
74
+ rejection and must not be automatically retried. Normal Claude tool approvals remain
75
+ in its session. CLI: `gbot claude send NAME "message" --json`.
@@ -30,9 +30,14 @@ cookie/payment approvals and other unsupported requests require the owning Grok
30
30
  ## Codex conversation tools
31
31
 
32
32
  The generated Codex, Cursor, and Claude plugins and portable MCP artifact expose these
33
- additional tools on the same `grok-bot` MCP server. Codex tools use the local Codex
34
- app-server control socket; Grok tools use the Grok gateway. Portable MCP artifacts
35
- must be configured in an MCP-capable host; they are not automatically loaded by the Grok app.
33
+ additional tools on the same `grok-bot` MCP server. Codex tools connect only to a
34
+ **local** Codex app-server control socket on the process's machine
35
+ (`$CODEX_HOME/...` or `CODEX_APP_SERVER_SOCK`). gbot has **no remote transport**.
36
+ When the MCP server runs on the Grok Bot agent box (`HOME=/home/box`), do not call
37
+ these tools — run the `gbot` CLI on the user's registered machine through Grok Bot
38
+ Shell with a machineId, after `codex app-server daemon start` (or bootstrap) there.
39
+ Grok tools use the Grok gateway. Portable MCP artifacts must be configured in an
40
+ MCP-capable host; they are not automatically loaded by the Grok app.
36
41
 
37
42
  - `codex_threads`: bounded discovery of daemon-managed Codex threads.
38
43
  - `codex_send`: submit a message with a correlation envelope. Default delivery is
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "grok-bot-cli",
3
- "version": "0.10.0",
3
+ "version": "0.10.1",
4
4
  "description": "CLI and Agent Bundle plugin for Grok Bot agents and groups: create, update, message, inspect threads, and automate cleanup",
5
5
  "type": "module",
6
6
  "bin": {