claude-skills/engineering-team/google-workspace-cli
Gregory R. Warnes 476c4b543c fix(security): harden gws_recipe_runner.py subprocess execution
- Replace subprocess.run(cmd, shell=True) with shlex.split(cmd, comments=True) +
  shell=False. Recipe templates contain unquoted {placeholder} tokens clearly
  meant for future parameter substitution; shell=True combined with any future
  substitution logic is a straightforward shell command injection vector, since
  none of the placeholder positions are quoted. Removing shell=True closes that
  class of bug now, before substitution is added, instead of relying on future
  contributors to remember to quote/escape interpolated values.
- Require an explicit --yes flag before executing a non-dry-run recipe. Several
  recipes are irreversible (gws drive files emptyTrash, gws gmail
  users.messages send, gws drive permissions create, ...); previously --run
  alone (without --dry-run) executed them immediately with no confirmation
  gate.
2026-07-29 12:55:35 -04:00
..
.claude-plugin fix: resolve 11 P0 correctness defects from newgen audit 2026-06-10 14:32:43 +00:00
skills/google-workspace-cli fix(security): harden gws_recipe_runner.py subprocess execution 2026-07-29 12:55:35 -04:00
.gitignore feat(engineering): add google-workspace-cli skill with 5 Python tools 2026-03-11 09:59:40 +01:00