Skip to content

AIT-458: feedback tool for agent-observed friction - #68

Merged
ord669 merged 6 commits into
mainfrom
ait-458-feedback-tool
Aug 24, 2026
Merged

AIT-458: feedback tool for agent-observed friction#68
ord669 merged 6 commits into
mainfrom
ait-458-feedback-tool

Conversation

@ord669

@ord669 ord669 commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Draft WIP for AIT-458 — submit_feedback MCP tool + hookmyapp feedback CLI riding on the existing support/Chatwoot plumbing.

Refs AIT-458

@coderabbitai

coderabbitai Bot commented Aug 22, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 1 minute.

View limit details

Limit details: You’ve used all 2 included reviews currently available. Your 86 included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour.

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 05f710a0-8fc9-4d2f-9919-4adb623bd5db

📥 Commits

Reviewing files that changed from the base of the PR and between 6e1fee8 and afb6762.

📒 Files selected for processing (4)
  • src/commands/__tests__/feedback.test.ts
  • src/commands/support.ts
  • src/index.ts
  • src/observability/telemetry.ts

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

ord669 added 4 commits August 22, 2026 12:46
Separate command rather than a flag on `support new`: agents route on
descriptions, and nothing in a support description fires when the human is
merely confused. The description carries the negative clause (broken thing or
waiting human means open a ticket instead).

Governed by the existing telemetry switch, so there is no second consent
surface to explain: telemetry off means nothing leaves the machine.
Feedback rides the telemetry switch, so the disclosure has to say so. Bumps
the disclosure version to 3 so existing installs see the changed text once.
- The disclosure claimed no command arguments are ever sent, two lines above a
  new line about a command whose whole argument is sent. Say the exception.
- The disclosure only printed from the Sentry init path, so a CLI built without
  a DSN would upload the message having never shown it. Print it at the moment
  the data actually leaves.
- Bare `hookmyapp feedback` blocked forever on stdin — the command has no
  required option, so that is the likely typo. Error on a TTY instead.
- Validate --surface and the telemetry switch before reading stdin, so a typo
  reports itself instead of buffering a pipe.
- Guard the optional note, matching how printDetail already treats it.
@ord669
ord669 marked this pull request as ready for review August 24, 2026 11:27

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f87965867b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/commands/support.ts Outdated
// This is the moment data leaves the machine, so it is the moment the
// disclosure has to have been shown — it cannot depend on Sentry having
// initialized (no DSN in a local or self-built CLI means no banner).
maybePrintFirstRunDisclosure();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep disclosure persistence failures from blocking feedback

When the config directory is read-only or otherwise unwritable and the v3 disclosure has not yet been persisted, this call prints the disclosure and then throws from writeConfig, so /support/feedback is never called. This regresses the CLI's documented fail-open handling for disclosure writes in sandboxed/read-only environments; catch persistence failures here, as initSentryLazy() does, so an inability to save the one-time flag does not prevent the report.

Useful? React with 👍 / 👎.

Comment thread src/observability/telemetry.ts Outdated
Comment on lines +102 to +103
' No command arguments, file contents, or env var values are sent — except the',
' message you pass to `hookmyapp feedback`, which is sent on purpose.',

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Disclose the transmitted surface argument

The disclosure says the feedback message is the only command argument sent, but the request also transmits the user-selected --surface value in src/commands/support.ts:406. Even though it is restricted to a small enum, this makes the consent text factually inaccurate whenever the user selects a surface; describe both the message and surface metadata as transmitted.

Useful? React with 👍 / 👎.

- --surface defaulted to 'cli' and was always sent, so friction the human hit
  in the docs or the dashboard was recorded as CLI friction. Omit when unknown.
- maybePrintFirstRunDisclosure() throws on a read-only config dir, which would
  have blocked the submission entirely. Fail open, as the Sentry call site does.
- The disclosure named only the message; --surface is uploaded too. Say both.
- The help said 'never a transcript', which does not exclude tokens, PII, or
  customer message content. Carry the same prohibition support new has.
@ord669
ord669 merged commit a11d5a0 into main Aug 24, 2026
4 checks passed
@ord669
ord669 deleted the ait-458-feedback-tool branch August 24, 2026 12:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant