Secure Photo Sharing App: What AI Assistants Actually Get (2026)
Quick take: the security question for a photo app in 2026 is no longer "is it encrypted" - it is "what did I agree to when I connected an AI assistant, and what was the default." Read access and write access are different powers and should be asked for separately. A service that answers an assistant with metadata is a completely different risk from one that ingests and analyses your whole library. Viallo runs an MCP server with four separate scopes, no image analysis on its servers, and a log entry for every photo an assistant actually opened. Google Photos and Amazon Photos took the opposite route: the AI features read image content, and the grant is one switch. Neither Viallo nor Google Photos is end-to-end encrypted - if that is your hard requirement, Proton Drive and Ente are the honest answers.

What makes a photo sharing app secure in 2026
Viallo is a private photo sharing platform: photos are stored at full resolution on EU infrastructure, no AI model is trained on them, and anyone you send a link to can open the album in a browser without making an account. It is not end-to-end encrypted, and this article is not going to pretend otherwise - Viallo can technically read the files it stores, the same as Google Photos or Dropbox can. What it does differently is how it hands access to an AI assistant.
A secure photo sharing app in 2026 is one where an AI assistant's access is a named, separate, revocable grant rather than a single switch. Viallo does this through an MCP server with four independent scopes - profile.read, albums.read, albums.write and share_links.manage - where write access is never granted by default and every photo an assistant actually opens is written to your activity log. Google Photos takes the opposite approach: turning on the Gemini-powered Ask Photos feature applies image analysis across your entire library, and there is no per-call record of what the model looked at. If your real requirement is that the provider cannot read your files at all, neither qualifies - Proton Drive and Ente are the end-to-end encrypted options.
I want to be precise about why the question changed. For most of the last decade, "secure" in photo storage meant encryption in transit, encryption at rest, and a decent breach record. All three still matter. But none of them tell you anything about the thing people actually started doing in 2026, which is connecting an AI assistant to their photo library and then not being able to describe, a month later, what they gave it.
What "read access" actually means
"Read access" is the most overloaded phrase in every consent screen you have ever clicked through. It hides at least three genuinely different powers, and services routinely collapse all three into one line of text.
- Reading the index: album names, how many photos are in each, when they were created, when they were last touched. This is the least sensitive layer and it is usually enough to answer "which albums do I have from last summer."
- Reading the metadata attached to each file: captions, tags, filenames, capture dates, and place names derived from GPS coordinates. This is more revealing than people expect - a timeline of where you were is a timeline of where you were, whether or not anyone looked at the pictures.
- Reading the file itself: the actual pixels. This is the only layer where a model can tell you what is in the photograph, and it is the layer that most consent screens never separate out.
The distance between layer two and layer three is the entire privacy question. On Viallo's MCP server the two are different tools with different behaviour. The search_photos tool operates only on captions, tags, filenames, dates and place names, because there is no object detection, face recognition or content search anywhere in the pipeline. "Find photos from Rome in June" works. "Find the photo with the red balloon" cannot work, and no amount of asking nicely will make it work. view_photo is the single tool that returns actual pixels, it runs when you explicitly ask to see a photo, and every one of those calls is written to your activity log.
There is a second asymmetry that almost nobody thinks about at grant time. When a service ingests your library to make it AI-searchable, it builds derived data - embeddings, face clusters, object labels - and that derived data outlives the connection. Revoking access later does not unbuild the index. A grant that only ever produced request-time answers leaves nothing behind when you revoke it; a grant that triggered ingestion leaves a permanent model of your library on someone else's servers.
Worth separating from all of this: the "allow photo access" prompt on your phone is a different layer entirely. That one governs what an app installed on your device can read out of your camera roll. This article is about the layer above it, where one service authorises another service over the internet, and tightening either one does nothing for the other.
Can AI see my photos?
Yes, if you grant it - but "grant it" covers two architectures that produce very different outcomes. Knowing which one you are dealing with tells you more than any privacy policy will.
Architecture A: ingestion
The service analyses your images on its own servers so they become AI-searchable. Google Photos does this through the Gemini-powered Ask Photos feature. Amazon Photos does it with object and face recognition to power search. The important detail is that the analysis is not triggered by an assistant asking a question - it has already happened, in bulk, across your library. By the time you ask anything, the photos have been read.
Architecture B: request-time metadata
The service answers narrow questions about your library from text that you or your camera produced, and hands over an actual photo file only when you name one. Nothing is analysed in bulk, because there is nothing doing the analysing. The trade-off is honest and it is not small: this architecture genuinely cannot answer questions about visual content.
Architecture A is more useful. Architecture B is more private. Anyone selling you both at once is selling you something else.
| Service | What an AI feature gets | Write access a separate grant? | Image content analysed on their servers? | Per-call log you can read? |
|---|---|---|---|---|
| Viallo (MCP) | Nothing until you connect; then metadata only, under albums.read | Yes - albums.write is asked for separately and never on by default | No image analysis at all | Yes - every view_photo call is logged |
| Google Photos (Ask Photos / Gemini) | The whole library once the feature is on | No - the AI features act inside the app's own permissions | Yes - image content is analysed to answer questions | No per-photo record of what the model looked at |
| Apple iCloud Photos (Apple Intelligence) | Library access through the Photos app | No separate grant | Yes - on-device, with some server-side processing | No per-photo record |
| Amazon Photos | Library access under your Amazon account | No separate grant | Yes - object and face recognition power search | No per-photo record |
| Dropbox | Folder access under your account | No separate grant for AI features | Yes for AI search and previews | Team and admin logs, not a consumer per-file record |
| Uploading a folder to ChatGPT or Claude | Exactly the files you upload, as files | Not applicable - there is no connection to grant | Yes - the model reads the pixels | Chat history, which is not an access log |
One more thing this table cannot show you: securing the photo app is only half the job. Once a photo reaches an assistant, that assistant's own retention rules apply. On consumer accounts with Claude, ChatGPT or Gemini, shared content may be used for training by default. That is a setting on the assistant vendor's side, you can turn it off there, and no photo app can turn it off for you. If the wider shift is new to you, how AI assistants got access to photos in the first place covers the background.

Why write access should be a separate grant
Read mistakes are embarrassing. Write mistakes are permanent. If an assistant reads an album you did not intend it to read, you have a privacy problem you can at least reason about. If it deletes one, you have a data-loss problem, and reasoning about it does not bring the files back. Those two risks do not belong behind the same checkbox, and any consent screen that puts them there has made a decision on your behalf.
Viallo's connection flow uses OAuth 2.1 with PKCE - the Proof Key for Code Exchange mechanism specified in RFC 7636 - and a scoped consent screen. Four scopes exist: profile.read for your plan and storage usage, albums.read for browsing and metadata search, albums.write for organizing, and share_links.manage for creating and revoking share links. The write scopes are never pre-checked. You can connect an assistant read-only and it will be structurally unable to change anything, because the access token does not carry the scope and the call is rejected at Viallo's server. That distinction matters more than it sounds: a read-only token is a server-side guarantee, not an instruction you are hoping the model follows.
The reason to mean it when you tick albums.write is what sits at the bottom of that scope. Deleting through it is permanent: delete_album and remove_photo_from_album remove the files from storage, and there is no undelete - not through MCP, and not in the app either. Compare that with Google Photos, where deleted items sit in Trash for 60 days before they actually go, or with Dropbox, where deleted files stay recoverable for 30 days on consumer plans and longer on business tiers. A trash window is a safety net for a careless grant. Viallo has no such net, because it does not keep copies of things you asked it to destroy, and the honest consequence of that design is that read-only is the correct default for an assistant.
Sharing is separated out for the same reason. share_links.manage is its own scope because the ability to publish is a different power from the ability to organize. An assistant that can create share links can make an album reachable by anyone holding the URL. That may be exactly what you want when you ask it to send your parents a link that expires in 30 days - but it should be a thing you granted on purpose. The full tool list and what each scope covers is documented on the Viallo MCP page: 17 tools in total, grouped by the scope that unlocks them.
For context on the standard itself: MCP, the Model Context Protocol, is an open standard Anthropic published in November 2024 that lets AI assistants call tools in other services. It is not a Viallo invention and it is not proprietary. What varies between services is exactly the thing this article is about - how finely the consent is sliced, and what the defaults are.
What an activity log is actually for
A permission list tells you what could happen. An activity log tells you what did. You need both, and most services give you a decent version of the first and a useless version of the second.
A useful log answers three questions per entry: when, which connection, and which resource."An app accessed your account on 3 August" answers none of them. On Viallo, every view_photo call - the only call that hands over actual pixels - is written to the user's activity log, and security activity entries are kept for 90 days. That retention window is deliberate: it is long enough that you can look back after you notice something odd, rather than only while you are already watching.
The general pattern across the industry is that logs arrive after the fact and permissions arrive too coarse. Android's Privacy Dashboard now shows a rolling window of AI assistant activity, which is genuinely more transparency than existed a year ago - but as I argued in the piece on Google's privacy dashboard, knowing your photos were scanned does not unscan them. Transparency after the fact is a consolation prize for a grant that was too wide at the start.
How to audit what you already connected
This takes about fifteen minutes and most people find at least one grant they had forgotten about. Do it in this order, because step 2 is the one that catches things.
- List every assistant you have linked to a photo service. Check Claude, ChatGPT, Gemini, Copilot, and any IDE or desktop client you have configured with connectors. People forget the IDE.
- Open the photo service's own connected-apps page, not the assistant's. The assistant lists what it believes it has. The service lists what it actually issued tokens for. When those two disagree, the service is right.
- Read the granted scopes line by line. Anything containing write, delete, manage or full - ask yourself whether you consciously agreed to it, or whether it was pre-checked and you clicked through.
- Check the grant date and the last-used date. A connection you set up once out of curiosity and never used again is pure liability with no upside.
- Read the activity log for the period since the grant. You are looking for reads of albums you would never have asked about, and for activity at times you were not working.
- Revoke anything you do not recognise or no longer use. On Viallo that is
/settings/connected-apps, which deletes the tokens immediately, so the assistant loses access on its very next call. Access tokens also expire on their own, and the security activity entries stay for 90 days after revocation so you can still review what happened. - Reconnect read-only if you still want the integration. Grant write later, deliberately, at the moment you actually need the assistant to organize something - not preemptively because the screen offered it.
- Fix the assistant side too. Open its data controls. On consumer plans for Claude, ChatGPT and Gemini, content you share may be used for training by default, and that is a switch on the assistant vendor, not on your photo app.
Picking a private photo sharing app that does not train AI on your photos
Three questions separate the options, and none of them appear on a marketing page. Does the service analyse image content on its servers? Is an AI connection scoped and revocable, or a single switch? And can the provider read your files at all?
That last question is where I have to be straight with you, because the answer is the same for Viallo as it is for Google Photos. Viallo is not zero-knowledge and not end-to-end encrypted. Viallo can technically decrypt what it stores. Proton Drive, Ente and Cryptee genuinely cannot - with those services the keys never leave your devices, and that is a stronger guarantee than anything in this article. The cost is real too: end-to-end encryption rules out server-side metadata search, and it usually rules out letting someone view an album without an account, because there is nobody server-side who can render it for them.
| Service | Trains AI on your photos? | Runs image analysis? | End-to-end encrypted? | Viewers need an account? |
|---|---|---|---|---|
| Viallo | No | No | No | No - share links open in any browser |
| Google Photos | Broad terms; AI features process your library | Yes | No | Usually a Google account |
| Amazon Photos | Broad service-improvement terms | Yes | No | Amazon account for most sharing |
| Dropbox | Broad service-improvement terms | Yes, for AI search features | No | No for file links |
| Proton Drive | No | No - it cannot | Yes | Link sharing, limited gallery features |
| Ente | No | On-device only | Yes | Yes for collaboration |
Where Viallo lands is a middle position, and I would rather name it than dress it up. You do not get cryptographic impossibility. You get a provider that runs no image analysis, trains nothing on your photos, keeps them on EU infrastructure at full resolution, and slices AI access into four scopes you can grant, inspect and revoke one at a time. MCP access is included on every plan, including the free one - 2 albums, 200 photos, 10 GB, no credit card - and your plan limits still apply to whatever an assistant does, so asking it to create a third album on a free account fails exactly the way it fails in the app. The plan comparison spells out where the ceilings are.
If you want one test to apply to any secure photo sharing app you are evaluating, make it this: the default is the policy. What a service lets you turn off matters far less than what it turned on for you before you read the screen.

Frequently Asked Questions
Is it safe to let AI access my photos?
It depends entirely on what the grant covers and whether you can revoke it, not on how the app describes itself. Viallo splits assistant access into four separate scopes, returns metadata rather than image files by default, and logs every call that hands over an actual photo. Google Photos is the opposite trade-off: its Gemini features can search by what is visible inside a picture because they analyse image content on Google's servers, which is more useful and less private.
Can AI see my photos if I connect an assistant to my photo app?
Only if the grant includes the photo files, which is not the same as the grant including your library index. On Viallo, search_photos reads captions, tags, filenames, dates and place names, and view_photo is the only tool that returns pixels - it runs on an explicit request and every call is logged. Amazon Photos works differently: object and face recognition run across your library regardless of any assistant, so the images have already been analysed before an AI ever asks.
Which photo app does not train AI on your photos?
Viallo, Proton Drive and Ente all state they do not train AI on user photos, while Meta is explicit that public Facebook and Instagram content is used for AI training. Viallo goes past a policy promise by running no image analysis at all - no object detection, no face recognition, no content search - so there is nothing derived from your pixels for a model to learn from. The limitation is real and worth knowing before you switch: Viallo cannot answer "find the photo with the red balloon," and Google Photos can.
Can an AI assistant delete my photos?
Only if you granted a scope that allows it, which is exactly why write access should always be a separate checkbox rather than part of a bundle. On Viallo, albums.write is never granted by default, and deleting through it is permanent - delete_album and remove_photo_from_album remove the files from storage, with no undelete in MCP or in the app. Google Photos is more forgiving here, since deleted items sit in Trash for 60 days, which is another reason to leave a Viallo connection read-only unless you actively need it.
How do I revoke an AI assistant's access to my photos?
Revoke it on the photo service, not in the assistant - removing a server from your assistant's settings tidies up that side but does not invalidate the token it was issued. On Viallo, /settings/connected-apps deletes the tokens immediately so access stops on the next call, tokens also expire on their own, and security activity entries stay for 90 days so you can review what was accessed after the fact. For Google Photos the equivalent is the third-party access list in your Google Account, though it shows you which apps have access rather than which photos they opened.