diff --git a/lib/active_interaction/filters.rb b/lib/active_interaction/filters.rb
index <HASH>..<HASH> 100644
--- a/lib/active_interaction/filters.rb
+++ b/lib/active_interaction/filters.rb
@@ -24,5 +24,12 @@ module ActiveInteraction
 
       self
     end
+
+    # @param key [Symbol]
+    #
+    # @return Filter
+    def [](key)
+      @filters.find { |f| f.name == key }
+    end
   end
 end
diff --git a/spec/active_interaction/filters_spec.rb b/spec/active_interaction/filters_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/active_interaction/filters_spec.rb
+++ b/spec/active_interaction/filters_spec.rb
@@ -20,4 +20,23 @@ describe ActiveInteraction::Filters do
       expect(subject.add(filter).to_a).to eql [filter]
     end
   end
+
+  describe '#[]' do
+    let(:filter) { double(name: name) }
+    let(:name) { SecureRandom.hex.to_sym }
+
+    it 'returns nil' do
+      expect(subject[name]).to be_nil
+    end
+
+    context 'with a filter' do
+      before do
+        subject.add(filter)
+      end
+
+      it 'returns the filter' do
+        expect(subject[name]).to eq filter
+      end
+    end
+  end
 end
Fix #<I>; allow getting filters by name