feat(agent): pushed-artifact add-on rollback + setcap via agent-updater (delivery-models 2.2) (#3425) #3465
No reviewers
Labels
No labels
1week
2weeks
Failed compliance check
IP cameras
NATS
Possible security concern
Review effort 1/5
Review effort 2/5
Review effort 3/5
Review effort 4/5
Review effort 5/5
UI
aardvark
accessibility
amd64
api
arm64
auth
back-end
bgp
blog
bug
build
checkers
ci-cd
cleanup
cnpg
codex
core
dependencies
device-management
documentation
duplicate
dusk
ebpf
enhancement
eta 1d
eta 1hr
eta 3d
eta 3hr
feature
fieldsurvey
github_actions
go
good first issue
help wanted
invalid
javascript
k8s
log-collector
mapper
mtr
needs-triage
netflow
network-sweep
observability
oracle
otel
plug-in
proton
python
question
reddit
redhat
research
rperf
rperf-checker
rust
sdk
security
serviceradar-agent
serviceradar-agent-gateway
serviceradar-web
serviceradar-web-ng
siem
snmp
sysmon
topology
ubiquiti
wasm
wontfix
zen-engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
carverauto/serviceradar!3465
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/addon-delivery-supervision"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Continues
add-native-addon-delivery-models— completes task 2.2: pushed-artifact activation rollback + Linux file-capability application (setcap) via the root-ownedagent-updater. This is the privileged-delivery primitive the netprobe migration needs (cap_net_raw/cap_bpf/cap_perfmon for eBPF/AF_XDP).Pieces
addon_activation.go):readAddonCurrentTargetcaptures the active version before staging;rollbackAddonCurrentrestores it (or removes a failed first-timecurrent), refusing a missing target rather than dangling.os_capabilitiesadded toAddonAssignmentConfig(Go + Elixir bindings regenerated consistently, protoc-gen-go v1.36.11).--addon-id/--addon-binary/--addon-capabilitiesmode →ApplyAddonCapabilities: allowlist-bounded capabilities (fails closed on anything outside the set), staged-binary resolution under the controlled add-on root with safe-segment + symlink-escape guards, thensetcap <caps>=+ep.os_capabilitiesfrom the manifest'srequiresso the field actually reaches the agent.applyAddonAssignments: capture prior version → stage → apply capabilities; on failure, rollcurrentback and keep the last-known-good assignment.Verification
golangci-lintclean;go build/vetclean; Elixir core compiles.setcap(Linux + root host): end-to-end against the builtagent-updater—cap_net_raw,cap_bpf→getcapshowscap_net_raw,cap_bpf=ep✅cap_sys_admin→ fails closed, no setcap ✅current→ escape refused, outside binary never setcap'd ✅Scope / follow-ups
staging(independent of the already-merged addon PRs).🤖 Generated with Claude Code
lgtm
lgtm