Skip to content

[A2A] Security and Authentication #335

Closed as not planned
Closed as not planned

Description

@tamirdresher

Overview

Implement security and authentication for cross-repo squad communication, covering local trust and network scenarios.

Reference

Phase 1: Local Security (MVP)

Threat Model:

  • Local machine compromise (assume attacker has user access)
  • Malicious squad impersonation
  • Data leakage via Agent Cards

Mitigations:

  • Bind to 127.0.0.1 only (localhost)
  • Process-level trust (same user, validated via PID/registry)
  • No sensitive data in Agent Cards (metadata only)
  • Optional .squadignore patterns for decision/research filtering

Phase 2: Network Security

Requirements:

  • TLS 1.3 for encrypted transport
  • Mutual TLS (mTLS) OR OAuth2/OIDC for authentication
  • Request signing (HMAC) for integrity
  • Certificate management (generation, rotation, trust store)

Authentication Flows:

  1. mTLS: Client and server present certificates
  2. OAuth2: Organizational IdP, token-based auth
  3. Shared Secret: For small teams, symmetric key

Components

TLS Certificate Management

  • Auto-generate self-signed certs for dev
  • Integration with Let's Encrypt for production
  • Trust store: ~/.squad/certs/
  • Certificate rotation every 90 days

Authentication Middleware

  • Validate auth on all /a2a/ endpoints (except /health)
  • Support multiple auth methods (extensible)
  • Rate limiting (prevent DoS)
  • Audit logging (all A2A requests)

Authorization

  • Agent Card declares required auth methods
  • Caller must meet requirements
  • Granular permissions (query vs. delegate)
  • RBAC for Phase 3 (roles: read-only, contributor, admin)

Privacy Controls

Agent Card Filtering

  • Allow .squadignore to hide sensitive decisions
  • Opt-in for sharing research (default: public within discovery scope)
  • Redaction of sensitive metadata (team member emails, internal URLs)

Data Minimization

  • Agent Cards expose only: repo name, capabilities, tech stack
  • No code snippets, no decision content in cards
  • Query responses: caller-specific (check auth first)

Deliverables

  • TLS certificate manager (src/security/cert-manager.ts)
  • Auth middleware (src/security/auth.ts)
  • Multiple auth adapters (mTLS, OAuth2, HMAC)
  • Rate limiter
  • Audit logger
  • Privacy filter for Agent Cards
  • .squadignore support
  • Security documentation
  • Threat model document
  • Penetration testing (external)

Success Criteria

  • Zero security incidents in 6 months
  • All network traffic encrypted (TLS 1.3)
  • Auth works with 3+ methods
  • Audit logs capture all A2A requests
  • Privacy: No leakage of sensitive data in cards

Timeline

Phase 1 (Local): 1 week
Phase 2 (Network): 3 weeks

Activity

  1. github-actions commented on Mar 13, 2026

    @github-actions
    Contributor

    🏗️ Squad Triage — Flight (Lead)

    Issue: #335 — [A2A] Security and Authentication
    Assigned to: FIDO (Quality Owner)
    Reason: Issue relates to testing/quality work

    @copilot evaluation: 🔴 Not suitable — issue involves work outside the coding agent's capability profile.

    Team roster:

    • Flight (Lead) → label: squad:flight
    • Procedures (Prompt Engineer) → label: squad:procedures
    • EECOM (Core Dev) → label: squad:eecom
    • FIDO (Quality Owner) → label: squad:fido
    • PAO (DevRel) → label: squad:pao
    • CAPCOM (SDK Expert) → label: squad:capcom
    • CONTROL (TypeScript Engineer) → label: squad:control
    • Surgeon (Release Manager) → label: squad:surgeon
    • Booster (CI/CD Engineer) → label: squad:booster
    • GNC (Node.js Runtime) → label: squad:gnc
    • Network (Distribution) → label: squad:network
    • RETRO (Security) → label: squad:retro
    • INCO (CLI UX & Visual Design) → label: squad:inco
    • GUIDO (VS Code Extension) → label: squad:guido
    • Telemetry (Aspire & Observability) → label: squad:telemetry
    • VOX (REPL & Interactive Shell) → label: squad:vox
    • DSKY (TUI Engineer) → label: squad:dsky
    • Sims (E2E Test Engineer) → label: squad:sims
    • Handbook (SDK Usability) → label: squad:handbook
    • Ralph (Work Monitor) → label: squad:ralph
    • @copilot (Coding Agent) → label: squad:copilot

    To reassign, remove the current squad:* label and add the correct one.

  2. github-actions commented on Mar 13, 2026

    @github-actions
    Contributor

    📋 Assigned to RETRO (Security)

    Issue: #335 — [A2A] Security and Authentication

    RETRO will pick this up in the next Copilot session.

    For Copilot coding agent: If enabled, this issue will be worked automatically.
    Otherwise, start a Copilot session and say:
    RETRO, work on issue #335

  3. github-actions commented on Mar 13, 2026

    @github-actions
    Contributor

    📋 Assigned to Flight (Lead)

    Issue: #335 — [A2A] Security and Authentication

    Flight will pick this up in the next Copilot session.

    For Copilot coding agent: If enabled, this issue will be worked automatically.
    Otherwise, start a Copilot session and say:
    Flight, work on issue #335

  4. deleted a comment from github-actions on Mar 18, 2026
  5. deleted a comment from github-actions on Mar 18, 2026
  6. diberry commented on Mar 31, 2026

    @diberry
    Contributor

    🔄 Ralph status: A2A — security and authentication. Part of #332-#336 suite. No PR. Long-term backlog.

  7. bradygaster commented on Apr 12, 2026

    @bradygaster
    Collaborator

    Part of the shelved A2A initiative. Security and auth for agent-to-agent is critical to get right, which is exactly why we're not rushing it. We'll revisit when the time is right. Thanks @tamirdresher!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    go:needs-researchNeeds investigationpriority:p2Next sprintshelvedParked — revisit when conditions changesquadSquad triage inbox — Lead will assign to a membertype:spikeResearch/investigation — produces a plan, not code

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions