Skip to main content

Auditing AI-Written Code and the Missing Internet Permission Bug

An indie developer shares how building CoalTrack with Claude Code and Cursor revealed a hidden AndroidManifest bug that source code review missed.

AI-written
Inewgen
07 Nov 2026Source: Dev.to3 min read (0 views)
Share
Auditing AI-Written Code and the Missing Internet Permission Bug

Stock photo for illustration only, not from the actual event

Font size
  • An indie developer uses AI to build CoalTrack while enforcing a strict code audit rule before shipping.
  • Certain test devices failed to reach the server with zero error logs or failing retry loops.
  • Source code inspection looked fine, prompting a deep dive into the actual shipped app bundle.
  • The critical android.permission.INTERNET line was missing from the final merged manifest.

In an era where artificial intelligence heavily powers software creation, building applications as an AI-augmented solo developer has become common. From defining architecture specs to driving implementation through Claude Code and Cursor, the workflow is streamlined. However, one strict rule remains unbroken: auditing what actually ships rather than trusting what the model claims to have produced.

A specific incident turned that operational rule into a permanent habit during the closed testing phase of CoalTrack, an attendance and payroll application designed for coal-mining crews. During testing, a handful of devices failed to establish any server connection. There were no error logs, no recovery retry loops, and total silence. Every earlier build had functioned seamlessly on the developer's personal machine, and the API was fully operational.

android mobile app development screen code

Stock photo for illustration only, not from the actual event

Realizing that reading the source code would not solve the mystery, the developer shifted focus to inspecting the actual build artifact. By unpacking the signed application bundle, they examined the merged AndroidManifest.xml file that Google Play receives during deployment.

AndroidManifestTarget file inspected in the final package

The android.permission.INTERNET line was completely missing. In a multi-module Flutter development environment, the manifest written by the developer is not always what ships. Plugins, build configurations, and manifest merging processes dynamically rewrite the output. An upstream change had silently dropped the internet permission from the final merged result, leaving fresh installations without cached permission grants completely isolated from the network. The developer's personal phone worked only because permission had persisted from an earlier build upgrade.

Never miss the latest news?

Subscribe to get news summaries by email - not often enough to be annoying.

โฆษณา

This scenario highlights a critical insight for responsible AI utilization in software engineering. While language models drastically accelerate typing and routine implementation tasks, low-level build pipeline behaviors and multi-module manifest merging logic remain blind spots for standard code generation. Verifying the final binary artifact is essential to catching compilation and packaging anomalies that static code analysis cannot detect.

Ultimately, recognizing that AI-generated code is neither a defect nor an honorary badge defines mature engineering. The architectural specifications, code reviews, and final correctness decisions remain human responsibilities. Productivity gains are entirely real, but accountability scales alongside them.

"Ship the audit, not the optimism."

Solo Developer

Source: Dev.to

Comments

Leave a Comment
0/2000

Found something wrong in this article? Report an issue with this article