<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alex</title>
    <description>The latest articles on DEV Community by Alex (@alexiaxaxa).</description>
    <link>https://dev.to/alexiaxaxa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4141365%2Fcf2e14be-eadd-47bc-b1a1-7476fc2393e5.png</url>
      <title>DEV Community: Alex</title>
      <link>https://dev.to/alexiaxaxa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexiaxaxa"/>
    <language>en</language>
    <item>
      <title>We Tried to Keep Plaintext Only in Memory. Microsoft Word Said No.</title>
      <dc:creator>Alex</dc:creator>
      <pubDate>Thu, 24 Sep 2026 16:57:04 +0000</pubDate>
      <link>https://dev.to/alexiaxaxa/we-tried-to-keep-plaintext-only-in-memory-microsoft-word-said-no-l04</link>
      <guid>https://dev.to/alexiaxaxa/we-tried-to-keep-plaintext-only-in-memory-microsoft-word-said-no-l04</guid>
      <description>&lt;p&gt;I wanted to solve what sounded like a fairly simple problem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open an encrypted &lt;code&gt;.docx&lt;/code&gt; in Microsoft Word without ever writing the decrypted document to disk.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The ideal flow looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;encrypted file
     ↓
decrypt requested bytes
     ↓
Windows virtual file
     ↓
Microsoft Word
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Plaintext would exist only in memory.&lt;/p&gt;

&lt;p&gt;No temporary &lt;code&gt;.docx&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;No cleanup problem.&lt;/p&gt;

&lt;p&gt;No plaintext sitting somewhere on disk waiting to be copied.&lt;/p&gt;

&lt;p&gt;Windows Cloud Files API seemed almost perfect for this.&lt;/p&gt;

&lt;p&gt;It lets you create placeholder files whose actual content is provided on demand. When an application asks for some bytes, your provider gets a callback and returns exactly that range.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;fetch_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;offset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;usize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;usize&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;offset&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nf"&gt;.min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="nf"&gt;.len&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

    &lt;span class="nf"&gt;provide_to_windows&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;offset&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;offset&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So I built a small test.&lt;/p&gt;

&lt;p&gt;The placeholder contained no document data. The provider kept the real bytes in memory and served them when Windows requested them.&lt;/p&gt;

&lt;p&gt;Then I opened the file in real Microsoft Word.&lt;/p&gt;

&lt;h2&gt;
  
  
  First attempt: full hydration
&lt;/h2&gt;

&lt;p&gt;In the normal hydration mode, everything worked.&lt;/p&gt;

&lt;p&gt;Word requested the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;offset: 0
length: 13400
process: WINWORD.EXE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The provider returned the bytes.&lt;/p&gt;

&lt;p&gt;Word opened the document successfully.&lt;/p&gt;

&lt;p&gt;Great.&lt;/p&gt;

&lt;p&gt;Except Windows had now written the hydrated contents to disk.&lt;/p&gt;

&lt;p&gt;After stopping the provider entirely, the file was still readable as a normal &lt;code&gt;.docx&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So the architecture had effectively become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;encrypted file
     ↓
decrypt
     ↓
plaintext file on disk
     ↓
Word
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which was exactly what I was trying to avoid.&lt;/p&gt;

&lt;h2&gt;
  
  
  Second attempt: streaming
&lt;/h2&gt;

&lt;p&gt;Cloud Files also has a streaming mode.&lt;/p&gt;

&lt;p&gt;In this mode, the application can request data without permanently hydrating the placeholder.&lt;/p&gt;

&lt;p&gt;That sounded much better.&lt;/p&gt;

&lt;p&gt;A normal sequential reader worked:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ReadAllBytes()
→ 13400 bytes
→ success
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The plaintext never became a normal file on disk.&lt;/p&gt;

&lt;p&gt;Then I tried Word.&lt;/p&gt;

&lt;p&gt;It failed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Word experienced an error trying to open the file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The interesting part was that Word &lt;strong&gt;did request the data&lt;/strong&gt;, and the provider successfully returned it.&lt;/p&gt;

&lt;p&gt;So the problem wasn't that Word couldn't read the bytes.&lt;/p&gt;

&lt;p&gt;The problem was how Word wanted to access them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Word doesn't just read the file
&lt;/h2&gt;

&lt;p&gt;A simple application might behave roughly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;open()
read()
read()
read()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That works perfectly with streaming placeholders.&lt;/p&gt;

&lt;p&gt;Word does something more complicated.&lt;/p&gt;

&lt;p&gt;It needs a representation of the file that can be backed by a Windows section object / memory mapping.&lt;/p&gt;

&lt;p&gt;And Windows cannot create that mapping over file contents that only exist as temporary streamed responses.&lt;/p&gt;

&lt;p&gt;The difference is roughly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sequential read:

ReadFile()
   ↓
provider
   ↓
bytes
   ↓
works
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;versus:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Word:

open file
   ↓
create mapped section
   ↓
requires locally backed data
   ↓
streaming placeholder
   ↓
fails
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I reproduced the same behavior without Word.&lt;/p&gt;

&lt;p&gt;Sequential reading worked.&lt;/p&gt;

&lt;p&gt;Trying to create a mapped representation of the same file failed.&lt;/p&gt;

&lt;p&gt;At that point it was clear this wasn't just a Word quirk.&lt;/p&gt;

&lt;p&gt;The storage model itself was incompatible with what the application expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  The practical solution
&lt;/h2&gt;

&lt;p&gt;The compromise was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Hydrate the plaintext file
2. Open it in Word
3. Keep it hydrated only for the active session
4. Dehydrate it when the session ends
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows provides &lt;code&gt;CfDehydratePlaceholder&lt;/code&gt;, which can return the file to its placeholder state.&lt;/p&gt;

&lt;p&gt;So the final flow became:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;encrypted document
      ↓
temporary hydration
      ↓
Microsoft Word
      ↓
document closes
      ↓
dehydrate
      ↓
plaintext removed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This worked.&lt;/p&gt;

&lt;p&gt;But it changed the security model.&lt;/p&gt;

&lt;p&gt;The guarantee was no longer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;plaintext never touches disk&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It became:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;plaintext exists on disk only inside a controlled working session and is removed afterward.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And that creates another problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Crashes matter
&lt;/h2&gt;

&lt;p&gt;This is not enough:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="nf"&gt;on_document_close&lt;/span&gt;&lt;span class="p"&gt;(||&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;dehydrate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because sometimes there is no clean close.&lt;/p&gt;

&lt;p&gt;The machine can lose power.&lt;/p&gt;

&lt;p&gt;The provider can crash.&lt;/p&gt;

&lt;p&gt;The process can be killed.&lt;/p&gt;

&lt;p&gt;So recovery has to be part of the design:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;recover&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;leftover_hydrated_files&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;dehydrate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That was probably the most useful realization from the experiment:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cleanup isn't just cleanup when plaintext is involved.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It becomes part of the security model.&lt;/p&gt;

&lt;h2&gt;
  
  
  The larger lesson
&lt;/h2&gt;

&lt;p&gt;The original idea was much prettier:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;plaintext exists only in RAM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Unfortunately, software you don't control may make assumptions your architecture cannot satisfy.&lt;/p&gt;

&lt;p&gt;And sometimes the right response isn't another workaround.&lt;/p&gt;

&lt;p&gt;It's changing the assumption.&lt;/p&gt;

&lt;p&gt;For applications that perform ordinary streaming reads, an in-memory delivery path can still work.&lt;/p&gt;

&lt;p&gt;For applications like Word, the safer practical model is a temporary protected working session with explicit cleanup and crash recovery.&lt;/p&gt;

&lt;p&gt;The experiment turned this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;protect the file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;into this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;protect the lifetime of the plaintext
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not as elegant.&lt;/p&gt;

&lt;p&gt;But much more realistic.&lt;/p&gt;

</description>
      <category>security</category>
      <category>microsoft</category>
      <category>rust</category>
      <category>programming</category>
    </item>
    <item>
      <title>Can you call it end-to-end encrypted if the provider holds the keys?</title>
      <dc:creator>Alex</dc:creator>
      <pubDate>Thu, 24 Sep 2026 13:58:50 +0000</pubDate>
      <link>https://dev.to/alexiaxaxa/can-you-call-it-end-to-end-encrypted-if-the-provider-holds-the-keys-4ap1</link>
      <guid>https://dev.to/alexiaxaxa/can-you-call-it-end-to-end-encrypted-if-the-provider-holds-the-keys-4ap1</guid>
      <description>&lt;p&gt;'Encrypted' describes what happens to data. It does not tell you who can make that data readable again.&lt;/p&gt;

&lt;p&gt;Consider two designs. In one, a storage service encrypts a file on its servers and manages the keys. That protects stored disks, but the service can decrypt the file when serving an authorized request. In the other, encryption happens before upload and the storage service never receives what it needs to recover plaintext. &lt;a href="https://docs.aws.amazon.com/amazon-s3-encryption-client/latest/developerguide/client-server-side.html" rel="noopener noreferrer"&gt;AWS documents&lt;/a&gt; this distinction for its server-side and client-side encryption options.&lt;br&gt;
There is a harder case between those two: a server holds part of the material needed to open a file, but cannot open it alone. Does that count as end-to-end encryption? I think the useful questions are more specific. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can the operator decrypt without a recipient? &lt;br&gt;
Can it substitute a recipient? &lt;br&gt;
Can it change the author’s rules? What happens when a recipient’s device is compromised?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’m working through those questions in own project. Files carry &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;encrypted content,&lt;/li&gt;
&lt;li&gt;authenticated chunks &lt;/li&gt;
&lt;li&gt;a signed header &lt;/li&gt;
&lt;li&gt;recipient key slots&lt;/li&gt;
&lt;li&gt;access rules&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The server participates in granting access, but its share alone is insufficient to derive the file key. That is a narrower claim than “the provider cannot affect access”: the server can deny service, and a server cooperating with a recipient is outside this protection boundary.&lt;/p&gt;

&lt;p&gt;I also want access decisions to follow the file instead of relying on the folder or network where it happens to live. &lt;/p&gt;

&lt;p&gt;NIST’s zero-trust architecture frames access around individual resources and least privilege, without granting trust simply because a request comes from a particular network.&lt;/p&gt;

&lt;p&gt;Applying that idea to files raises practical questions about identity, short-lived access, offline use, and revocation. Revocation can restrict future access; it cannot erase plaintext someone has already received.&lt;/p&gt;

&lt;p&gt;Those questions become sharper with AI agents. A pipeline may need one agent to read a document, another to transform it, and a third to publish a result. Giving the whole pipeline one shared credential is convenient, but makes it difficult to limit the damage from a mistaken or compromised step. The direction I’m exploring is scoped grants for specific files and actions, with delegation that can narrow rights. It still cannot make a model “unsee” text it was allowed to read.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fip58duv9q41bskduui4v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fip58duv9q41bskduui4v.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The part available to try today is OpenCrate, the Rust core behind Close Crate, and OpenCrateSDK, a simpler one-recipient API for JSON, messages, and file bytes. The SDK has Rust examples and experimental source-built interfaces for Python, Java, and C++. Hosting and agent workflows are still in development. The public libraries are an early, unaudited preview.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;recipient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;generate_recipient&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;public&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;recipient_public&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;recipient&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;purpose&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"example.invoice.v1"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;b"invoice:42"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;sealed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;seal_bytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;public&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;purpose&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;br#"{"total":42}"#&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;opened&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;open_bytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;recipient&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;purpose&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;sealed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I’m interested in where others draw the boundary: would you let a service participate in short-lived access to encrypted files if it could not decrypt them alone? What evidence would you need before trusting that design in an agent pipeline?&lt;/p&gt;

</description>
      <category>security</category>
      <category>opensource</category>
      <category>cybersecurity</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
