Skip to content

feat(ops): agent identity scheme (trailer hook + PR wrapper + docs)#59

Merged
Fl0p merged 2 commits into
mainfrom
flo-210-agent-identity
May 26, 2026
Merged

feat(ops): agent identity scheme (trailer hook + PR wrapper + docs)#59
Fl0p merged 2 commits into
mainfrom
flo-210-agent-identity

Conversation

@Fl0p

@Fl0p Fl0p commented May 26, 2026

Copy link
Copy Markdown
Contributor

Implements the FlopBut agent-identity scheme from FLO-209 (parts 2 & 3) and lands the tooling for part 1.

What's here

  • scripts/git-hooks/prepare-commit-msg — idempotent co-author trailer hook driven by $GIT_AUTHOR_NAME/$GIT_AUTHOR_EMAIL.
  • scripts/install-agent-git-hooks.sh — points core.hooksPath at the hook dir (per repo/worktree).
  • scripts/agent-pr.shgh pr create wrapper: adds the Agent: <Name> line and the agent:<slug> label idempotently.
  • docs/operations/agent-identity.md — full scheme: identity table, env aliases, trailers, PR attribution.

Verification

This very PR was opened with scripts/agent-pr.sh (note the Agent: line below and the agent:daedalus label). The control commit shows author/committer + both co-author trailers — see FLO-210.

Refs: FLO-210

Agent: Daedalus

Summary by CodeRabbit

  • Documentation

    • Added comprehensive documentation for agent identity configuration and GitHub integration, covering identity representation in git history and PR attribution workflows.
  • New Features

    • Introduced command-line tool for attributing pull requests to agents with label management.
    • Added automated Git hooks for commit message attribution.
    • Provided installation script to set up agent identity hooks in repositories.

Review Change Stack

Implements FLO-210 (parts 2 & 3 of the FLO-209 scheme): idempotent
prepare-commit-msg trailer hook, a gh pr create wrapper that adds the
"Agent: <Name>" line and agent:<slug> label, and the operations doc
describing env aliases, trailers, and PR attribution.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Co-authored-by: Daedalus <daedalus@agents.flopbut.local>
@Fl0p Fl0p added the agent:daedalus PR authored by agent Daedalus label May 26, 2026
@coderabbitai

coderabbitai Bot commented May 26, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@Fl0p, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 54 minutes and 2 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b84710f3-d898-4db2-b971-635eff384c66

📥 Commits

Reviewing files that changed from the base of the PR and between 79574a2 and 4f57e40.

📒 Files selected for processing (2)
  • docs/operations/agent-identity.md
  • scripts/agent-set-git-identity.sh
📝 Walkthrough

Walkthrough

This PR establishes an agent identity system for attributing commits and pull requests to AI agents within a shared codebase. It provides documentation, a commit hook, a PR wrapper script, and an installer to track agent authorship through git environment variables, commit trailers, and GitHub labels without requiring separate accounts.

Changes

Agent Identity Attribution System

Layer / File(s) Summary
Agent Identity Specification
docs/operations/agent-identity.md
Defines canonical agent slugs and per-agent non-mailbox emails; describes setting agent identity via Paperclip adapterConfig.env with GIT_AUTHOR_*/GIT_COMMITTER_* variables; specifies commit Co-authored-by trailer via prepare-commit-msg hook; defines PR attribution using Agent: <Name> body line and agent:<slug> label; documents target repositories and notes Orion status.
Commit Attribution Hook
scripts/git-hooks/prepare-commit-msg
Git hook that reads GIT_AUTHOR_NAME/GIT_AUTHOR_EMAIL and appends an idempotent Co-authored-by trailer to commit messages, with safety exits for merge/squash commits and missing identity variables.
PR Attribution Script
scripts/agent-pr.sh
Wraps gh pr create to attribute PRs to an agent; derives a lowercase slug, creates/updates an agent:<slug> label idempotently, ensures an Agent: <Name> line is in the PR body, and passes through all CLI arguments.
Hook Installation Script
scripts/install-agent-git-hooks.sh
Installs the prepare-commit-msg hook by validating the target git repository, setting executable permissions on hooks, and updating core.hooksPath to the hooks directory.

Sequence Diagram

sequenceDiagram
  participant Agent
  participant AdapterConfig as Paperclip API
  participant GitEnv as Git Env Vars
  participant CommitHook as prepare-commit-msg Hook
  participant PRScript as agent-pr.sh
  participant GitHub
  Agent->>AdapterConfig: PATCH /api/agents/{id} with env
  AdapterConfig->>GitEnv: Set GIT_AUTHOR_NAME/EMAIL
  GitEnv->>CommitHook: Read env on commit
  CommitHook->>GitHub: Append Co-authored-by trailer
  Agent->>PRScript: Create PR with agent name
  PRScript->>GitHub: Create agent:{slug} label
  PRScript->>GitHub: Create PR with Agent: name line
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

A rabbit hops through git commits with care,
Leaving agent slugs floating in the air,
Co-authored trailers mark each new line,
PR labels glow with agent design. 🐰✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: implementing an agent identity scheme with three key components (trailer hook, PR wrapper, and documentation).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch flo-210-agent-identity

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Distinguish FlopBut agents under the shared GitHub token via three layers:
author/committer env, an idempotent commit-trailer hook, and PR attribution
(Agent: line + agent:<slug> label). Agents self-apply their own adapter env
with scripts/agent-set-git-identity.sh — the only path that both passes the
API permission check and safely preserves redacted per-agent secret env.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Co-authored-by: Daedalus <daedalus@agents.flopbut.local>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
scripts/install-agent-git-hooks.sh (1)

24-24: ⚡ Quick win

Consider warning if chmod fails.

Line 24 silently ignores chmod failures with || true. If making the hooks executable fails, git will ignore the hooks silently. While the "best-effort" approach is reasonable, users might not realize the hooks aren't working.

⚠️ Suggested warning
-chmod +x "$HOOKS_DIR"/* 2>/dev/null || true
+if ! chmod +x "$HOOKS_DIR"/* 2>/dev/null; then
+  echo "warning: could not make hooks executable; they may not run" >&2
+fi
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/install-agent-git-hooks.sh` at line 24, The chmod call currently
swallows failures; replace the silent "chmod +x \"$HOOKS_DIR\"/* 2>/dev/null ||
true" with logic that runs the chmod, captures its exit status, and prints a
warning to stderr if it fails (e.g., using echo/printf to >&2) mentioning
HOOKS_DIR and that hook files may not be executable; ensure you still treat it
as best-effort (do not exit non-zero) but surface a clear warning when chmod
returns a non-zero status so users know hooks might not run.
scripts/git-hooks/prepare-commit-msg (2)

19-23: ⚡ Quick win

Comment mentions amending but code doesn't skip amend source.

Line 19 states the hook skips "when amending an existing message" but the case statement only skips merge/squash commits, not "commit" source (used for --amend). The idempotency check at line 34 prevents duplication during amends, so the behavior is safe. However, the comment should either be clarified to match the actual behavior or the code should explicitly handle the "commit" source if amends should be skipped.

📝 Suggested clarification
-# Skip for merge/squash commits and when amending an existing message — those
-# already carry trailers or are machine-generated.
+# Skip for merge/squash commits — those are machine-generated and the
+# agent is already credited via author/committer fields.
+# For amends, the idempotency check below prevents duplication.
 case "$COMMIT_SOURCE" in
   merge|squash) exit 0 ;;
 esac
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/git-hooks/prepare-commit-msg` around lines 19 - 23, The comment in
prepare-commit-msg claims it skips amend ("amending an existing message") but
the case on COMMIT_SOURCE only handles merge|squash; either update the comment
to accurately state that amends (COMMIT_SOURCE=commit) are not skipped because
an idempotency check later prevents duplication, or modify the case to include
"commit" so amends are explicitly skipped. Locate the COMMIT_SOURCE case block
in prepare-commit-msg and either change the comment text to reflect actual
behavior (mention idempotency check) or add "commit" to the case pattern
(merge|squash|commit) to make the code match the comment.

33-36: 💤 Low value

Comment slightly misleading about case-sensitivity scope.

Line 33 states "case-insensitive on the trailer key, exact on name+email" but grep -qiF applies case-insensitivity to the entire line, including name and email. In practice this is safe since GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL are set by Paperclip and remain consistent, but the comment could be more accurate.

📝 Suggested clarification
-# Already present (case-insensitive on the trailer key, exact on name+email)?
+# Already present? (checks case-insensitively across the entire trailer line)
 if grep -qiF "$TRAILER" "$COMMIT_MSG_FILE"; then
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/git-hooks/prepare-commit-msg` around lines 33 - 36, The comment above
the grep invocation is misleading: the command using grep -qiF applies
case-insensitivity to the entire matched line (including GIT_AUTHOR_NAME and
GIT_AUTHOR_EMAIL), not just the trailer key. Update the comment near the
TRIALER/COMMIT_MSG_FILE check to state that grep -qiF performs case-insensitive
matching for the whole trailer string (key, name and email) and, if you intended
to only ignore case for the trailer key, adjust the comment to call that out or
switch to a matching approach that normalizes only the key portion.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/operations/agent-identity.md`:
- Around line 55-63: Update the two example commit-trailer code blocks to use a
consistent "Co-authored-by: Name <email>" capitalization (capital C, lowercase
"oauthored-by") to match the prepare-commit-msg hook output, and add a language
specifier by changing the fences to ```text for both blocks so they render with
proper syntax highlighting and accessibility; specifically replace the
"Co-Authored-By" / "Co-authored-by" lines in the
docs/operations/agent-identity.md examples with "Co-authored-by: Paperclip
<noreply@paperclip.ing>" and "Co-authored-by: Wayland
<wayland@agents.flopbut.local>" inside ```text fences.

In `@scripts/agent-pr.sh`:
- Around line 29-38: Update the argument parser in the while/case loop to accept
both space-separated and equals-separated forms (e.g., --title value and
--title=value) by splitting on '=' when present and assigning to TITLE and BODY
accordingly (referencing variables TITLE, BODY and array PASS and the while/case
block), ensure any unrecognized args still go into PASS, and add a validation
step before invoking gh pr create that checks TITLE is non-empty and exits with
a clear error if missing (referencing the final gh pr create call so the script
never runs with an empty --title).

In `@scripts/git-hooks/prepare-commit-msg`:
- Around line 38-42: The code that appends TRAILER to COMMIT_MSG_FILE doesn't
guarantee a blank line before the trailer; change the logic so if the file is
non-empty and its last line is not empty (e.g., test via tail -n1
"$COMMIT_MSG_FILE" | grep -qv '^$' or check last char(s)), append an extra
newline before writing TRAILER; specifically update the block handling
COMMIT_MSG_FILE/TAILER so it ensures a blank separator line (resulting in
"\n\nTrailer\n" when necessary) rather than only a single trailing newline.

---

Nitpick comments:
In `@scripts/git-hooks/prepare-commit-msg`:
- Around line 19-23: The comment in prepare-commit-msg claims it skips amend
("amending an existing message") but the case on COMMIT_SOURCE only handles
merge|squash; either update the comment to accurately state that amends
(COMMIT_SOURCE=commit) are not skipped because an idempotency check later
prevents duplication, or modify the case to include "commit" so amends are
explicitly skipped. Locate the COMMIT_SOURCE case block in prepare-commit-msg
and either change the comment text to reflect actual behavior (mention
idempotency check) or add "commit" to the case pattern (merge|squash|commit) to
make the code match the comment.
- Around line 33-36: The comment above the grep invocation is misleading: the
command using grep -qiF applies case-insensitivity to the entire matched line
(including GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL), not just the trailer key.
Update the comment near the TRIALER/COMMIT_MSG_FILE check to state that grep
-qiF performs case-insensitive matching for the whole trailer string (key, name
and email) and, if you intended to only ignore case for the trailer key, adjust
the comment to call that out or switch to a matching approach that normalizes
only the key portion.

In `@scripts/install-agent-git-hooks.sh`:
- Line 24: The chmod call currently swallows failures; replace the silent "chmod
+x \"$HOOKS_DIR\"/* 2>/dev/null || true" with logic that runs the chmod,
captures its exit status, and prints a warning to stderr if it fails (e.g.,
using echo/printf to >&2) mentioning HOOKS_DIR and that hook files may not be
executable; ensure you still treat it as best-effort (do not exit non-zero) but
surface a clear warning when chmod returns a non-zero status so users know hooks
might not run.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a56b39ae-57d9-4317-8f85-08206cb6d5b1

📥 Commits

Reviewing files that changed from the base of the PR and between dac84ed and 79574a2.

📒 Files selected for processing (4)
  • docs/operations/agent-identity.md
  • scripts/agent-pr.sh
  • scripts/git-hooks/prepare-commit-msg
  • scripts/install-agent-git-hooks.sh

Comment on lines +55 to +63
```
Co-Authored-By: Paperclip <noreply@paperclip.ing>
```

each commit gets a second co-author line for the authoring agent:

```
Co-authored-by: Wayland <wayland@agents.flopbut.local>
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Inconsistent trailer capitalization and missing language specifiers.

Lines 56 and 62 show different capitalizations: "Co-Authored-By" vs "Co-authored-by". While Git treats trailer keys case-insensitively, the documentation should be consistent. The hook at line 31 in scripts/git-hooks/prepare-commit-msg outputs "Co-authored-by" (capital C, lowercase a/b), so this example should match.

Additionally, both code blocks are missing language specifiers, which reduces syntax highlighting and accessibility.

📝 Proposed fix
-```
+```text
 Co-Authored-By: Paperclip <noreply@paperclip.ing>

each commit gets a second co-author line for the authoring agent:

- -Co-authored-by: Wayland <wayland@agents.flopbut.local> +text
+Co-Authored-By: Wayland wayland@agents.flopbut.local

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 55-55: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


[warning] 61-61: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/operations/agent-identity.md` around lines 55 - 63, Update the two
example commit-trailer code blocks to use a consistent "Co-authored-by: Name
<email>" capitalization (capital C, lowercase "oauthored-by") to match the
prepare-commit-msg hook output, and add a language specifier by changing the
fences to ```text for both blocks so they render with proper syntax highlighting
and accessibility; specifically replace the "Co-Authored-By" / "Co-authored-by"
lines in the docs/operations/agent-identity.md examples with "Co-authored-by:
Paperclip <noreply@paperclip.ing>" and "Co-authored-by: Wayland
<wayland@agents.flopbut.local>" inside ```text fences.

Comment thread scripts/agent-pr.sh
Comment on lines +29 to +38
TITLE=""
BODY=""
PASS=()
while [ $# -gt 0 ]; do
case "$1" in
--title) TITLE="$2"; shift 2 ;;
--body) BODY="$2"; shift 2 ;;
*) PASS+=("$1"); shift ;;
esac
done

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Argument parsing doesn't handle --flag=value format or validate required flags.

The parser only handles space-separated flags (--title value), not equals-separated (--title=value). If a user passes --title="feat: xyz", it won't be extracted into $TITLE and will pass through to $PASS, causing --title to appear twice in the final gh pr create command (line 49). While the last value typically wins, this is confusing.

Additionally, --title is required by gh pr create, but the script doesn't validate that it was provided. If missing, line 49 would call gh pr create --title "", which may fail or prompt interactively.

🛡️ Proposed fix with validation and better parsing
 TITLE=""
 BODY=""
 PASS=()
 while [ $# -gt 0 ]; do
   case "$1" in
-    --title) TITLE="$2"; shift 2 ;;
-    --body)  BODY="$2";  shift 2 ;;
+    --title)
+      if [ $# -lt 2 ]; then
+        echo "error: --title requires a value" >&2
+        exit 1
+      fi
+      TITLE="$2"; shift 2 ;;
+    --title=*) TITLE="${1#--title=}"; shift ;;
+    --body)
+      if [ $# -lt 2 ]; then
+        echo "error: --body requires a value" >&2
+        exit 1
+      fi
+      BODY="$2"; shift 2 ;;
+    --body=*) BODY="${1#--body=}"; shift ;;
     *)       PASS+=("$1"); shift ;;
   esac
 done
+
+if [ -z "$TITLE" ]; then
+  echo "error: --title is required" >&2
+  exit 1
+fi
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
TITLE=""
BODY=""
PASS=()
while [ $# -gt 0 ]; do
case "$1" in
--title) TITLE="$2"; shift 2 ;;
--body) BODY="$2"; shift 2 ;;
*) PASS+=("$1"); shift ;;
esac
done
TITLE=""
BODY=""
PASS=()
while [ $# -gt 0 ]; do
case "$1" in
--title)
if [ $# -lt 2 ]; then
echo "error: --title requires a value" >&2
exit 1
fi
TITLE="$2"; shift 2 ;;
--title=*) TITLE="${1#--title=}"; shift ;;
--body)
if [ $# -lt 2 ]; then
echo "error: --body requires a value" >&2
exit 1
fi
BODY="$2"; shift 2 ;;
--body=*) BODY="${1#--body=}"; shift ;;
*) PASS+=("$1"); shift ;;
esac
done
if [ -z "$TITLE" ]; then
echo "error: --title is required" >&2
exit 1
fi
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/agent-pr.sh` around lines 29 - 38, Update the argument parser in the
while/case loop to accept both space-separated and equals-separated forms (e.g.,
--title value and --title=value) by splitting on '=' when present and assigning
to TITLE and BODY accordingly (referencing variables TITLE, BODY and array PASS
and the while/case block), ensure any unrecognized args still go into PASS, and
add a validation step before invoking gh pr create that checks TITLE is
non-empty and exits with a clear error if missing (referencing the final gh pr
create call so the script never runs with an empty --title).

Comment on lines +38 to +42
# Ensure a blank line separates the body from the trailer block, then append.
if [ -s "$COMMIT_MSG_FILE" ] && [ -n "$(tail -c1 "$COMMIT_MSG_FILE")" ]; then
printf '\n' >> "$COMMIT_MSG_FILE"
fi
printf '%s\n' "$TRAILER" >> "$COMMIT_MSG_FILE"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Blank line logic doesn't ensure trailer separation.

The comment at line 38 states the intent to "ensure a blank line separates the body from the trailer block," but the implementation only ensures the file ends with a single newline, not two. Git trailers should be preceded by a blank line.

Current behavior:

  • If file = "message\n": appends "Trailer\n" → result: "message\nTrailer\n" (no blank line)
  • If file = "message": adds "\n", appends "Trailer\n" → result: "message\nTrailer\n" (still no blank line)

Expected:

  • Result should be "message\n\nTrailer\n" (blank line before trailer)
🐛 Proposed fix
-# Ensure a blank line separates the body from the trailer block, then append.
-if [ -s "$COMMIT_MSG_FILE" ] && [ -n "$(tail -c1 "$COMMIT_MSG_FILE")" ]; then
-  printf '\n' >> "$COMMIT_MSG_FILE"
-fi
-printf '%s\n' "$TRAILER" >> "$COMMIT_MSG_FILE"
+# Ensure a blank line separates the body from the trailer block, then append.
+if [ -s "$COMMIT_MSG_FILE" ]; then
+  # Add one newline if file doesn't end with one, then always add blank line
+  if [ -n "$(tail -c1 "$COMMIT_MSG_FILE")" ]; then
+    printf '\n' >> "$COMMIT_MSG_FILE"
+  fi
+  printf '\n' >> "$COMMIT_MSG_FILE"
+fi
+printf '%s\n' "$TRAILER" >> "$COMMIT_MSG_FILE"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/git-hooks/prepare-commit-msg` around lines 38 - 42, The code that
appends TRAILER to COMMIT_MSG_FILE doesn't guarantee a blank line before the
trailer; change the logic so if the file is non-empty and its last line is not
empty (e.g., test via tail -n1 "$COMMIT_MSG_FILE" | grep -qv '^$' or check last
char(s)), append an extra newline before writing TRAILER; specifically update
the block handling COMMIT_MSG_FILE/TAILER so it ensures a blank separator line
(resulting in "\n\nTrailer\n" when necessary) rather than only a single trailing
newline.

@Fl0p Fl0p merged commit dc8dd97 into main May 26, 2026
3 checks passed
@Fl0p Fl0p deleted the flo-210-agent-identity branch May 26, 2026 20:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent:daedalus PR authored by agent Daedalus

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant