Skip to content

Append agent/<id> to the User-Agent when driven by an AI coding agent#219

Draft
ctufts wants to merge 2 commits into
masterfrom
agi-1011-agent-user-agent
Draft

Append agent/<id> to the User-Agent when driven by an AI coding agent#219
ctufts wants to merge 2 commits into
masterfrom
agi-1011-agent-user-agent

Conversation

@ctufts

@ctufts ctufts commented Jul 17, 2026

Copy link
Copy Markdown

Detects the calling AI coding agent (Claude Code, Codex, Cursor, etc.) from a hardcoded environment-variable allowlist and appends agent/<id> to the tilesets Session User-Agent header when a match is found. The header is unchanged if nothing matches.

This doesn't change anything server-side or forward the environment: CloudFront already logs the User-Agent, and the agent's environment is already visible to this CLI's own subprocess.

agent_detect.py::detect_agent() checks about 22 harness-specific env vars in a fixed precedence order (most are presence-only checks; warp and vtcode require an exact value match), then falls back to AI_AGENT/AGENT if nothing else matched. That fallback is restricted to a safe charset so a stray value, like a newline, can't reach the header and break requests. The full environment is never read, logged, or transmitted, only the matched id.

Tested with pytest tests/test_agent_detect.py tests/test_utils.py (34 passing), plus a manual check of _get_session()'s header: a positive case (CLAUDECODE=1 -> .../<version> agent/claude-code) and a negative control (agent vars unset, header unchanged). This is a client-side header change with no server dependency, so there's no downstream or operational impact.

ctufts added 2 commits July 17, 2026 16:50
Detects the calling AI coding agent from a hardcoded env-var allowlist and
appends " agent/<id>" to the tilesets Session User-Agent when one is found.
No server dependency: the header is already logged by CloudFront, and the
agent's environment is directly visible to this CLI's subprocess.
- Reject fallback (AI_AGENT/AGENT) values outside a safe header charset so a
  stray newline/colon can no longer crash every CLI command with
  requests.exceptions.InvalidHeader.
- Treat empty/whitespace-only harness env vars as unset, matching the
  fallback path's existing empty-value handling.
@ctufts ctufts added the locationai-team-skills Opened via the location-ai PR creation skill label Jul 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

locationai-team-skills Opened via the location-ai PR creation skill

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant