Repository navigation
Conversation
Agents on the phone could open URLs and files but not launch an app or send a broadcast, such as Tailscale's CONNECT_VPN. Adds Android's am (start, broadcast; also termux-am) and pm list packages to the bridge, behind a new "Other apps" category in Agent access. The app builds each intent from am's flags, so it carries no flags, URI grants, selector or Parcelable extras, can't target T3 Code itself, and can't place calls outside the Phone category. Broadcasts must name their app. A launcher-intent <queries> entry makes apps with an icon visible without QUERY_ALL_PACKAGES. Done with Claude Opus 5.5 in Claude Code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
|
Emulator check (android-35 x86_64, debuggable release build of 11e2237, phone runtime installed and connected, stand-in Claude credentials). Every request below showed the phone's "Allow Other apps?" dialog with the request's JSON, then:
Not covered: the off-screen notification path for |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Agents on the phone could open URLs and files but couldn't launch an app or send a broadcast, such as Tailscale's
com.tailscale.ipn.CONNECT_VPN. There's noamorpmin the phone's Ubuntu.This adds Android's own shell syntax to the bridge:
am startandam broadcast(alsotermux-am) with-a -d -t -c -n -p --es --ez --ei --el --efand a last argument that's a URI, package/class or package.am start <package>opens the app as its launcher icon does.pm list packages [-3 | -s] [filter], so agents can find a package name.Intents go out as T3 Code, with its permissions, so
AppIntents.ktbuilds each one from am's flags instead of parsing it. That means no flags, URI grants, selector or Parcelable extras. It also refuses T3 Code's own package and file-provider URIs, sends call actions totermux-telephony-callinstead (T3 Code holdsCALL_PHONE), and requires broadcasts to name their app. Broadcasts with no declared receiver say so, which catches a wrong action name.A
<queries>entry for launcher activities makes apps with an icon visible. It avoidsQUERY_ALL_PACKAGES, which Play restricts.termux-open-urlis unchanged:intent:URIs still aren't supported there, andamcovers that case. The user doc's Agent access line also said approvals appear in the thread; it now says on the phone, as main already does.Testing: bridge-script tests cover the argument parsing. The Kotlin module compiles. Emulator and phone checks are in comments below.
Done with Claude Opus 5.5 in Claude Code.
🤖 Generated with Claude Code