AgentForge is educational sample code. It is not hardened for production use, and examples are pinned to older library versions on purpose so they keep demonstrating the API they were written against. Please treat everything here as a reference implementation, not a dependency.
Report privately — do not open a public issue, and never paste a credential into an issue, pull request, or discussion.
- Open a private advisory via GitHub Security Advisories.
- If that is unavailable, contact the repository owner (@Olwtelet) directly.
Please include:
- What the issue is and where (file path, line number).
- How to reproduce it.
- What an attacker could achieve.
- Any suggested fix.
Never include real credentials in a report. If a report requires showing a leaked secret, say where it is and what kind of secret it is — not its value.
An exposed key must be treated as compromised the moment it becomes public, whether or not it is later deleted — git history and mirrors keep it reachable.
- Revoke and rotate it at the provider immediately. This is the only step that actually stops the exposure.
- Report it privately using the process above, describing the location only.
- Do not force-push or rewrite history to "hide" it — that does not un-leak the key and breaks every existing clone.
- All configuration comes from a local
.envfile, which is git-ignored. - Each module ships a
.env.examplecontaining placeholders only. .gitignoreexcludes.envand.env.*while explicitly allowing.env.example.- CI runs unit tests without any credentials — they mock every network call. Integration tests run only on manual dispatch, and skip themselves when the required secrets are absent.
- Every pull request is scanned for committed secrets by
gitleaks in
.github/workflows/ci.yml. - A unit test (
tests/unit/test_repo_hygiene.py) fails the build if a credential-shaped literal or averify=FalseTLS bypass reappears anywhere in the repository.
These are inherent to what the examples demonstrate, not bugs:
- Agent tool execution. Several frameworks can execute code or shell commands as a "tool". Run untrusted prompts only in a sandbox.
- Outbound API calls. Examples send your prompts to third-party LLM and search providers. Do not feed them confidential data.
- Local vector stores. RAG examples write embeddings to disk. Those files contain your source documents' content; they are git-ignored, but treat them with the same care as the originals.
- Token spend. Benchmark loops call paid APIs repeatedly. Check
--iterationsbefore running.
Fixes are applied to the main branch only. There are no released versions or
backports.