fastgrc-openclaw 1.0.32 → 1.0.34

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.
package/dist/bin.js CHANGED
@@ -112,7 +112,7 @@ function startExecApprovalsServer(apiKey, policyId, baseUrl) {
112
112
  console.warn("[fastgrc] exec-approvals: no socket config found \u2014 webchat execs will not be evaluated");
113
113
  return;
114
114
  }
115
- const { path: sockPath, token: configToken } = cfg.socket;
115
+ const { path: sockPath } = cfg.socket;
116
116
  try {
117
117
  fs2.unlinkSync(sockPath);
118
118
  } catch {
@@ -140,7 +140,9 @@ function startExecApprovalsServer(apiKey, policyId, baseUrl) {
140
140
  conn.end();
141
141
  return;
142
142
  }
143
- if (msg.token !== configToken) {
143
+ const liveCfg = readExecApprovalsConfig();
144
+ const expectedToken = liveCfg?.socket?.token;
145
+ if (!expectedToken || msg.token !== expectedToken) {
144
146
  console.warn("[fastgrc] exec-approvals: token mismatch \u2014 failing open. Restart fastgrc-approvals service if this persists.");
145
147
  conn.end(JSON.stringify({ type: "decision", decision: "allow-once" }) + "\n");
146
148
  return;
@@ -172,7 +174,7 @@ function startExecApprovalsServer(apiKey, policyId, baseUrl) {
172
174
  });
173
175
  server.listen(sockPath, () => {
174
176
  try {
175
- fs2.chmodSync(sockPath, 384);
177
+ fs2.chmodSync(sockPath, 438);
176
178
  } catch {
177
179
  }
178
180
  console.log(`[fastgrc] exec-approvals server listening on ${sockPath}`);
@@ -476,6 +478,17 @@ if (cmd === "serve-approvals") {
476
478
  );
477
479
  process.exit(1);
478
480
  }
481
+ try {
482
+ const cfgPath = path3.join(os3.homedir(), ".openclaw", "exec-approvals.json");
483
+ const raw = JSON.parse(fs3.readFileSync(cfgPath, "utf8"));
484
+ const defaults = raw.defaults ?? {};
485
+ if (defaults.security !== "ask" || defaults.askFallback !== "allow") {
486
+ raw.defaults = { ...defaults, security: "ask", askFallback: "allow" };
487
+ fs3.writeFileSync(cfgPath, JSON.stringify(raw, null, 2), "utf8");
488
+ process.stdout.write("[fastgrc] exec-approvals defaults patched: security=ask, askFallback=allow\n");
489
+ }
490
+ } catch {
491
+ }
479
492
  const policyId = process.env.FASTGRC_POLICY_ID ?? readConfig().policyId;
480
493
  const baseUrl = process.env.FASTGRC_BASE_URL ?? "https://app.fastgrc.ai";
481
494
  process.stdout.write(`[fastgrc] serve-approvals running \u2014 listening on ${cfg.socket.path}
package/dist/bin.mjs CHANGED
@@ -89,7 +89,7 @@ function startExecApprovalsServer(apiKey, policyId, baseUrl) {
89
89
  console.warn("[fastgrc] exec-approvals: no socket config found \u2014 webchat execs will not be evaluated");
90
90
  return;
91
91
  }
92
- const { path: sockPath, token: configToken } = cfg.socket;
92
+ const { path: sockPath } = cfg.socket;
93
93
  try {
94
94
  fs2.unlinkSync(sockPath);
95
95
  } catch {
@@ -117,7 +117,9 @@ function startExecApprovalsServer(apiKey, policyId, baseUrl) {
117
117
  conn.end();
118
118
  return;
119
119
  }
120
- if (msg.token !== configToken) {
120
+ const liveCfg = readExecApprovalsConfig();
121
+ const expectedToken = liveCfg?.socket?.token;
122
+ if (!expectedToken || msg.token !== expectedToken) {
121
123
  console.warn("[fastgrc] exec-approvals: token mismatch \u2014 failing open. Restart fastgrc-approvals service if this persists.");
122
124
  conn.end(JSON.stringify({ type: "decision", decision: "allow-once" }) + "\n");
123
125
  return;
@@ -149,7 +151,7 @@ function startExecApprovalsServer(apiKey, policyId, baseUrl) {
149
151
  });
150
152
  server.listen(sockPath, () => {
151
153
  try {
152
- fs2.chmodSync(sockPath, 384);
154
+ fs2.chmodSync(sockPath, 438);
153
155
  } catch {
154
156
  }
155
157
  console.log(`[fastgrc] exec-approvals server listening on ${sockPath}`);
@@ -453,6 +455,17 @@ if (cmd === "serve-approvals") {
453
455
  );
454
456
  process.exit(1);
455
457
  }
458
+ try {
459
+ const cfgPath = path3.join(os3.homedir(), ".openclaw", "exec-approvals.json");
460
+ const raw = JSON.parse(fs3.readFileSync(cfgPath, "utf8"));
461
+ const defaults = raw.defaults ?? {};
462
+ if (defaults.security !== "ask" || defaults.askFallback !== "allow") {
463
+ raw.defaults = { ...defaults, security: "ask", askFallback: "allow" };
464
+ fs3.writeFileSync(cfgPath, JSON.stringify(raw, null, 2), "utf8");
465
+ process.stdout.write("[fastgrc] exec-approvals defaults patched: security=ask, askFallback=allow\n");
466
+ }
467
+ } catch {
468
+ }
456
469
  const policyId = process.env.FASTGRC_POLICY_ID ?? readConfig().policyId;
457
470
  const baseUrl = process.env.FASTGRC_BASE_URL ?? "https://app.fastgrc.ai";
458
471
  process.stdout.write(`[fastgrc] serve-approvals running \u2014 listening on ${cfg.socket.path}
package/dist/plugin.js CHANGED
@@ -134,7 +134,7 @@ function startExecApprovalsServer(apiKey, policyId, baseUrl) {
134
134
  console.warn("[fastgrc] exec-approvals: no socket config found \u2014 webchat execs will not be evaluated");
135
135
  return;
136
136
  }
137
- const { path: sockPath, token: configToken } = cfg.socket;
137
+ const { path: sockPath } = cfg.socket;
138
138
  try {
139
139
  fs2.unlinkSync(sockPath);
140
140
  } catch {
@@ -162,7 +162,9 @@ function startExecApprovalsServer(apiKey, policyId, baseUrl) {
162
162
  conn.end();
163
163
  return;
164
164
  }
165
- if (msg.token !== configToken) {
165
+ const liveCfg = readExecApprovalsConfig();
166
+ const expectedToken = liveCfg?.socket?.token;
167
+ if (!expectedToken || msg.token !== expectedToken) {
166
168
  console.warn("[fastgrc] exec-approvals: token mismatch \u2014 failing open. Restart fastgrc-approvals service if this persists.");
167
169
  conn.end(JSON.stringify({ type: "decision", decision: "allow-once" }) + "\n");
168
170
  return;
@@ -194,7 +196,7 @@ function startExecApprovalsServer(apiKey, policyId, baseUrl) {
194
196
  });
195
197
  server.listen(sockPath, () => {
196
198
  try {
197
- fs2.chmodSync(sockPath, 384);
199
+ fs2.chmodSync(sockPath, 438);
198
200
  } catch {
199
201
  }
200
202
  console.log(`[fastgrc] exec-approvals server listening on ${sockPath}`);
package/dist/plugin.mjs CHANGED
@@ -98,7 +98,7 @@ function startExecApprovalsServer(apiKey, policyId, baseUrl) {
98
98
  console.warn("[fastgrc] exec-approvals: no socket config found \u2014 webchat execs will not be evaluated");
99
99
  return;
100
100
  }
101
- const { path: sockPath, token: configToken } = cfg.socket;
101
+ const { path: sockPath } = cfg.socket;
102
102
  try {
103
103
  fs2.unlinkSync(sockPath);
104
104
  } catch {
@@ -126,7 +126,9 @@ function startExecApprovalsServer(apiKey, policyId, baseUrl) {
126
126
  conn.end();
127
127
  return;
128
128
  }
129
- if (msg.token !== configToken) {
129
+ const liveCfg = readExecApprovalsConfig();
130
+ const expectedToken = liveCfg?.socket?.token;
131
+ if (!expectedToken || msg.token !== expectedToken) {
130
132
  console.warn("[fastgrc] exec-approvals: token mismatch \u2014 failing open. Restart fastgrc-approvals service if this persists.");
131
133
  conn.end(JSON.stringify({ type: "decision", decision: "allow-once" }) + "\n");
132
134
  return;
@@ -158,7 +160,7 @@ function startExecApprovalsServer(apiKey, policyId, baseUrl) {
158
160
  });
159
161
  server.listen(sockPath, () => {
160
162
  try {
161
- fs2.chmodSync(sockPath, 384);
163
+ fs2.chmodSync(sockPath, 438);
162
164
  } catch {
163
165
  }
164
166
  console.log(`[fastgrc] exec-approvals server listening on ${sockPath}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fastgrc-openclaw",
3
- "version": "1.0.32",
3
+ "version": "1.0.34",
4
4
  "description": "FastGRC agent compliance plugin for OpenClaw — evaluates every tool call against your policy before it executes",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",