Skip to content

docs: add Security Considerations section to openhands-automation skill - #429

Merged
VascoSch92 merged 4 commits into
mainfrom
automation-skill-security-section
Jul 30, 2026
Merged

docs: add Security Considerations section to openhands-automation skill#429
VascoSch92 merged 4 commits into
mainfrom
automation-skill-security-section

Conversation

@VascoSch92

@VascoSch92 VascoSch92 commented Jul 30, 2026

Copy link
Copy Markdown
Member

Summary

The openhands-automation skill covers fetching secrets and verifying webhook signatures, but has no guidance on trust boundaries. In practice: checking several already-deployed custom automations (PR reviewer, issue triage, Slack monitor), every one forwards every configured org secret to its spawned conversation — not a deliberate choice, just the only pattern the skill gives to copy from.

What's added

  • references/security.md (new, ~580 words) — untrusted content vs. verified sender, least-privilege secret allowlisting (anti-pattern + fix), narrowing triggers, sender-level authorization, verifying a script runs before deploying it.
  • SKILL.md — two-bullet pointer section + a references/ entry, matching the existing custom-automation.md/ab-testing.md pattern.
  • custom-automation.md — the existing "Validate Before Packaging" section only mentions py_compile, which doesn't catch config values that are valid-but-wrong Python (e.g. json.dumps emitting true/false). Added a note + link to the new file's verification section, fixed at the source rather than only in the new doc.

Test plan

  • Diffed against live main before editing, so this isn't against a stale copy
  • claude plugin validate plugins/openhands/ passes (same check CI runs)
  • Maintainer read on whether the secret-scoping and sender-authorization examples match actual platform semantics

The skill documented how to fetch secrets and register webhooks, but had
no guidance on trust boundaries. In practice this shows up as a real
pattern: every custom automation that spawns a conversation lists every
configured org secret and forwards all of them, because that's the only
example available to copy from, rather than passing an explicit allowlist
of the names actually needed.

Adds references/security.md covering:
- untrusted event content vs. verified sender (signature verification
  proves who sent an event, not that its content is safe)
- least-privilege secret scoping for spawned conversations, with a
  concrete allowlist pattern contrasted against the forward-everything
  anti-pattern
- scoping triggers narrowly (GitHub is org-wide by default with no
  registration step)
- sender-level authorization as distinct from content-based filters
- verifying a packaged script actually runs before deploying it, since
  py_compile only catches syntax errors, not config values that render
  as valid-but-wrong Python

SKILL.md gets a short pointer section summarizing the two points that
apply to every automation, plus a references/ entry matching the
existing custom-automation.md and ab-testing.md pattern.
@github-actions github-actions Bot added the type: docs Documentation only changes label Jul 30, 2026
… source

Tightened prose and code samples in security.md - same five points, less
than two-thirds the length. Also fixes the py_compile gap directly in
custom-automation.md's existing "Validate Before Packaging" section
rather than only documenting it in the new file.
Extends the secrets bullet in Security Considerations - when it's not
obvious which secrets a spawned conversation needs, ask rather than
guess or default to forwarding everything.
@VascoSch92
VascoSch92 marked this pull request as ready for review July 30, 2026 10:32
skills/index.js embeds each skill's SKILL.md content verbatim for the
catalog. The openhands-automation edits changed that content, so the
generated index was stale - CI's test job catches this drift.
@VascoSch92
VascoSch92 merged commit 142047f into main Jul 30, 2026
7 checks passed
@VascoSch92
VascoSch92 deleted the automation-skill-security-section branch July 30, 2026 11:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: docs Documentation only changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants