Skip to content

Bump actions/cache from 4.2.3 to 5.0.5#1

Merged
d0cd merged 1 commit into
mainfrom
dependabot/github_actions/actions/cache-5.0.4
May 29, 2026
Merged

Bump actions/cache from 4.2.3 to 5.0.5#1
d0cd merged 1 commit into
mainfrom
dependabot/github_actions/actions/cache-5.0.4

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Apr 1, 2026

Copy link
Copy Markdown
Contributor

Bumps actions/cache from 4.2.3 to 5.0.5.

Release notes

Sourced from actions/cache's releases.

v5.0.5

What's Changed

Full Changelog: actions/cache@v5...v5.0.5

v5.0.4

What's Changed

New Contributors

Full Changelog: actions/cache@v5...v5.0.4

v5.0.3

What's Changed

Full Changelog: actions/cache@v5...v5.0.3

v.5.0.2

v5.0.2

What's Changed

When creating cache entries, 429s returned from the cache service will not be retried.

v5.0.1

[!IMPORTANT] actions/cache@v5 runs on the Node.js 24 runtime and requires a minimum Actions Runner version of 2.327.1.

If you are using self-hosted runners, ensure they are updated before upgrading.


v5.0.1

... (truncated)

Changelog

Sourced from actions/cache's changelog.

Releases

How to prepare a release

[!NOTE]
Relevant for maintainers with write access only.

  1. Switch to a new branch from main.
  2. Run npm test to ensure all tests are passing.
  3. Update the version in https://github.com/actions/cache/blob/main/package.json.
  4. Run npm run build to update the compiled files.
  5. Update this https://github.com/actions/cache/blob/main/RELEASES.md with the new version and changes in the ## Changelog section.
  6. Run licensed cache to update the license report.
  7. Run licensed status and resolve any warnings by updating the https://github.com/actions/cache/blob/main/.licensed.yml file with the exceptions.
  8. Commit your changes and push your branch upstream.
  9. Open a pull request against main and get it reviewed and merged.
  10. Draft a new release https://github.com/actions/cache/releases use the same version number used in package.json
    1. Create a new tag with the version number.
    2. Auto generate release notes and update them to match the changes you made in RELEASES.md.
    3. Toggle the set as the latest release option.
    4. Publish the release.
  11. Navigate to https://github.com/actions/cache/actions/workflows/release-new-action-version.yml
    1. There should be a workflow run queued with the same version number.
    2. Approve the run to publish the new version and update the major tags for this action.

Changelog

5.0.4

  • Bump minimatch to v3.1.5 (fixes ReDoS via globstar patterns)
  • Bump undici to v6.24.1 (WebSocket decompression bomb protection, header validation fixes)
  • Bump fast-xml-parser to v5.5.6

5.0.3

5.0.2

  • Bump @actions/cache to v5.0.3 #1692

5.0.1

  • Update @azure/storage-blob to ^12.29.1 via @actions/cache@5.0.1 #1685

5.0.0

[!IMPORTANT] actions/cache@v5 runs on the Node.js 24 runtime and requires a minimum Actions Runner version of 2.327.1.

... (truncated)

Commits
  • 27d5ce7 Merge pull request #1747 from actions/yacaovsnc/update-dependency
  • f280785 licensed changes
  • 619aeb1 npm run build generated dist files
  • bcf16c2 Update ts-http-runtime to 0.3.5
  • 6682284 Merge pull request #1738 from actions/prepare-v5.0.4
  • e340396 Update RELEASES
  • 8a67110 Add licenses
  • 1865903 Update dependencies & patch security vulnerabilities
  • 5656298 Merge pull request #1722 from RyPeck/patch-1
  • 4e380d1 Fix cache key in examples.md for bun.lock
  • Additional commits viewable in compare view

Note
Automatic rebases have been disabled on this pull request as it has been open for over 30 days.

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code labels Apr 1, 2026
@dependabot dependabot Bot force-pushed the dependabot/github_actions/actions/cache-5.0.4 branch from a301a00 to e3ec71e Compare April 2, 2026 13:56
@dependabot dependabot Bot requested a review from d0cd as a code owner April 2, 2026 13:56
@d0cd

d0cd commented May 29, 2026

Copy link
Copy Markdown
Owner

@dependabot rebase

Bumps [actions/cache](https://github.com/actions/cache) from 4.2.3 to 5.0.5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@5a3ec84...27d5ce7)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 5.0.4
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot changed the title Bump actions/cache from 4.2.3 to 5.0.4 Bump actions/cache from 4.2.3 to 5.0.5 May 29, 2026
@dependabot dependabot Bot force-pushed the dependabot/github_actions/actions/cache-5.0.4 branch from e3ec71e to d996eda Compare May 29, 2026 00:18
@d0cd d0cd merged commit 0e5cba8 into main May 29, 2026
13 checks passed
@d0cd d0cd deleted the dependabot/github_actions/actions/cache-5.0.4 branch May 29, 2026 00:39
d0cd added a commit that referenced this pull request Jun 10, 2026
# Feedback addressed

The latest external feedback file rewrites the open-items list. Two
items are brig-side:

Issue #2 — cpus: <int> in yaml raises 'argument of type int is not
iterable':
  Regression from the v2 generic yaml-merge. Yaml's 'cpus: 4' parses
  as int, slips through validation (validator accepts int/float/str),
  reaches the subprocess args, and _redact_cmd's 'arg in flag-set'
  membership check explodes when arg is an int.

  Fix: CellSpec.__post_init__ coerces cpus/memory to str if given as
  int/float. The boundary that declares cpus: str now actually
  enforces it. New tests pin the regression.

Issue #1 — Workspace symlink escape (LIVE exploit):
  External team demonstrated the attack works end-to-end: cell drops
  ln -sf /etc/passwd /work/foo.txt, asks a host-side worker to read
  /Users/<user>/.brig/state/<name>/workspace/foo.txt, host follows
  the symlink and leaks /etc/passwd. Bypasses gVisor by asking the
  host to read on the cell's behalf.

  Verified empirically: podman 4.9 in our VM doesn't support
  nosymfollow on bind mounts (both -v syntax and --mount syntax
  rejected with 'invalid option'). Mount-side fix really isn't
  available right now. Strengthened docs/reference/cell-metadata.md
  to spell out the threat at the top with a generic reproducer and
  the empirically-confirmed reason mount-side defense is roadmapped.

Issues #3, #4, #5 are cell-side / already-doc'd / already-fixed.

# Generic-ification

brig is a general tool; source and brig-owned docs should not name
a specific external project. Scrubbed every project-specific name
from src/, tests/, and brig-owned docs. The actual external project
directories under cells/ (which are gitignored anyway) are untouched.

659 unit tests pass. Per-module coverage gates green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
d0cd added a commit that referenced this pull request Jun 10, 2026
Three aitelier-feedback items in one coherent change:

1. Warden CA auto-mount (#1, top adoption ask).
   Cells need to trust Warden's MITM cert to make HTTPS work; today
   every consumer rediscovers the workaround (extract CA, concat onto
   system roots, export SSL_CERT_FILE / REQUESTS_CA_BUNDLE / etc.).
   Brig now stages a combined bundle inside the VM at
   /state/<cell>/ca-bundle.crt and bind-mounts it read-only at
   /run/brig/ca-bundle.crt, plus sets the four common env vars unless
   the cell already declared them. Opt out per cell with
   trust_warden_ca: false (e.g. cells with strict pinning).

   Defense in depth: bundle re-extracted from the Warden container on
   every cell start (source of truth is the container, not the
   untrusted state dir); staged inside the VM (trust boundary);
   read-only mount; cell-set env wins; airgapped cells skip the mount
   entirely.

2. DNS-rebinding check defer (#5).
   server_connected's rebinding block depended on a latent
   mitmproxy-API bug: data.server.close() no longer exists on >= 10
   (AttributeError masked the would-be kill) and data.flow was None
   so host_service / ingress exemptions were a no-op. Anyone fixing
   close() would silently break those flows. Removed the dead block;
   responseheaders is now the single enforcement point and has the
   metadata populated by then. Coverage absorbed into
   TestResponseHeadersDnsRebinding (now 9 cases incl. all IP families).

3. Ingress-token naming docs (#6).
   `brig run --help` epilog now mentions <cell-name>-ingress-token and
   policy.tls_passthrough; docs/design/cell-definition.md expands the
   token-secret naming convention (preferred per-cell, fallback shared,
   hard error when missing).

868 pass + 10 skip clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
d0cd added a commit that referenced this pull request Jun 10, 2026
…-gun docs

Aitelier 0.3.1 feedback identified one BLOCKER and two follow-ups from the
trust_warden_ca rollout.

BLOCKER (aitelier wishlist #1): ingress buffered SSE responses.
SA's ACP bridge emits `Content-Type: text/event-stream` with per-event
`data:` envelopes — mitmproxy's default buffering held every byte until
session close, so aitelier saw 0/4 notifications. Add a responseheaders
hook to ingress.py that sets `flow.response.stream = True` when the
upstream returns text/event-stream (with or without a charset suffix).
Scoped to ingress flows only (gated on flow.metadata["ingress_route"])
so egress keeps buffering for enforce.py's body-side checks. 5 new tests
cover detection, charset suffix, egress isolation, and the None-response
defensive path.

Follow-up A: brig system doctor verifies each cell's staged ca-bundle.crt
contains the current Warden CA. Aitelier burned ~30m on the foot-gun
where a cell entrypoint sets SSL_CERT_FILE differently from brig's
auto-mount; warden's CA rotates on the next system up/down, brig
re-stages, but the cell's cached pointer goes stale → silent TLS
hangs (mitmproxy returns a valid cert client-side, upstream handshake
fails, warden drops with no signal). The new check compares per-cell
bundles against the current warden CA and flags mismatches with a
`brig cell restart` suggestion. 6 new tests cover the no-CA, empty-CA,
matching, stale, system-dir-skip, and opt-out cases.

Follow-up B: cell-definition.md adds an explicit "do NOT set
SSL_CERT_FILE in your image entrypoint or ENV" note under
`trust_warden_ca`, pointing operators at `brig system doctor` for the
stale-cache diagnosis.

Tangential cleanup: explicit sys.modules mock for `mitmproxy` at
test_ingress.py module level. The existing test classes relied on
alphabetical test-file ordering (an earlier file mocked first); running
test_ingress.py in isolation crashed. setdefault() so we don't trample
a real install if there ever is one.

886 pass + 10 skip; ruff/mypy/ast all green. Live-verified against the
running brig VM — the new addon code reaches warden after _copy-addons,
and doctor's CA check reports the sandbox-agent's bundle is consistent
with the current Warden CA.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
d0cd added a commit that referenced this pull request Jun 10, 2026
audit cleanups

Closes the outstanding aitelier-feedback items in one cohesive pass.

#1 Raw TCP host_services — runtime phase (was schema-only).

Warden start now collects the union of TCP ports declared in any
cell's per-cell policy and binds `--mode reverse:tcp://host.lima.internal:
<port>@<port>` for each. Cells reach `<svc>.host.brig:<port>` with a
normal TCP client (psql, redis-cli, mongo) and warden forwards raw
bytes to host.lima.internal on the same port — single trust boundary
(warden stays in the path), connection-level audit via tcp_start.

Per-cell access control lives in enforce.py:tcp_start:
  - Resolves cell from peer IP (existing subnet-map lookup)
  - Loads cell's per-cell policy
  - Allows only if the listening port appears in
    cell.tcp_host_services_map
  - Tags flow metadata so otel_export's tcp_* hooks emit per-service
    counters and the audit log distinguishes TCP host_services from
    TLS passthrough flows
  - Fail-closed on any unexpected mitmproxy API shape
  - Skips flows already flagged as tls_mode=passthrough (invariant 11)

Schema rejects TCP on warden's reserved ports (8080 HTTP proxy /
8443 ingress); warden's port-collection also re-checks defense in
depth against tampered policy files (invariant 4).

Note (documented): mitmproxy can't hot-add listener ports, so adding
a new TCP host_service to a cell yaml requires `brig system restart`
to bind. Listener teardown on cell removal: a subsequent restart no
longer binds the orphan port.

Entrypoint SSL_CERT_FILE override warning (aitelier foot-gun #3).

`brig system doctor` now inspects each running cell's effective
Config.Env and warns when SSL_CERT_FILE is set differently from
brig's auto-mount target. Catches the foot-gun BEFORE the next CA
rotation produces silent TLS hangs — the existing CA-consistency
check only sees the stale state after-the-fact.

Tampered-policy debug log (audit finding M2).

addons/_policy.py: an unexpected `protocol` value on a host_services
entry (could only come from a tampered on-disk policy — schema
validator rejects unknown protocols at parse time) now drops the
entry entirely (fail-safe) AND logs a warning. Previously, unknown
protocols silently degraded to HTTP.

Lifecycle event test coverage (audit gap).

tests/test_warden_lifecycle_events.py pins `warden_start` /
`warden_stop` event emission AND the swallow-errors-on-best-effort
contract. Patches via `brig.ops.history.log_lifecycle` (function-local
import inside warden's stop()/start()).

Realistic PEM data in doctor tests (audit M2 / cosmetic).

test_doctor_ca_consistency.py: replaced bare placeholder strings
("WARDEN_CA_PEM") with PEM-headered blocks. Substring matching still
works; the test now provably exercises the production cert shape.

Layer 1 perf benchmarks (audit Layer 1).

8 new pytest-benchmark micros in tests/benchmarks/test_bench_recent_hooks.py
covering every addon hook we added since the aitelier feedback
landed:
  - Ingress SSE detection (match + negative paths)
  - tls_clienthello invariant-11 decision (passthrough + MITM paths)
  - tcp_start access control (allow + deny paths)
  - Policy.is_passthrough defense-in-depth (match + no-match)
If any regress to milliseconds, warden's per-request overhead
becomes user-visible — catches before aitelier hits "warden got slow
again" complaints.

921 pass + 10 skip; ruff + mypy + ast green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
d0cd added a commit that referenced this pull request Jun 10, 2026
Five items from ~/tools/hermes-agent/plans/brig-feedback.md, prioritized
by what brig (not the consumer cell) can change.

#1 Read-only /workspace mount (MEDIUM-HIGH).
   Root cause was the SA cell yaml's missing `workspace_mount: /workspace`
   — default is `/work`, so writes to /workspace/* hit the read-only
   rootfs. Doc fix in troubleshooting.md spells out the three options
   (align cell yaml, align app, last-resort writable_rootfs) so the
   next consumer doesn't waste a debugging session.

#3 Long-life cell pattern undocumented (MEDIUM).
   The `command: ["sleep", "infinity"]` workaround was buried in
   host-an-agent.md but not in troubleshooting. Added an explicit
   "Cell flips to stopped immediately" entry that calls it out,
   alongside the other common immediate-exit causes.

#4 Cell logs empty for file-based loggers (LOW-MEDIUM).
   cmd_logs now detects the empty-output case (snapshot mode only —
   follow mode keeps TTY passthrough) and prints an inline hint
   pointing at `brig cell exec` / `brig cell read` for file-based
   logs. Plus a troubleshooting entry that explains the contract.

#5 Telemetry domains blocked but non-fatal (LOW).
   Documented the three common ones aitelier hit (Datadog log shipping,
   mcp-proxy, platform.claude.com) with the agent's typical behavior
   and the allow/silence options.

Not addressed:
#2 Hermes cell entrypoint writes malformed config.yaml — this is a
   bug in ~/tools/hermes-agent/cells/hermes/entrypoint.sh, not brig
   itself. Flagged to the hermes team.

Longer-term wishlist (per-cell credential rotation, inter-cell
routing, cross-source audit query, nosymfollow) intentionally
deferred — each needs its own design discussion.

940 pass + 10 skip. Ruff + mypy + ast green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant