@jimiford/webex 0.1.2 → 0.1.3

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/README.md CHANGED
@@ -309,6 +309,52 @@ WEBHOOK_SECRET=your_webhook_secret
309
309
 
310
310
  The plugin includes automatic retry with exponential backoff for rate-limited requests. Adjust `maxRetries` and `retryDelayMs` in config if needed.
311
311
 
312
+ ## Security Considerations
313
+
314
+ When connecting a Webex bot to OpenClaw, keep these security implications in mind:
315
+
316
+ ### Access Control
317
+
318
+ - **DM Policy**: The `dmPolicy` setting controls who can interact with your bot:
319
+ - `allow`: Anyone can message the bot and receive responses (use with caution)
320
+ - `deny`: The bot won't respond to direct messages
321
+ - `allowlisted`: Only users in the `allowFrom` list receive responses
322
+ - **Recommendation**: Use `allowlisted` in production and explicitly specify trusted users
323
+
324
+ ### Bot Token Permissions
325
+
326
+ - The bot access token can read messages sent to the bot and send replies
327
+ - Keep your token secret — never commit it to version control
328
+ - Rotate tokens periodically via the [Webex Developer Portal](https://developer.webex.com)
329
+
330
+ ### Webhook Security
331
+
332
+ - **Always use a webhook secret** in production to verify incoming requests
333
+ - The `webhookSecret` enables HMAC-SHA1 signature verification
334
+ - Without verification, attackers could send fake webhook payloads to your endpoint
335
+
336
+ ### Network Exposure
337
+
338
+ - Your webhook endpoint must be publicly accessible for Webex to deliver messages
339
+ - Use HTTPS in production (required by Webex)
340
+ - Consider IP allowlisting if your infrastructure supports it
341
+ - For development, tools like ngrok create temporary public URLs
342
+
343
+ ### OpenClaw Agent Access
344
+
345
+ - Messages received by the bot flow through your OpenClaw agent
346
+ - The agent has access to whatever tools you've configured (file access, web browsing, etc.)
347
+ - Treat bot conversations with the same security considerations as direct OpenClaw access
348
+ - Review your agent's tool permissions and workspace access
349
+
350
+ ### Best Practices
351
+
352
+ 1. Start with `dmPolicy: 'deny'` or `dmPolicy: 'allowlisted'` and explicitly allow trusted users
353
+ 2. Always configure a `webhookSecret` for production deployments
354
+ 3. Monitor bot activity through Webex admin tools and OpenClaw logs
355
+ 4. Use separate bots for development and production environments
356
+ 5. Regularly audit the `allowFrom` list
357
+
312
358
  ## License
313
359
 
314
360
  MIT
@@ -6,28 +6,90 @@
6
6
  "configSchema": {
7
7
  "type": "object",
8
8
  "additionalProperties": false,
9
- "properties": {}
9
+ "properties": {
10
+ "enabled": {
11
+ "type": "boolean",
12
+ "description": "Enable the Webex channel",
13
+ "default": false
14
+ },
15
+ "token": {
16
+ "type": "string",
17
+ "description": "Webex bot access token from developer.webex.com"
18
+ },
19
+ "webhookUrl": {
20
+ "type": "string",
21
+ "description": "Public URL for receiving Webex webhooks"
22
+ },
23
+ "webhookSecret": {
24
+ "type": "string",
25
+ "description": "Secret for verifying webhook signatures (recommended)"
26
+ },
27
+ "dmPolicy": {
28
+ "type": "string",
29
+ "enum": ["allow", "deny", "allowlisted", "pairing"],
30
+ "description": "Policy for handling direct messages",
31
+ "default": "deny"
32
+ },
33
+ "allowFrom": {
34
+ "type": "array",
35
+ "items": { "type": "string" },
36
+ "description": "List of allowed person IDs or emails (when dmPolicy is allowlisted)"
37
+ },
38
+ "apiBaseUrl": {
39
+ "type": "string",
40
+ "description": "Custom Webex API base URL",
41
+ "default": "https://webexapis.com/v1"
42
+ },
43
+ "maxRetries": {
44
+ "type": "number",
45
+ "description": "Maximum retry attempts for failed API calls",
46
+ "default": 3
47
+ },
48
+ "retryDelayMs": {
49
+ "type": "number",
50
+ "description": "Delay between retries in milliseconds",
51
+ "default": 1000
52
+ }
53
+ },
54
+ "required": ["token", "webhookUrl"]
10
55
  },
11
56
  "uiHints": {
12
57
  "token": {
13
58
  "label": "Bot Access Token",
14
59
  "sensitive": true,
15
- "placeholder": "Your Webex bot token"
60
+ "placeholder": "Your Webex bot token from developer.webex.com"
16
61
  },
17
62
  "webhookUrl": {
18
63
  "label": "Webhook URL",
19
- "placeholder": "https://your-domain.com/webhooks/webex"
64
+ "placeholder": "https://your-domain.com/webhooks/webex/default"
20
65
  },
21
66
  "webhookSecret": {
22
67
  "label": "Webhook Secret",
23
68
  "sensitive": true,
24
- "placeholder": "Optional secret for webhook verification"
69
+ "placeholder": "Strong random secret for webhook verification"
25
70
  },
26
71
  "dmPolicy": {
27
- "label": "DM Policy"
72
+ "label": "DM Policy",
73
+ "options": [
74
+ { "value": "allow", "label": "Allow all" },
75
+ { "value": "deny", "label": "Deny all" },
76
+ { "value": "allowlisted", "label": "Allowlist only" },
77
+ { "value": "pairing", "label": "Pairing required" }
78
+ ]
28
79
  },
29
80
  "allowFrom": {
30
- "label": "Allowed Senders"
81
+ "label": "Allowed Senders",
82
+ "placeholder": "Person ID or email address"
83
+ },
84
+ "apiBaseUrl": {
85
+ "label": "API Base URL",
86
+ "placeholder": "https://webexapis.com/v1"
87
+ },
88
+ "maxRetries": {
89
+ "label": "Max Retries"
90
+ },
91
+ "retryDelayMs": {
92
+ "label": "Retry Delay (ms)"
31
93
  }
32
94
  }
33
95
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jimiford/webex",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "OpenClaw channel plugin for Cisco Webex messaging",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",