@jaguilar87/gaia-ops 3.2.2 → 3.2.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/CHANGELOG.md CHANGED
@@ -5,6 +5,35 @@ All notable changes to the CLAUDE.md orchestrator instructions are documented in
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.2.3] - 2025-12-09
9
+
10
+ ### Service-Level Permission Wildcards
11
+
12
+ Simplified permission patterns using service-level wildcards for better Claude Code compatibility.
13
+
14
+ #### Changed
15
+ - **AWS patterns**: Simplified from `Bash(aws rds describe-:*)` to `Bash(aws rds :*)`
16
+ - Service-level wildcards: `aws ec2`, `aws rds`, `aws s3`, `aws iam`, etc.
17
+ - Works around Claude Code pattern matching issues with hyphens
18
+ - **GCP patterns**: Simplified to `Bash(gcloud compute :*)`, `Bash(gcloud container :*)`, etc.
19
+ - **Format standardization**: Removed spaces before `:*` for commands without arguments
20
+
21
+ #### Fixed
22
+ - Agent README files renamed to `_README.md` to avoid Claude Code parse errors
23
+ - Pattern matching now works for `aws rds describe-db-instances` and similar commands
24
+
25
+ #### Impact
26
+ - **Read-only commands**: Execute automatically ✓
27
+ - **Modification commands** (start/stop, upload, resize): Now execute automatically (Option A1)
28
+ - **Destructive commands** (delete, terminate): Still blocked ✓
29
+
30
+ #### Philosophy (Option A1 - Permissive with guardrails)
31
+ - Wide `allow[]` for entire services (e.g., `aws ec2 :*`)
32
+ - Strict `deny[]` for destructive operations
33
+ - Trade-off: Modification commands no longer require confirmation
34
+
35
+ ---
36
+
8
37
  ## [3.2.2] - 2025-12-09
9
38
 
10
39
  ### Enhanced Permissions System
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jaguilar87/gaia-ops",
3
- "version": "3.2.2",
3
+ "version": "3.2.3",
4
4
  "description": "Multi-agent orchestration system for Claude Code - DevOps automation toolkit",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -185,102 +185,46 @@
185
185
  "Bash(git tag:*)",
186
186
  "Bash(git for-each-ref:*)",
187
187
 
188
- "Bash(aws sts:*)",
189
- "Bash(aws configure list:*)",
190
- "Bash(aws configure get:*)",
191
- "Bash(aws ec2 describe-:*)",
192
- "Bash(aws ec2 get-:*)",
193
- "Bash(aws s3 ls:*)",
194
- "Bash(aws s3api get-:*)",
195
- "Bash(aws s3api head-:*)",
196
- "Bash(aws s3api list-:*)",
197
- "Bash(aws rds describe-:*)",
198
- "Bash(aws iam get-:*)",
199
- "Bash(aws iam list-:*)",
200
- "Bash(aws lambda get-:*)",
201
- "Bash(aws lambda list-:*)",
202
- "Bash(aws logs describe-:*)",
203
- "Bash(aws logs get-:*)",
204
- "Bash(aws logs filter-:*)",
205
- "Bash(aws cloudwatch describe-:*)",
206
- "Bash(aws cloudwatch get-:*)",
207
- "Bash(aws cloudwatch list-:*)",
208
- "Bash(aws cloudformation describe-:*)",
209
- "Bash(aws cloudformation get-:*)",
210
- "Bash(aws cloudformation list-:*)",
211
- "Bash(aws elbv2 describe-:*)",
212
- "Bash(aws elb describe-:*)",
213
- "Bash(aws route53 get-:*)",
214
- "Bash(aws route53 list-:*)",
215
- "Bash(aws secretsmanager get-:*)",
216
- "Bash(aws secretsmanager list-:*)",
217
- "Bash(aws secretsmanager describe-:*)",
218
- "Bash(aws ssm get-:*)",
219
- "Bash(aws ssm list-:*)",
220
- "Bash(aws ssm describe-:*)",
221
- "Bash(aws sns get-:*)",
222
- "Bash(aws sns list-:*)",
223
- "Bash(aws sqs get-:*)",
224
- "Bash(aws sqs list-:*)",
225
- "Bash(aws dynamodb describe-:*)",
226
- "Bash(aws dynamodb list-:*)",
227
- "Bash(aws dynamodb get-:*)",
228
- "Bash(aws dynamodb scan:*)",
229
- "Bash(aws dynamodb query:*)",
230
- "Bash(aws ecr describe-:*)",
231
- "Bash(aws ecr get-:*)",
232
- "Bash(aws ecr list-:*)",
233
- "Bash(aws eks describe-:*)",
234
- "Bash(aws eks list-:*)",
235
- "Bash(aws elasticache describe-:*)",
188
+ "Bash(aws sts :*)",
189
+ "Bash(aws configure :*)",
190
+ "Bash(aws ec2 :*)",
191
+ "Bash(aws s3 :*)",
192
+ "Bash(aws s3api :*)",
193
+ "Bash(aws rds :*)",
194
+ "Bash(aws iam :*)",
195
+ "Bash(aws lambda :*)",
196
+ "Bash(aws logs :*)",
197
+ "Bash(aws cloudwatch :*)",
198
+ "Bash(aws cloudformation :*)",
199
+ "Bash(aws elbv2 :*)",
200
+ "Bash(aws elb :*)",
201
+ "Bash(aws route53 :*)",
202
+ "Bash(aws secretsmanager :*)",
203
+ "Bash(aws ssm :*)",
204
+ "Bash(aws sns :*)",
205
+ "Bash(aws sqs :*)",
206
+ "Bash(aws dynamodb :*)",
207
+ "Bash(aws ecr :*)",
208
+ "Bash(aws eks :*)",
209
+ "Bash(aws elasticache :*)",
236
210
 
237
- "Bash(gcloud version:*)",
238
- "Bash(gcloud info:*)",
239
- "Bash(gcloud auth:*)",
240
- "Bash(gcloud config:*)",
241
- "Bash(gcloud projects list:*)",
242
- "Bash(gcloud projects describe:*)",
243
- "Bash(gcloud compute instances list:*)",
244
- "Bash(gcloud compute instances describe:*)",
245
- "Bash(gcloud compute networks list:*)",
246
- "Bash(gcloud compute networks describe:*)",
247
- "Bash(gcloud compute networks subnets list:*)",
248
- "Bash(gcloud compute networks subnets describe:*)",
249
- "Bash(gcloud compute firewall-rules list:*)",
250
- "Bash(gcloud compute firewall-rules describe:*)",
251
- "Bash(gcloud compute addresses list:*)",
252
- "Bash(gcloud compute addresses describe:*)",
253
- "Bash(gcloud compute disks list:*)",
254
- "Bash(gcloud compute disks describe:*)",
255
- "Bash(gcloud compute images list:*)",
256
- "Bash(gcloud compute images describe:*)",
257
- "Bash(gcloud compute zones list:*)",
258
- "Bash(gcloud compute regions list:*)",
259
- "Bash(gcloud container clusters list:*)",
260
- "Bash(gcloud container clusters describe:*)",
261
- "Bash(gcloud container clusters get-credentials:*)",
262
- "Bash(gcloud container node-pools list:*)",
263
- "Bash(gcloud container node-pools describe:*)",
264
- "Bash(gcloud sql instances list:*)",
265
- "Bash(gcloud sql instances describe:*)",
266
- "Bash(gcloud sql databases list:*)",
267
- "Bash(gcloud sql users list:*)",
268
- "Bash(gcloud redis instances list:*)",
269
- "Bash(gcloud redis instances describe:*)",
270
- "Bash(gcloud iam service-accounts list:*)",
271
- "Bash(gcloud iam service-accounts describe:*)",
272
- "Bash(gcloud iam service-accounts get-iam-policy:*)",
273
- "Bash(gcloud iam roles list:*)",
274
- "Bash(gcloud iam roles describe:*)",
275
- "Bash(gcloud logging read:*)",
276
- "Bash(gcloud logging logs list:*)",
277
- "Bash(gcloud services list:*)",
278
- "Bash(gcloud artifacts repositories list:*)",
279
- "Bash(gcloud artifacts docker images list:*)",
280
- "Bash(gsutil ls:*)",
281
- "Bash(gsutil cat:*)",
282
- "Bash(gsutil stat:*)",
283
- "Bash(gsutil du:*)",
211
+ "Bash(gcloud version :*)",
212
+ "Bash(gcloud info :*)",
213
+ "Bash(gcloud auth :*)",
214
+ "Bash(gcloud config :*)",
215
+ "Bash(gcloud projects :*)",
216
+ "Bash(gcloud compute :*)",
217
+ "Bash(gcloud container :*)",
218
+ "Bash(gcloud sql :*)",
219
+ "Bash(gcloud redis :*)",
220
+ "Bash(gcloud iam :*)",
221
+ "Bash(gcloud logging :*)",
222
+ "Bash(gcloud services :*)",
223
+ "Bash(gcloud artifacts :*)",
224
+ "Bash(gsutil ls :*)",
225
+ "Bash(gsutil cat :*)",
226
+ "Bash(gsutil stat :*)",
227
+ "Bash(gsutil du :*)",
284
228
 
285
229
  "Bash(kubectl get:*)",
286
230
  "Bash(kubectl describe:*)",
@@ -282,16 +282,16 @@ def get_test_cases() -> List[TestCase]:
282
282
  TestCase("mkdir new-directory", PermissionResult.ASK, "Create directory", "file"),
283
283
  TestCase("chmod 755 script.sh", PermissionResult.ASK, "Change permissions", "file"),
284
284
 
285
- # AWS modifying
286
- TestCase("aws s3 cp file.txt s3://bucket/", PermissionResult.ASK, "Upload to S3", "aws"),
287
- TestCase("aws ec2 start-instances --instance-ids i-123", PermissionResult.ASK, "Start EC2", "aws"),
288
- TestCase("aws ec2 stop-instances --instance-ids i-123", PermissionResult.ASK, "Stop EC2", "aws"),
289
- TestCase("aws lambda update-function-code --function-name fn", PermissionResult.ASK, "Update Lambda", "aws"),
290
-
291
- # GCP modifying
292
- TestCase("gcloud compute instances start my-vm", PermissionResult.ASK, "Start GCE instance", "gcp"),
293
- TestCase("gcloud compute instances stop my-vm", PermissionResult.ASK, "Stop GCE instance", "gcp"),
294
- TestCase("gcloud container clusters resize my-cluster", PermissionResult.ASK, "Resize GKE", "gcp"),
285
+ # AWS modifying (ALLOW with service-level wildcards - Option A1)
286
+ TestCase("aws s3 cp file.txt s3://bucket/", PermissionResult.ALLOW, "Upload to S3", "aws"),
287
+ TestCase("aws ec2 start-instances --instance-ids i-123", PermissionResult.ALLOW, "Start EC2", "aws"),
288
+ TestCase("aws ec2 stop-instances --instance-ids i-123", PermissionResult.ALLOW, "Stop EC2", "aws"),
289
+ TestCase("aws lambda update-function-code --function-name fn", PermissionResult.ALLOW, "Update Lambda", "aws"),
290
+
291
+ # GCP modifying (ALLOW with service-level wildcards - Option A1)
292
+ TestCase("gcloud compute instances start my-vm", PermissionResult.ALLOW, "Start GCE instance", "gcp"),
293
+ TestCase("gcloud compute instances stop my-vm", PermissionResult.ALLOW, "Stop GCE instance", "gcp"),
294
+ TestCase("gcloud container clusters resize my-cluster", PermissionResult.ALLOW, "Resize GKE", "gcp"),
295
295
 
296
296
  # Docker modifying
297
297
  TestCase("docker build -t my-image .", PermissionResult.ASK, "Build image", "docker"),
File without changes
File without changes