whogitit 1.0.0

Track AI-generated code at line-level granularity
Documentation
# FAQ

Frequently asked questions about whogitit.

## General

### What is whogitit?

whogitit is a tool that tracks AI-generated code at the line level. It tells you which lines were written by AI, which were modified by humans, and what prompts generated them.

### Why track AI-generated code?

- **Transparency**: Know exactly what percentage of your codebase was AI-generated
- **Code Review**: Identify AI-generated sections that may need extra scrutiny
- **Compliance**: Meet organizational requirements for AI usage disclosure
- **Learning**: Understand how AI suggestions were modified by humans
- **Debugging**: When something breaks, know if AI wrote it and what prompt was used

### Does whogitit work with ChatGPT/Copilot/other AI tools?

Currently, whogitit is designed for Claude Code integration. It uses Claude Code's hook system to capture changes. Support for other tools may be added in the future.

### Is whogitit open source?

Yes. whogitit is available at https://github.com/dotsetlabs/whogitit under the MIT license.

## Usage

### Do I need to do anything special when coding?

No. Once set up, whogitit works automatically:
1. You use Claude Code normally
2. Hooks capture your changes
3. You commit normally
4. Attribution is attached to the commit

### What happens if I modify AI-generated code?

whogitit tracks this! Lines modified by humans after AI generation are marked as `AIModified` (◐) rather than `AI` (●). This shows that a human reviewed and changed the code.

### Can I use whogitit without Claude Code?

The capture system is designed for Claude Code hooks. Without Claude Code, you can still:
- View attribution from commits made by others
- Manually add attribution (advanced)
- Use the CLI tools for analysis

### Does whogitit slow down my workflow?

The overhead is minimal:
- Hooks run in milliseconds
- Post-commit analysis is fast (typically <1 second)
- No impact on normal git operations

## Privacy

### Are my prompts stored publicly?

Prompts are stored in git notes, which are pushed with your repository. If your repo is public, prompts are visible. However:
- Sensitive data is automatically redacted
- You can add custom redaction patterns
- You can disable prompt storage entirely

### What gets redacted automatically?

- API keys and secrets
- AWS credentials
- Private keys
- Bearer tokens
- GitHub tokens
- Email addresses
- Passwords
- Credit card numbers
- Social Security Numbers

### Can I disable redaction?

Yes, but it's not recommended:

```toml
# .whogitit.toml
[privacy]
enabled = false
```

### Can I add custom redaction patterns?

Yes:

```toml
[[privacy.custom_patterns]]
name = "MY_SECRET"
pattern = "my-secret-[a-f0-9]{32}"
description = "My custom secrets"
```

## Data Storage

### Where is attribution data stored?

Attribution is stored as git notes under `refs/notes/whogitit`. This is a standard git feature - notes are stored in the git object database.

### Does attribution increase repository size?

Slightly. Each attributed commit adds a small JSON blob (typically 1-10 KB). For most projects, this is negligible.

### What happens if I delete a branch?

Git notes are attached to commits, not branches. If commits are garbage-collected, their notes go too. If commits are still reachable, notes remain.

### Can I delete attribution data?

Yes:

```bash
# Single commit
git notes --ref=whogitit remove <commit>

# Using retention policy
whogitit retention apply --execute
```

## Git Operations

### Does attribution survive rebasing?

Yes! Run `whogitit init` to install the post-rewrite hook that automatically preserves notes during rebase and amend operations.

For cherry-pick, manually copy: `whogitit copy-notes <old> <new>`

### Does attribution survive squash merging?

No. Squash creates a new commit. The individual commit notes are not combined. Consider using regular merge to preserve notes.

### Can I cherry-pick commits with attribution?

Cherry-pick creates new commits. Attribution doesn't automatically transfer. Use the `copy-notes` command:

```bash
whogitit copy-notes <original-sha> <cherry-picked-sha>
```

### How do I share attribution with my team?

Attribution is stored in git notes, which are pushed/fetched:

```bash
# Push
git push origin refs/notes/whogitit

# Fetch (configured automatically by `whogitit init`)
git fetch origin refs/notes/whogitit:refs/notes/whogitit
```

## Troubleshooting

### Why isn't whogitit tracking my repository?

whogitit only tracks attribution in repositories that have been explicitly initialized. Run `whogitit init` in your repository to enable tracking.

### Why is there no attribution after my commit?

Common causes:
1. Claude Code hooks not configured
2. `whogitit init` not run in the repo
3. Capture script not executable
4. Edits made outside Claude Code

See [Troubleshooting](./troubleshooting.md) for details.

### Why are some lines marked "Unknown"?

This happens when:
- The file wasn't included in the AI session
- Attribution data is corrupted or missing
- The line existed before whogitit was set up

### Why don't I see attribution after cloning?

Git notes need to be fetched separately:

```bash
git fetch origin refs/notes/whogitit:refs/notes/whogitit
```

### Can I fix incorrect attribution?

Attribution can be edited (it's just JSON in git notes):

```bash
git notes --ref=whogitit edit <commit>
```

But be careful - manual edits can cause inconsistencies.

## Advanced

### Can I use whogitit in CI/CD?

Yes! See [CI/CD Integration](../workflows/ci-cd.md). Common uses:
- Add attribution summaries to PR comments
- Enforce review policies based on AI percentage
- Export metrics for dashboards

### Can I query attribution programmatically?

Yes:

```bash
# JSON output
whogitit blame --format json file.rs
whogitit show --format json HEAD
whogitit summary --format json

# Export
whogitit export --format json
```

### Can I integrate with other tools?

whogitit outputs standard JSON. Integrate with:
- Dashboards (Grafana, DataDog)
- Code quality tools
- Custom scripts
- Slack/Teams notifications

### How do I contribute to whogitit?

See the repository at https://github.com/dotsetlabs/whogitit:
- Report issues
- Submit pull requests
- Improve documentation

## See Also

- [Troubleshooting]./troubleshooting.md - Problem solutions
- [Core Concepts]../getting-started/concepts.md - How it works
- [Architecture]../reference/architecture.md - Technical details