agent-thanks
Find the open-source repositories your coding agent actually used, then thank them with a Star.
agent-thanks turns one AI coding task into a trustworthy shortlist of open-source repositories worth thanking. It checks project changes and coding-agent activity, shows the evidence behind each match, then asks you before every GitHub Star.
The evidence engine is the safety layer. The product goal is simple: make it easy to notice the open source your agent relied on and leave a visible thank-you.
One command after the coding task
Authenticate to GitHub once:
gh auth login
Then, after an AI coding session:
agent-thanks thanks
thanks tries to find the newest Claude Code, Codex, or Gemini transcript that belongs to the current project. It combines that activity with the Git diff, writes a report, shows which repositories have verified evidence, and asks whether you want to Star each eligible repository.
If no matching transcript exists, it still scans project changes such as newly declared dependencies and submodules.
Want to see exactly what would happen first?
agent-thanks thanks --dry-run
Typical flow:
AI coding task
|
v
find OSS touched by the task
|
v
verify evidence
/ \
verified review-only
| |
| +--> shown, never Star-eligible
v
ask you: Star this repository? [y/N]
|
v
final confirmation
|
v
GitHub Star
No unattended Star mode exists. A Star always requires an interactive terminal and an explicit human decision.
Try it safely in 30 seconds
Install from GitHub:
pipx install git+https://github.com/dbwls99706/agent-thanks.git
Without pipx:
python -m pip install "https://github.com/dbwls99706/agent-thanks/archive/refs/heads/main.zip"
Then run the built-in demo:
agent-thanks demo
The demo makes no network requests, reads no credentials, writes no files, and changes no Stars.
Example:
[verified | high] https://github.com/BehaviorTree/BehaviorTree.CPP
- Session ran a repository-use command that completed successfully
[review | low] https://github.com/example/reference-only
- Repository was referenced in the session; verify actual reuse
Would star: https://github.com/BehaviorTree/BehaviorTree.CPP
Why the evidence step exists
A coding agent can mention a repository without using it. A clone can fail. A shell command can hide a failure behind || true. A transcript can be incomplete or contradictory.
Automatically Starring every repository URL would make the tool noisy and the Star itself less meaningful. agent-thanks therefore separates finding candidates from proving enough to offer a Star.
A plain URL is a reference. A verified candidate needs stronger evidence.
| Evidence | Result | Star eligible? |
|---|---|---|
| Newly declared direct dependency | Verified use | Yes |
| Clone, submodule, or Git install command with recorded success | Verified use | Yes |
Explicit provenance statement such as Adapted from ... |
Verified use | Yes |
| GitHub URL that merely appeared | Review only | No |
| Command with missing, conflicting, or failed result | Review only | No |
| Package that cannot be mapped to a repository | Unresolved | No |
The classifier is deterministic. It does not call another model to decide whether a repository deserves a Star.
Human-approved means human-approved
For live Stars, agent-thanks intentionally makes automation stop before the social action:
- the authenticated GitHub account is shown first,
- existing Stars are detected and skipped,
- each new repository gets its own default-No
y/Nprompt, - review-only candidates cannot be promoted with a flag,
- there is no approve-all or unattended Star mode,
- a final confirmation is required before mutations,
- partial failures print an exact undo command,
unstarcan revoke Stars created by mistake.
This keeps the useful automation while preserving the meaning of a GitHub Star.
Choose the agent explicitly when needed
Auto-detection is the normal path, but explicit sources are available:
agent-thanks thanks --from claude-code
agent-thanks thanks --from codex
agent-thanks thanks --from gemini
Or provide a transcript directly:
agent-thanks thanks --session path/to/session.jsonl
For work that is already committed, point --base to the revision immediately before the task:
agent-thanks thanks --base HEAD~1 --from codex
run remains available as the lower-level compatibility command. Unlike thanks, it does not auto-detect a coding agent.
Read-only workflows
You can use the evidence engine without ever authenticating to GitHub.
Create a report:
agent-thanks scan --repo . --base HEAD --from claude-code
Review it:
agent-thanks review .agent-thanks-report.json
Export verified use as Markdown:
agent-thanks export .agent-thanks-report.json --output OPEN_SOURCE_USE.md
Include review-only references in a separate section when useful:
agent-thanks export .agent-thanks-report.json \
--include-low-confidence \
--output OPEN_SOURCE_USE.md
The Markdown export removes absolute local directory prefixes and is suitable for a PR description, release note, audit record, or internal review.
What it can detect
| Source | Coverage | Evidence level |
|---|---|---|
requirements*.txt, pyproject.toml |
Python direct dependencies | High |
package.json |
npm direct dependencies | High |
Cargo.toml |
Rust direct dependencies | High |
go.mod |
Direct Go modules | High |
.gitmodules |
GitHub submodules | High |
| Claude Code transcript / hooks | Repository-use commands and provenance prose | High when success is explicit |
| Codex transcript / hooks | Repository-use commands and provenance prose | High when success is explicit |
| Gemini transcript | Repository references and provenance review | Command success is review-only today |
| Plain-text log | Commands without machine-verifiable results | Review-only unless --trust-session is supplied |
Supported repository-use commands include Git clone and submodule operations plus Git-based installs through pip, uv, npm, pnpm, Yarn, Cargo, and Go tooling.
Package names from PyPI, npm, and crates.io can be mapped through public registry metadata. --offline disables those lookups. GitHub-hosted Go modules, submodules, and direct Git URLs can resolve locally.
Coding-agent integrations
Claude Code
The repository is also a Claude Code plugin marketplace:
/plugin marketplace add dbwls99706/agent-thanks
/plugin install agent-thanks@agent-thanks
The plugin records supported shell events and announces newly verified open-source use after a completed turn. /thanks shows the current evidence. The plugin itself never authenticates to GitHub or creates a Star. Approval happens in your terminal.
Codex and Gemini
Codex hooks and Gemini AfterAgent integration are supported. Exact setup, transcript lookup behavior, and agent-specific limitations are documented in Coding-agent integrations.
Privacy
| Operation | Network behavior |
|---|---|
demo |
None |
| Transcript scan | Transcript contents stay local |
| Package resolution | Sends package names to PyPI, npm, or crates.io unless --offline is used |
review / export |
None |
doctor |
Checks the authenticated GitHub account |
| Live Star / Unstar | Uses the GitHub API for the repositories you explicitly approve |
Hook logs live under .agent-thanks/ and are ignored by their own .gitignore. On POSIX, state directories and files are tightened to owner-only permissions. Symbolic links are refused in the private state path.
Logs can contain raw shell commands, including secrets typed into commands. They are pruned after 30 days and can be deleted at any time.
What a Star means here
A Star is a small, visible thank-you. It is not payment, legal attribution, license compliance, or a claim about authorship.
agent-thanks also does not try to identify model-training sources, invisible influence from model weights, every transitive dependency, or semantic similarity inferred by another model. It only acts on observable evidence from the project and the supplied coding-agent activity.
Design principles
Thank first. The end goal is to help people notice and thank open-source maintainers.
Evidence before the prompt. A repository must earn its place in the Star prompt through observable evidence.
Fail closed. Missing or contradictory success information never becomes verified use.
Keep Stars human. Detection can be automated. The GitHub Star cannot.
Explain every candidate. The report says why each repository was found and why it is or is not eligible.
Documentation
Status
agent-thanks is alpha software. Coding-agent transcript formats are still changing, so the evidence rules intentionally prefer a missed candidate over an unjustified Star prompt.
The current implementation is heavily tested across Python 3.10 through 3.14 and Windows, macOS, and Linux CI. Contributions that add real transcript fixtures, new ecosystem resolvers, and adversarial cases are especially useful.
Contributing
See CONTRIBUTING.md. If you find a case where uncertain evidence is promoted to verified use, please report it as a correctness bug.
License
MIT
Metadata
Release files for agent-thanks 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| agent_thanks-0.6.0.tar.gz | 264.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agent_thanks-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 322.4 kB
Release files / agent_thanks-0.6.0.tar.gz
| Download URL | agent_thanks-0.6.0.tar.gz |
|---|---|
| Size | 264.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8f2366091acf3a32d34630e8f9e9a2159e3fcb12962cd1c7acc14ba2f52d02d9
|
|
BLAKE2b-256 checksum How to use checksums |
c2e48545c180f9c5cec0a0e9540b8d0ae4fe7f5aa27e1d59b8028a88d7cee6d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency logRelease files / agent_thanks-0.6.0-py3-none-any.whl
| Download URL | agent_thanks-0.6.0-py3-none-any.whl |
|---|---|
| Size | 58.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c46e269dbb4527462b6c389f8e1d8a1cec102f717f0220cb9b27a5b32afd951f
|
|
BLAKE2b-256 checksum How to use checksums |
aec1ba1456c33bd57af4db644598e100652d27e04af36a531a99c245b8387555
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 16, 2026.
Transparency log