# Channel Ports from a hybrid .uxpaddon: any way to get a live document port?

**URL:** <https://forums.creativeclouddeveloper.com/t/channel-ports-from-a-hybrid-uxpaddon-any-way-to-get-a-live-document-port/12163>\
**Category:** UXP Plugin API\
**Tags:** feature-request, uxp, api-feedback\
**Created:** [September 14, 2026, 11:30am UTC](https://forums.creativeclouddeveloper.com/t/channel-ports-from-a-hybrid-uxpaddon-any-way-to-get-a-live-document-port/12163 "2026-09-14T11:30:10Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kayrock](https://sea1.discourse-cdn.com/flex015/user_avatar/forums.creativeclouddeveloper.com/kayrock/32/4748_2.png) [@Kayrock](https://forums.creativeclouddeveloper.com/u/Kayrock)\
**Post date:** [September 14, 2026, 11:30am UTC](https://forums.creativeclouddeveloper.com/t/channel-ports-from-a-hybrid-uxpaddon-any-way-to-get-a-live-document-port/12163/1 "2026-09-14T11:30:11Z")

</div>

I do processing natively in a `.uxpaddon` and I would live to be able to read and write the document’s pixels from there.

`PSDLLMain` fires in the addon and I can acquire `kPSChannelPortsSuite` fine. What I can’t find is any way to get a handle on the actual document’s ports from that context. The descriptor argument comes in null. Every read call takes a port you already hold, and the only two port-producing methods are `New()`, which gives a blank scratch port, and `NewCopyOnWrite()`, which needs a base port you already have. As far as I can tell, live ports only ever arrive through a plug-in’s `documentInfo`, which an addon never gets.

Is there a way to source a live document port from inside an addon, or is that not possible by design?

---

<div class="post-metadata">

**Author:** ![Erin\_Finnegan](https://sea1.discourse-cdn.com/flex015/user_avatar/forums.creativeclouddeveloper.com/erin_finnegan/32/100_2.png) [@Erin\_Finnegan](https://forums.creativeclouddeveloper.com/u/Erin_Finnegan)\
**Post date:** [September 14, 2026, 4:45pm UTC](https://forums.creativeclouddeveloper.com/t/channel-ports-from-a-hybrid-uxpaddon-any-way-to-get-a-live-document-port/12163/2 "2026-09-14T16:45:06Z")

</div>

Hi @Kayrock,

According to my internal sources:

> There is no supported way for a third-party `.uxpaddon` to source the active document’s live Channel Port from `PSDLLMain`. The null descriptor is expected in that context, and `kPSChannelPortsSuite` does not provide a current-document lookup. Use Photoshop’s UXP imaging API to obtain an `Image`/pixel buffer by document and layer ID, process that data in the native addon, and write it back through the imaging API. If direct access to Photoshop-native Channel Ports is essential, that requires a separate traditional Photoshop C++ plugin entry point rather than the UXP addon alone.

And then citing the documentation:

- [Imaging API](https://developer.adobe.com/photoshop/uxp/2022/ps-reference/media/imaging)
- [Adobe UXP Hybrid plugin](https://developer.adobe.com/photoshop/uxp/2022/guides/hybrid-plugins/)

---

<div class="post-metadata">

**Author:** ![Kayrock](https://sea1.discourse-cdn.com/flex015/user_avatar/forums.creativeclouddeveloper.com/kayrock/32/4748_2.png) [@Kayrock](https://forums.creativeclouddeveloper.com/u/Kayrock)\
**Post date:** [September 14, 2026, 6:33pm UTC](https://forums.creativeclouddeveloper.com/t/channel-ports-from-a-hybrid-uxpaddon-any-way-to-get-a-live-document-port/12163/3 "2026-09-14T18:33:32Z")

</div>

> [@Erin\_Finnegan](#):
>
> There is no supported way for a third-party `.uxpaddon` to source the active document’s live Channel Port from `PSDLLMain`. The null descriptor is expected in that context, and `kPSChannelPortsSuite` does not provide a current-document lookup. Use Photoshop’s UXP imaging API to obtain an `Image`/pixel buffer by document and layer ID, process that data in the native addon, and write it back through the imaging API. If direct access to Photoshop-native Channel Ports is essential, that requires a separate traditional Photoshop C++ plugin entry point rather than the UXP addon alone.

Thanks for your quick reply! Yes, the JS imagingAPI is great, but still missing a few key features. The issue with using a separate traditional Photoshop C++ plugin entry point is that PS refuses access while a modal dialog is showing so it can’t be used for live preview.
